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

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值