Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Convert an already created pdf to otf

Former Member
0 Kudos

i made an report that takes some pdf from sapscript and takes the otf's and send them as email attachement.

Now i want to incude one more pdf to the same email that is already created and i store it to my fileserver . How can i do this ?

REPORT YDP_SEND_ALL_DOCS_EMAIL.

DATA: ITCPO LIKE ITCPO,

TAB_LINES LIKE SY-TABIX.

  • Variables for EMAIL functionality

DATA: MAILDATA LIKE SODOCCHGI1.

DATA: MAILPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: MAILHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: MAILBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: MAILTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: MAILREC LIKE SOMLREC90 OCCURS 0 WITH HEADER LINE.

DATA: SOLISTI1 LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE.

TABLES: LIPS,

LIKP,

LFA1,

KNA1,

ADR6,

VBKD,

VBPA,

VBAK,

VBRK,

VBRP,

MARA,

T005T,

VBFA.

DATA : BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBRK-VBELN, "billing doc

NAME1 LIKE KNA1-NAME1, "Customer name

SMTP_ADDR LIKE ADR6-SMTP_ADDR,

END OF ITAB.

DATA: MY_OPTIONS TYPE ITCPO.

SELECTION-SCREEN BEGIN OF BLOCK B0 WITH FRAME TITLE TEXT-001.

PARAMETERS: SVBELN TYPE VBRK-VBELN.

PARAMETERS: SNAME TYPE KNA1-NAME1.

PARAMETERS: S_EMAIL TYPE ADR6-SMTP_ADDR.

SELECTION-SCREEN SKIP 2.

PARAMETERS: SUBJ(30) TYPE C.

SELECTION-SCREEN SKIP 2.

PARAMETERS: LINE1 LIKE MAILTXT-LINE.

PARAMETERS: LINE2 LIKE MAILTXT-LINE.

PARAMETERS: LINE3 LIKE MAILTXT-LINE.

PARAMETERS: LINE4 LIKE MAILTXT-LINE.

PARAMETERS: LINE5 LIKE MAILTXT-LINE.

PARAMETERS: LINE6 LIKE MAILTXT-LINE DEFAULT 'The following PDF are produced by SAP and are digitally signed .'.

SELECTION-SCREEN END OF BLOCK B0.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.

PARAMETERS: YHSD AS CHECKBOX DEFAULT 'X'.

PARAMETERS: ZHAG AS CHECKBOX DEFAULT 'X'.

PARAMETERS: ZPHL AS CHECKBOX DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF SCREEN-NAME = 'S_EMAIL'.

SCREEN-INPUT = 0.

SCREEN-INTENSIFIED = 0.

MODIFY SCREEN.

EXIT.

ENDIF.

ENDLOOP.

LOOP AT SCREEN.

IF SCREEN-NAME = 'SNAME'.

SCREEN-INPUT = 0.

SCREEN-INTENSIFIED = 0.

MODIFY SCREEN.

EXIT.

ENDIF.

ENDLOOP.

AT SELECTION-SCREEN.

SELECT SINGLE * FROM VBRK WHERE VBELN = SVBELN.

IF SY-SUBRC = 0.

SELECT SINGLE * FROM KNA1 WHERE KUNNR = VBRK-KUNRG.

SNAME = KNA1-NAME1.

SELECT SINGLE * FROM ADR6 WHERE ADDRNUMBER = KNA1-ADRNR.

IF SY-SUBRC = 0 .

S_EMAIL = ADR6-SMTP_ADDR.

ELSE.

S_EMAIL = 'No Email Address !!!!'.

ENDIF.

ELSE.

S_EMAIL = 'No Email Address !!!!'.

ENDIF.

START-OF-SELECTION.

PERFORM SEND_FORM_VIA_EMAIL.

&----


*& Form WRITE_FORM

&----


  • text

----


  • -->P_WIN text

  • -->P_TYPE text

  • -->P_EL text

  • -->P_FUN text

----


FORM WRITE_FORM USING P_WIN P_TYPE P_EL P_FUN.

CALL FUNCTION 'WRITE_FORM'

EXPORTING

ELEMENT = P_EL

FUNCTION = P_FUN

TYPE = P_TYPE

WINDOW = P_WIN

  • IMPORTING

  • PENDING_LINES =

EXCEPTIONS

ELEMENT = 1

FUNCTION = 2

TYPE = 3

UNOPENED = 4

UNSTARTED = 5

