개요
사용자에게 업로드용 엑셀 템플릿을 제공할 때 가장 깔끔한 방법은
SMW0에 템플릿 파일을 등록해두고 DOWNLOAD_WEB_OBJECT로 내려받는 패턴임.
1단계 — SMW0 템플릿 등록
SMW0 트랜잭션 → Binary Data 선택 → 업로드
등록 후 Object ID를 기억해둠 (예: ZPE3QM_EXCEL)
SAP는 등록된 파일 정보를 WWWDATA 테이블에 저장함.
컬럼설명
| OBJID | Object ID (SMW0 등록명) |
| RELID | 데이터 종류 구분 |

2단계 — 코드 구현
① WWWDATA에서 키 조회
abap
DATA ls_key TYPE wwwdatatab.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF ls_key
FROM wwwdata
WHERE objid = 'ZPE3QM_EXCEL'.
IF sy-subrc NE 0.
MESSAGE s000 WITH '엑셀 템플릿 Object를 찾을 수 없습니다.' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
SMW0에 등록된 파일의 메타정보를 가져옴.
sy-subrc NE 0 이면 SMW0 미등록 상태 → 방어 처리 필수.
② 저장 경로 팝업
abap
DATA: lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string,
lv_user_action TYPE i.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_extension = 'XLSX'
default_file_name = '검수결과_업로드_템플릿.xlsx'
file_filter = 'Excel 파일 (*.xlsx)|*.xlsx|'
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_fullpath
user_action = lv_user_action
EXCEPTIONS
OTHERS = 1.
" 취소 클릭 시 중단
IF lv_user_action = cl_gui_frontend_services=>action_cancel.
EXIT.
ENDIF.
file_save_dialog는 OS 기본 저장 대화상자를 띄움.
사용자가 취소(action_cancel)하면 다운로드 없이 종료.
③ 파일 다운로드
abap
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_key
destination = CONV rlgrap-filename( lv_fullpath ).
MESSAGE s000 WITH '검수결과 업로드 템플릿이 다운로드되었습니다.'.
DOWNLOAD_WEB_OBJECT가 SMW0 오브젝트를 지정 경로에 바이너리로 저장.
destination은 rlgrap-filename 타입(CHAR128)이므로 CONV로 변환 필요.
전체 흐름
SMW0 등록 (ZPE3QM_EXCEL)
│
│ SELECT SINGLE → WWWDATA
▼
ls_key (파일 메타정보)
│
│ file_save_dialog → 사용자 경로 선택
▼
lv_fullpath (저장 경로)
│
│ DOWNLOAD_WEB_OBJECT
▼
로컬 PC에 XLSX 저장
전체코드

DATA : lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string,
lv_user_action TYPE i,
ls_key TYPE wwwdatatab.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF ls_key
FROM wwwdata
WHERE objid = 'ZPE3QM_EXCEL'.
IF sy-subrc NE 0.
MESSAGE s000 WITH '엑셀 템플릿 Object를 찾을 수 없습니다.' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
default_extension = 'XLSX'
default_file_name = '검수결과_업로드_템플릿.xlsx'
file_filter = 'Excel 파일 (*.xlsx)|*.xlsx|'
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_fullpath
user_action = lv_user_action
EXCEPTIONS
OTHERS = 1.
IF lv_user_action = cl_gui_frontend_services=>action_cancel.
EXIT.
ENDIF.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_key
destination = CONV rlgrap-filename( lv_fullpath ).
MESSAGE s000 WITH '검수결과 업로드 템플릿이 다운로드되었습니다.'.
'ABAP > 기초' 카테고리의 다른 글
| [ABAP] ALV 불필요한 툴바 버튼 제거하는법 (0) | 2026.05.23 |
|---|---|
| [ABAP] 도메인 텍스트 매핑 (0) | 2026.05.23 |