FUNCTION Z_IDOC_INPUT_ZRZSO_MT. *"---------------------------------------------------------------------- *"*"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 *"---------------------------------------------------------------------- * Include File containing ALE constants INCLUDE MBDCONWF. TABLES : ZCUSTOMERS, "Cutomer Header ZSOHEADERS, "Sales Header ZSOITEMS. "Sales Items ***Data DATA : W_ZRZSEG1 LIKE ZRZSEG1, W_ZRZSEG2 LIKE ZRZSEG2, W_ZRZSEG3 LIKE ZRZSEG3. DATA : T_ZCUSTOMERS LIKE ZCUSTOMERS OCCURS 0 WITH HEADER LINE. DATA : T_ZSOHEADERS LIKE ZSOHEADERS OCCURS 0 WITH HEADER LINE. DATA : T_ZSOITEMS LIKE ZSOITEMS OCCURS 0 WITH HEADER LINE. *********************************************************************** WORKFLOW_RESULT = C_WF_RESULT_OK. LOOP AT IDOC_CONTRL. IF IDOC_CONTRL-MESTYP NE 'ZRZSO_MT'. RAISE WRONG_FUNCTION_CALLED. ENDIF. * Before reading a new entry, clear application buffer LOOP AT IDOC_DATA WHERE DOCNUM EQ IDOC_CONTRL-DOCNUM. CASE IDOC_DATA-SEGNAM. WHEN 'ZRZSEG1'. W_ZRZSEG1 = IDOC_DATA-SDATA. MOVE-CORRESPONDING W_ZRZSEG1 TO T_ZCUSTOMERS. INSERT INTO ZCUSTOMERS VALUES T_ZCUSTOMERS. WHEN 'ZRZSEG2'. W_ZRZSEG2 = IDOC_DATA-SDATA. MOVE-CORRESPONDING W_ZRZSEG2 TO T_ZSOHEADERS. INSERT INTO ZSOHEADERS VALUES T_ZSOHEADERS. WHEN 'ZRZSEG3'. W_ZRZSEG3 = IDOC_DATA-SDATA. MOVE-CORRESPONDING W_ZRZSEG3 TO T_ZSOITEMS. INSERT INTO ZSOITEMS VALUES T_ZSOITEMS. ENDCASE. ENDLOOP. ************************************************************************ * CUSTOMER HEADER * ************************************************************************ * SELECT * * FROM zcustomers. * ENDSELECT. * IF sy-subrc NE 0. * INSERT INTO zcustomers VALUES t_zcustomers. * ELSE. UPDATE ZCUSTHEAD FROM T_ZCUSTOMERS. * ENDIF. IF SY-SUBRC EQ 0. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '53'. IDOC_STATUS-MSGTY = 'I'. IDOC_STATUS-MSGID = 'YM'. IDOC_STATUS-MSGNO = '004'. IDOC_STATUS-MSGV1 = T_ZCUSTOMERS-KUNNR. APPEND IDOC_STATUS. CLEAR IDOC_STATUS. ELSE. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '51'. IDOC_STATUS-MSGTY = 'E'. IDOC_STATUS-MSGID = 'YM'. IDOC_STATUS-MSGNO = '005'. IDOC_STATUS-MSGV1 = T_ZCUSTOMERS-KUNNR. APPEND IDOC_STATUS. CLEAR IDOC_STATUS. WORKFLOW_RESULT = C_WF_RESULT_ERROR. RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'. RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM. APPEND RETURN_VARIABLES. CLEAR RETURN_VARIABLES. ENDIF. ************************************************************************ * SALES HEADER * ************************************************************************ * SELECT * * FROM zsoheaders. * ENDSELECT. * IF sy-subrc NE 0. * INSERT INTO zsoheaders VALUES t_zsoheaders. * ELSE. UPDATE ZSOHEADERS FROM T_ZSOHEADERS. * ENDIF. IF SY-SUBRC EQ 0. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '53'. IDOC_STATUS-MSGTY = 'I'. IDOC_STATUS-MSGID = 'YM'. IDOC_STATUS-MSGNO = '004'. IDOC_STATUS-MSGV1 = T_ZSOHEADERS-VBELN. APPEND IDOC_STATUS. CLEAR IDOC_STATUS. ELSE. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '51'. IDOC_STATUS-MSGTY = 'E'. IDOC_STATUS-MSGID = 'YM'. IDOC_STATUS-MSGNO = '005'. IDOC_STATUS-MSGV1 = T_ZSOHEADERS-VBELN. APPEND IDOC_STATUS. CLEAR IDOC_STATUS. WORKFLOW_RESULT = C_WF_RESULT_ERROR. RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'. RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM. APPEND RETURN_VARIABLES. CLEAR RETURN_VARIABLES. ENDIF. ************************************************************************ * SALES ITEM * ************************************************************************ * SELECT * * FROM zsoitems. * ENDSELECT. * IF sy-subrc NE 0. * INSERT INTO zsoitems VALUES t_zsoitems. * ELSE. UPDATE ZSOITEMS FROM T_ZSOITEMS. * ENDIF. IF SY-SUBRC EQ 0. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '53'. IDOC_STATUS-MSGTY = 'I'. IDOC_STATUS-MSGID = 'YM'. IDOC_STATUS-MSGNO = '004'. IDOC_STATUS-MSGV1 = T_ZSOITEMS-VBELN. APPEND IDOC_STATUS. CLEAR IDOC_STATUS. ELSE. IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM. IDOC_STATUS-STATUS = '51'. IDOC_STATUS-MSGTY = 'E'. IDOC_STATUS-MSGID = 'YM'. IDOC_STATUS-MSGNO = '005'. IDOC_STATUS-MSGV1 = T_ZSOITEMS-VBELN. APPEND IDOC_STATUS. CLEAR IDOC_STATUS. WORKFLOW_RESULT = C_WF_RESULT_ERROR. RETURN_VARIABLES-WF_PARAM = 'Error_Idocs'. RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM. APPEND RETURN_VARIABLES. CLEAR RETURN_VARIABLES. ENDIF. ************************************************************************ ENDLOOP. ENDFUNCTION.