WINDOW = 6

BAD_PAGEFORMAT_FOR_PRINT = 7

SPOOL_ERROR = 8

CODEPAGE = 9

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.

ENDFORM. "WRITE_FORM

&----


*& Form CLOSE_FORM

&----


  • text

----


FORM CLOSE_FORM.

CALL FUNCTION 'CLOSE_FORM'

  • IMPORTING

  • RESULT = ITCPP

    • RDI_RESULT =

  • TABLES

  • OTFDATA = OTF

EXCEPTIONS

UNOPENED = 1

BAD_PAGEFORMAT_FOR_PRINT = 2

SEND_ERROR = 3

OTHERS = 4.

ENDFORM. " CLOSE_LAYOUT_DSS

&----


*& Form GET_DATA

&----


  • text

----


FORM GET_DATA.

DATA: BEGIN OF OTF OCCURS 0.

INCLUDE STRUCTURE ITCOO .

DATA: END OF OTF.

DATA: ITCPO LIKE ITCPO.

DATA: ITCPP LIKE ITCPP.

CLEAR ITCPO.

ITCPO-TDGETOTF = 'X'.

PERFORM COLLECT_DATA(YHAL_SHIPPING_DETAILS) USING SVBELN."VBRK-VBELN.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

FORM = 'YHAL_SHIP_DETAIL'

LANGUAGE = SY-LANGU

OPTIONS = ITCPO

DIALOG = ' '

EXCEPTIONS

OTHERS = 1.

PERFORM DISPLAY_DATA(YHAL_SHIPPING_DETAILS) USING SVBELN." VBRK-VBELN.

  • Close up Form and get OTF code

CALL FUNCTION 'END_FORM'

EXCEPTIONS

ERROR_MESSAGE = 01

OTHERS = 02.

MOVE-CORRESPONDING ITCPO TO ITCPP.

CALL FUNCTION 'CLOSE_FORM'

IMPORTING

RESULT = ITCPP

TABLES

OTFDATA = OTF

EXCEPTIONS

OTHERS = 1.

  • Move OTF code to structure SOLI form email

CLEAR SOLISTI1. REFRESH SOLISTI1.

LOOP AT OTF.

SOLISTI1-LINE = OTF.

APPEND SOLISTI1.

ENDLOOP.

ENDFORM. "GET_DATA

&----


*& Form GET_DATA1

&----


  • text

----


FORM GET_DATA1.

DATA: BEGIN OF OTF OCCURS 0.

INCLUDE STRUCTURE ITCOO .

DATA: END OF OTF.

DATA: ITCPO LIKE ITCPO.

DATA: ITCPP LIKE ITCPP.

CLEAR OTF.

CLEAR ITCPO.

ITCPO-TDGETOTF = 'X'.

PERFORM COLLECT_DATA(Z111_PACKING_LIST) USING SVBELN."VBRK-VBELN.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

FORM = 'Z1111_PACKING'

LANGUAGE = SY-LANGU

OPTIONS = ITCPO

DIALOG = ' '

EXCEPTIONS

OTHERS = 1.

PERFORM DISPLAY_DATA(Z111_PACKING_LIST). "USING SVBELN." VBRK-VBELN.

  • Close up Form and get OTF code

CALL FUNCTION 'END_FORM'

EXCEPTIONS

ERROR_MESSAGE = 01

OTHERS = 02.

MOVE-CORRESPONDING ITCPO TO ITCPP.

CALL FUNCTION 'CLOSE_FORM'

IMPORTING

RESULT = ITCPP

TABLES

OTFDATA = OTF

EXCEPTIONS

OTHERS = 1.

  • Move OTF code to structure SOLI form email

CLEAR SOLISTI1. REFRESH SOLISTI1.

LOOP AT OTF.

SOLISTI1-LINE = OTF.

APPEND SOLISTI1.

ENDLOOP.

ENDFORM. "GET_DATA1

&----


*& Form GET_DATA2

&----


  • text

----


FORM GET_DATA2.

DATA: BEGIN OF OTF OCCURS 0.

INCLUDE STRUCTURE ITCOO .

DATA: END OF OTF.

DATA: ITCPO LIKE ITCPO.

DATA: ITCPP LIKE ITCPP.

CLEAR OTF.

CLEAR ITCPO.

ITCPO-TDGETOTF = 'X'.

PERFORM COLLECT_DATA(Z111_AGENCY_NOTE) USING SVBELN."VBRK-VBELN.

