ABAP - 选择屏幕
2026/6/3 18:31:08 网站建设 项目流程

PARAMETRS常用方法:

*1. DEFAULT 默认值 PARAMETERS p_def TYPE char10 DEFAULT 'ABC'. *2. OBLIGATORY 必填 PARAMETERS p_obl TYPE matnr OBLIGATORY. *3. LOWER CASE 允许小写 PARAMETERS p_low TYPE char10 LOWER CASE. *4. NO-DISPLAY 屏幕隐藏 PARAMETERS p_hide TYPE kunnr NO-DISPLAY DEFAULT '10000'. *5. VISIBLE LENGTH n 输入框缩短 PARAMETERS p_len TYPE char20 VISIBLE LENGTH 5. *6. MODIF ID 屏幕分组(用来动态灰/隐藏) PARAMETERS p_mod TYPE bukrs MODIF ID m1. *7. AS CHECKBOX 复选框 PARAMETERS p_ck TYPE c AS CHECKBOX DEFAULT 'X'. *8. AS RADIOBUTTON GROUP 单选组 PARAMETERS: r1 TYPE c RADIOBUTTON GROUP rad DEFAULT 'X', r2 TYPE c RADIOBUTTON GROUP rad, r3 TYPE c RADIOBUTTON GROUP rad. *9. MEMORY ID 全局记忆(同GET/SET PARAMETER) PARAMETERS p_mem TYPE matnr MEMORY ID mat. *10. VALUE CHECK 参照域做校验 PARAMETERS p_vc TYPE land1 VALUE CHECK. *11. HELP-REQUEST / VALUE-REQUEST 自定义F1/F4(配合事件) PARAMETERS p_f4 TYPE kunnr. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_f4. *自定义F4逻辑此处

SELECT-OPTIONS常用方法:

DATA gs TYPE kna1. *NO INTERVALS:只有LOW,无HIGH区间 SELECT-OPTIONS s1 FOR gs-kunnr NO INTERVALS. *NO-EXTENSION:去掉多选按钮 SELECT-OPTIONS s2 FOR gs-kunnr NO-EXTENSION. *OBLIGATORY必输、MODIF ID分组、DEFAULT默认区间 SELECT-OPTIONS s3 FOR gs-kunnr OBLIGATORY MODIF ID m2 DEFAULT '1000' TO '2000'.

常用案例:

TABLES:vbak,vbap. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001. PARAMETERS : P1 RADIOBUTTON GROUP rad1 DEFAULT 'X' USER-COMMAND uc, P2 RADIOBUTTON GROUP rad1 . SELECTION-SCREEN END OF BLOCK b1. SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-002. SELECT-OPTIONS : s1_auart FOR vbak-auart MODIF ID ty1, "销售订单类型 s1_vbeln FOR vbak-vbeln MODIF ID ty1, "销售订单 s1_kunnr FOR vbak-kunnr MODIF ID ty1, "客户 s1_matnr FOR vbap-matnr MODIF ID ty1. "物料 SELECTION-SCREEN END OF BLOCK b2. SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-003. SELECT-OPTIONS : s2_erdat FOR vbak-erdat MODIF ID ty2, "订单创建日期 s2_vdatu FOR vbak-vdatu MODIF ID ty2. "订单交货日期 SELECTION-SCREEN END OF BLOCK b3. AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. CASE screen-group1. WHEN 'TY1'. IF p1 = 'X'. screen-active = '0'. ELSE. screen-active = '1'. ENDIF. WHEN 'TY2'. IF p2 = 'X' . screen-active = '0'. ELSE. screen-active = '1'. ENDIF. ENDCASE. MODIFY SCREEN. ENDLOOP.

补充:SCREEN 是 ABAP 内置的系统结构体,用来在 LOOP 里控制屏幕字段的显示、隐藏、灰显、必输

SCREEN 是系统结构体,每个屏幕字段对应一条 SCREEN 记录。常用字段分四类:识别、状态、显示、分组

1. 识别类

  • NAME(30):屏幕字段名(PARAMETERS/SELECT-OPTIONS 的名字)

    • 例:SCREEN-NAME = 'P_VBELN'

2. 状态类(最常用)

  • INPUT(1)1=可输入/0=灰显只读

  • ACTIVE(1)1=显示/0=隐藏(整个字段消失)

  • REQUIRED(1)1=必输/0=不必输/2=假必输(有*但不校验)

这三个是LOOP AT SCREEN 90% 的用法


三、常用

3. 显示样式类

  • OUTPUT(1)1=仅显示(不可输入)

  • INTENSIFIED(1)1=高亮(蓝/红)

  • INVISIBLE(1)1=密码掩码(显示*)

  • LENGTH(1):控制显示长度

  • DISPLAY_3D(1)1=3D边框

  • VALUE_HELP(1)1=有F4帮助按钮

4. 分组类(批量控制神器)

  • GROUP1 ~ GROUP4(3):字段组,配合MODIF ID批量控制

    • 选择屏幕:PARAMETERS ... MODIF ID GR1.

    • 然后:IF SCREEN-GROUP1 = 'GR1'.批量改属性

工作里批量隐藏 / 灰显一批字段必用 GROUP1。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询