SAP 本地发送入站IDOC

示例:仅供参考

FUNCTION ZDER0010_OUTPUT_IDOC.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  EXPORTING
*"     VALUE(O_DOCNUM) TYPE  EDI_DOCNUM
*"  TABLES
*"      IT_TAB STRUCTURE  ZDER0010_INFO OPTIONAL
*"----------------------------------------------------------------------

  CALL FUNCTION 'AB_SLEEP'
    EXPORTING
      WAIT_TIME 5.
  GET TIME.
  DATA : LT_EDIDD TYPE EDIDD OCCURS 0,                    "IDOC 数据记录
         LS_EDIDD TYPE EDIDD.                             "IDOC 数据记录

  DATA:LWA_SEG_INFO TYPE ZDER0010_INFO.




*----------------------------------------------------------------------
*    整理数据
*----------------------------------------------------------------------

  LOOP AT IT_TAB INTO LWA_SEG_INFO .


    LS_EDIDD-SEGNAM 'ZDER0010_INFO'.
    LS_EDIDD-SDATA  = LWA_SEG_INFO.
    APPEND LS_EDIDD TO LT_EDIDD.
    CLEAR LWA_SEG_INFO.
  ENDLOOP.

  DATA: V_DO_HANDLE_ERROR         TYPE EDIGENERAL-ERRHANDLE,
        LS_EDIDC                  TYPE EDIDC,
        V_INBOUND_PROCESS_DATA_IN TYPE TEDE2,
        LT_EDIDC                  TYPE STANDARD TABLE OF EDIDC.

  DATA: SYSTEM_NAME TYPE CHAR10.

*获取本地系统参数
  LS_EDIDC-SNDPRN 'SYS_HUA'.
  CASE SY-MANDT.
    WHEN '604'.
      LS_EDIDC-RCVPRN 'SAPDEV'.
      LS_EDIDC-RCVPOR 'SAPDEV'.
    WHEN '800'.
      LS_EDIDC-RCVPRN 'SAPPRD'.
      LS_EDIDC-RCVPOR 'SAPPRD'.
  ENDCASE.

  LS_EDIDC-RCVPRT 'LS'.
  CONCATENATE 'SAP' SY-SYSID INTO SYSTEM_NAME.

  LS_EDIDC-SNDPOR = SYSTEM_NAME.
  LS_EDIDC-SNDPRT 'LS'.


  LS_EDIDC-MESTYP =  'ZDER0010_MSG'"信息类型
  LS_EDIDC-IDOCTP =  'ZDER0010_IDOC'"IDOC 类型
  LS_EDIDC-DIRECT '2'.

  CALL FUNCTION 'IDOC_INBOUND_WRITE_TO_DB'
    EXPORTING
*     PI_STATUS_MESSAGE       =
      PI_DO_HANDLE_ERROR      = V_DO_HANDLE_ERROR
*     PI_NO_DEQUEUE           = ' '
      PI_RETURN_DATA_FLAG     ' '
*     PI_RFC_MULTI_CP         = '    '
    IMPORTING
      PE_IDOC_NUMBER          = LS_EDIDC-DOCNUM
*     PE_STATE_OF_PROCESSING  =
      PE_INBOUND_PROCESS_DATA = V_INBOUND_PROCESS_DATA_IN
    TABLES
      T_DATA_RECORDS          = LT_EDIDD
*     T_LINKED_OBJECTS        =
    CHANGING
      PC_CONTROL_RECORD       = LS_EDIDC  "Control Data
    EXCEPTIONS
      IDOC_NOT_SAVED          1
      OTHERS                  2.


  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.
  APPEND LS_EDIDC TO LT_EDIDC.
  CALL FUNCTION 'IDOC_START_INBOUND'
    EXPORTING
      PI_INBOUND_PROCESS_DATA = V_INBOUND_PROCESS_DATA_IN
      PI_CALLED_ONLINE        'X'
*     PI_DO_COMMIT            = 'X'
*     PI_START_EVENT_ENABLED  = 'X'
*     PI_ORG_UNIT             = ' '
      SUCC_SHOW_FLAG          'X'
*     PI_PARTNER_OPTION       =
    TABLES
      T_CONTROL_RECORDS       = LT_EDIDC
*     T_DATA_RECORDS          =
    EXCEPTIONS
*     INVALID_DOCUMENT_NUMBER = 1
*     ERROR_BEFORE_CALL_APPLICATION       = 2
*     INBOUND_PROCESS_NOT_POSSIBLE        = 3
*     OLD_WF_START_FAILED     = 4
*     WF_TASK_ERROR           = 5
*     SERIOUS_INBOUND_ERROR   = 6
      OTHERS                  1.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.



  O_DOCNUM = LS_EDIDC-DOCNUM.

ENDFUNCTION.

posted @ 2021-11-19 17:01  ll的个人笔记  阅读(246)  评论(0编辑  收藏  举报