FUNCTION Z_IDOC_OUTBOUND_GENERAL. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(OBJECT) LIKE NAST STRUCTURE NAST *" VALUE(CONTROL_RECORD_IN) LIKE EDIDC STRUCTURE EDIDC *" VALUE(FL_TEST) LIKE RS38L-OPTIONAL DEFAULT 'X' *" VALUE(FL_COMMIT) LIKE RS38L-OPTIONAL DEFAULT SPACE *" EXPORTING *" VALUE(CONTROL_RECORD_OUT) LIKE EDIDC STRUCTURE EDIDC *" VALUE(OBJECT_TYPE) LIKE WFAS1-ASGTP *" TABLES *" INT_EDIDD STRUCTURE EDIDD OPTIONAL *" EXCEPTIONS *" ERROR_IN_IDOC_CONTROL *" ERROR_WRITING_IDOC_STATUS *" ERROR_IN_IDOC_DATA *" SENDING_LOGICAL_SYSTEM_UNKNOWN *" UNKNOWN_ERROR *" NO_DATA_IN_IDOCSYN *"---------------------------------------------------------------------- CLEAR INT_EDIDD. REFRESH INT_EDIDD. CLEAR CONTROL_RECORD_OUT. *----------------------------------------------------------------------* CONTROL_RECORD_OUT = CONTROL_RECORD_IN. * * Most info for the control record is implicit and can be determined * directly from the system. Therefore we provided a subroutine * for the job * * PERFORM COMPLETE_CONTROL_RECORD_OUT CHANGING CONTROL_RECORD_OUT. *----------------------------------------------------------------------* *** Now read your data from the database and stuff it in table INT_EDIDD *----------------------------------------------------------------------* IF FL_TEST EQ SPACE. * Distribute IDOC CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' EXPORTING MASTER_IDOC_CONTROL = CONTROL_RECORD_OUT TABLES COMMUNICATION_IDOC_CONTROL = T_IDOC_CONTRL MASTER_IDOC_DATA = INT_EDIDD EXCEPTIONS ERROR_IN_IDOC_CONTROL = 01 ERROR_WRITING_IDOC_STATUS = 02 ERROR_IN_IDOC_DATA = 03 SENDING_LOGICAL_SYSTEM_UNKNOWN = 04. *----------------------------------------------------------------------* * FREE int_edidd. *----------------------------------------------------------------------* CASE SY-SUBRC. WHEN 1. RAISE ERROR_IN_IDOC_CONTROL. WHEN 2. RAISE ERROR_WRITING_IDOC_STATUS. WHEN 3. RAISE ERROR_IN_IDOC_DATA. WHEN 4. RAISE SENDING_LOGICAL_SYSTEM_UNKNOWN. WHEN 5. RAISE UNKNOWN_ERROR. ENDCASE. ENDIF. *----------------------------------------------------------------------* IF FL_COMMIT EQ 'X'. COMMIT WORK. ENDIF. *----------------------------------------------------------------------* ENDFUNCTION.