|
This function modules describes how to send an email of the IDoc status when receiving an ALEAUD message. PS: This can also be achieved by the process code to send an IDoc via email but that is not covered with this sample code example.
FUNCTION Z_IDOC_INPUT_ALEAUD. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD *" VALUE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC *" EXPORTING *" VALUE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT *" VALUE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR *" VALUE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK *" VALUE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS *" TABLES *" IDOC_CONTRL STRUCTURE EDIDC *" IDOC_DATA STRUCTURE EDIDD *" IDOC_STATUS STRUCTURE BDIDOCSTAT *" RETURN_VARIABLES STRUCTURE BDWFRETVAR *" SERIALIZATION_INFO STRUCTURE BDI_SER *" EXCEPTIONS *" WRONG_FUNCTION_CALLED *"---------------------------------------------------------------------- DATA: T_IDOC_CONTROL LIKE EDIDC OCCURS 0 WITH HEADER LINE, T_IDOC_DATA LIKE EDIDD OCCURS 0 WITH HEADER LINE, T_ALE_ERR LIKE ALE_ERR_MESSAGE OCCURS 0 WITH HEADER LINE, X_OBJCONT LIKE SOLI OCCURS 0 WITH HEADER LINE, X_OBJHEAD LIKE SOLI OCCURS 0 WITH HEADER LINE, RAW_HEAD LIKE SORH OCCURS 0 WITH HEADER LINE, X_RECEIVERS LIKE SOOS1 OCCURS 0 WITH HEADER LINE. DATA: W_E1ADHDR LIKE E1ADHDR, W_E1STATE LIKE E1STATE, W_E1PRTOB LIKE E1PRTOB, X_OBJECT_HD_CHANGE LIKE SOOD1, RECEIVING_SYSTEM LIKE EDIDC-SNDPRN, SENDING_SYSTEM LIKE EDIDC-RCVPRN, H_TEXT LIKE SOOD1-OBJDES, FOLDER_NAME LIKE SOS06-S_FOLNAM, SUBRC LIKE SY-SUBRC, GLOBAL_SUBRC LIKE SY-SUBRC, X_OBJECT_TYPE LIKE SOOD-OBJTP. T_IDOC_CONTROL[] = IDOC_CONTRL[]. T_IDOC_DATA[] = IDOC_DATA[]. READ TABLE T_IDOC_CONTROL INDEX 1. RECEIVING_SYSTEM = T_IDOC_CONTROL-SNDPRN. SENDING_SYSTEM = T_IDOC_CONTROL-RCVPRN. GLOBAL_SUBRC = 0. LOOP AT T_IDOC_DATA. CASE T_IDOC_DATA-SEGNAM. WHEN 'E1ADHDR'. IF ZTAUD-MESTYP <> SPACE AND NOT T_ALE_ERR[] IS INITIAL. * send SAP mail CLEAR SUBRC. PERFORM SEND_SAP_MAIL TABLES T_ALE_ERR USING RECEIVING_SYSTEM SENDING_SYSTEM ZTAUD SUBRC. IF SUBRC <> 0. GLOBAL_SUBRC = SUBRC. IDOC_STATUS-DOCNUM = T_IDOC_CONTROL-DOCNUM. IDOC_STATUS-STATUS = '51'. IDOC_STATUS-MSGTY = 'E'. IDOC_STATUS-MSGID = 'B1'. IDOC_STATUS-MSGNO = '999'. IDOC_STATUS-MSGV1 = TEXT-013. IDOC_STATUS-MSGV2 = ZTAUD-MESTYP. IDOC_STATUS-MSGV3 = 'SO_OBJECT_SEND RC ='. IDOC_STATUS-MSGV4 = SUBRC. APPEND IDOC_STATUS. ENDIF. CLEAR T_ALE_ERR. REFRESH T_ALE_ERR. ENDIF. W_E1ADHDR = T_IDOC_DATA-SDATA. CLEAR ZTAUD. SELECT SINGLE * FROM ZTAUD WHERE MESTYP = W_E1ADHDR-MESTYP. WHEN 'E1STATE'. IF ZTAUD-MESTYP = SPACE. CONTINUE. ELSE. W_E1STATE = T_IDOC_DATA-SDATA. CLEAR T_ALE_ERR. IF W_E1STATE-STATUS = '51' OR W_E1STATE-STATUS = '56' OR W_E1STATE-STATUS = '61' OR W_E1STATE-STATUS = '63' OR W_E1STATE-STATUS = '65' OR W_E1STATE-STATUS = '60'. T_ALE_ERR-STATUS = W_E1STATE-STATUS. T_ALE_ERR-DOCNUMSND = W_E1STATE-DOCNUM. ENDIF. ENDIF. WHEN 'E1PRTOB'. IF ZTAUD-MESTYP = SPACE. CONTINUE. ELSE. IF T_ALE_ERR-STATUS = SPACE. CONTINUE. ELSE. W_E1PRTOB = T_IDOC_DATA-SDATA. T_ALE_ERR-DOCNUMRCV = W_E1PRTOB-DOCNUM. APPEND T_ALE_ERR. CLEAR T_ALE_ERR. ENDIF. ENDIF. ENDCASE. ENDLOOP. IF ZTAUD-MESTYP <> SPACE AND NOT T_ALE_ERR[] IS INITIAL. * send SAP mail CLEAR SUBRC. PERFORM SEND_SAP_MAIL TABLES T_ALE_ERR USING RECEIVING_SYSTEM SENDING_SYSTEM ZTAUD SUBRC. IF SUBRC <> 0. GLOBAL_SUBRC = SUBRC. IDOC_STATUS-DOCNUM = T_IDOC_CONTROL-DOCNUM. IDOC_STATUS-STATUS = '51'. IDOC_STATUS-MSGTY = 'E'. IDOC_STATUS-MSGID = 'B1'. IDOC_STATUS-MSGNO = '999'. IDOC_STATUS-MSGV1 = TEXT-013. IDOC_STATUS-MSGV2 = ZTAUD-MESTYP. IDOC_STATUS-MSGV3 = 'SO_OBJECT_SEND RC ='. IDOC_STATUS-MSGV4 = SUBRC. APPEND IDOC_STATUS. ENDIF. CLEAR T_ALE_ERR. REFRESH T_ALE_ERR. ENDIF. IF GLOBAL_SUBRC <> 0. WORKFLOW_RESULT = 99999. RETURN_VARIABLES-DOC_NUMBER = T_IDOC_CONTROL-DOCNUM. RETURN_VARIABLES-WF_PARAM = 'Error_IDOCs'. APPEND RETURN_VARIABLES. ELSE. WORKFLOW_RESULT = 0. CLEAR IDOC_STATUS. IDOC_STATUS-DOCNUM = T_IDOC_CONTROL-DOCNUM. IDOC_STATUS-STATUS = '53'. IDOC_STATUS-MSGTY = 'E'. IDOC_STATUS-MSGID = 'B1'. IDOC_STATUS-MSGNO = '999'. IDOC_STATUS-MSGV1 = TEXT-014. APPEND IDOC_STATUS. CLEAR RETURN_VARIABLES. RETURN_VARIABLES-WF_PARAM = 'Processed_IDOCs'. RETURN_VARIABLES-DOC_NUMBER = T_IDOC_CONTROL-DOCNUM. APPEND RETURN_VARIABLES. ENDIF. ENDFUNCTION. LZALAF01 Code *------------------------------------------------------------------- ***INCLUDE LZALAF01 . *------------------------------------------------------------------- *&---------------------------------------------------------------------* *& Form SEND_SAP_MAIL *&---------------------------------------------------------------------* FORM SEND_SAP_MAIL TABLES T_ALE_ERR STRUCTURE ALE_ERR_MESSAGE USING RECEIVING_SYSTEM LIKE EDIDC-SNDPRN SENDING_SYSTEM LIKE EDIDC-RCVPRN ZTAUD STRUCTURE ZTAUD SUBRC LIKE SY-SUBRC. DATA: T_ALE_ERR_WA LIKE ALE_ERR_MESSAGE OCCURS 0 WITH HEADER LINE, X_OBJCONT LIKE SOLI OCCURS 0 WITH HEADER LINE, * x_objhead like soli occurs 0 with header line, X_RECEIVERS LIKE SOOS1 OCCURS 0 WITH HEADER LINE. DATA: X_OBJECT_HD_CHANGE LIKE SOOD1, H_TEXT LIKE SOLI-LINE, H_STATUS LIKE EDIDC-STATUS, X_OBJECT_TYPE LIKE SOOD-OBJTP. MOVE 'RAW' TO X_OBJECT_TYPE. H_TEXT = TEXT-002. REPLACE '&' WITH ZTAUD-MESTYP INTO H_TEXT. REPLACE '&' WITH RECEIVING_SYSTEM INTO H_TEXT. CONDENSE H_TEXT. MOVE: SY-LANGU TO X_OBJECT_HD_CHANGE-OBJLA, TEXT-001 TO X_OBJECT_HD_CHANGE-OBJSRT, TEXT-001 TO X_OBJECT_HD_CHANGE-OBJNAM, H_TEXT TO X_OBJECT_HD_CHANGE-OBJDES, 'F' TO X_OBJECT_HD_CHANGE-OBJSNS. " Functional * clear x_objhead. * refresh x_objhead. * move 6 to raw_head-rawsiz. * move raw_head to x_objhead. * append x_objhead. REFRESH X_OBJCONT. CLEAR X_OBJCONT. MOVE H_TEXT TO X_OBJCONT. APPEND X_OBJCONT. CLEAR X_OBJCONT. APPEND X_OBJCONT. SORT T_ALE_ERR. LOOP AT T_ALE_ERR. IF H_STATUS <> T_ALE_ERR-STATUS. IF H_STATUS <> SPACE. PERFORM ERROR_REPORT TABLES X_OBJCONT T_ALE_ERR_WA USING H_STATUS RECEIVING_SYSTEM SENDING_SYSTEM. CLEAR T_ALE_ERR_WA. REFRESH T_ALE_ERR_WA. ENDIF. H_STATUS = T_ALE_ERR-STATUS. ENDIF. T_ALE_ERR_WA = T_ALE_ERR. APPEND T_ALE_ERR_WA. ENDLOOP. IF SY-SUBRC = 0. PERFORM ERROR_REPORT TABLES X_OBJCONT T_ALE_ERR_WA USING H_STATUS RECEIVING_SYSTEM SENDING_SYSTEM. CLEAR T_ALE_ERR_WA. REFRESH T_ALE_ERR_WA. ENDIF. CLEAR X_RECEIVERS. REFRESH X_RECEIVERS. MOVE ZTAUD-DLINAM TO X_RECEIVERS-RECNAM. " Distribution list MOVE 'X' TO X_RECEIVERS-SNDEX. MOVE 'C' TO X_RECEIVERS-RECESC. APPEND X_RECEIVERS. CLEAR: SY-MSGID. CALL FUNCTION 'SO_OBJECT_SEND' EXPORTING OBJECT_HD_CHANGE = X_OBJECT_HD_CHANGE OBJECT_TYPE = X_OBJECT_TYPE TABLES OBJCONT = X_OBJCONT * objhead = x_objhead RECEIVERS = X_RECEIVERS EXCEPTIONS ACTIVE_USER_NOT_EXIST = 1 COMMUNICATION_FAILURE = 2 COMPONENT_NOT_AVAILABLE = 3 FOLDER_NOT_EXIST = 4 FOLDER_NO_AUTHORIZATION = 5 FORWARDER_NOT_EXIST = 6 NOTE_NOT_EXIST = 7 OBJECT_NOT_EXIST = 8 OBJECT_NOT_SENT = 9 OBJECT_NO_AUTHORIZATION = 10 OBJECT_TYPE_NOT_EXIST = 11 OPERATION_NO_AUTHORIZATION = 12 OWNER_NOT_EXIST = 13 PARAMETER_ERROR = 14 SUBSTITUTE_NOT_ACTIVE = 15 SUBSTITUTE_NOT_DEFINED = 16 SYSTEM_FAILURE = 17 TOO_MUCH_RECEIVERS = 18 USER_NOT_EXIST = 19 X_ERROR = 20 OTHERS = 21. SUBRC = SY-SUBRC. ENDFORM. " SEND_SAP_MAIL *&---------------------------------------------------------------------* *& Form ERROR_REPORT *&---------------------------------------------------------------------* FORM ERROR_REPORT TABLES X_OBJCONT STRUCTURE SOLI T_ALE_ERR_WA STRUCTURE ALE_ERR_MESSAGE USING H_STATUS LIKE EDIDC-STATUS RECEIVING_SYSTEM LIKE EDIDC-SNDPRN SENDING_SYSTEM LIKE EDIDC-RCVPRN. DATA: H_TEXT LIKE SOLI-LINE, H_LINES(5) TYPE C. CLEAR X_OBJCONT. APPEND X_OBJCONT. CLEAR H_TEXT. CASE H_STATUS. WHEN '51'. H_TEXT = TEXT-004. WHEN '56'. H_TEXT = TEXT-005. WHEN '61'. H_TEXT = TEXT-006. WHEN '63'. H_TEXT = TEXT-007. WHEN '65'. H_TEXT = TEXT-008. WHEN '60'. H_TEXT = TEXT-009. WHEN OTHERS. H_TEXT = H_STATUS. ENDCASE. CLEAR X_OBJCONT. X_OBJCONT = H_TEXT. APPEND X_OBJCONT. DESCRIBE TABLE T_ALE_ERR_WA LINES H_LINES. H_TEXT = TEXT-010. REPLACE '&' WITH H_LINES INTO H_TEXT. X_OBJCONT = H_TEXT. APPEND X_OBJCONT. H_TEXT = TEXT-011. REPLACE '&' WITH RECEIVING_SYSTEM INTO H_TEXT. REPLACE '&' WITH SENDING_SYSTEM INTO H_TEXT. X_OBJCONT = H_TEXT. APPEND X_OBJCONT. LOOP AT T_ALE_ERR_WA. H_TEXT = TEXT-012. REPLACE '&' WITH T_ALE_ERR_WA-DOCNUMRCV INTO H_TEXT. REPLACE '&' WITH T_ALE_ERR_WA-DOCNUMSND INTO H_TEXT. X_OBJCONT = H_TEXT. APPEND X_OBJCONT. ENDLOOP. ENDFORM. " ERROR_REPORT
Related Items:
|