* ==================================================================== * Stefanos Moschidis - SAP Certified Technical Consultant * ==================================================================== *&---------------------------------------------------------------------* *& Report ZSEND_EMAIL_WITH_ATTACHMENT *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT ZSEND_EMAIL_WITH_ATTACHMENT. * ---------------------------------------------------------------------- * VARIABLES FOR SAPSCRIPT FORM * ---------------------------------------------------------------------- DATA OPTIONS LIKE ITCPO . DATA OTFDATA TYPE STANDARD TABLE OF ITCOO WITH HEADER LINE . DATA MLINES TYPE STANDARD TABLE OF TLINE WITH HEADER LINE . DATA : I_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE . DATA : BIN_FILESIZE LIKE SOOD-OBJLEN . * ---------------------------------------------------------------------- * VARIABLES FOR SENDING EMAIL * ---------------------------------------------------------------------- DATA DOCUMENT_DATA TYPE STANDARD TABLE OF SODOCCHGI1 WITH HEADER LINE . DATA PACKING_LIST TYPE STANDARD TABLE OF SOPCKLSTI1 WITH HEADER LINE . DATA OBJECT_HEADER TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE . DATA CONTENTS_BIN TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE . DATA CONTENTS_TXT TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE . DATA RECEIVERS TYPE STANDARD TABLE OF SOMLRECI1 WITH HEADER LINE . DATA TAB_LINES_TXT TYPE I . DATA TAB_LINES TYPE I . DATA : SUCCESSFULLY_SENT TYPE C . * """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" * SELECTION-SCREEN DEFAULT * ........................................................................ PARAMETERS: PSUBJECT(40) TYPE C DEFAULT 'FOR YOUR INFORMATION' . PARAMETERS: P_TEXT01(40) TYPE C DEFAULT 'PLEASE BE INFORMED ' . PARAMETERS: P_TEXT02(40) TYPE C DEFAULT 'OF THE INFORMATION ' . PARAMETERS: P_TEXT03(40) TYPE C DEFAULT 'ATTACHED TO THIS MESSAGE' . PARAMETERS: P_EMAIL(40) TYPE C OBLIGATORY DEFAULT 'smoschid@hotmail.com' . PARAMETERS : P_PRINTE LIKE ITCPO-TDDEST OBLIGATORY DEFAULT 'LOCA' . * """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" START-OF-SELECTION . * ........................................................................ PERFORM OPEN_FORM . PERFORM WRITE_FORM . PERFORM CLOSE_FORM . PERFORM CONVERT_TO_PDF . PERFORM COMPOSE_EMAIL . IF SUCCESSFULLY_SENT = 'X' . SUBMIT ZSEND_INTERNET_MAILS_FM_QUEUE AND RETURN. ENDIF . *&---------------------------------------------------------------------* *& Form OPEN_FORM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM OPEN_FORM . CLEAR OPTIONS . OPTIONS-TDPREVIEW = ' ' . OPTIONS-TDIMMED = 'X' . OPTIONS-TDDELETE = 'X' . OPTIONS-TDGETOTF = 'X' . OPTIONS-TDDEST = P_PRINTE . CALL FUNCTION 'OPEN_FORM' EXPORTING * APPLICATION = 'TX' * ARCHIVE_INDEX = * ARCHIVE_PARAMS = * DEVICE = 'PRINTER' DIALOG = ' ' FORM = 'ZINFO' * LANGUAGE = SY-LANGU OPTIONS = OPTIONS * MAIL_SENDER = * MAIL_RECIPIENT = * MAIL_APPL_OBJECT = * RAW_DATA_INTERFACE = '*' * SPONUMIV = * IMPORTING * LANGUAGE = * NEW_ARCHIVE_PARAMS = * RESULT = EXCEPTIONS CANCELED = 1 DEVICE = 2 FORM = 3 OPTIONS = 4 UNCLOSED = 5 MAIL_OPTIONS = 6 ARCHIVE_ERROR = 7 INVALID_FAX_NUMBER = 8 MORE_PARAMS_NEEDED_IN_BATCH = 9 SPOOL_ERROR = 10 CODEPAGE = 11 OTHERS = 12 . ENDFORM. " OPEN_FORM *&---------------------------------------------------------------------* *& Form WRITE_FORM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM WRITE_FORM . CALL FUNCTION 'WRITE_FORM' EXPORTING ELEMENT = 'MWORDS' FUNCTION = 'SET' TYPE = 'BODY' WINDOW = 'MAIN' * 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 . ENDFORM. " WRITE_FORM *&---------------------------------------------------------------------* *& Form CLOSE_FORM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM CLOSE_FORM . FREE OTFDATA . CALL FUNCTION 'CLOSE_FORM' * IMPORTING * RESULT = * RDI_RESULT = TABLES OTFDATA = OTFDATA[] EXCEPTIONS UNOPENED = 1 BAD_PAGEFORMAT_FOR_PRINT = 2 SEND_ERROR = 3 SPOOL_ERROR = 4 CODEPAGE = 5 OTHERS = 6 . ENDFORM. " CLOSE_FORM *&---------------------------------------------------------------------* *& Form CONVERT_TO_PDF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM CONVERT_TO_PDF . FREE MLINES . CALL FUNCTION 'CONVERT_OTF' EXPORTING FORMAT = 'PDF' MAX_LINEWIDTH = 132 * ARCHIVE_INDEX = ' ' * COPYNUMBER = 0 * ASCII_BIDI_VIS2LOG = ' ' * PDF_DELETE_OTFTAB = ' ' IMPORTING BIN_FILESIZE = BIN_FILESIZE * BIN_FILE = TABLES OTF = OTFDATA LINES = MLINES EXCEPTIONS ERR_MAX_LINEWIDTH = 1 ERR_FORMAT = 2 ERR_CONV_NOT_POSSIBLE = 3 ERR_BAD_OTF = 4 OTHERS = 5 . CLEAR I_OBJBIN . FREE I_OBJBIN . CALL FUNCTION 'QCE1_CONVERT' TABLES T_SOURCE_TAB = MLINES T_TARGET_TAB = I_OBJBIN EXCEPTIONS CONVERT_NOT_POSSIBLE = 1 OTHERS = 2. ENDFORM. "CONVERT_TO_PDF *&---------------------------------------------------------------------* *& Form COMPOSE_EMAIL *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM COMPOSE_EMAIL . CLEAR SUCCESSFULLY_SENT . CLEAR : DOCUMENT_DATA . CLEAR : PACKING_LIST , OBJECT_HEADER , CONTENTS_BIN , CONTENTS_TXT , RECEIVERS . FREE : PACKING_LIST , OBJECT_HEADER , CONTENTS_BIN , CONTENTS_TXT , RECEIVERS . * ================================================= * NAME OF THE OBJECT TO BE SENT * ================================================= CLEAR DOCUMENT_DATA . DOCUMENT_DATA-OBJ_NAME = PSUBJECT. DOCUMENT_DATA-OBJ_DESCR = PSUBJECT. * ================================================= * BODY OF THE MESSAGE - PLAIN TEXT * ================================================= FREE CONTENTS_TXT. FIELD-SYMBOLS TYPE ANY . DATA MVAR(40) TYPE C . DATA MINDEX(2) TYPE N VALUE '01' . DO 3 TIMES . CONCATENATE 'P_TEXT' MINDEX INTO MVAR . ASSIGN (MVAR) TO . IF SY-SUBRC EQ 0 . IF NOT IS INITIAL . CLEAR CONTENTS_TXT. CONTENTS_TXT = . APPEND CONTENTS_TXT. ENDIF . ENDIF . MINDEX = MINDEX + 1 . ENDDO . * ================================================= * CALCULATING THE SIZE OF THE TEXT IN THE MESSAGE * BODY AND UPDATING THE PACKING LIST * ================================================= CLEAR TAB_LINES_TXT . DESCRIBE TABLE CONTENTS_TXT LINES TAB_LINES_TXT . READ TABLE CONTENTS_TXT INDEX TAB_LINES_TXT . DOCUMENT_DATA-DOC_SIZE = ( TAB_LINES_TXT - 1 ) * 255 + STRLEN( CONTENTS_TXT ). CLEAR PACKING_LIST. PACKING_LIST-HEAD_START = 1. PACKING_LIST-HEAD_NUM = 0. PACKING_LIST-BODY_START = 1. PACKING_LIST-BODY_NUM = TAB_LINES_TXT . PACKING_LIST-DOC_TYPE = 'RAW'. APPEND PACKING_LIST. * ================================================= * CALCULATING THE SIZE OF THE PDF ATTACHEMENT * AND UPDATING THE PACKING LIST * ================================================= DESCRIBE TABLE I_OBJBIN LINES TAB_LINES . CLEAR PACKING_LIST . PACKING_LIST-TRANSF_BIN = 'X'. PACKING_LIST-HEAD_START = 1. PACKING_LIST-HEAD_NUM = 1. PACKING_LIST-BODY_START = 1 . PACKING_LIST-BODY_NUM = TAB_LINES . PACKING_LIST-DOC_TYPE = 'PDF'. PACKING_LIST-OBJ_NAME = 'INFORMATION.PDF' . PACKING_LIST-OBJ_DESCR = 'INFORMATION.PDF' . PACKING_LIST-DOC_SIZE = TAB_LINES * 255. APPEND PACKING_LIST. * ================================================= * CREATING THE ATTACHMENT OF THE MESSAGE * ================================================= FREE CONTENTS_BIN . LOOP AT I_OBJBIN . CLEAR CONTENTS_BIN . CONTENTS_BIN = I_OBJBIN . APPEND CONTENTS_BIN . ENDLOOP . * ================================================= * LIST OF RECEPIENTS * ================================================= FREE RECEIVERS. CLEAR RECEIVERS. RECEIVERS-RECEIVER = P_EMAIL . RECEIVERS-REC_TYPE = 'U'. APPEND RECEIVERS. * ================================================= * * ================================================= CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1' EXPORTING DOCUMENT_DATA = DOCUMENT_DATA PUT_IN_OUTBOX = ' ' COMMIT_WORK = 'X' * IMPORTING * SENT_TO_ALL = * NEW_OBJECT_ID = TABLES PACKING_LIST = PACKING_LIST OBJECT_HEADER = OBJECT_HEADER CONTENTS_BIN = CONTENTS_BIN CONTENTS_TXT = CONTENTS_TXT * CONTENTS_HEX = * OBJECT_PARA = * OBJECT_PARB = RECEIVERS = RECEIVERS EXCEPTIONS TOO_MANY_RECEIVERS = 1 DOCUMENT_NOT_SENT = 2 DOCUMENT_TYPE_NOT_EXIST = 3 OPERATION_NO_AUTHORIZATION = 4 PARAMETER_ERROR = 5 X_ERROR = 6 ENQUEUE_ERROR = 7 OTHERS = 8 . IF SY-SUBRC EQ 0 . SUCCESSFULLY_SENT = 'X' . ENDIF . ENDFORM. " COMPOSE_EMAIL