自己新建一个IDOC type和IDOC 触发程序

来源:互联网 发布:淘宝企业店铺要纳税吗 编辑:程序博客网 时间:2024/06/09 19:38

1、发送outbound idoc


      1)WE31建segment type和WE30建idoc type。  这个步骤就比较简单,按照你的需求走就是了,不过注意就是建完segment type和idoc type需要set release。。。特别是如果当你需要修改segment type,你在修改完segment type,还需要先cancel release IDOC type,然后重新release


       2)WE81建message type和WE82绑定message type和idoc type。


       3)SM59建RFC链接,这个一般系统里面都基本建立起来了,直接用即可,如果没有,则根据需求去建,一般由basis建。


       4)WE21建立PORT,这个需要根据建立的RFC链接。建好PORT之后,就到WE20建立partner,根据前面的配置。注意这里有个Partner Role,可填,可以不填,不过这里填了,程序里面就要把这个role写入变量。

             

          5)程序的关键代码:FM: MASTER_IDOC_DISTRIBUTE

写入相关配置:

  GT_MASTER_IDOC_CONTROL-RCVPRT 'LS'.           "Recedived port
  GT_MASTER_IDOC_CONTROL-RCVPRN 'ZXISKVAT'.      "Received partner number
"GT_MASTER_IDOC_CONTROL-RCVPFC = 'LS'.           "Partner Role


  GT_MASTER_IDOC_CONTROL-IDOCTP 'ZVAT_IDOC'.    "Idoc type
  GT_MASTER_IDOC_CONTROL-MESTYP 'ZVAT_MSG'.    "Message type
  GT_MASTER_IDOC_CONTROL-RCVPOR P_PORT.          "Receiver port


写入IDOC data:

LOOP AT GT_D2.
     MOVE-CORRESPONDING GT_D2 TO LS_D2.
     L_NUM L_NUM + .
     GT_IDOC_DATA-SEGNAM 'ZVAT_D2'.                              segment的名字
     GT_IDOC_DATA-SEGNUM L_NUM.                                  号码
     MOVE LS_D2 TO GT_IDOC_DATA-SDATA.                         segment的数据
     APPEND GT_IDOC_DATA.
  ENDLOOP.



调用FM:

CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
    EXPORTING
      MASTER_IDOC_CONTROL                             GT_MASTER_IDOC_CONTROL                       存放IDOC配置
    TABLES 
      COMMUNICATION_IDOC_CONTROL           GT_IDOC_CONTROL                                          IDOC发出去后生产的NO和STATUS都在这
      MASTER_IDOC_DATA                                      GT_IDOC_DATA                                                    存放IDOC 数据
    EXCEPTIONS                   
      ERROR_IN_IDOC_CONTROL                1
      ERROR_WRITING_IDOC_STATUS            2
      ERROR_IN_IDOC_DATA                   3
      SENDING_LOGICAL_SYSTEM_UNKNOWN       4
    OTHERS   


FM完了之后的处理:

LOOP AT GT_IDOC_CONTROL.
    CALL FUNCTION 'EDI_DOCUMENT_DEQUEUE_LATER'          解释IDOC 号
      EXPORTING
        DOCNUM                 GT_IDOC_CONTROL-DOCNUM
      EXCEPTIONS
        IDOC_IS_NOT_TO_DEQUEUE 0
        OTHERS                 0.
  ENDLOOP.
  COMMIT WORK.                                                                                       最终保存生产的IDOC




2、inbound  idoc的开发:


0 0