ABAP
Template 다운로드 기능 추가
닉넴항상고민
2025. 2. 17. 16:32
반응형
조회화면에서 템플릿 다운로드 버튼을 추가해야하는 요구사항이 있다.
해당 버튼을 기능 키 라고 하는데 이 기능 키를 사용하려면 아래와 같은 코드를 추가해야한다. ▼
TABLES: SSCRFIELDS.
SELECTION-SCREEN: FUNCTION KEY 1.
INITIALIZATION 구간에 코드를 추가한다 . ▼
SSCRFIELDS-FUNCTXT_01 = VALUE SMP_DYNTXT( ICON_ID = ICON_XLS ICON_TEXT = TEXT-FK1 QUICKINFO = TEXT-FK2 ).
여기까지 진행했다면 위 그림처럼 버튼이 나타날 것이다.
하지만 눌러도 반응이 없다.
템플릿 다운로드 기능을 추가하려면 추가 로직이 필요하다.
우선 어떤 템플릿을 다운받게 할 것인지 SAP에 등록을 해야한다.
T-CODE : SMW0로 이동한다.
위와 같이 진행하여 SAP에 템플릿을 등록했으면 프로그램에서 불러올 준비가 끝났다.
프로그램에서는 개체 이름을 활용할 예정이다.
버튼을 누를 때의 동작이 필요하므로 AT SELECTION-SCREEN 구간에 아래 로직을 추가한다. ▼
CASE SSCRFIELDS-UCOMM.
WHEN 'FC01'.
PERFORM DOWNLOAD_TEMPLATE.
ENDCASE.
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
FORM DOWNLOAD_TEMPLATE .
DATA: LV_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.
액티브하고 조회화면에서 버튼을 누르면 정상작동 하는 것을 확인할 수 있다.
반응형