본문 바로가기
ABAP

Selection-screen GUI Status 버튼 만들기

by clode 2023. 2. 20.
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

댓글