Excel 을 다운로드 하는 경우가 종종 생긴다.
먼저 Download 할 위치를 정해줘야 하는데 SAP 스탠다드 코드를 이용할 수 있다.
Method cl_gui_frontend_services=>file_save_dialog를 이용하면 된다.
DATA : lv_file_filter TYPE string,
lv_initial_directory TYPE string,
lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string.
lv_filename = 'Template'.
lv_file_filter = 'Excel File(*.xlsx; *.xls )|*.xlsx; *.xls'.
lv_initial_directory = 'C:'.
cl_gui_frontend_services=>file_save_dialog(
EXPORTING
default_extension = 'xlsx' " Default Extension
default_file_name = lv_filename " Default File Name
file_filter = lv_file_filter " File Type Filter Table
initial_directory = lv_initial_directory " Initial Directory
CHANGING
filename = lv_filename " File Name to Save
path = lv_path " Path to File
fullpath = lv_fullpath " Path + File Name
EXCEPTIONS
cntl_error = 1 " Control error
error_no_gui = 2 " No GUI available
not_supported_by_gui = 3 " GUI does not support this
invalid_default_file_name = 4 " Invalid default file name
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF lv_fullpath IS INITIAL.
RETURN.
ENDIF.
위 코드와 같이 작성을 하면 아래와 같이 Download하는 창을 불러올 수 있다.
Default로 C드라이브 , 제목은 Template고 형식은 Excel로 들어간다.
필요에 따라 저장위치, 파일이름, 형식은 변경이 가능
lv_fullpath 는 저장위치(path) + 파일이름(File Name) 으로 구성되는 String으로 반환된다.
자 그러면 이제 Excel 혹은 Excel Template를 SAP 스탠다드에(웹저장소) 등록을 해보자.
T-Code : SMW0 실행.
Binary data for WebRFC applications를 선택하고 실행을 눌러준다.
해당 프로그램이 포함된 Package를 넣어주고 Excute(실행) 클릭
Obj. name 과 Description을 작성하고 import 버튼을 눌러 생성해준다.
Obj. name은 나중에 select문에 사용된다.
Import 버튼을 누르면 Excel을 선택하는 창이 나오는데,
미리 작성해둔 template excel 파일을 선택하여 등록하면 SAP 스탠다드 웹 저장소에 Upload되면서 저장이 된다.
그럼 코드로 돌아와서 해당 파일을 가져오자.
DATA : ls_item TYPE wwwdatatab,
lv_file TYPE rlgrap-filename.
lv_file = lv_fullpath.
SELECT SINGLE FROM wwwdata
FIELDS *
WHERE objid = 'Z_EXCEL_TEMPLATE'
INTO CORRESPONDING FIELDS OF @ls_item. "#EC CI_NOORDER
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_item
destination = lv_file.
IF ls_item IS INITIAL.
"File is not exist
MESSAGE s044 DISPLAY LIKE 'E'.
EXIT.
ENDIF.
wwwdata 에서 방금 만든 obj.name 의 data를 가져와
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' 를 사용해서 다운로드를 해주면
기존의 만들어 뒀던 template의 모든 형식그대로 다운로드가 된다.
( 날짜 타입, 엑셀 border, Cell style 모두 적용된 상태로 다운 )
'SAP > ABAP' 카테고리의 다른 글
[ABAP] URL 접근하여 데이터 얻는 방법 (0) | 2024.09.12 |
---|---|
[ABAP] BDC를 활용한 CALL TRANSACTION (2) | 2024.09.10 |
[ABAP] Subtotal(소계) 세팅 (1) | 2024.09.02 |
[ABAP] SELECT WITH 구문 (0) | 2024.06.24 |
[ABAP] Pass by Value vs Pass by Reference (1) | 2024.06.16 |