ABAP

Template 다운로드 기능 추가

닉넴항상고민 2025. 2. 17. 16:32
반응형

Template 버튼 만들기

 

조회화면에서 템플릿 다운로드 버튼을 추가해야하는 요구사항이 있다.

 

해당 버튼을 기능 키 라고 하는데 이 기능 키를 사용하려면 아래와 같은 코드를 추가해야한다. ▼

 

TABLES: SSCRFIELDS.
SELECTION-SCREENFUNCTION KEY 1.

 

INITIALIZATION 구간에 코드를 추가한다 . 

 

SSCRFIELDS-FUNCTXT_01 = VALUE SMP_DYNTXT( ICON_ID = ICON_XLS ICON_TEXT = TEXT-FK1 QUICKINFO = TEXT-FK2 ).

 

여기까지 진행했다면 위 그림처럼 버튼이 나타날 것이다.

하지만 눌러도 반응이 없다.

템플릿 다운로드 기능을 추가하려면 추가 로직이 필요하다.

우선 어떤 템플릿을 다운받게 할 것인지 SAP에 등록을 해야한다.

 

T-CODE : SMW0로 이동한다.

T-CODE : SMW0

 

T-CODE : SMW0

 

 

위와 같이 진행하여 SAP에 템플릿을 등록했으면 프로그램에서 불러올 준비가 끝났다.

프로그램에서는 개체 이름을 활용할 예정이다.

 

 

버튼을 누를 때의 동작이 필요하므로 AT SELECTION-SCREEN 구간에 아래 로직을 추가한다.  

CASE SSCRFIELDS-UCOMM.
  WHEN 'FC01'.
    PERFORM DOWNLOAD_TEMPLATE.
ENDCASE.

*&---------------------------------------------------------------------*
*& Form DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM DOWNLOAD_TEMPLATE .

  DATALV_SAVEPATH TYPE STRING.

  PERFORM SET_SAVE_PATH CHANGING LV_SAVEPATH.

  PERFORM EXCEL_TEMP_DOWNLOAD CHANGING LV_SAVEPATH.

ENDFORM.

 

LV_FILENAME은 다운로드 경로상의 파일 이름을 의미하며 원하는대로 바꾸면 된다.  

*&---------------------------------------------------------------------*
*& Form SET_SAVE_PATH
*&---------------------------------------------------------------------*
*& LV_FILENAME 변경
*&---------------------------------------------------------------------*
FORM SET_SAVE_PATH  CHANGING PV_SAVEPATH.

  DATA: LV_PATH          TYPE STRING,
        LV_SAVE_FILENAME TYPE STRING,
        LV_FILENAME      TYPE STRING.

  CONCATENATE '파일명_' SY-DATUM SY-UZEIT '.XLSX' INTO LV_FILENAME.

  CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG(
    EXPORTING
      DEFAULT_EXTENSION         = '.XLSX'
      DEFAULT_FILE_NAME         = LV_FILENAME
      FILE_FILTER               = 'Excel files (*.XLS;*.XLSX)|*.XLSX'
    CHANGING
      FILENAME                  = LV_SAVE_FILENAME
      PATH                      = LV_PATH
      FULLPATH                  = PV_SAVEPATH ) .

ENDFORM.

 

LV_OBJID에 위에서 설정한 개체 이름을 입력한다.  

*&---------------------------------------------------------------------*
*& Form EXCEL_TEMP_DOWNLOAD
*&---------------------------------------------------------------------*
*& LV_OBJID 변경
*&---------------------------------------------------------------------*
FORM EXCEL_TEMP_DOWNLOAD  CHANGING PV_SAVEPATH.

  DATA: LV_FNAME      TYPE RLGRAP-FILENAME,
        LV_RC         TYPE SYSUBRC,
        LS_WWWDATATAB TYPE WWWDATATAB,
        LV_OBJID      TYPE W3OBJID.

  LV_OBJID = |ZTEST0000|."SMW0 오브젝트명

  IF PV_SAVEPATH IS INITIAL.
    MESSAGE S398(00) WITH '업로드 양식 저장을 취소했습니다.' DISPLAY LIKE 'E'.
    RETURN.
  ENDIF.

  SELECT SINGLE RELID, OBJID
    INTO CORRESPONDING FIELDS OF @LS_WWWDATATAB
    FROM WWWDATA
   WHERE RELID EQ 'MI'
     AND OBJID EQ @LV_OBJID
     AND SRTF2 EQ '0'.


  IF SY-SUBRC NE 0.
    MESSAGE S398(00) WITH '업로드 양식이 존재하지 않습니다.' DISPLAY LIKE 'E'.
    RETURN.
  ENDIF.

  CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
    EXPORTING
      KEY         = LS_WWWDATATAB
      DESTINATION = CONV RLGRAP-FILENAME( PV_SAVEPATH )
    IMPORTING
      RC          = LV_RC.

  IF LV_RC NE 0.
    MESSAGE S398(00) WITH '업로드 양식이 존재하지 않습니다.' DISPLAY LIKE 'E'.
    RETURN.
  ELSE.

    CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
      EXPORTING
        DOCUMENT  = PV_SAVEPATH
        OPERATION = 'OPEN'.
  ENDIF.

ENDFORM.

 

액티브하고 조회화면에서 버튼을 누르면 정상작동 하는 것을 확인할 수 있다.

반응형