abap - 如何显示屏幕字段的可能值
问题描述
在标准程序屏幕中,对于某些字段,有一个按钮,您可以单击该按钮并搜索允许的值。
示例(程序 DEMO_DYNPRO_F4_HELP_DICTIONARY):
我可以对 ABAP 做同样的事情吗,它是选择选项的附加功能还是其他功能?
解决方案
屏幕右侧的这个小按钮告诉您有F4 帮助。单击此按钮或将光标放在字段中并按 F4(因此得名),将显示可能值的列表,您可以选择一个值。
有很多方法可以确定 F4 帮助应该显示什么。下面的列表显示了 ABAP 运行时如何决定在调用 F4 帮助时做什么,这足以让您在 Web 上获得更多信息(来源:SAP 库“搜索帮助调用的层次结构”)。
SAP 库用于提供下图(也可在此处获得)当用户显示给定字段的值列表时系统调用的内容,我将在下面详细说明:
请注意,它涉及Dynpro 技术的所有类型的屏幕,选择屏幕是其中的一部分,但还有一个额外的层需要理解。
因此,我首先对 Dynpro 技术的所有类型屏幕的 F4 帮助进行了一般性的解释,然后是专门针对选择屏幕的一章。
调用 F4 帮助时会发生什么:
- 如果某些 ABAP 代码显式分配给屏幕字段 (
PROCESS ON VALUE-REQUEST
),则调用此代码。PROCESS ON VALUE-REQUEST
在Screen Flow Logic的事件块中,使用FIELD <screenfieldname> MODULE <modulename>
.- 在您的程序、内部
MODULE <modulename>
和ENDMODULE
语句中定义 ABAP 代码。 - 您可以实施任何屏幕解决方案来显示可能的值。一个常见的解决方案是调用功能模块
F4IF_INT_TABLE_VALUE_REQUEST
。
- 否则,如果屏幕字段明确分配了搜索帮助(*),则调用此搜索帮助。
- 否则,如果屏幕字段被分配了一个对应于 DDIC 组件的名称(例如,字段名称
SFLIGHT-CARRID
对应于CARRID
DDIC 表的列SFLIGHT
)并且同时检查了屏幕字段属性“ DD field ”:- 如果将搜索帮助分配给 DDIC 组件,则会调用此搜索帮助。
- 否则,如果 DDIC 组件具有外键(指的是称为Check Table的表):
- 如果检查表链接到搜索帮助,则调用此搜索帮助。
- 否则,如果为检查表分配了一个文本表,则检查表将显示文本表中的文本。
- 否则显示检查表。
- 否则,如果为 DDIC 列的数据元素分配了搜索帮助,则调用此搜索帮助。
- 否则,如果 DDIC 列的数据元素引用具有一些固定值的域,则这些值将与其各自的文本一起显示。
- 否则,如果屏幕字段具有类型
DATS
(日期字段),则会显示日历帮助。 - 否则,如果屏幕字段具有类型
TIMS
(时间字段),则会显示时钟帮助。 - 否则什么都不会发生。
(*)搜索帮助是一个存储库对象,它简化了处理经典 F4 帮助的开发。它指的是数据库表或视图,指示可能的输入和返回列、附加选择标准、显示列等。它通过事务代码维护SE11
。
请查看您的 ABAP 系统中的那些演示程序:
- DEMO_DYNPRO_F4_HELP_DICTIONARY:Dynpros 上 ABAP 词典中 F4 帮助的演示
- DEMO_DYNPRO_F4_HELP_DYNPRO : Dynpros 上的 F4 帮助演示
- DEMO_DYNPRO_F4_HELP_MODULE : 来自对话框模块的 F4 帮助演示
选择画面
选择屏幕是通用屏幕,其布局和流程逻辑通过 ABAP 语句描述,并在编译时生成相应的通用屏幕,而通用屏幕通过 Screen Painter 以图形方式设计。
有以下 ABAP 语句用于处理选择屏幕中的 F4 帮助(但当调用 F4 帮助时,ABAP 运行时的行为与上述相同):
- 要通过 ABAP 代码处理选择屏幕字段的 F4 帮助,
AT SELECTION-SCREEN ON VALUE-REQUEST FOR <screen field name>
必须使用 ABAP 语句。 - 可以通过将单词添加
MATCHCODE OBJECT <searchhelpname>
到 ABAP 语句PARAMETERS
和SELECT-OPTIONS
.
请注意,不应手动更改选择屏幕,因为每次激活程序时都会重新生成它,并且屏幕字段始终停用“DD Field”属性,因此 ABAP 运行时不会访问定义的搜索帮助DDIC。
例子:
以下选择屏幕语句:
PARAMETERS p_file TYPE string.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
MESSAGE 'instead, display your F4 dialog' TYPE 'I'.
生成选择屏幕(布局和流程逻辑):
PROCESS ON VALUE-REQUEST.
FIELD P_FILE MODULE %_P_FILE_VAL.
以及程序中对开发人员隐藏的一些 ABAP 代码:
MODULE %_P_FILE_VAL INPUT.
MESSAGE 'instead, display your F4 dialog' TYPE 'I'.
ENDMODULE.
推荐阅读
- vim - 打开多个乳胶窗口时折叠不能在所有窗口中工作
- python - librosa和tensorflow之间相同wav文件的不同采样率SR
- command-line-interface - 如何在不安装 Tailwindcss 2.2 CLI 的情况下使用模块“tailwindcss/defaultTheme”?
- c# - 如何在android的后台运行网络浏览器?
- sql - 使用 LEFT OUTER JOIN 在查询中包含 NULL 值
- java - Java 返回的布尔值是假的,即使条件应该返回真
- java - 发送数据包到我的世界服务器 Forge 1.16.5
- java - 如何计算快速排序算法中的比较次数?
- vba - VBA 从 Teradata 调用 SQL 查询遇到 3535 错误消息,而此 SQL 语句在 Teradata 中运行良好
- java - 未找到 Vaadin 前端文件夹