ABAP 关键字:PARAMETERS
关键字:PARAMETERS
时间:2021-09-02
语法:
PARAMETERS {para[(len)]}|{para [LENGTH len]}
[type_options]
[screen_options]
[value_options]
[ldb_options].
声明一个长度为len的参数para。参数是选择屏幕的组件。在ABAP程序中,参数被分配一个全局基本数据对象和选择屏幕上的一个输入字段。参数名称的长度不超过8个字符。在可执行程序中,语句会自动分配给标准选择屏幕1000。参数len必须直接指定一个数字或数字常量。如果未指定len,则泛型数据类型的长度设置为1。
细节:输入框的可视长度由参数para的长度len决定,不过输入框的最大可视长度在39到45之间。如果输入框输入的内容大于可见长度,内容将被显示为可移动的。在选择屏幕执行之前,para 数据对象的内容被传输到选择屏幕上的输入字段,并执行一个转换例程。如果参数的长度大于255,内容将从右侧截断。在用户在选择屏幕上操作之后,输入字段的内容被绑定到数据对象,而类字符字段的内容在默认情况下被转换为大写。然后执行转换例程。在传输之后会触发各种选择屏幕事件。
附加选项:Type type [decimals dec] 指定参数para的类型
PARAMETERS p_werks TYPE werks.
PARAMETERS p_salary TYPE p DECIMALS 2.
附加选项:LIKE obj 指定参数para的类型 参照已有的变量
DATA lv_obj TYPE matnr .
PARAMETERS p_matrn LIKE lv_obj.
附加选项:LIKE (name) 指定参数para的类型 参照动态字段。效果如下:
DATA lv_comp TYPE c LENGTH 60.
" 动态参数
PARAMETERS p_werks LIKE (lv_comp).
" 初始化动态参数
INITIALIZATION.
lv_comp = 'MARA-MATNR'.
附加选项:
OBLIGATORY:将选择屏幕上的参数的输入字段定义为必输字段。
NO-DISPLAY:在选择屏幕上不生成屏幕元素。可以在通过SUMBIT调用为它提供值。
VISIBLE LENGTH len:设置屏幕元素的可见长度(输入框)。
DATA lv_note TYPE c LENGTH 60. " 备注
" 设置为必输 可看到打勾的标志
PARAMETERS p_matnr TYPE matnr OBLIGATORY.
" 不生成屏幕元素 在选择屏幕界面不可见
PARAMETERS p_werks TYPE werks NO-DISPLAY.
" 设置输入框的可见长度
PARAMETERS p_note LIKE lv_note VISIBLE LENGTH 6.
附加选项:AS CHECKBOX [USER-COMMAND fcode] 定义复选框
细节:参数para默认类型是C,长度是1。如果使用type、like指定参数类型,那么参照的数据类型必须是泛型数据类型C或长度为1的非泛型数据类型。添加USER-COMMAND可以用来为参数分配一个功能码fcode。功能码fcode必须直接指定,长度不超过20个字符。
补充:USER-COMMAND一般都是配合单选框(Radio Button)或者复选框(Check Box)使用,当单选框或者复选框被选中时,运行时环境(Runtime Environment)触发AT SELECTION-SCREEN事件,可通过添加MODIF ID修改选择屏幕。
" 当指定USER-COMMAND时,选择复选框会触发AT SELECTION-SCREEN 事件
PARAMETERS p_c1 AS CHECKBOX USER-COMMAND f1.
" 不触发 AT SELECTION-SCREEN 事件
PARAMETERS p_c2 AS CHECKBOX.
" 可打断点调试
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
" Do some changes
MODIFY SCREEN. " 更改选择屏幕
ENDLOOP.
附加选项:RADIOBUTTON GROUP group [USER-COMMAND fcode]
group用于为参数定义单选按钮组。名称组以不超过4个字符的字符串形式直接输入。在选择屏幕中,同一单选按钮组中必须至少有两个参数。在一个程序中不能有多个名称相同的单选按钮组,即使它们是在不同的选择屏幕中定义的。USER-COMMAND用法及解释同上。
模拟场景:选择物料时,显示物料选择条件,隐藏人员选择条件。选择人员时,则相反。
" 物料与人员
PARAMETERS p_r1 RADIOBUTTON GROUP grp1 DEFAULT 'X' USER-COMMAND f1.
PARAMETERS p_r2 RADIOBUTTON GROUP grp1.
" 物料选择条件
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
PARAMETERS p_werks TYPE werks MODIF ID m1. " 工厂
PARAMETERS p_matnr TYPE matnr MODIF ID m1. " 物料
SELECTION-SCREEN END OF BLOCK bk1.
" 人员选择条件
SELECTION-SCREEN BEGIN OF BLOCK bk2 WITH FRAME TITLE text-002.
PARAMETERS p_pernr TYPE p_pernr MODIF ID m2. " 工号
SELECTION-SCREEN END OF BLOCK bk2.
" Radio Button 指定了USER-COMMAND,单选按钮的值发生改变时触发事件
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN. " 遍历选择屏幕中的所有元素
IF p_r1 = 'X'. " 选中 P_R1 物料
IF screen-group1 = 'M2'. "隐藏 MODIF ID = 'M2' 的屏幕元素
screen-active = '0'.
ENDIF.
ELSE. " 选中 P_R2 人员
IF screen-group1 = 'M1'."隐藏 MODIF ID = 'M1' 的屏幕元素
screen-active = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN. " 保存更改
ENDLOOP.
附加选项:LOWER CASE字符转换为小写。
补充:默认情况下,在选择框输入的字符会被自动转换为大写。
PARAMETERS p_note TYPE string LOWER CASE.
附加选项:MATCHCODE OBJECT help_search 添加搜索帮助
PARAMETERS p_matnr TYPE matnr MATCHCODE OBJECT mat1_s_mpn.
附加选项: VALUE CHECK 对选择字段进行校验,根据数据类型阈值或检查表。
PARAMETERS p_mtart LIKE MARA-MTART VALUE CHECK. " 物料类型
它会根据检查表T134对选择屏幕输入值进行检查。
附加选项:MEMORY ID rid
当调用选择屏幕时,输入字段将用用户内存中SAP/GPA参数的当前值填充,前提是数据对象para是在AT selection - screen OUTPUT事件处理后的初始值。
PARAMETERS p_prog TYPE sy-repid MEMORY ID rid.
AT SELECTION-SCREEN OUTPUT.
SET PARAMETER ID 'RID' FIELD 'TEST_PROGRAM'.
扩展:动态选择屏幕选择文本 函数模块:SELECTION_TEXTS_MODIFY
文章来自于网络,如果侵犯了您的权益,请联系站长删除!