오늘은 프로그램 내에서 스마트폼을 실행하여 생성한 내용을 PDF 로 변환하는 방법에 대해 알아보겠습니다.
1. 스마트폼 펑션 명 조회
DATA: LV_FORMNAME TYPE TDSFNAME VALUE 'ZFORMS',
LV_FM_NAME TYPE RS38L_FNAM.
*- function module of smart form
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = LV_FORMNAME => 티코드 SMARTFORMS 에서 생성한 폼 이름
IMPORTING
FM_NAME = LV_FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
=> LV_FM_NAME 에 스마트폼 내부 펑션명을 불러온다.
2. 스마트폼 펑션 실행
1번에서 불러온 LV_FM_NAME 으로 콜 펑션 한다.
DATA: LS_CONTORL_PARAMETERS TYPE SSFCTRLOP,
LS_OUTPUT_OPTIONS TYPE SSFCOMPOP,
LV_JOB_OUPUT_INFO TYPE SSFCRESCL.
**스마트폼 출력 옵션
LS_CONTORL_PARAMETERS-NO_DIALOG = 'X'. "인쇄출력팝업 안 띄우기
LS_CONTORL_PARAMETERS--GETOTF = 'X'. "PDF출력시 무조건 사용(OTF 로 받겠다는 의미)
**LS_CONTORL_PARAMETER에서 현재 사용하지 않은 필드들과 LS_OUTPUT-OPTION은
구조체 SSFCTRLOP, SSFCOMPOP를 참고하면 된다.*- calling the smart form
CALL FUNCTION LV_FM_NAME
EXPORTING
GV_NAME = LV_NAME "이 부분은 스마트폼 생성할때 만든 변수들로 프로그램 내에서도 추가해줘야한다.
GV_TEL = LV_TEL "이 부분은 스마트폼 생성할때 만든 변수들로 프로그램 내에서도 추가해줘야한다.
CONTORL_PARAMETERS = LS_CONTORL_PARAMETERS
OUTPUT_OPTIONS = LS_OUTPUT_OPTIONS
IMPORTING
JOB_OUPUT_INFO = LV_JOB_OUPUT_INFO
TABLES
GT_TABLE "이 부분은 스마트폼 생성할때 만든 변수들로 프로그램 내에서도 추가해줘야한다.
3. OTF를 PDF로 변환
"- OTF Table Data를 PDF로 Convert.
DATA: LV_BIN_FILESIZE TYPE I, "필수값이지만 밑에 펑션에서는 이 변수의 데이터를 사용하지는 않음
LV_BIN_FILE TYPE XSTRING,
LT_OTF TYPE TSFOTF,
LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE.
"2번에서 받은 데이터
LT_OTF[] = LV_JOB_OUPUT_INFO-OTFDATA[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = LV_BIN_FILESIZE
BIN_FILE = LV_BIN_FILE
=>이 데이터로 펑션 'scms_xstring_to_binary' 실행하여 (xstring -> binary)
메일 발송시 첨부파일로 사용할수 있다( FILETYPE : BIN).
TABLES
OTF = LT_OTF
LINES = LT_LINES
=>이 데이터로 펑션 'GUI_DOWNLOAD' 실행하여
바로 파일 다운 받을수있다.( FILETYPE : BIN)
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
'Etc' 카테고리의 다른 글
SWM0에서 파일 다운로드하기 (0) | 2023.03.22 |
---|---|
SMW0 의 사진 띄우기(cl_gui_picture) (0) | 2022.11.02 |
Number Range ( T-CODE : SNRO ) (0) | 2022.02.17 |
SUBMIT / CALL TRANSACTION (0) | 2021.11.18 |
SELECT OPTION, RANGES (0) | 2021.06.30 |