概述
导语:最近的项目上出现了一个奇奇怪怪的需求,上传接口居然不是外围系统给我传输,而是他数据丢到他的中间表,然后PO去取过来,真就他不动,我自己动。
下面说一下需要怎么来实现吧,其实跟PO下传接口写入中间表一样,只不过方向变了,还有一些小变动,这里只说一下区别,不做过多的赘述,不会PO下传接口写入中间表的,戳后面的链接【SAP PO下传异步接口(写入对方中间表)】。
区别一:发送方和接收方对调
写中间表的话,是下传接口,SAP是发送方,是DTO的概念,要在MAPPING中的左边。
而上传SAP就是接收方,是DTI的概念,要在MAPPING中的右边,而外围系统作为发出方(这里的发送方是一个假意的发送方,因为需要我们去取数,暂且当作发送方理解吧),是DTO的概念,要在MAPPING的左侧。
区别二:发出方的节点名称
一般来说我们习惯用SHEET作为第一节点的名字,ITEMS作为次级节点的名称,但是这里的节点名称需要用【row】命名,至于为什么我也不知道,用就好了。
区别三:接收方地址配置
这里是最关键的地方了,前面只是一个简单的方向对调,这里涉及到很多参数了。
1、Connection配置
配置对方数据库信息,且方向为sender
2、Processing配置
配置点名称 | 解释 |
---|---|
Quality of Services | Exactly Once (不知道是干啥的) |
Poll Interval(secs) | 取数时间间隔,多久一次,以秒为单位 |
Query SQL Statement | 数据读取语句 |
Document Name | 这里选择Message Types的组件 |
Document Namespace | 这里选择对应的发出方的namespace |
Update SQL Statement | 取数以后对对方表的处理 |
我这个接口的逻辑是,让对面在表中放一个FLAG字段,我每次去取FLAG为空的数据,取过来给他FALG字段update一个X,这样下次就不会再取了
3.Advanced配置
Status :决定接口是否启用,Active–启用 Inactive不启用
Advanced Mode :勾选上
Transaction lsolation level:这里要选可序列化(serializable)
结语:上面的配置中可以发现,取数语句只能写一个,也就是说只能用单表接口去取,所以对于一套有抬头有行项目的表来说,不是很友好,但也有解决办法。
但是在这过程中会有一个东西问题,就是当数据量太大的时候,PO发给SAP会出错,就需要把包缩小,研究了好久最后解决方案是在SQL语句和UPDATE语句后面加上ROWNUM的限制,ROWNUM <= 10000即可
1、拆分多个接口取,每个表里一个Flag字段
2、在取数语句中写join语句,把主从表的数据组合成多组单条的数据,先去过来,再用Group by语句根据主键拆分。具体拆分语句后面会分享出来。
作者:小飞猪猪猪猪猪猪猪–CSDN
注意:转发请注明作者
最后
以上就是包容黑夜为你收集整理的SAP PO上传异步接口(PO从对方中间表读取数据)的全部内容,希望文章能够帮你解决SAP PO上传异步接口(PO从对方中间表读取数据)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复