05-03-2007 8:38 AM
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.
05-03-2007 8:56 AM
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....
05-03-2007 8:56 AM
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....
05-03-2007 9:02 AM
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