Auto Mali Er

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 7

*&---------------------------------------------------------------------* *& Report ZSD_AUTOMAIL *& *&---------------------------------------------------------------------* *& *& PURPOSE - TO SEND AUTOMAIL TO DEFINED RECEIPENTS *&---------------------------------------------------------------------* REPORT

ZSD_AUTOMAIL. TABLES: ADR6. *** Data declaration TYPE-POOLS : ABAP, SLIS. TYPES: BEGIN OF X_TEXT, LINE(2500) TYPE C, END OF X_TEXT. * **Internal Tables DATA : IT_LIST TYPE STANDARD TABLE OF ABAPLIST, IT_TEXT TYPE STANDARD TABLE OF X_TEXT, IT_TXT TYPE STANDARD TABLE OF X_TEXT, WA_TEXT TYPE X_TEXT, IT_OUTTAB TYPE REF TO DATA, WA_OUTTAB TYPE REF TO DATA. ** Variables DATA : GV_FIELDCNT GV_STR GV_STRMSG GV_XSTRMSG TYPE TYPE TYPE TYPE I, STRING, STRING, XSTRING.

DATA: L_PRGNM TYPE BTCPROG. ** CONSTANTS CONSTANTS: CO_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB, CO_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF. ** Selection screen SELECTION-SCREEN : BEGIN OF BLOCK B WITH FRAME TITLE TEXT-001. ****PARAMETERS : L_PRGNM TYPE BTCPROG OBLIGATORY **** DEFAULT 'AQZZZSALESREG-1=SALESREG-1====', "Program nam e PARAMETERS : P_TCODE TYPE TSTC-TCODE OBLIGATORY, P_VARINT TYPE BTCVARIANT OBLIGATORY. PARAMETERS: P_RECP TYPE AD_SMTPADR OBLIGATORY. SELECT-OPTIONS: SO_RECP FOR ADR6-SMTP_ADDR NO INTERVALS. SELECTION-SCREEN : END OF BLOCK B. *** Initialization INITIALIZATION.

*** start of selection block START-OF-SELECTION. SELECT SINGLE PGMNA INTO L_PRGNM FROM TSTC WHERE TCODE = P_TCODE. IF SY-SUBRC <> ''. MESSAGE 'Please provide correct Transaction Code.' TYPE 'E'. ENDIF.

PERFORM GET_REPORT_OUTPUT. PERFORM EXCEL_ZIP_SEND. *----------------------------------------------------------------------* ***INCLUDE ZSD_SALES_REGISTER_ROUTINES . *----------------------------------------------------------------------* *&---------------------------------------------------------------------* *& Form GET_REPORT_OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM GET_REPORT_OUTPUT . DATA : ITAB TYPE TABLE OF STRING, LV_ITAV TYPE STRING. CONSTANTS: CO_SEPARATER TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB, CO_NEWLINE TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF. REFRESH : IT_TEXT, IT_TXT. CLEAR : WA_TEXT. ** 1. Execute the report and write ALV output to memory SUBMIT (L_PRGNM) USING SELECTION-SET P_VARINT EXPORTING LIST TO MEMORY AND RETURN. IF SY-SUBRC <> 0. MESSAGE TEXT-002 TYPE 'E'. ENDIF. ** 2. Get ALV output from memory to internal table CALL FUNCTION 'LIST_FROM_MEMORY' TABLES LISTOBJECT = IT_LIST EXCEPTIONS NOT_FOUND = 1 OTHERS = 2. IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. *** 3. convert output to text CALL FUNCTION 'LIST_TO_ASCI' EXPORTING LIST_INDEX = -1