CALL FUNCTION 'OPEN_FORM'

EXPORTING

FORM = 'Z1111_AGENCY'

LANGUAGE = SY-LANGU

OPTIONS = ITCPO

DIALOG = ' '

EXCEPTIONS

OTHERS = 1.

PERFORM DISPLAY_DATA(Z111_AGENCY_NOTE) USING SVBELN." VBRK-VBELN.

  • Close up Form and get OTF code

CALL FUNCTION 'END_FORM'

EXCEPTIONS

ERROR_MESSAGE = 01

OTHERS = 02.

MOVE-CORRESPONDING ITCPO TO ITCPP.

CALL FUNCTION 'CLOSE_FORM'

IMPORTING

RESULT = ITCPP

TABLES

OTFDATA = OTF

EXCEPTIONS

OTHERS = 1.

  • Move OTF code to structure SOLI form email

CLEAR SOLISTI1. REFRESH SOLISTI1.

LOOP AT OTF.

SOLISTI1-LINE = OTF.

APPEND SOLISTI1.

ENDLOOP.

ENDFORM. "GET_DATA2

************************************************************************

  • FORM SEND_FORM_VIA_EMAIL *

************************************************************************

FORM SEND_FORM_VIA_EMAIL.

CLEAR: MAILDATA, MAILTXT, MAILBIN, MAILPACK, MAILHEAD, MAILREC.

REFRESH: MAILTXT, MAILBIN, MAILPACK, MAILHEAD, MAILREC.

  • Creation of the document to be sent File Name

MAILDATA-OBJ_NAME = 'TEST'.

  • Mail Subject

MAILDATA-OBJ_DESCR = SUBJ ."'EGGRAFA BIBLOY'.

  • Mail Contents

MAILTXT-LINE = LINE1.

APPEND MAILTXT.

MAILTXT-LINE = LINE2.

APPEND MAILTXT.

MAILTXT-LINE = LINE3.

APPEND MAILTXT.

MAILTXT-LINE = LINE4.

APPEND MAILTXT.

MAILTXT-LINE = LINE5.

APPEND MAILTXT.

MAILTXT-LINE = LINE6.

APPEND MAILTXT.

  • Prepare Packing List

PERFORM PREPARE_PACKING_LIST.

  • Set recipient - email address here!!!

MAILREC-RECEIVER = 'xxxs@xxx.de'.

MAILREC-REC_TYPE = 'U'.

APPEND MAILREC.

  • Sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = MAILDATA

PUT_IN_OUTBOX = ' '

TABLES

PACKING_LIST = MAILPACK

OBJECT_HEADER = MAILHEAD

CONTENTS_BIN = MAILBIN

CONTENTS_TXT = MAILTXT

RECEIVERS = MAILREC

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

*************************************************************

COMMIT WORK.

ENDFORM. "SEND_FORM_VIA_EMAIL

************************************************************************

  • Form PREPARE_PACKING_LIST

************************************************************************

FORM PREPARE_PACKING_LIST.

CLEAR: MAILPACK, MAILBIN, MAILHEAD.

REFRESH: MAILPACK, MAILBIN, MAILHEAD.

DESCRIBE TABLE MAILTXT LINES TAB_LINES.

READ TABLE MAILTXT INDEX TAB_LINES.

MAILDATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( MAILTXT ).

  • Creation of the entry for the compressed document

CLEAR MAILPACK-TRANSF_BIN.

MAILPACK-HEAD_START = 1.

MAILPACK-HEAD_NUM = 0.

MAILPACK-BODY_START = 1.

MAILPACK-BODY_NUM = TAB_LINES.

MAILPACK-DOC_TYPE = 'RAW'.

APPEND MAILPACK.

  • Creation of the document attachment

  • This form gets the OTF code from the SAPscript form.

  • If you already have your OTF code, I believe that you may

  • be able to skip this form. just do the following code, looping thru

  • your SOLISTI1 and updating MAILBIN.

IF YHSD = 'X' .

PERFORM GET_OTF_CODE. "----


LOOP AT SOLISTI1.

MOVE-CORRESPONDING SOLISTI1 TO MAILBIN.

APPEND MAILBIN.

ENDLOOP.

DESCRIBE TABLE MAILBIN LINES TAB_LINES.

MAILHEAD = 'TEST.OTF'.

APPEND MAILHEAD.

