IDOC创建

DATA: g_idoc_ctl LIKE edidc,
      g_e1maram LIKE e1maram,
      g_e1maktm LIKE e1maktm.
DATA: gi_ret_ctl LIKE edidc OCCURS 0,
      gi_idoc_data LIKE edidd OCCURS 0 WITH HEADER LINE.

* BUILD IDOC_CTL RECORD
PERFORM build_idoc_ctl.

* BUILD ICOC_SEGMENT DATA
PERFORM build_idoc_seg.

* CALL FUNCTION AND CREATE IDOC
PERFORM create_idoc.


*&---------------------------------------------------*
*& form BUILD_IDOC_CTL
*&--------------------------------------------------*
FORM build_idoc_ctl.
* TYPE
  g_idoc_ctl-idoctp = 'ZMMIDOC'. "IDOC TYPE
  g_idoc_ctl-mestyp = 'ZMMCRT'. "MESSAGE TYPE

* RECEIVER
  g_idoc_ctl-rcvprt = 'LS'. "PARTNER TYPE
  g_idoc_ctl-rcvprn = 'MMRECV800'. "PARTNER NO

* SENDER
  g_idoc_ctl-sndprt = 'LS'. "PARTNER TYPE
  g_idoc_ctl-sndprn = 'T90CLNT090'. "PARTNER NO
  g_idoc_ctl-sndpor = 'SAPC11'. "PORT
ENDFORM. " BUILD_IDOC_CTL

*&---------------------------------------------------*
*& form BUILD_IDOC_SEG
*&---------------------------------------------------*
FORM build_idoc_seg.

* HEAD DATA
  gi_idoc_data-segnam = 'E1MARAM'. "SEGMENT NAME
  gi_idoc_data-segnum = 1. "SEGMENT NO

  g_e1maram-matnr = 'IDOCTEST15'. "MM NO
  g_e1maram-meins = '10'. "BASE UOM
  g_e1maram-mbrsh = 'M'. "INDUSTRY
  g_e1maram-mtart = 'DIEN'. "MM TYPE

  MOVE g_e1maram TO gi_idoc_data-sdata.
  APPEND gi_idoc_data.

* DESCRIPTION
  gi_idoc_data-segnam = 'E1MAKTM'. "SEGMENT NAME
  gi_idoc_data-segnum = 2. "SEGMENT NO

  g_e1maktm-spras = sy-langu. "LANGUAGE
  g_e1maktm-maktx = 'IDOC TEST'. "DESCRIPTION

  MOVE g_e1maktm TO gi_idoc_data-sdata.
  APPEND gi_idoc_data.
ENDFORM. " BUILD_IDOC_SEG

*&---------------------------------------------------*
*& form CREATE_IDOC
*&---------------------------------------------------*
FORM create_idoc.
  CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
    EXPORTING
      master_idoc_control            = g_idoc_ctl
    TABLES
      communication_idoc_control     = gi_ret_ctl
      master_idoc_data               = gi_idoc_data
    EXCEPTIONS
      error_in_idoc_control          = 1
      error_writing_idoc_status      = 2
      error_in_idoc_data             = 3
      sending_logical_system_unknown = 4
      OTHERS                         = 5.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    COMMIT WORK.
  ENDIF.
ENDFORM. " CREATE_IDOC 

由于没有提供具体的引用内容,以下是关于IDOC跨客户端创建DN(Delivery Note,交货单)的一般方法说明: #### 配置系统 在SAP系统中,需要确保跨客户端通信的相关配置正确。这包括RFC(远程函数调用)目的地的设置,用于在不同客户端之间建立连接。可以通过事务码SM59来定义和维护RFC目的地,确保源客户端和目标客户端之间能够正常通信。 #### 创建IDOC 在源客户端,使用事务码WE19或通过ABAP代码来创建IDOCIDOC是一种用于在不同系统或客户端之间传输业务数据的文档格式。对于创建DN相关的IDOC,需要选择正确的消息类型(如DELVRY05),该消息类型用于交货单相关的数据传输。 ```abap REPORT z_create_idoc_dn. DATA: lv_idoc_control LIKE edidc, lv_idoc_data LIKE edidd. * 填充控制记录 lv_idoc_control - docnum = ''. " IDOC编号 lv_idoc_control - direct = '2'. " 直接处理标志 lv_idoc_control - mestyp = 'DELVRY05'. " 消息类型 lv_idoc_control - sender = 'SOURCE_CLIENT'. " 发送方 lv_idoc_control - receiver = 'TARGET_CLIENT'. " 接收方 * 填充数据记录 lv_idoc_data - segnam = 'E1EDL20'. " 段名称 lv_idoc_data - data1 = '相关交货单数据'. " 具体数据 * 创建IDOC CALL FUNCTION 'IDOC_INPUT_INTERNAL_TABLE' EXPORTING idoc_control_record = lv_idoc_control TABLES idoc_data_record = lv_idoc_data EXCEPTIONS error_message = 1 OTHERS = 2. IF sy - subrc <> 0. MESSAGE 'IDOC创建失败' TYPE 'E'. ENDIF. ``` #### 发送IDOC 创建IDOC后,需要将其发送到目标客户端。可以通过事务码WE02选择创建好的IDOC,然后执行发送操作。也可以在ABAP代码中调用相应的函数模块来实现自动发送。 #### 目标客户端处理 在目标客户端,使用事务码WE05监控接收到的IDOC。当IDOC到达目标客户端后,系统会根据消息类型和配置的处理程序对IDOC进行处理。对于DN相关的IDOC,处理程序会将IDOC中的数据转换为目标客户端的交货单。 #### 检查和确认 在目标客户端,使用事务码VL03N等查看创建的交货单,确保数据准确无误。同时,在源客户端和目标客户端都可以查看IDOC的处理状态,以确保整个跨客户端创建DN的过程顺利完成。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值