在水一方 13:44:18
我在一个程序里执行 2个BDC,2个 BDC的 返回结果一样
在水一方 13:44:30
返回的 错误消息
在水一方 13:44:53
如果断点调试 就没有问题
ABAP老白 13:45:29
?
在水一方 13:45:56
没遇到过 ?
ABAP老白 13:46:28
哦。。好像遇到过,记不清了
干啥的BDC?
在水一方 13:46:40
MB1B MB1A
ABAP老白 13:47:05
两个接着的?
在水一方 13:47:23
对
ABAP老白 13:49:33
你们的数据库更新效率如何?
两个BDC之间加一个等待时间
在水一方 13:50:16
我加了50s 不成
在水一方 13:50:29
100s 就成功了
在水一方 13:50:37
但是 不可能等100s啊
ABAP老白 13:51:46
为啥不可能?
在百安居的时候,延迟600秒都不够
在水一方 13:52:11
那 就真的让他等600S?
在水一方 13:52:26
还是后来有更好的解决办法了
ABAP老白 13:54:20
那个不是BDC,是一个后台程序
你加一个select single 语句
do ...
select .....
if sy-subrc = 0.
exit.
endif.
enddo.
ABAP老白 13:54:53
do enddo .之间加一秒的延迟
在水一方 13:54:56
随便选点什么?
在水一方 13:55:32
1秒就够?
ABAP老白 13:55:31
。。。
当然不是了,选你第一个BDC生成的数据啊
在水一方 13:56:35
你是说从物料凭证理选?
ABAP老白 13:56:52
嗯,这个例子应该是
在水一方 13:57:39
这个只是处理了成功的情况
如果BDC执行失败的话,不就成死循环了
ABAP老白 13:58:25
哈,当然你得判断了
ABAP老白 13:58:40
我就是给你一个思路
在水一方 13:58:50
恩,我去试试啊,多谢老白
ABAP老白 14:00:28
呵呵
ABAP老白 14:17:59
咋样了?
在水一方 14:18:28
fail
ABAP老白 14:18:38
不应该呀
在水一方 14:19:20
做完BDC 加一个 DO ENDDO
在水一方 14:20:09
不管选择数据成功与否都EXIT
ABAP老白 14:20:45
。。。。
那还有啥用。。
在水一方 14:21:12
你是说 只有查到数据时才EXIT?
在水一方 14:21:29
我捕捉的是错误消息啊
ABAP老白 14:21:28
。。当然了,不然干嘛要select????
ABAP老白 14:22:05
是不是第二个BDC要依据第一个的结果??
在水一方 14:22:15
不用
ABAP老白 14:22:15
刚才忘了问了
ABAP老白 14:22:26
汗。。。。那就不要这样了。。
ABAP老白 14:22:50
看来是我我理解错了
ABAP老白 14:24:46
不过这样做也许能管用,说明数据库已经更新了,也会减少出错的几率
在水一方 14:28:17
没说明白
在水一方 14:28:54
是把数据先 做343类型的移动 然后再做907类型的移动
在水一方 14:29:07
不能说没关系 还是有点关系的
ABAP老白 14:29:20
哦,什么叫有点关系啊,是很有关系
在水一方 14:32:10
那 我只取 成功的数据 失败的不取的话 还是解决不了问题啊
ABAP老白 14:38:37
你先判断一下BDC的结果啊
在水一方 14:44:56
就是 失败了 我才要读取失败的原因
在水一方 14:45:15
两次 BDC执行时间太近了 原因竟然是一样的
ABAP老白 14:46:39
BDC的数据更新用的同步还是异步呀?
在水一方 14:46:56
同步 S
ABAP老白 14:47:31
像这样有先后关系的,一定要确认第一个做完了,第二个才好做
在水一方 14:47:56
怎么确认做完了
ABAP老白 14:49:02
那个select就是用来确认是否做完了啊
在水一方 14:49:32
失败的话 怎么确定呢
在水一方 14:49:48
失败的话 永远也查不到 数据啊
在水一方 14:50:54
不管成功 失败 我都要确定,可以做到吗
ABAP老白 14:50:54
唉,
首先,这个语句是在两个BDC中间,你要判断第一个BDC是否执行成功了才能执行这个
ABAP老白 14:51:29
不管成功 失败 我都要确定,可以做到吗
啥意思啊?
在水一方 14:51:44
都要确定 执行完了啊
在水一方 14:51:54
要不 岂不是在死循环理了
ABAP老白 14:52:45
。。。。
在DO里面如果需要还得添加其他的判断代码
我给你的只是一个思路,一个例子
ABAP老白 14:53:42
具体代码还得补充
你先测试一下第一个BDC都能成功执行的情况嘛
在水一方 14:54:22
我好象明白了
在水一方 14:54:40
如果第一个 失败了 第二个就不执行了 这样只有一条错误消息
在水一方 14:55:10
第一个 成功 第二个 失败 也只
有一条错误消息
在水一方 14:55:35
两个都成功了就没用错误消息之说了
ABAP老白 14:56:26
嗯
在水一方 15:00:25
如果两个BDC没关系的话 也会碰到类似问题把
ABAP老白 15:00:23
您好,我现在有事不在,一会儿再和您联系
ABAP老白 15:01:33
如果一点点关系都没有,包括也没有互相锁表的关系
就应该不会有这个问题,至少我没有遇到过
在水一方 15:02:36
恩 知道了,多谢老白
ABAP老白 15:03:40
bukeqi
阅读(3875) | 评论(0) | 转发(0) |