프로그래밍/SAP ABAP

[SAP/ABAP] 라디오 버튼 동적 변화 (radio button dynamic change), invisible 로 필드 숨김/표시

2022. 9. 30. 10:41

라디오 버튼 동적 변화

 

USER-COMMAND a    <= 선택을 했는지, 안했는지에 대한 명령어임. (a 또는 기타 가능)

이걸 안넣으면 라디오버튼을 다른 거 선택했을 때, 그 선택에 따른 변화가 일어나지 않음. 

*------------------------ Selection Screen ---------------------------*

SELECTION-SCREEN BEGIN OF BLOCK selscr WITH FRAME TITLE text-000.

PARAMETERS: p_rad1   RADIOBUTTON GROUP rad1 USER-COMMAND a DEFAULT 'X',
            p_rad2   RADIOBUTTON GROUP rad1,
            p_rad3   RADIOBUTTON GROUP rad1.

*-- Selection Screen for radio button 1
SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE text-001.
PARAMETERS:     p_date   LIKE sy-datum DEFAULT sy-datum MODIF ID one.
SELECT-OPTIONS: s_uzeit  FOR  sy-uzeit MODIF ID one.
SELECTION-SCREEN END OF BLOCK rad1.

*-- Selection Screen for radio button 2
SELECTION-SCREEN BEGIN OF BLOCK rad2 WITH FRAME TITLE text-002.
PARAMETERS: p_werks   LIKE t001w-werks MODIF ID two.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(6) text-003 MODIF ID two.
SELECTION-SCREEN POSITION 8.
PARAMETERS: p_chk  AS CHECKBOX DEFAULT 'X' MODIF ID two.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK rad2.

*-- Selection Screen for radio button 3
SELECTION-SCREEN BEGIN OF BLOCK rad3 WITH FRAME TITLE text-004.
PARAMETERS: p_matnr   LIKE mkal-matnr MODIF ID tri,
            p_verid LIKE mkal-verid MODIF ID tri.
SELECTION-SCREEN END OF BLOCK rad3.

SELECTION-SCREEN END OF BLOCK selscr.

*--------------------------
AT SELECTION-SCREEN OUTPUT.
*--------------------------

  IF p_rad1 = 'X'.
    LOOP AT SCREEN.
      IF  screen-group1 = 'TWO' OR
          screen-group1 = 'TRI'.
        screen-input = 0.
        screen-invisible = 1.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ELSEIF p_rad2 = 'X'.
    LOOP AT SCREEN.
      IF screen-group1 = 'ONE' OR
         screen-group1 = 'TRI'.
        screen-input = 0.
        screen-invisible = 1.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ELSEIF p_rad3 = 'X'.
    LOOP AT SCREEN.
      IF screen-group1 = 'ONE' OR
         screen-group1 = 'TWO'.
        screen-input = 0.
        screen-invisible = 1.
        MODIFY SCREEN.
      ENDIF.
    ENDLOOP.
  ENDIF.

 

screen-invisible 로 필드 숨김/표시 

<주의> 

invisible = 1 로 해당 필드를 숨길 수 있는데, 

이때 input = 0 을 하지 않으면 필드명은 숨겨지지만 필드입력부분이 ******** 와 같은 형태로 남아있게 된다.