[ABAP] Report프로그램 동적 Radio Button 제어
라디오 버튼 선택시 입력값이 달라지고, 출력값도 달라지게 설정했습니다. 전체버튼 선택시 데이터 전체가 출력됩니다.
/코드/
[초기화면]
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT. "초기화면 제어해줍니다.
PERFORM radio. "PERFORM문을 이용해 라디오버튼을 호출해줍니다.
START-OF-SELECTION. "데이터 출력제어
PERFORM select. "PERFORM문을 이용해 데이터를 출력했습니다.
[라디오버튼설정]
SELECTION-SCREEN BEGIN OF BLOCK SEARCH WITH FRAME TITLE TEXT-001. "BLOCK을이용해 TITLE을 설정
SELECTION-SCREEN BEGIN OF BLOCK BLOCK1.
SELECTION-SCREEN BEGIN OF LINE. "LINE을이용해 라디오버튼 가로정렬
PARAMETERS : PA_LIM_1 RADIOBUTTON GROUP LIM DEFAULT'X' USER-COMMAND UCOMM.
" USER-COMMAND UCOMM 동적설정!꼭입력
SELECTION-SCREEN COMMENT (6) TEXT-R01 FOR FIELD PA_LIM_1. "입고 "TEXT로 이름을 지정해줍니다.
PARAMETERS : PA_LIM_2 RADIOBUTTON GROUP LIM .
SELECTION-SCREEN COMMENT (6) TEXT-R02 FOR FIELD PA_LIM_2. "출고
PARAMETERS : PA_LIM_3 RADIOBUTTON GROUP LIM .
SELECTION-SCREEN COMMENT (6) TEXT-R03 FOR FIELD PA_LIM_3. "전체
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLOCK1.
SELECTION-SCREEN END OF BLOCK SEARCH .
[라디오버튼 제어]
FORM SET_RADIO.
LOOP AT SCREEN. "LOOP AT SCREEN구문으로 라디오버튼을 제어합니다.
IF PA_LIM_1 = 'X'.
IF SCREEN-GROUP1 = 'ID1'.
SCREEN-INPUT = 1. "입력값 1(활성) / 0(비활성)
SCREEN-INVISIBLE = 0. "1(안보이게) / 0(보이게)
ENDIF.
IF SCREEN-GROUP1 = 'ID2'.
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
ENDIF.
GV_STATUS = '출고'. "SELECT 할때 출력값을 제어해줍니다.
MODIFY SCREEN.
REFRESH : SO_DATE2,SO_NUM2,SO_PUR,SO_MTR2. "입력값이 다음 라디오버튼을 선택했을때 REFRESH됩니다.
ELSEIF PA_LIM_2 = 'X'.
IF SCREEN-GROUP1 = 'ID2'.
SCREEN-INPUT = 1.
SCREEN-INVISIBLE = 0.
ENDIF.
IF SCREEN-GROUP1 = 'ID1'.
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
ENDIF.
GV_STATUS = '입고'. "SELECT 할때 출력값을 제어해줍니다.
MODIFY SCREEN.
REFRESH : SO_PCOD,SO_NUM,SO_DATE,SO_MTR.
ELSEIF PA_LIM_3 = 'X'.
IF SCREEN-GROUP1 = 'ID2'.
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
ENDIF.
IF SCREEN-GROUP1 = 'ID1'.
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
ENDIF.
GV_STATUS = '입고''출고'.
MODIFY SCREEN.
REFRESH : SO_PCOD,SO_NUM,SO_DATE,SO_MTR,SO_DATE2,SO_NUM2,SO_PUR,SO_MTR2.
ENDIF.
CLEAR: GS_OUT, GS_OUT2.
ENDLOOP.
ENDFORM.