Chinaunix首页 | 论坛 | 博客
  • 博客访问: 939971
  • 博文数量: 463
  • 博客积分: 10070
  • 博客等级: 上将
  • 技术积分: 4963
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-16 14:16
文章分类

全部博文(463)

文章存档

2011年(18)

2010年(144)

2009年(83)

2008年(218)

我的朋友

分类: IT职场

2008-08-01 22:26:30

          SAP中实现分布式的一个机制就是ALE/IDoc,而在具体一点就是change point
         Change point是用来分发主数据的。主要有两种实现方式,一种是直接方式,另外一种是通过SMD tool(shared data master tool)来实现。
   我们先来讲一下直接方式。所谓的直接方式,就是运行一个为一个主数据专门的Repoort程序,填入相关参数,就可以对此主数据进行分发。
一般这样的报表的名字是这样的:RBDSE***,***是message type的前三位,比如物料主数据MATMAS,它的程序就是RBDSEMAT。
   这些程序的逻辑都是固定的,其中总有一个名字形如:MASTERIDOC_CREATE_REQ_*****的Function,*****是message type,接上个例子,就是MATMAS。这个程序就是执行change point和生成IDoc的主要Function。
CALL FUNCTION 'MASTERIDOC_CREATE_REQ_MATMAS'
这个Function中有几点大家要注意的:
1.         DATA: C_MSGFN_R LIKE BDIMARAKEY-MSGFN VALUE '005'.  
生成的IDocMSGFN字段都是’005’
2.      CALL FUNCTION 'MASTERIDOC_CREATE_MATMAS
上面的Function中 CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE'
就是把IDoc传到ALE,进行分发。
3.         最后才是提交和解锁
    COMMIT WORK.
    CALL FUNCTION 'DEQUEUE_ALL'.          "
 
阅读(3813) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

zcywset152008-12-08 09:43:57

Inbound不一定直接去调用function moudle的,有一种bapi形式的是需要通过BDBG去生成bapi的。系统有现成的程序去动态调用。而且触发Inbound function方式有立即和后台两种。 至于Outbound,也有自动和手动之分,一些change point等就会自动分发,message type control的那些也是可以设成自动,而另外一些,需要跑独立的程序去触发。这些你可以到Tools->ALE下找找。 还有要提一下,记录数据是写数据表,生成idoc是生成idoc,一般是先写数据表,然后再根据数据表中的内容生成idoc。 至于ALE/IDoc还涉及很多东西,我blog上只是写了一点点,所以如果要深入地学习,还要有实际的业务来做。

chinaunix网友2008-11-30 15:11:53

抱歉,因为网速实在让人抓狂,同样的问题提交了这么多次,不好意思

chinaunix网友2008-11-30 15:10:45

看了你BLOG上的很多技术文章,先谢谢分享,我刚接触IDOC, 想请教一下: INBOUND的处理是通过调用一个开发人员写的FUNTION MODULE Z*去处理的,那么OUTBOUNDOUTBOUND到底是怎么触发的呢? 是我们自己写函数还是系统自动生成的呢? 比如自己建的一个ZSEGMENT,ZMESS,ZIDOC, 我们是如何告诉系统什么时候应该去记录数据并且将它DISTRIBUTE出去呢? 这个函数 MASTER_IDOC_DISTRIBUTE 是系统自动去调用吗 ? 还是也是嵌在一个Z*的函数里 由REPORT去触发呢? 谢谢先