ENDIF.

      • Creation of the entry for the compressed attachment

  • MAILPACK-TRANSF_BIN = 'X'.

  • MAILPACK-HEAD_START = 1.

  • MAILPACK-HEAD_NUM = 1.

  • MAILPACK-BODY_START = 1.

  • MAILPACK-BODY_NUM = TAB_LINES.

  • MAILPACK-DOC_TYPE = 'OTF'.

  • MAILPACK-OBJ_NAME = 'TEST01'.

  • MAILPACK-OBJ_DESCR = 'Subject01'.

  • MAILPACK-DOC_SIZE = TAB_LINES * 255.

  • APPEND MAILPACK.

IF ZHAG = 'X'.

PERFORM GET_OTF_CODE1. "----


LOOP AT SOLISTI1.

MOVE-CORRESPONDING SOLISTI1 TO MAILBIN.

APPEND MAILBIN.

ENDLOOP.

DESCRIBE TABLE MAILBIN LINES TAB_LINES.

MAILHEAD = 'TEST1.OTF'.

APPEND MAILHEAD.

ENDIF.

*

      • Creation of the entry for the compressed attachment

  • MAILPACK-TRANSF_BIN = 'X'.

  • MAILPACK-HEAD_START = 1.

  • MAILPACK-HEAD_NUM = 1.

  • MAILPACK-BODY_START = 1.

  • MAILPACK-BODY_NUM = TAB_LINES.

  • MAILPACK-DOC_TYPE = 'OTF'.

  • MAILPACK-OBJ_NAME = 'TEST02'.

  • MAILPACK-OBJ_DESCR = 'Subject02'.

  • MAILPACK-DOC_SIZE = TAB_LINES * 255.

  • APPEND MAILPACK.

IF ZPHL = 'X'.

PERFORM GET_OTF_CODE2. "----


LOOP AT SOLISTI1.

MOVE-CORRESPONDING SOLISTI1 TO MAILBIN.

APPEND MAILBIN.

ENDLOOP.

DESCRIBE TABLE MAILBIN LINES TAB_LINES.

MAILHEAD = 'TEST2.OTF'.

APPEND MAILHEAD.

ENDIF.

    • Creation of the entry for the compressed attachment

MAILPACK-TRANSF_BIN = 'X'.

MAILPACK-HEAD_START = 1.

MAILPACK-HEAD_NUM = 1.

MAILPACK-BODY_START = 1.

MAILPACK-BODY_NUM = TAB_LINES.

MAILPACK-DOC_TYPE = 'OTF'.

MAILPACK-OBJ_NAME = 'TEST03'.

MAILPACK-OBJ_DESCR = 'Ship.details-Agency.report-Packing.list'.

MAILPACK-DOC_SIZE = TAB_LINES * 255.

APPEND MAILPACK.

********************************************************************

ENDFORM. "PREPARE_PACKING_LIST

************************************************************************

  • Form GET_OTF_CODE

************************************************************************

FORM GET_OTF_CODE.

PERFORM GET_DATA.

ENDFORM. "GET_OTF_CODE

************************************************************************

  • Form GET_OTF_CODE1

************************************************************************

FORM GET_OTF_CODE1.

PERFORM GET_DATA1.

ENDFORM. "GET_OTF_CODE1

************************************************************************

  • Form GET_OTF_CODE2

************************************************************************

FORM GET_OTF_CODE2.

PERFORM GET_DATA2.

ENDFORM. "GET_OTF_CODE2

END-OF-SELECTION.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Try this function module....

CONVERT_OTF_2_PDF

I have checked the PDF to OTF conversion. But i didn't found it anywhere..

Hope tht's not possible....

2 REPLIES 2

Former Member
0 Kudos

Try this function module....

CONVERT_OTF_2_PDF

I have checked the PDF to OTF conversion. But i didn't found it anywhere..

Hope tht's not possible....

Former Member
0 Kudos

Hi Dimath,

Try the following FM:

CONVERT_OTF Convert SAP documents (SAPScript) to other types.

Example:

CALL FUNCTION "CONVERT_OTF"

EXPORTING FORMAT = "PDF"

IMPORTING BIN_FILESIZE = FILE_LEN

TABLES OTF = OTFDATA

LINES = PDFDATA

EXCEPTIONS ERR_MAX_LINEWIDTH = 1

ERR_FORMAT = 2

ERR_CONV_NOT_POSSIBLE = 3

OTHERS = 4.

Hope this helps.

Reward if helpful.

Regards,

Sipra