Chinaunix首页 | 论坛 | 博客
  • 博客访问: 87029
  • 博文数量: 19
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 255
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-07 13:36
文章分类

全部博文(19)

文章存档

2011年(2)

2010年(1)

2009年(3)

2008年(13)

我的朋友

分类:

2008-07-15 15:08:08

在水一方  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
阅读(3804) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~