ABAP中的F4帮助怎么用
- 格式:pdf
- 大小:135.66 KB
- 文档页数:9
sap 标准下拉框函数在SAP中,下拉框通常是通过使用一些标准函数和控件来实现的。
SAP提供了丰富的函数和控件库,其中包括了用于处理下拉框的标准函数。
下面是一些在SAP中用于处理下拉框的标准函数的示例:F4 Help 函数:SAP提供了F4 Help功能,允许用户通过按F4键来打开值帮助。
这通常用于弹出一个包含可能的值列表的对话框。
例如,在ABAP程序中,可以使用 F4IF_INT_TABLE_VALUE_REQUEST 函数。
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGRETFIELD = 'SELECTED_VALUE'VALUE_FIELD = 'VALUE'TABLESVALUE_TAB = lt_values.上述示例中,lt_values 是一个包含可能的值的内部表,SELECTED_VALUE 是用户选择的值。
Dropdown by Index:在SAP GUI中,可以使用 CL_GUI_ALV_GRID 类来实现表格和下拉框的组合。
通过设置某一列的 dropdown_fieldname 属性,可以将该列转换为下拉框。
DATA(lo_alv_grid) TYPE REF TO cl_gui_alv_grid.CREATE OBJECT lo_alv_gridEXPORTINGi_parent = cl_gui_container=>screen0.lo_alv_grid->set_table_for_first_display(EXPORTINGis_layout = lt_layoutit_fieldcat = lt_fieldcatCHANGINGit_outtab = lt_output)." Set dropdown for a specific columnlt_fieldcat-dropdown_fieldname = 'YOUR_COLUMN_NAME'.请注意,在上述代码中,'YOUR_COLUMN_NAME' 应替换为您希望设置为下拉框的列的字段名。
编写字段- 和值- 帮助程序概览F1 或为用户提供当前光标所在字段的帮助文本。
F4 或组合框(如果可用的话)提供可在该字段中输入的值的列表。
用户可将列表中的光标放到所选值上并按下F2 或双击鼠标,将该值复制到字段中。
内容编写字段- 和值- 帮助程序定制F4-值-请求定制F1-帮助字段- 帮助的功能模块具有匹配代码的字段-帮助用这种方法输出的信息保存在ABAP/4 库中。
在对话程序中,屏幕处理器自动显示各字段的数据元素的帮助文本。
可能值的F4 列表通常会引用某个域的有效值的固定设置或相关值表中的数据。
标准列表对于用户自己开发的应用程序通常也是够用的。
但是,根据具体的对话程序不同,也可以建立更详细或稍有不同的文档和可能值列表。
可以用PROCESS ON HELP-REQUEST (POH) 和PROCESS ON VALUE-REQUEST (POV) 事件来编写帮助文本和可能值列表程序。
这些事件可以在屏幕处理逻辑中与PROCESS BEFORE OUTPUT 和PROCESS AFTER INPUT 事件一起执行。
1 PROCESS ON HELP-REQUEST:语法PROCESS ON HELP-REQUEST.FIELD <field> MODULE <module>.FIELD <field> MODULE <module> ...通过FIELD 语句将模块调用分配给屏幕字段。
如果按下F1 或,就会执行光标所在字段的POH 模块。
1 PROCESS ON VALUE-REQUEST:语法PROCESS ON VALUE-REQUEST.FIELD <field> MODULE <module>.FIELD <field> MODULE <module> ...用户按下F4 或激活屏幕字段中的组合框之后,会发生POV 事件。
这里讲述2个F4帮助增强的例子,一种直接使用视图的方式,一种是使用EXIT的方式,后者需要一些ABAP知识。
1.使用视图方式在物料帮助MAT1 中增加新的页签,增加跨集团物料标记和删除标记,效果如下所示1.1创建视图SE11 创建数据库视图选择【数据库视图】输入F4帮助选择参数和显示数据所需要的数据表、并添加数据表的连接条件,如果只有一个表,就不用输入连接条件了输入视图显示字段(可以使用帮助输入输入field字段,会自动带出其他字段),这些字段可以再F4帮助中使用在【selection Condition】中设置数据筛选条件,看需要是否要设置筛选条件确认无误,激活视图。
1.2创建自定义帮助SE11 创建F4帮助,输入F4帮助名选择类型elementary search hel (类型看你的具体需求,这里我只增加一个末级的帮助),输入帮助的描述(这个描述会显示在你的帮助的页签标题上)和selection method(创建的视图的名字)设置dialog type,有三种类型A、D、CA:dialog方式显示数据,如果结果数据少于100条,自动显示,反之则需要手动执行显示数据D:立即显示结果数据C:dialog方式显示数据,手动执行显示结果这里采用type Chot key 没搞懂是啥作用输入F4参数,这些参数可以作为F4界面选择参数、显示结果参数、和数据筛选参数import和export参数分别是控制输入参数和返回参数【LPos】结果列表显示参数order,【SPos】选择界面参数order,【SDis】设置参数为display 模式,即不可输入【default value】可以设置参数的默认值确认无误激活F4帮助1.3修改标准F4帮助SE11 修改帮助MAT1我直接添加到这里了,如下图然后设置参数的分配,单击【Param.assignment】系统自动分配参数(这个参数分配不太明白,应该是传递你的自定义帮助的返回参数的,把你的自定义F4帮助的返回参数对应到当前的F4帮助的返回参数,并返回到屏幕上)激活F4帮助,然后去MM03看下效果。
BC ABAP/4 用户指南®版本 3.0目 录SAP专用术语及图标说明读者注意事项ABAP/4简介语法约定第一部分:ABAP/4基础第二部分:编写ABAP/4报表第三部分:编写ABAP/4事务SAP专用术语及图标说明惯例约定 是用于屏幕文本 你在屏幕上看到的单词和字母(包括系统提示信息、字段 名称、屏幕标题、菜单名称和菜单项目)。
用户输入 准确的用户输入。
你在键盘上键入的单词和字母要完全与文档中的相同。
<可变用户输入> 可变的用户输入。
尖括号表示你可以用适当的键盘输入替换这些变量。
全部大写 报表名、程序名、项目代码、表格名、 ABAP/4语言要素、文件名和目录。
书目标题与期它的书相互参照。
健 标键盘上的键。
通常功能键(例如 F2 和 ENTER 键)是用这种方式表示的。
一个具有处理过程信息的标题。
该标题描述了R/3的业务过程。
一个具有概念信息的标题。
用于明确你所需要的概念和背 景资料,以便完成一向业务过程。
读者注意事项ABAP/4 用户指南是关于 ABAP/4 编程语言的手册。
其目的在于· 向新的 ABAP/4 程序员提供从基本语言组件到复杂报表和事务编码的全面指导· 向资深 ABAP/4 程序员提供解决特殊问题的参考方案为满足这些需求,特提供一个整体概述并本指南分成三个部分,循序渐进,逐步深入 · ABAP/4 的基本组件· 如何编写报表程序· 如何编写事务ABAP/4 用户指南目的不在替换 ABAP/4 关键字文档。
可以通过如下方式调用该文档 · 从“ABAP/4 编辑器:初始屏幕”(事务 SE38)中选择“实用程序 -> ABAP/4 关键字文档 · 选择 ABAP/4 编辑器中的“帮助”· 将光标放在 ABAP/4 编辑器中的关键字上,然后按下 F1 键ABAP/4 用户指南的真正目的在于说明如何使用以及为何使用 ABAP/4 关键字。
ABAP ALV F4标准一、概述ABAP ALV(Advanced List Viewer)是SAP系统中用于生成、显示和修改表格数据的一套标准工具。
而F4标准则是ALV的一个重要功能,用于提供字段值的可选择清单。
本文将从ABAP ALV和F4标准的基本概念介绍开始,逐步深入到具体的实践应用和案例分析,帮助读者全面了解和掌握这一重要功能。
二、ABAP ALV的基本概念1. ABAP ALV是什么ABAP ALV是SAP系统中的一套标准工具,用于生成、显示和修改表格数据。
它不仅提供了丰富的表格显示和编辑功能,还具有灵活的定制能力,可根据用户需求进行定制开发。
2. ABAP ALV的使用场景ABAP ALV广泛应用于SAP系统中的各个模块,如采购管理、生产管理、财务会计等领域。
它可以用于显示各种业务数据,如订单信息、库存数据、财务报表等,并支持用户对数据的查看、编辑和导出等操作。
三、F4标准的基本概念1. F4标准是什么F4标准是ABAP ALV的一个重要功能,用于提供字段值的可选择清单。
它在输入字段时,可通过F4键或按下候选按钮,弹出可选择清单供用户选择,从而减少用户的输入工作并提高数据准确性。
2. F4标准的使用场景F4标准通常用于需要输入字段值的场景,如订单创建、物料信息维护等。
它可以弹出各种可选择清单,如物料清单、供应商清单、客户清单等,为用户提供便捷的数值选择功能。
四、ABAP ALV F4标准的实践应用1. 如何在ABAP程序中使用F4标准在ABAP程序中使用F4标准,首先需要定义输入字段的参数和事件处理逻辑。
然后通过调用相应的函数模块或方法,将F4标准与输入字段关联起来,实现字段值的可选择清单功能。
2. F4标准的定制开发除了使用标准的F4功能外,ABAP开发人员还可以根据具体需求进行定制开发。
他们可以通过修改F4帮助事件、使用自定义帮助对象等方式,实现更灵活、个性化的F4功能。
3. F4标准与其他功能的结合应用F4标准还可以与其他功能结合应用,如输入带有F4帮助的字段值后,自动填充相关字段信息、触发特定的逻辑处理等。
ABAP中的F4帮助怎么用?当我们在sap的界面上,焦点放到一个字段上的时候,按F4,会出现选择或者搜索的界面,这就是abap中的f4帮助。
有多种实现f4帮助的方法,现在就把我指导的一点点说出来:1,固定值。
我们在Domain 中可以定义 value range ,在 value range 中定义的值,就可以出现在f4帮助中。
这是最简单的实现f4帮助的方法。
2,数据类型关联。
加入我们在选择屏幕上定义一个 dats 类型的参数,她就自动调用了日期类型的f4帮助。
3, se11创建 f4帮助。
(将se11创建的搜索帮助挂到表上的时候,又可以分为以下三种类型:用检查表实现输入帮助字段的外部搜索帮助附件数据元素的明确搜索帮助附件她们之间有啥区别,我也不知道。
等我知道了再补充。
)用 se11 创建的 f4 帮助可以分为两类:基本搜索帮助集中搜索帮助基本搜索帮助是搜索帮助的最小单元,集中搜索帮助还可以包括集中搜索帮助,也可以包括基本搜索帮助。
在基本搜索帮助中可以定义数据来源,但是集中搜索帮助不可以定义数据来源。
无论是基本搜素偶帮助还是集中搜索帮助都包含输出输出字段定义,并可以定义搜索帮助exit,用于调用一个远程的 function module 来对数据进行过滤和处理。
如果将这些搜索帮助与表挂上之后,我们在使用的时候就会自动出现该搜索帮助。
在 synpro 程序中。
也可以通过属性(属性名叫搜索帮助)为字段重新指定自定义的搜索帮助也可以在选择屏幕或者 screen 中重新指定搜索帮助,下面举几个例子来说明使用的方法一,根据搜索帮助的名字来指定搜索帮助1选择屏幕REPORT z_ljc_078 LINE-SIZE 200.parameters: mama(18) type c.INITIALIZATION.AT SELECTION-SCREEN on value-request for mama.DATA:v_mama LIKE help_info-dynprofld.v_mama = 'MAMA'.CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'EXPORTINGtabname = ''fieldname = ''SEARCHHELP = 'ZFI_CRC_001'DYNPPROG = SY-REPIDDYNPNR = SY-DYNNRDYNPROFIELD = v_mama.start-OF-SELECTION.write mama.2 dynpro screen流逻辑:PROCESS BEFORE OUTPUT.MODULE INIT.PROCESS AFTER INPUT.PROCESS ON VALUE-REQUEST.FIELD matnr MODULE VALUE_matnr.report:MODULE init OUTPUT.progname = sy-repid.dynnum = sy-dynnr.ENDMODULE.MODULE value_matnr INPUT.CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'EXPORTINGtabname = ''fieldname = ''SEARCHHELP = 'MAT1'DYNPPROG = SY-REPIDDYNPNR = SY-DYNNRDYNPROFIELD = 'MATNR'ENDMODULE.无论是在选择屏幕或者是dynpro中,如果指定了searchhelp 属性,则 tabname 和fieldname 属性就不起作用了。
ABAPsearchhelp(搜索帮助)五种⽅法ABAP 的搜索帮助有很多种⽅法,掌握下⾯的⼏种基本差不多了*&---------------------------------------------------------------------**& Report ZTEST1*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT ZTEST1.tables: mara.DATA:ok_code TYPE sy-ucomm,save_ok TYPE sy-ucomm.parameters: l_matnr type matnr matchcode object zmara. " 第1种-简单的弹出对话框PARAMETERS:l_ebeln type ebeln matchcode object ZEKKO. " 第2种-selectio-method 是 view。
* 第3种,上下两个是关联在⼀块的。
⼯⼚和库存地点。
PARAMETERS:l_werks type zwerks_logrt-werks.PARAMETERS:l_logrt type zwerks_logrt-logrt.* 第4种,selection screen 中的:⽇期类型的search help。
这种⽅法要注意在dialogue screen 中,要在元素清单中reference中 l_data添加DATS,*按钮才会出来,否则要按F4,才能出来帮助按钮。
PARAMETERS:l_data type dats.* 第5种:dialogue screen 中的屏幕下拉框。
ABAP报表中如何给报表的输入参数增添F4ValueHelp试读版零基础 ABAP 学习教程系列文章的目录•ABAP 标准培训教程BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍•ABAP 标准培训教程BC400 学习笔记之二:Cross-client 和Client-specific 的区别•ABAP 标准培训教程BC400 学习笔记之三:ABAP 编程语言的特性和基本构成要素•ABAP 标准培训教程BC400 学习笔记之四:ABAP 编程语言的数据类型•ABAP 标准培训教程BC400 学习笔记之五:ABAP 编程语言的变量,常量和字面量,以及文本符号ABAP 基础知识•通过实际的例子,介绍SAP ABAP 里的Repository Information System 的使用技巧•ABAP function module 的使用•ABAP subroutine 的定义和使用•ABAP 中的变量和常量•ABAP 编程语言中的系统字段(System Fields)•什么是 ABAP Field Symbol•ABAP 引用类型介绍•最浅显易懂的 SAPGUI 里 ABAP 调试器的使用方法介绍•如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上)•如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (下)•用 ABAP 读取本地文本文件内容•26 行 ABAP 代码使用 HTTP_GET 函数下载百度网站的首页数据•ABAP 如何解析 JSON 数据•如何从本地文件里拷贝某个 ABAP 类到 SAP 系统•面向对象的 ABAP 编程初探 - 什么是类,实例,和 Public 方法•SAP ABAP 报表的用户输入功能•使用 ABAP 事物码 SM59 创建 Destination 来读取外网的数据•通过一个具体的例子,讲解 SAP BDC 技术的使用步骤•从解读 BDC 自动生成的代码谈起,讲解 SAPGUI 的程序组成部分•如何查询 SAPGUI 屏幕上某个字段对应的数据库表存储•如何使用事物码 SAT 查找某个 SAPGUI 屏幕字段对应的后台存储数据库表的名称•一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤•SAP ABAP 字符串变量容易疏忽和混淆的一些知识点•SAP ABAP 处理Excel 的标准函数TEXT_CONVERT_XLS_TO_SAP 介绍•授人以渔-在 SAP MM 物料显示界面上看到一个字段,如何查找哪张数据库表的哪个字段进行的存储•SAP ABAP 系统进行数据库表查询的几种常用方法•如何让 ABAP 服务器能够响应通过浏览器发起的自定义 HTTP 请求•一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧•如何使用 saplink 安装其他网站上提供的 ABAP 程序•ABAP 报表中如何给报表的输入参数增添 F4 Value Help•更多文章正在写作中Office 专题•用 ABAP 新建本地 Excel 文件并写入数据•如何使用 ABAP 创建包含不同字体大小的 Word 文档•更多文章正在写作中ALV 开发专题•27 行代码开发一个最简单的 SAP ALV 报表•48 行代码给 ABAP ALV 报表的数据行增添颜色效果•77 行代码实现ABAP ALV 中的双击事件处理•更多文章正在写作中更多文章正在写作中在本教程之前的文章,用ABAP 读取本地文本文件内容,我们已经学习了如何将本地的文件读取到ABAP 服务器,当时我们使用的文件里包含的是 1 2 3 4 这种不涉及到字符编码的简单内容,并且文件路径也是硬编码的 C:\temp\1.txt。
SAP 找表方法总述:下面依次介绍了六种在R/3和CRM中找表及相应字段的方法。
但每种方法都有一定的局限性,所以要根据情况灵活使用。
1.方法(一):用F1找表要查字段‘FUND’所在的系统表,按F1;在下表中可以先点击‘Field Name’(字段名称),若是结构,可以查看他的‘ENTRY HELP’中的‘CHECK TABLE’是否有相应的表名;若没有‘CHECK TABLE’,就要双击‘Data Element’单击‘Where_user list’:勾选‘TABLE FIELDS’后:橘黄色的都是表名,这些表中都会含有字段‘FUND’。
2.方法(二):用F4找表只适用于主数据字段的查找,在弹出的选择框中再利用F1的方法即可;并且此方法是在F1查到的是结构的情况下才有用处;3.方法(三):Editor单击屏幕上方‘SYSTEM’中的‘STA TUS’;双击下面屏幕中的‘PROGRAME’;最后三个字母‘TOP’代表程序的起始段,双击进入;可以逐个查看TABLE中是否含有‘FUND’字段;如下图可知,在‘RESBN’中可以找到所要字段。
在所要查找的屏幕处键入‘/H’,两次回车进入调试状态;调出‘FIND’对话框,可键入‘SELECT/INSERT/UPDATE’等与数据库交互的命令字段,从而找到对应的TABLE。
但如果此界面没有与数据库进行交互时此方法无效。
5.方法(五):SCREEN单击屏幕上方‘SYSTEM’中的‘STA TUS’;双击下面屏幕中的‘Screen number’;再单击右上角的‘LAYOUT’;双击对应字段,可得到该字段所在TABLE或STRUCTURE。
单击屏幕上方‘SYSTEM’中的‘STA TUS’;双击下面屏幕中的‘TRANSACTION’;得到屏幕左上方第二行的‘PACKAGE’打开另一个界面,键入事物代码‘SE80’,并将上面的‘PACKAGE NAME’填入并显示;如下图所示,子文件夹‘DA TABASE TABLE’下面列出的是该事物有关的所有TABLES。
F1 帮助F3 返回F4 选择输入项F5 新增F6 复制为。
F7 全选F8 选择块,首F8,尾F8F9 选择一条CTRL+S 保存F12 取消Shift+F1 打印Shift+F2 删除Shift+F3 退出Shift+F4 取消全选Shift+F7 根据条件定位Shift+F9 首页Shift+Ctrl+0 前一页Shift+F11 下一页Shift+F12 上一页Ctrl+F2 撤销更改Ctrl+F4 修改变显示Ctrl+F10 BC设置:初始字段值Ctrl+; SAP快捷方式建立Ctrl+/ 定位到输入命令条Ctrl+Shift+F4 在收葳夹中新建快捷方式Ctrl+Shift+F5 在收葳夹中新建文件夹Ctrl+F11 收起所展开的树形菜单Ctrl+Shift+'+' 新增会话窗口Ctrl+F2 启动业务工作台(邮件等)====================================================================== 快速调整字体大小 Ctrl +鼠标滚轮剪切一行 Ctrl + Shift + X删除一行 Ctrl + Shift + L复制一行 Ctrl + Shift + T转成小写 Ctrl + L转成大写 Ctrl + U大小写相互转换 Ctrl + K取消 Ctrl + Z重做 Ctrl + Y原地复制一行 Ctrl + D一次性注释多行先选中要注释代码行,然后按Ctrl+“,”一次性去掉多行注释先选中要去掉的注释行,然后按Ctrl+“.”CTRL+> 和紫光输入法v6.5有冲突,导致取消注释快捷键失效Ctrl+y -> Ctrl+c 在ALV表格内复制某行的某一字段新增会话窗口1 Ctrl+Shift+'+'新增会话窗口2 /o+。
ABAP 搜索帮助当选择屏幕上的一个字段所参考的数据元素没有建立搜索帮助时,可以手工建立一个:1、在se11创建一个搜索帮助ZAUTEST,需要输入:(1)描述;(2)选择方法:即搜索帮助显示字段所在的透明表;(3)搜索帮助参数:即搜索帮助要显示的字段;(4)IMP:输入字段,勾上即表示显示该字段;(5)EXP:输出字段,勾上即表示该字段是搜索帮助需要的输入字段;(6)Lpos:搜索帮助下半部分字段排序;Spos:搜索帮助上半部分字段排序。
如下图:在Dialog屏幕中给输入字段建立搜索帮助,有以下三种情况:一:直接使用系统已有的搜索帮助,对于系统已存在搜索帮助的输入字段可直接使用:在屏幕格式器里双击输入字段框,在其“属性”栏的“搜索帮助”框内填入该字段的搜索帮助名称。
如物料“matnr”的搜索帮助名称为“MAT1”。
注意:MAT1一定要大写,对于所有在屏幕输入的字符,不管以任何形式输入都要大写,否则系统是不认识的,就如在代码里引号内的字符串要大写才正确一样。
二:自建搜索帮助,其过程如下:1、在dialog屏幕的逻辑流里在user_command后定义module,如下:process before output.…process after input.module user_command_0100.process on value-request. “输入字段的响应field t_pline module f4_help_for_pline. ““t_plnnr”是输入字段的“name”,“f4_help_for_pline”是module名,自己随便起吧2、双击“f4_help_for_pline”创建该module,这时进入程序代码编辑,module如下:module f4_help_for_pline input.call function …F4IF_INT_TABLE_VALUE_REQUEST‟ “调用函数exportingretfield = …PLINE‟“搜索帮助内表要输出的的帮助字段名,注:要大写dynpprog = sy-repiddynpnr = sy-dynnr* dynprofield = ”value_org = …S‟tablesvalue_tab = ithp_pline. “存储搜索帮助内容的内表endmodule. ” f4_help_for_pline INPUT注:“retfield”的内表输出字段的名字要和输入字段保持一致,并最好和透明表的字段名一致,否则弹出的搜索帮助会显示不了字段名。
**&---------------------------------------------------------------------***& F4°ïÖúµÄÁª¶¯**&---------------------------------------------------------------------*TABLES: AUFK, AFIH, T001W.DATA: BEGIN OF T_T001W OCCURS 0 ,WERKS TYPE T001W-WERKS,NAME1 TYPE T001W-NAME1,END OF T_T001W.DATA: BEGIN OF T_T024I OCCURS 0 ,IWERK TYPE T024I-IWERK,INGRP TYPE T024I-INGRP,INNAM TYPE T024I-INNAM,END OF T_T024I.DATA:BEGIN OF T_CONDITION_SQL OCCURS 0,CONDITION(80),END OF T_CONDITION_SQL.DATA RET_ITAB LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE TEXT1.SELECT-OPTIONS S_IWERK FOR AUFK-WERKS OBLIGATORY. "¹¤³§SELECT-OPTIONS S_AUFNR FOR AUFK-AUFNR . "¶©µ¥±àºÅSELECT-OPTIONS S_AUART FOR AUFK-AUART. "¶©µ¥ÀàÐÍSELECT-OPTIONS S_INGPR FOR AFIH-INGPR OBLIGATORY. "¼Æ»®ÈËÔ±×é SELECT-OPTIONS S_ERDAT FOR AUFK-ERDAT. "´´½¨ÈÕÆÚ SELECTION-SCREEN END OF BLOCK BLOCK1.INITIALIZATION.TEXT1 = 'Ñ¡ÔñÆÁÄ»'.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.IF SCREEN-NAME = 'S_IWERK-LOW'.SCREEN-INPUT = '0'.SCREEN-OUTPUT = '1'.MODIFY SCREEN.ENDIF.IF SCREEN-NAME = 'S_IWERK-HIGH'.SCREEN-INPUT = '0'.SCREEN-OUTPUT = '1'.MODIFY SCREEN.ENDIF.ENDLOOP.AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_IWERK-LOW.PERFORM FORM_IWERK_LOW.AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_IWERK-HIGH.PERFORM FORM_IWERK_HIGH.AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_INGPR-LOW.PERFORM FORM_INGPR.*&---------------------------------------------------------------------**& Form FORM_IWERK*&---------------------------------------------------------------------**& ¹¤³§µÄËÑË÷°ïÖú*&----------------------------------------------------------------------**& F4Ö»¿ÉÒÔÑ¡Ôñ²»¿ÉÒÔÊäÈ룬ÓëS_INGPR-lowÁª¶¯*& S_IWERkµÄÑ¡ÔñÄÚÈÝÖ±½ÓÓ°ÏìS_INGPRÖÐF4µÄÄÚÈÝ*&----------------------------------------------------------------------*FORM FORM_IWERK_LOW .LOOP AT SCREEN.IF SCREEN-NAME = 'S_IWERK-LOW'.SCREEN-INPUT = '1'.SCREEN-OUTPUT = '1'.MODIFY SCREEN.ENDIF.ENDLOOP.CLEAR T_T001W. CLEAR T_T001W[].CLEAR RET_ITAB.CLEAR RET_ITAB[].SELECT WERKS NAME1 FROM T001W INTO CORRESPONDING FIELDS OF TABLE T_T001W.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGRETFIELD = 'WERKS' "Ñ¡ÔñºóÏÔʾµÄ×Ö¶ÎDYNPPROG = SY-REPID "³ÌÐòÃûDYNPNR = SY-DYNNR "ÆÁÄ»ºÅDYNPROFIELD = 'S_IWERK' "ÆÁÄ»ÉÏÐèÒª¼ìË÷helpµÄ¿Ø¼þÃû³ÆVALUE_ORG = 'S'WINDOW_TITLE = '¹¤³§¼ìË÷'TABLESVALUE_TAB = T_T001WRETURN_TAB = RET_ITABEXCEPTIONSPARAMETER_ERROR = 1NO_VALUES_FOUND = 2OTHERS = 3.S_IWERK-LOW = RET_ITAB-FIELDVAL.LOOP AT SCREEN.IF SCREEN-NAME = 'S_IWERK-LOW'.SCREEN-INPUT = '0'.SCREEN-OUTPUT = '1'.MODIFY SCREEN.ENDIF.ENDLOOP.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDFORM. " FORM_IWERK*&---------------------------------------------------------------------**& Form FORM_IWERK_HIGH*&---------------------------------------------------------------------** ¹¤³§µÄËÑË÷°ïÖú*----------------------------------------------------------------------** ͨ¹ýÄÚ±í½¨Á¢F4°ïÖú*----------------------------------------------------------------------*FORM FORM_IWERK_HIGH .LOOP AT SCREEN.IF SCREEN-NAME = 'S_IWERK-HIGH'.SCREEN-INPUT = '1'.SCREEN-OUTPUT = '1'.MODIFY SCREEN.ENDIF.ENDLOOP.CLEAR T_T001W. CLEAR T_T001W[].CLEAR RET_ITAB.CLEAR RET_ITAB[].SELECT WERKS NAME1 FROM T001W INTO CORRESPONDING FIELDS OF TABLE T_T001W.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGRETFIELD = 'WERKS' "Ñ¡ÔñºóÏÔʾµÄ×Ö¶ÎDYNPPROG = SY-REPID "³ÌÐòÃûDYNPNR = SY-DYNNR "ÆÁÄ»ºÅDYNPROFIELD = 'S_IWERK' "ÆÁÄ»ÉÏÐèÒª¼ìË÷helpµÄ¿Ø¼þÃû³ÆVALUE_ORG = 'S'WINDOW_TITLE = '¹¤³§¼ìË÷'TABLESVALUE_TAB = T_T001WRETURN_TAB = RET_ITABEXCEPTIONSPARAMETER_ERROR = 1NO_VALUES_FOUND = 2OTHERS = 3.S_IWERK-HIGH = RET_ITAB-FIELDVAL.LOOP AT SCREEN.IF SCREEN-NAME = 'S_IWERK-HIGH'.SCREEN-INPUT = '0'.SCREEN-OUTPUT = '1'.MODIFY SCREEN.ENDIF.ENDLOOP.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDFORM. " FORM_IWERK_HIGH*&---------------------------------------------------------------------**& Form FORM_INGPR*&---------------------------------------------------------------------** ¼Æ»®Ô±×éµÄËÑË÷°ïÖú*----------------------------------------------------------------------** ×¢ÒâSQLµÄÓ÷¨,ÓëS_IWERKÁª¶¯*----------------------------------------------------------------------*FORM FORM_INGPR .CLEAR T_T024I.CLEAR T_T024I[].CLEAR T_CONDITION_SQL. CLEAR T_CONDITION_SQL[].T_CONDITION_SQL-CONDITION = 'IWERK >= S_IWERK-LOW AND IWERK <= S_IWERK-HIGH'.APPEND T_CONDITION_SQL.SELECT IWERK INGRP INNAM FROM T024I INTO CORRESPONDING FIELDS OF TABLE T_T024IWHERE (T_CONDITION_SQL).CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGRETFIELD = 'INGRP' "Ñ¡ÔñºóÏÔʾµÄ×Ö¶ÎDYNPPROG = SY-REPID "³ÌÐòÃûDYNPNR = SY-DYNNR "ÆÁÄ»ºÅDYNPROFIELD = 'S_INGRP' "ÆÁÄ»ÉÏÐèÒª¼ìË÷helpµÄ¿Ø¼þÃû³ÆVALUE_ORG = 'S'WINDOW_TITLE = '¼Æ»®Ô±×é¼ìË÷'TABLESVALUE_TAB = T_T024IEXCEPTIONSPARAMETER_ERROR = 1NO_VALUES_FOUND = 2OTHERS = 3.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDFORM. " FORM_INGPR。
ABAP中关于屏幕输入字段F4帮助的整理一、ABAP中从PC 机选择文件使用的标准Function Module :WS_FILENAME_GETFunction Group :GRAP在Function Group GRAP中包含一些ABAP与PC机文件操作相关的功能模块WS_FILENAME_GET 的接口说明输入参数:程序调用截图:执行结果截图二、通过创建Search Help的方式实现F4帮助功能日期类型的range 系统会自动关联一个日历表创建一个简单的Search Help 例子:保存&激活创建一个database table,包含这字段LGNUM,LNUMT为表的LGNUM 字段增加search help编写一个简单的select screen 测试下:执行,我们来看下这3个字段的F4帮助情况1、自己定义的F4帮助---他会按照我们创建的search help 来检索表里面的值供参考2、一般的没有search help的range,没有F4帮助search的功能3、日期类型的range,弹出日期选择对话框三、选择程序名的字段实现F4Function Group :SEF4 Function Module :F4_PROGRAM在SEF4 中,存在多个F4开头的function module,可以自己查看需要的。
object = s_name-highsuppress_selection = 'X'IMPORTINGRESULT = s_name-high EXCEPTIONSOTHERS= 1.AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_unam-low.CALL FUNCTION'F4_USER'EXPORTINGobject = s_unam-lowIMPORTINGRESULT = s_unam-low.AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_unam-high.CALL FUNCTION'F4_USER'EXPORTINGobject = s_unam-highIMPORTINGRESULT = s_unam-high.START-OF-SELECTION.WRITE: / '程序名:',s_name-low,' 到',s_name-high.WRITE: / '用户名: ',s_unam-low,' 到',s_unam-high.执行结果展示:程序选择界面用户选择界面这Function Group SEF4里面还有些其他的F4帮助Function Module,可以自己尝试下。
ABAP--如何使用'F4IF_INT_TABLE_VALUE_REQUEST'填写屏幕的多个字段样例屏幕1定义输入帮助处理PROCESS ON VALUE-REQUEST.FIELD ACTIVE_SZKART MODULE YCURVE_VALUE_REQUEST.FIELD ACTIVE_WWAER MODULE YCURVE_VALUE_REQUEST.FIELD ACTIVE_DKOND MODULE YCURVE_VALUE_REQUEST.2编写YCURVE_VALUE_REQUEST module代码module ycurve_value_request input.* Dieses Modulwirdbei F4 auf szkart, wwaeroderdkondausgef黨rt und* lieferteineListe der selektiertenZinskurven.data: return_tab like ddshretval occurs 1 with header line,field_tab like dfies occurs 1 with header line,dynpfields like dynpread occurs 3 with header line.call function 'F4IF_INT_TABLE_VALUE_REQUEST'exportingddic_structure = 'JBIZKARTLIST'retfield = 'ACTIVE_SZKART'dynpprog = 'SAPLJBYCDETAIL'dynpnr = '1000'dynprofield = 'X' "Felder aufsDynprozur點kstellenwindow_title = text-003value_org = 'S'callback_program = 'SAPLJBYCDETAIL'callback_form = 'BO_CALLBACK_FORM'tablesvalue_tab = selected_zkartlistfield_tab = field_tabreturn_tab = return_tabexceptionsparameter_error = 1no_values_found = 2others = 3.if sy-subrceq 0.* read table selected_zkartlist with key szkart = active_szkart * wwaer = active_wwaer* dkond = active_dkond.* move sy-tabix to active_index.* Aktualisiere die Table Control-Daten f黵das Tab Strip* perform bo_data_transfer_for_tab_strip.endif.endmodule. " YCURVE_VALUE_REQUEST INPUT3.编写回调函数BO_CALLBACK_FORM代码注意红色代码块,那里定义了返回三个字段并填写到操作屏幕form bo_callback_formtables record_tab structure seahlpreschanging shlp type shlp_descr_tcallcontrol like ddshf4ctrl.data: interface like line of shlp-interface,fp like line of shlp-fieldprop.clear interface.clear fp.fp-shlpoutput = 'X'.modifyshlp-fieldprop from fp transporting shlpoutputwhere shlpoutput = space.interface-shlpfield = 'SZKART'.interface-valfield = 'ACTIVE_SZKART'.append interface to shlp-interface.interface-shlpfield = 'WWAER'.interface-valfield = 'ACTIVE_WWAER'.append interface to shlp-interface.interface-shlpfield = 'DKOND'.interface-valfield = 'ACTIVE_DKOND'.append interface to shlp-interface.endform. " BO_CALLBACK_FORM 代码摘自sap的SAPLJBYCDETAIL。
ABAP程序相关事件及执行顺序1.LOAD-OF-PROGRAM:程序开始执行时候自动调用这个事件在SUBMIT,CALL TRANSACTION,PERFORM等执行的时候系统会自动调用这个事件。
所以无需声明即可。
2.INITIALIZATION: 在选择屏幕出现前触发的事件1.只能用于报表程序2.在选择屏幕出现之前执行,如果用逻辑数据库的话,这个是唯一能够修改选择屏幕初始值的地方。
3.通常的用法是在这里给选择屏幕中的字段赋值。
AT SELECTION-SCREEN OUTPUT(PBO)在每次选择屏幕被调用之前触发。
可以在屏幕输出之前做些准备工作,比如在程序中动态的对选择屏幕元素的输出属性进行修改。
例如在该事件块中如果将CLEAR语句用于选择屏幕元素的值,侧在每次重新显示选择屏幕时将选择屏幕元素的数值清空,如果只是希望进行一次类似的初始化工作,则在INITIALIZATION 中进行AT SELECTION-SCREEN: 在执行选择屏幕时触发的事件0.其实就像一个FORM,所以在这个事件里声明的变量都是局部变量。
1.根据SY-UCOMM这个系统变量可以判断用户的命令2.在这个事件里响应的是屏幕上选择条件中的事件,例如CHECKBOX的选择与否,RADIOBUTTON的选择,LISTBOX(事件如用户回车,选择某个GUI按钮。
功能键或者菜单。
)该事件主要进行对所有用户输入正确性和全部字段的一致性的检查工作,如有错误消息,侧所有元素可以重新进行输入,此后选择Excute或者回车讲再次触发PAI的选择等等。
所以分为以下几个方面:1.ON psel :在PARAMETER变化时触发的事件(该字段CHECK,如果有错误,侧可以在该字段中重新输入,其他元素成灰色,不接受输入)2.ON END OF sel :SELECT-OPTION触发的事件3.ON VALUE-REQUEST FOR psel_low_high :选择的帮助(F4)4.ON HELP-REQUEST FOR psel_low_high :选择的帮助(F1)5.ON RADIOBUTTON GROUP radi :单选按钮事件(不是使用ON FIELD进行的,而是使用单选按钮组区域,其他成灰色)6.ON BLOCK block :框架的触发事件(区域,其他成灰色)7.OUTPUT :响应屏幕上的事件,修改选择屏幕的唯一方法START-OF-SELECTION: 报表程序必须执行的事件,在进入第二屏幕之前触发。
ABAP中的F4帮助怎么用?当我们在sap的界面上,焦点放到一个字段上的时候,按F4,会出现选择或者搜索的界面,这就是abap中的f4帮助。
有多种实现f4帮助的方法,现在就把我指导的一点点说出来:1,固定值。
我们在Domain 中可以定义 value range ,在 value range 中定义的值,就可以出现在f4帮助中。
这是最简单的实现f4帮助的方法。
2,数据类型关联。
加入我们在选择屏幕上定义一个 dats 类型的参数,她就自动调用了日期类型的f4帮助。
3, se11创建 f4帮助。
(将se11创建的搜索帮助挂到表上的时候,又可以分为以下三种类型:用检查表实现输入帮助字段的外部搜索帮助附件数据元素的明确搜索帮助附件她们之间有啥区别,我也不知道。
等我知道了再补充。
)用 se11 创建的 f4 帮助可以分为两类:基本搜索帮助集中搜索帮助基本搜索帮助是搜索帮助的最小单元,集中搜索帮助还可以包括集中搜索帮助,也可以包括基本搜索帮助。
在基本搜索帮助中可以定义数据来源,但是集中搜索帮助不可以定义数据来源。
无论是基本搜素偶帮助还是集中搜索帮助都包含输出输出字段定义,并可以定义搜索帮助exit,用于调用一个远程的 function module 来对数据进行过滤和处理。
如果将这些搜索帮助与表挂上之后,我们在使用的时候就会自动出现该搜索帮助。
在 synpro 程序中。
也可以通过属性(属性名叫搜索帮助)为字段重新指定自定义的搜索帮助也可以在选择屏幕或者 screen 中重新指定搜索帮助,下面举几个例子来说明使用的方法一,根据搜索帮助的名字来指定搜索帮助1选择屏幕REPORT z_ljc_078 LINE-SIZE 200.parameters: mama(18) type c.INITIALIZATION.AT SELECTION-SCREEN on value-request for mama.DATA:v_mama LIKE help_info-dynprofld.v_mama = 'MAMA'.CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'EXPORTINGtabname = ''fieldname = ''SEARCHHELP = 'ZFI_CRC_001'DYNPPROG = SY-REPIDDYNPNR = SY-DYNNRDYNPROFIELD = v_mama.start-OF-SELECTION.write mama.2 dynpro screen流逻辑:PROCESS BEFORE OUTPUT.MODULE INIT.PROCESS AFTER INPUT.PROCESS ON VALUE-REQUEST.FIELD matnr MODULE VALUE_matnr.report:MODULE init OUTPUT.progname = sy-repid.dynnum = sy-dynnr.ENDMODULE.MODULE value_matnr INPUT.CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'EXPORTINGtabname = ''fieldname = ''SEARCHHELP = 'MAT1'DYNPPROG = SY-REPIDDYNPNR = SY-DYNNRDYNPROFIELD = 'MATNR'ENDMODULE.无论是在选择屏幕或者是dynpro中,如果指定了searchhelp 属性,则 tabname 和fieldname 属性就不起作用了。
当不指定 searchhelp 属性,而制定了 tabname 和 fieldname 属性,则会调用tabname-fieldname 挂接的搜素偶帮助。
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'EXPORTINGtabname = 'mara'fieldname = 'matnr'* SEARCHHELP = ''DYNPPROG = SY-REPIDDYNPNR = SY-DYNNRDYNPROFIELD = 'MATNR'二,用内表生成f4帮助1选择屏幕TYPES: BEGIN OF ty_aenr,aennr type aenr-aennr,datuv type aenr-datuv,aenam type aenr-aenam,aegru type aenr-aegru,ccart type aenr-ccart,aetxt type aenr-aetxt,END OF ty_aenr.DATA: gt_aenr TYPE TABLE OF ty_aenr,gs_aenr TYPE ty_aenr.INITIALIZATION.PERFORM frm_read_aenr.*获得图幅的f4帮助AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_aennr-low. PERFORM frm_search_help_file.FORM frm_read_aenr .DATA l_objnr TYPE jest-objnr.DATA l_line TYPE bsvx-sttxt. "订单状态SELECT a~aennr a~datuv a~aenam a~aegru a~ccart a~aetxt INTO TABLE gt_aenrFROM aenr as ainner join USGRP_USER as con a~annam = c~bnamewhere c~usergroup = 'CCCAR'.loop at gt_aenr into gs_aenr.CLEAR:l_objnr,l_line.***组建更改编号对象号CONCATENATE 'CD' gs_aenr-aennr INTO l_objnr.***获得系统状态,调用函数CALL FUNCTION 'STATUS_TEXT_EDIT'EXPORTINGobjnr = l_objnrspras = sy-languIMPORTINGline = l_lineEXCEPTIONSobject_not_found = 1OTHERS = 2.***判断该更改单是否批准IF sy-subrc = 0.SEARCH l_line FOR 'ECOR'.IF sy-subrc <> 0.DELETE gt_aenr. "没有下达的就删掉ENDIF.ENDIF.endloop..ENDFORM. " frm_read_projFORM frm_search_help_file .DATA:v_aennr LIKE help_info-dynprofld.v_aennr = 'SO_aennr'.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTINGretfield = 'AENNR'value_org = 'S'dynprofield = v_aennrdynpprog = sy-repiddynpnr = sy-dynnrTABLESvalue_tab = gt_aenrEXCEPTIONSparameter_error = 1no_values_found = 2OTHERS = 3.* IF sy-subrc <> 0.* WRITE: 'error'.* ENDIF.ENDFORM. " frm_search_help_file2 dynpro screen:流逻辑:PROCESS BEFORE OUTPUT.MODULE INIT.PROCESS AFTER INPUT.PROCESS ON VALUE-REQUEST.FIELD aenam MODULE VALUE_aenam.report:TYPES: BEGIN OF values,aenam TYPE mara-aenam,matnr TYPE mara-matnr,END OF values.DATA: matnr(18) TYPE c,aenam(12) TYPE c.DATA: progname TYPE sy-repid,dynnum TYPE sy-dynnr.CALL SCREEN 100.MODULE init OUTPUT.progname = sy-repid.dynnum = sy-dynnr.ENDMODULE.MODULE value_aenam INPUT.select aenam matnr into table values_tab from mara where matnr BETWEEN '000000000000001199' and '000000000000001250'.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield = 'AENAM'dynpprog = prognamedynpnr = dynnumdynprofield = 'AENAM'value_org = 'S'TABLESvalue_tab = values_tab.ENDMODULE.当然,也可以根据一个字段的选择过滤另一个字段的f4帮助的数据。
下面给出一个在 dynpro screen 中的例子。
在选择屏幕上就不给出例子了。
实现的方法都差不多。
甚至更简单。
流逻辑:PROCESS BEFORE OUTPUT.* MODULE STATUS_0100.*MODULE INIT.PROCESS AFTER INPUT.* MODULE USER_COMMAND_0100.MODULE CANCEL AT EXIT-COMMAND.PROCESS ON VALUE-REQUEST.FIELD matnr MODULE VALUE_matnr.FIELD aenam MODULE VALUE_aenam.report:*&TYPES: BEGIN OF values,aenam TYPE mara-aenam,matnr TYPE mara-matnr,END OF values.DATA: matnr(18) TYPE c,aenam(12) TYPE c.DATA: progname TYPE sy-repid,dynnum TYPE sy-dynnr,dynpro_values TYPE TABLE OF dynpread,field_value LIKE LINE OF dynpro_values,values_tab TYPE TABLE OF values.CALL SCREEN 100.MODULE init OUTPUT.progname = sy-repid.dynnum = sy-dynnr.CLEAR: field_value, dynpro_values.field_value-fieldname = 'AENAM'.APPEND field_value TO dynpro_values.ENDMODULE.MODULE cancel INPUT.LEAVE PROGRAM.ENDMODULE.MODULE value_aenam INPUT.select aenam matnr into table values_tab from mara where matnr BETWEEN '000000000000001199' and '000000000000001250'.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield = 'AENAM'dynpprog = prognamedynpnr = dynnumdynprofield = 'AENAM'value_org = 'S'TABLESvalue_tab = values_tab.ENDMODULE.MODULE value_matnr INPUT.CALL FUNCTION 'DYNP_VALUES_READ'EXPORTINGdyname = prognamedynumb = dynnumtranslate_to_upper = 'X'TABLESdynpfields = dynpro_values.READ TABLE dynpro_values INDEX 1 INTO field_value.SELECT AENAM MATNRFROM MARAINTO CORRESPONDING FIELDS OF TABLE values_tabWHERE AENAM = field_value-fieldvalue.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield = 'AENAM'dynpprog = prognamedynpnr = dynnumdynprofield = 'MATNR'value_org = 'S'TABLESvalue_tab = values_tab.ENDMODULE.好了,关于f4帮助,目前就知道这么一点点。