728x90
반응형
Module pool에선 레이아웃에서 버튼을 그리면 되지만 실행가능 프로그램에서는 로직으로 버튼을 구현해야 한다.
변수 선언
INCLUDE <icon>.
TABLES: sscrfields.
SELECTION-SCREEN : FUNCTION KEY 1.
SELECTION-SCREEN : FUNCTION KEY 2.
DATA : g_function_key TYPE smp_dyntxt,
g_function_key2 TYPE smp_dyntxt.
버튼을 생성할때 아이콘도 포함된 버튼을 만들것이므로 icon테이블을 선언한다.
sscrfields구조의 FUNCTXT가 하나의 버튼이 된다. 최대 5개까지 생성할 수 있다.
⭐SELECTION-SCREEN : FUNCTION KEY 를 입력하지 않으면 어떤 로직을 구현하던 간에 화면에 버튼이 나오지 않는다.
버튼의 아이콘과 텍스트를 담을 변수를 선언한다.
INITIALIZATION
프로그램이 실행하자마자 버튼이 보여야 하기 때문에 초기값을 설정하는 INITIALIZATION에서 버튼을 생성해준다.
INITIALIZATION.
g_function_key-icon_id = icon_xls.
g_function_key-icon_text = TEXT-001. "템플릿 다운로드
g_function_key-text = TEXT-001.
sscrfields-functxt_01 = g_function_key.
g_function_key2-icon_id = icon_table_settings.
g_function_key2-icon_text = TEXT-002. "CBO 테이블
g_function_key2-text = TEXT-002.
sscrfields-functxt_02 = g_function_key2.
버튼은 ICON 테이블에서 사용하고 싶은 아이콘 ID를 복사하고 로직에서 붙여넣기하면 텍스트로 나온다.
AT SELECTION-SCREEN
AT SELECTION-SCREEN.
PERFORM set_fkey.
버튼 클릭시 수행할 로직을 구현한다. 가독성을 위해 FORM문으로 빼준다.
FORM set_fkey.
DATA: ls_pdata TYPE zmp_tmat.
CASE sscrfields-ucomm.
WHEN 'FC01'. "템플릿 다운로드 기능
SELECT SINGLE * FROM wwwdata
INTO CORRESPONDING FIELDS OF ls_wwwdata_item
WHERE objid = 'ZEXCEL_MAT'.
IF sy-subrc NE 0.
MESSAGE s000 DISPLAY LIKE 'E' WITH '에러'.
EXIT.
ENDIF.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_wwwdata_item.
WHEN 'FC02'. "CBO테이블
CALL SCREEN 100
STARTING AT 20 5 "화면크기, 화면에서 시작하는 위치
ENDING AT 100 20. "화면에서 끝나는 위치
IF sy-subrc <> 0.
LEAVE TO SCREEN 1000.
ENDIF.
WHEN 'RA'.
IF r2 EQ 'X'.
ls_exclude-fcode = 'FC01'.
ELSE.
CLEAR: ls_exclude, lt_exclude.
ENDIF.
IF ls_exclude IS NOT INITIAL.
APPEND ls_exclude TO lt_exclude.
ENDIF.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = '%_00'
TABLES
p_exclude = lt_exclude.
ENDCASE.
ENDFORM.
WHEN 'FC01'은 FUNCTION KEY 1 기능 코드를 의미한다. 버튼 클릭시 SWM0
에서 등록한 엑셀파일을 사용자의 PC로 다운로드한다.
WHEN 'FC02'은 FUNCTION KEY 2 기능 코드를 의미한다. 버튼 클릭시 ZMP_TMAT
테이블의 데이터가 담겨있는 ALV를 팝업창으로 보여준다.
WHEN 'RA'는 라디오 버튼이 개별 입력일 경우 템플릿 다운로드
버튼을 안보이게 한다.
728x90
반응형
'ABAP' 카테고리의 다른 글
유용한 날짜 function들 (0) | 2023.02.20 |
---|---|
Selection-screen 버튼 그리기 (0) | 2023.02.20 |
Selection-screen 라디오 버튼 제어 (0) | 2023.02.20 |
Number range (0) | 2023.02.20 |
생산계획 엑셀업로드+BDC 프로그램 2 (0) | 2023.02.20 |
댓글