ABAP 使用MODIF ID实现动态选择屏幕

代码

  • P_WERKS 如果使用OBLIGATORY参数;OBLIGATORY参数的优先级大于user-commd;切换RADIOBUTTON时,屏幕不会动态变化(需要先键入值);所以建议对OBLIGATORY参数设置默认值
TABLES: MSEG,AUFK,EKKO.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
  PARAMETERS: P_P1 TYPE C RADIOBUTTON GROUP B1 DEFAULT 'X' USER-COMMAND FLAG,
              P_P2 TYPE C RADIOBUTTON GROUP B1.

  SELECTION-SCREEN SKIP 1.

  PARAMETERS: P_WERKS TYPE MARC-WERKS DEFAULT '3001' .
  SELECT-OPTIONS: S_LGORT FOR MSEG-LGORT MODIF ID M1,
  S_MATNR FOR MSEG-MATNR,
  S_AUFNR FOR AUFK-AUFNR MODIF ID M1,
  S_EBELN FOR EKKO-EBELN MODIF ID M2,
  S_MBLNR FOR MSEG-MBLNR,
  S_BWART FOR MSEG-BWART.
SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    CASE SCREEN-GROUP1.
      WHEN 'M1'.
        IF P_P1 = 'X'.
          SCREEN-ACTIVE = '0'.
        ELSE.
          SCREEN-ACTIVE = '1'.
        ENDIF.
      WHEN 'M2'.
        IF P_P1 = 'X'.
          SCREEN-ACTIVE = '1'.
        ELSE.
          SCREEN-ACTIVE = '0'.
        ENDIF.
      WHEN OTHERS.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.

效果

  • 不填写值即可正常触发
    1
    2

效果(P_WERKS带OBLIGATORY)

  • 必须先填写值才能正常触发
    1
    2

猜你喜欢

转载自blog.csdn.net/qq_30797051/article/details/121377355