CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZMM_SM_PO'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* LEAVE TO SCREEN 0.
ENDIF.
CONTROL_PARAMETERS-NO_DIALOG = 'X'.
CONTROL_PARAMETERS-GETOTF = 'X'.
OUTPUT_OPTIONS-TDNOPREV = 'X'.
CLEAR JOB_OUTPUT_INFO.
CALL FUNCTION FM_NAME
EXPORTING
* ARCHIVE_INDEX =
CONTROL_PARAMETERS = CONTROL_PARAMETERS
* output_options = output_options
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* user_settings = 'X'
SM_POTAB = SM_POTAB
IMPORTING
* document_output_info = document_output_info
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
* JOB_OUTPUT_OPTIONS =
TABLES
SM_POTABI = SM_POTABI
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
*------------------------------------------------------------
CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'
EXPORTING
I_OTF = JOB_OUTPUT_INFO-OTFDATA
EXCEPTIONS
* acrobat_not_registered = 1
CONVERT_OTF_TO_PDF_ERROR = 2
* download_error = 3
* acrobat_not_started = 4
CNTL_ERROR = 5.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* try to locate acrobat reader
CALL FUNCTION 'REGISTRY_GET'
EXPORTING
KEY = C_ACROBAT_READER_KEY
IMPORTING
VALUE = G_REG_VALUE.
IF G_REG_VALUE IS INITIAL.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
OTF_TAB[] = JOB_OUTPUT_INFO-OTFDATA[].
------------------------------------------------------------
디버깅을 해보면 이부분에서 메세지창이 뜨고 실행되지 않습니다.
메세지는 OTF end command // missing in OTF data
---> CALL FUNCTION 'CONVERT_OTF'
EXPORTING
FORMAT = 'PDF'
IMPORTING
BIN_FILESIZE = PDF_FSIZE
TABLES
OTF = OTF_TAB
LINES = PDF_TABLE
EXCEPTIONS
ERR_MAX_LINEWIDTH = 1
ERR_FORMAT = 2
ERR_CONV_NOT_POSSIBLE = 3
OTHERS = 4.
PDF_LINE_TAB[] = PDF_TABLE[].
-----------------------------------------------------------------------
*-- remove temporary file ----------------------------------------------
CALL FUNCTION 'WS_FILE_DELETE'
EXPORTING
FILE = 'C:TEMP~SMART.PDF'.
* IMPORTING
* RETURN =
* EXCEPTIONS
* OTHERS = 1.
* IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
** WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
*
* create pdf file
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = PDF_FSIZE
FILENAME = 'C:TEMP~SMART.PDF'
FILETYPE = 'BIN'
TABLES
DATA_TAB = PDF_TABLE[]
EXCEPTIONS
OTHERS = 10.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
위의 CALL FUNCTION 'CONVERT_OTF' 부분에서
OTF end command // missing in OTF data 란 infomaiton이 뜹니다..
왜이런건지 저는 스마트폼을 첨해봐서 잘 모르겠어요..
알고 계시는 분들의 가르침이 너무도 절박합니다.
답변좀 부탁드려여
댓글 6
-
버미!
2010.10.18 23:06
-
써언
2010.10.18 23:26
버미님 일단 답변 감사드리구요...
CONTROL_PARAMETERS-GETOTF = 'X'.
OUTPUT_OPTIONS-TDNOPREV = 'X'.
요 두놈은 이미 해줬어요...디버깅을 태워보면요
JOB_OUTPUT_INFO-OTFDATA 를 받아오지를 못하는것 같아요....
아 정말 이놈의 스마트폼 왜이럴까요 정말 어떻게 손을 대야할지 모르겠어요ㅠㅠ
그외 스마트폼에 받을 테이블 등등은 다 맞춰봐서 똑같이 잘 선언해줬는데 ㅠㅠ
도무지 모르겠어요
-
버미!
2010.10.18 23:31
아래와 같이 하면 100% return 값 받아오는 데..
CLEAR: gs_ctrl_param, gs_out_opt, lv_fname.
gs_ctrl_param-no_dialog = 'X'. "NO DIALOG
gs_ctrl_param-preview = 'X'.
gs_out_opt-tdnewid = 'X'.
gs_out_opt-tdimmed = 'X'.
gs_out_opt-tdarmod = '1'.
gs_out_opt-tdnoarmch = 'X'.
gs_out_opt-tddelete = 'X'.
gs_ctrl_param-getotf = 'X'.
gs_out_opt-tdnoprev = 'X'.
CALL FUNCTION lv_fname
EXPORTING
control_parameters = gs_ctrl_param
output_options = gs_out_opt
user_settings = ' '
gs_ekko = gs_ekko
IMPORTING
job_output_info = gs_job_info
TABLES
gt_item = gt_item. -
써언
2010.10.19 00:51
버미님 말씀대로 아래와 같이 해주고,
CONTROL_PARAMETERS-NO_DIALOG = 'X'.
CONTROL_PARAMETERS-GETOTF = 'X'.
CONTROL_PARAMETERS-PREVIEW ='X'.
OUTPUT_OPTIONS-TDNEWID = 'X'.
OUTPUT_OPTIONS-TDIMMED = 'X'.
OUTPUT_OPTIONS-TDARMOD = '1'.
OUTPUT_OPTIONS-TDNOARMCH = 'X'.
OUTPUT_OPTIONS-TDDELETE = 'X'.
OUTPUT_OPTIONS-TDNOPREV = 'X'.
CALL FUNCTION FM_NAME
EXPORTING
* ARCHIVE_INDEX =
CONTROL_PARAMETERS = CONTROL_PARAMETERS
output_options = output_options
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
user_settings = ' '
SM_POTAB = SM_POTAB
IMPORTING
* document_output_info = document_output_info
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO
* JOB_OUTPUT_OPTIONS =
TABLES
SM_POTABI = SM_POTABI
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5.
위에서 JOB_OUTPUT_INFO에서 JOB_OUTPUT_INFO-otfdata[]에 table[0x144]이고
SM_POTAB 은 헤더데이터로 table[0x144]이고,
SM_POTABI 은 아이템 데이터로 tabl[2x144]입니다....
아래 펑션에서는 당연히
JOB_OUTPUT_INFO-OTFDATA 데이터에 값은 없고,
subrc 2가 되면서 메세지 OTF end command // missing in OTF data 뿌립니다..
CALL FUNCTION 'SSFCOMP_PDF_PREVIEW'
EXPORTING
I_OTF = JOB_OUTPUT_INFO-OTFDATA
EXCEPTIONS
* acrobat_not_registered = 1
CONVERT_OTF_TO_PDF_ERROR = 2
* download_error = 3
* acrobat_not_started = 4
CNTL_ERROR = 5.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
이런오류 접해보신분...간절합니다....답변좀 부탁드려여...ㅠㅠ
버미님 계속해서 답변 주셔서 감사해여~~
-
써언
2010.10.19 01:25
혹시 CALL FUNCTION FM_NAME 이부분의
IMPORTING
* document_output_info = document_output_info
JOB_OUTPUT_INFO = JOB_OUTPUT_INFO 에서 OTFDATA를 못받아 오는것이
Structure ITCOO
Short Description OTF Structure
TDPRINTCOM OFT format: command ID
TDPRINTPAR OTF format: command parameters
결국 얘들을 못만든다는건 데 뭔가 다른 무엇인가를 선언해주어야 할것이 있을까요??
-
써언
2010.10.20 18:31
otf data를 못받아 오는것은...수량이나, 금액같은 데이터는 스마트폼에서 받을때 global definitions에 변수를 선언해줬어야 하는데
안해줘서 이런 문제가 발생했었습니다..
선언해주고 나니 문제 없네요 완료했어요 감사합니다.
스마트폼 호출시 Output 옵션이 없는 데 지정해 주시면 되겠네요..
JOB_OUTPUT_INFO에 데이타를 return 받을려면
gs_ctrl_param-getotf = 'X'.
gs_out_opt-tdnoprev = 'X'.
요 두 놈을 해줘야 합니다. 참고하세요..