TABLES LISTASCI = IT_TEXT LISTOBJECT = IT_LIST EXCEPTIONS EMPTY_LIST = 1 LIST_INDEX_INVALID = 2 OTHERS = 3. IF SY-SUBRC <> 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. *** 4. all data to string variable CLEAR GV_STRMSG. LOOP AT IT_TEXT INTO WA_TEXT. IF WA_TEXT-LINE NP '-*'. REPLACE ALL OCCURRENCES OF '|' IN WA_TEXT WITH CO_SEPARATER. CONCATENATE GV_STRMSG WA_TEXT CO_NEWLINE INTO GV_STRMSG. ENDIF. ENDLOOP. REFRESH IT_TEXT. " GV_STRMSG holds all data to be sent in excel. ENDFORM. " GET_REPORT_OUTPUT *&---------------------------------------------------------------------* *& Form EXCEL_ZIP_SEND *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM EXCEL_ZIP_SEND . ** data declaration "Object DATA : LV_FILE TYPE STRING, LV_ZIPFILEHEX TYPE XSTRING, LV_BDYMSG TYPE STRING, LV_BDYLEN TYPE I, LV_BDYLENG TYPE SO_OBJ_LEN, GO_ZIPPER TYPE REF TO CL_ABAP_ZIP, IT_BIN_CON TYPE SOLIX_TAB, IT_BDYMSG TYPE BCSY_TEXT, SEND_REQUEST TYPE REF TO CL_BCS, DOCUMENT TYPE REF TO CL_DOCUMENT_BCS, LV_SUBJECT TYPE SO_OBJ_DES, SENT_TO_ALL TYPE OS_BOOLEAN, RECIPIENT TYPE REF TO IF_RECIPIENT_BCS. *** 1. convert data from string to xstring CLEAR GV_XSTRMSG. CALL FUNCTION 'SCMS_STRING_TO_XSTRING' EXPORTING TEXT = GV_STRMSG IMPORTING BUFFER = GV_XSTRMSG. .

*** 2. Zip the file - itbin_con DATA: L_DATUM TYPE SY-DATUM. CALL FUNCTION 'CONVERT_DATE_FORMAT' EXPORTING I_DATE = SY-DATUM IMPORTING E_CALC_DATE = L_DATUM. CONCATENATE P_VARINT '-' L_DATUM '-' SY-UNAME '.xls' INTO LV_FILE. " add file to zip CREATE OBJECT GO_ZIPPER. GO_ZIPPER->ADD( NAME = LV_FILE CONTENT = GV_XSTRMSG ). " LV_ZIPFILEHEX = GO_ZIPPER->SAVE( ). REFRESH IT_BIN_CON. "convert file to binary CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING BUFFER = LV_ZIPFILEHEX TABLES BINARY_TAB = IT_BIN_CON. ** 3. Body of the email - IT_BDYMSG CLEAR : LV_BDYMSG . DATA: L_CDATE(10) TYPE C, L_PDATE(10) TYPE C, L_BODY TYPE STRING. DATA: L_VALUETAB TYPE RSPARAMS OCCURS 0 WITH HEADER LINE. *** for Tcode ZDSPG - the Subject IF P_TCODE = 'ZDSPG'. CALL FUNCTION 'RS_VARIANT_CONTENTS' EXPORTING REPORT = 'ZDLYDSPHNEW' VARIANT = P_VARINT MOVE_OR_WRITE = 'W' TABLES VALUTAB = L_VALUETAB EXCEPTIONS VARIANT_NON_EXISTENT = 1 VARIANT_OBSOLETE = 2 OTHERS = 3. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. READ TABLE L_VALUETAB WITH KEY SELNAME = 'S_FKDAT'. IF SY-SUBRC = ''. L_PDATE = L_VALUETAB-LOW.

