在选择屏幕中,根据按钮动态显示时,如果忘记写USER-COMMAND时会发生的问题

发布时间 2023-09-22 11:09:26作者: 东篱1

顾问要求在,选择屏幕单据查询时显示成圈线和生产线选择框,在明细查询时隐藏,听需求是一个很简单的选择屏幕隐藏的功能,实现代码如下

PARAMETERS:p_dj RADIOBUTTON GROUP cx  DEFAULT 'X',             "单据查询
          p_mx RADIOBUTTON GROUP cx .                    "明细查询

PARAMETERS:p_cqx    AS CHECKBOX MODIF ID M1,            "成圈线
          p_scx    AS CHECKBOX MODIF ID M1 .          "生产线

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN .
   IF SCREEN-GROUP1 = 'M1'.
     IF  P_DJ = ABAP_ON.
        SCREEN-ACTIVE = '1'.
      ELSE.
        SCREEN-ACTIVE = '0'.
       ENDIF.
   ENDIF.
   MODIFY SCREEN.
  ENDLOOP.

如此便实现了效果,但是在 PARAMETERS为 p_dj 时,忘记了写了USER-COMMAND ,导致只能按回车才能触发,研究了小半天才发现这个问题,因此记录下

正确的代码如下:

PARAMETERS:p_dj RADIOBUTTON GROUP cx USER-COMMAND cx1 DEFAULT 'X',             "单据查询
          p_mx RADIOBUTTON GROUP cx .                    "明细查询

PARAMETERS:p_cqx    AS CHECKBOX MODIF ID M1,            "成圈线
          p_scx    AS CHECKBOX MODIF ID M1 .          "生产线

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN .
   IF SCREEN-GROUP1 = 'M1'.
     IF  P_DJ = ABAP_ON.
        SCREEN-ACTIVE = '1'.
      ELSE.
        SCREEN-ACTIVE = '0'.
       ENDIF.
   ENDIF.
   MODIFY SCREEN.
  ENDLOOP.