본문 바로가기

SAP/ABAP

Excel_Upload프로그램_프로그램 작동 로직(1/3)

최종 작성일: 2024년 6월 25일

최종 목표: 엑셀 업로드 동작이 어떻게 돌아가는 지 확인하기

 

1) 메인화면 코드

REPORT ZEXCEL_UPLOAD_100 MESSAGE-ID ZM01.

INCLUDE ZTEST100_TOP. " 데이터 선언부, 전역변수
INCLUDE ZTEST100_SEL. "조회화면 
INCLUDE ZTEST100_C01.  "클래스 선언부
INCLUDE ZTEST100_F01. "PERFORM 구문을 모아놓을 곳. 실행 구문들
INCLUDE ZTEST100_I01. " process after input/INPUT 버튼을 클릭했을 때 동작 들
INCLUDE ZTEST100_O01. "process before output/출력전 과정으로 출력하기 전에 동작/OUTPUT 버튼 툴바, 타이틀 바, ALV 출력하는 곳

*PBO(PROCESS BEFORE OUTPUT), PAI(PROCESS AFTER INPUT) 외에 다른 인클루드문을 순서대로 선언해야 제대로 작동함
*&=====================================================================*
*& INITIALIZATION  "ALV 화면 출력 전에 조회화면
*&=====================================================================*
INITIALIZATION.
  PERFORM SET_FUNCTION_KEY. "1번째 실행


*&=====================================================================*
*& AT SELECTION-SCREEN
*&=====================================================================*
AT SELECTION-SCREEN.
  PERFORM ACT_FUNCTION_KEY. "2번째 실행

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
  PERFORM GET_FILE_PATH.

*&=====================================================================*
*& START-OF-SELECTION
*&=====================================================================*
START-OF-SELECTION.

IF r1 = 'X'.
    PERFORM CHECK_BEFORE_PROCESS.
* 파일 업로드 진행
    PERFORM UPLOAD_FROM_EXCEL.
    PERFORM GET_DATA.
ELSEIF r2 = 'X'.
    PERFORM GET_NEEDED_DATA.
ELSEIF r3 = 'X'.
    PERFORM DEL_DATA.
ENDIF.

*&=====================================================================*
*& END-OF-SELECTION
*&=====================================================================*
END-OF-SELECTION.
IF r1 ='X'.
  CALL SCREEN 100.
ELSEIF r2 = 'X'.
  IF GT_ZSCARR IS NOT INITIAL.
  CALL SCREEN 100.
  ELSE.
    MESSAGE '조회할 데이터가 없습니다.' TYPE 'I'.
  ENDIF.

ENDIF.

 

2) 첫번째 동작

 

2-1) PERFORM set_function_key 

INITIALIZATION.
  PERFORM SET_FUNCTION_KEY.

 

2-2) FORM set_function_key 

FORM set_function_key .
*SMPL
  G_FUNCTION_KEY-ICON_ID   = ICON_XLS.
  G_FUNCTION_KEY-ICON_TEXT = 'SAMPLE다운'.
  G_FUNCTION_KEY-TEXT      = 'SAMPLE다운'.
  SSCRFIELDS-FUNCTXT_01    = G_FUNCTION_KEY.

    G_FUNCTION_KEY-ICON_ID = ICON_ANNOTATION.
  G_FUNCTION_KEY-ICON_TEXT = '노트생성'.
  G_FUNCTION_KEY-TEXT      = '노트생성'.
  SSCRFIELDS-FUNCTXT_03    = G_FUNCTION_KEY.

ENDFORM.

 

화면 기준

2-3) FORM act_function_key

FORM act_function_key .
  CASE SSCRFIELDS-UCOMM. " sscrefields-ucomm의 의미는 조회화면에서 내가 누른 버튼을 받아옴. 
    WHEN 'FC01'. "해당 버튼이 'FC01'일때
      PERFORM EXCEL_DOWN_SMPL. "EXCEL_DOWN_SMPL 구문을 실행함.
  ENDCASE.
ENDFORM.

 

3) 세번째 동작 - EXCEL_DOWN_SMPL.

FORM excel_down_smpl .
* 다운로드 양식 선택
    LS_KEY-OBJID = 'ZTEST14_EXCEL01'. " 'ZTEST14_EXCEL01'이름의 파일을 다운받음
    LS_KEY-RELID = 'MI'.
* 파일 경로 조회
  PERFORM SET_DIRECTORY USING LS_KEY-OBJID.

* 엑셀 다운
  PERFORM DOWNLOAD_EXCEL_SMPL USING LS_KEY-OBJID.

  IF SY-SUBRC = 0.
    MESSAGE '엑셀정상다운' TYPE 'S'.
  ELSE.
    MESSAGE '엑셀다운에러' TYPE 'S'.
  ENDIF.


ENDFORM.