IF L_VALUETAB-HIGH <> '00.00.0000'. L_CDATE = L_VALUETAB-HIGH. ELSE. L_CDATE = L_VALUETAB-LOW. ENDIF. ENDIF. CONCATENATE 'Billing Information From' L_PDATE 'To' L_CDATE INTO L_BODY SEPA RATED BY ' '. LV_BDYMSG = L_BODY. *****for Tcode ZMBPN - the Subject ELSEIF P_TCODE = 'ZMBPN'. CALL FUNCTION 'RS_VARIANT_CONTENTS' EXPORTING REPORT = 'ZMANBPAY_NEW' VARIANT = P_VARINT MOVE_OR_WRITE = 'W' TABLES VALUTAB = L_VALUETAB EXCEPTIONS VARIANT_NON_EXISTENT = 1 VARIANT_OBSOLETE = 2 OTHERS = 3. IF SY-SUBRC <> 0. MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. READ TABLE L_VALUETAB WITH KEY SELNAME = 'BUDAT'. IF SY-SUBRC = ''. L_PDATE = L_VALUETAB-LOW. IF L_VALUETAB-HIGH <> '00.00.0000'. L_CDATE = L_VALUETAB-HIGH. ELSE. L_CDATE = L_VALUETAB-LOW. ENDIF. ENDIF. CONCATENATE 'Cheque Details From' L_PDATE 'To' L_CDATE INTO L_BODY SEPARATED BY ' '. LV_BDYMSG = L_BODY. ****for Tcode ZAGE - the Subject ELSEIF P_TCODE = 'ZAGE'. CALL FUNCTION 'RS_VARIANT_CONTENTS' EXPORTING REPORT = 'ZFAGANLS' VARIANT = P_VARINT MOVE_OR_WRITE = 'W' TABLES VALUTAB = L_VALUETAB EXCEPTIONS VARIANT_NON_EXISTENT = 1 VARIANT_OBSOLETE = 2 OTHERS = 3. IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. READ TABLE L_VALUETAB WITH KEY SELNAME = 'KEY_DATE'. IF SY-SUBRC = ''. L_PDATE = L_VALUETAB-LOW. L_CDATE = L_VALUETAB-HIGH. ENDIF. CONCATENATE 'BR Details as on ' L_CDATE INTO L_BODY. LV_BDYMSG = L_BODY. ENDIF. LV_BDYLEN = STRLEN( LV_BDYMSG ) . LV_BDYLENG = LV_BDYLEN . CALL FUNCTION 'SCMS_STRING_TO_FTEXT' EXPORTING TEXT = LV_BDYMSG TABLES FTEXT_TAB = IT_BDYMSG. ** 4. Subject of the email ** LV_SUBJECT = P_VARINT. LV_SUBJECT = LV_FILE. ** 5. Prepare send document [email] TRY. " CLEAR SEND_REQUEST . SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ). " create document with email body CLEAR DOCUMENT . DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT( I_TYPE = 'HTM' I_TEXT = IT_BDYMSG I_LENGTH = LV_BDYLENG I_SUBJECT = LV_SUBJECT ). "add excel-zip file to email as attachment CALL METHOD DOCUMENT->ADD_ATTACHMENT EXPORTING I_ATTACHMENT_TYPE = 'zip' I_ATTACHMENT_SUBJECT = LV_SUBJECT "Attachment name I_ATT_CONTENT_HEX = IT_BIN_CON. "add document to send request CALL METHOD SEND_REQUEST->SET_DOCUMENT( DOCUMENT ). "convert receipient to internet format and then add RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( P_RECP ). CALL METHOD SEND_REQUEST->ADD_RECIPIENT EXPORTING I_RECIPIENT = RECIPIENT

I_EXPRESS

= 'X'.

LOOP AT SO_RECP. "convert receipient to internet format and then add RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( SO_RECP-LOW ). CALL METHOD SEND_REQUEST->ADD_RECIPIENT EXPORTING I_RECIPIENT = RECIPIENT I_EXPRESS = 'X'. ENDLOOP. " Send mail CALL METHOD SEND_REQUEST->SET_STATUS_ATTRIBUTES EXPORTING I_REQUESTED_STATUS = 'E' I_STATUS_MAIL = 'E'. CALL METHOD SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ). CALL METHOD SEND_REQUEST->SEND( EXPORTING I_WITH_ERROR_SCREEN = 'X' RECEIVING RESULT = SENT_TO_ALL ). IF SENT_TO_ALL = 'X'. ** MESSAGE TEXT-003 TYPE 'S'. MESSAGE 'The file has been sent successfully.' TYPE 'S'. ELSE. ** MESSAGE TEXT-004 TYPE 'E'. MESSAGE 'Error is generated.' TYPE 'E'. ENDIF. COMMIT WORK. EXIT. ENDTRY. ENDFORM. " EXCEL_ZIP_SEND ************************************************************************

You might also like