作者:孙亮

声明:本文章仅代表原作者观点,仅用于SAP软件的应用与学习,不代表SAP公司和本微信公众号。注:文中所示截图来源SAP软件,相应著作权归SAP所有。

在群里看大家交流技术问题,曾记下了一条笔记:

用BAPI生成/修改PO/SO,然后紧接着使用BAPI_OUTB_DELIVERY_CREATE_STO/BAPI_OUTB_DELIVERY_CREATE_SLS来生成交货单,就会出现很多莫名其妙的错误。原因是没有清空函数的全局变量,暂时的解决方案可以用DESTINATION 'NONE'.【不要两个都使用】。但这会触发隐式提交哦。或者ASSIGN ('(SAPLME03)GET_EKET_DOC[]') TO .IF SY-SUBRC = 0. CLEAR . ENDIF.

之前没有遇到相关的业务需求,也就只是记了条笔记丢在笔记库里了。然而今天遇到了相应的业务场景,出现的问题却不止一个……


这边的需求是先对采购订单收货,然后去创建交货单。我先调用了BAPI_GOODSMVT_CREATE收货,然后调用BAPI_OUTB_DELIVERY_CREATE_SLS创建交货单。结果对于全新的物料,创建交货单的时候有个警告消息,说没有物料在相关工厂相关库存地点的数据。可是这时候通过MMBE去查物料库存,明明是有数据的。于是猜到这应该是SAP有些内表的缓存没有被清理的原因。之后调整代码,调用交货单BAPI时,加上了DESTINATION 'NONE'。再次执行,第二个问题出现了,BAPI提示交货单创建成功,警告消息没了,但执行完COMMIT之后,数据库里并没有这一行交货单的数据。接下来,给大家分享我是如何去分析和解决问题的。


我的问题里,BAPI提示成功,但数据库没有数据。问题可能出现在两个地方:1、BAPI的消息出错了;2、COMMIT WORK没有执行。我也稍稍怀疑了一下第一条,但立刻否定了自己的怀疑,BAPI返回的消息如果经常出错,网上肯定很多反映和讨论这个问题的。那就只能是第二条,COMMIT WORK没有执行。我看了一下代码,里面明确写着CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'呀,并且传递了wait = 'X'的参数。再等几秒看看?于是等了一会,数据库里还是没有。MMP,SAP不讲武德啊!纠结了一小下,还是让自己镇定下来思考最根本的问题:BAPI是如何提交数据到数据库的?想一下BAPI的结构,BAPI里的代码可以分为这样两部分:1、一部分是数据校核,检查传入的数据是否满足创建相关业务对象的条件,并且把错误消息反馈出来;2、另一部分是更新数据库,即UPDATE/INSERT/DELETE dbtab这样的操作。而第二部分的代码,一般是写在一个form里或者一个function里。而且这些form或者function一般是这样被调用的:

perform save_data on commit.call function 'SAVE_DATA' in update task.

回头再看一下程序,我写了COMMIT WORK的呀。哦,难道是因为我在调用交货单BAPI时,加了DESTINATION,但是调用BAPI_TRANSACTION_COMMIT时并没有加DESTINATION!是不是这个原因呢?立刻改掉代码再试一次,果然成功了。所以在调用BAPI是如果加了DESTINATION,也需要在调用BAPI_TRANSACTION_COMMIT时加上DESTINATION。


其实今天的这个小解决方案,大家可能并不会太用到。但我觉得我解决这个问题的过程和思路,或许可以给一些朋友提供一些参考和借鉴。即:1、你要尽量储备一些基础知识;2、你要有好奇心去深入深入再深入的研究你经常使用的东西3、你要镇定下来像破案一样去排除所有不可能的因素,最后的结果就是:真相只有一个!

分享是一种精神

vsc提示只有一行_Solution:连续调用BAPI出错,以及BAPI提示成功但数据库没有数据...相关推荐

  1. Android 连续播放同段音频(提示音)

    最近做道一个项目,客户要求需要提示音,最近找了一段  ogg 格式的小音频7kb左右大小, 使用  Ringtone 播放 效果并不好,音频时间大小也会有影响. 后面使用  MediaPlayer 一 ...

  2. C语言中连续调用rand函数,返回值不变

    C语言中连续调用rand函数,返回值不变 最近用C语言随机函数编程发现了一个奇怪的现象: 简易版代码: #include<stdio.h> #include<stdlib.h> ...

  3. waitpid调用返回出错提示: No child processes问题

    问题 今日在一个函数里面概率性出现了waitpid调用出错,错误提示为No child processes.提示没有这个子进程,pid号还能错了不成,于是加了打印,复现时发现pid号都能对应上,没有问 ...

  4. mockito 多层调用_连续调用的Mockito迭代器样式存根

    mockito 多层调用 Sometimes we want to mock different responses for the consecutive calls on the same met ...

  5. 微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音

    微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音 1.目前的需求是什么 2.都踩了那些坑 1.小程序 2.h5语音提示 3.语音合成声音录制不进去,ios有时候是麦克风,有时 ...

  6. 关于接口连续调用,查询数据库数据不一致的情况

    关于接口连续调用,查询数据库数据不一致的情况 在后端开发中为前端提供了一个上传图片的接口,并且允许上传多张,虽然我封装了数组,但是前端依然是一张一张进行上传的,例如上传三照片,那么就调用三次接口,就是 ...

  7. C++ 成员函数连续调用

    使用 c++ 一些表示灵活数据体的对象时,经常会看到形如 a.reshape({1, 2}).add(1) 这样连续的成员函数调用,这是怎么实现的呢?其实很简单,只需要让需要被连续调用的成员函数最后返 ...

  8. vc6.0 mfc一些函数明明调用语法正确,但是提示函数或者函数参数未定义等问题解决方法。

    使用vc6.0 mfc 编写程序时一些函数在正常声明.调用的情况下提示函数参数未定义等问题时 如调用EnumDisplayMonitors()会提示下面问题 运行后,出现以下问题: Compiling ...

  9. 连续调用两次socket函数

    note_2019_05_07 在一个进程的一个函数中连续调用socket函数赋值给两个不同的SOCKET类型变量,第二个调用socket的变量总是INVALID_SOCKET,不知是何原因. 解决方 ...

最新文章

  1. 突围 2020!程序员这样学 AI !
  2. Spark-快速上手
  3. html动画图片重叠,不一样的层叠照片动画-ANIMATED CSS3 PHOTO STACK
  4. Keil编译Entry point (0x00100000) lies outside the image.错误
  5. Python pickle使用
  6. 三款ActiveX图表控件对比评测 TeeChart VS ProEssentials…
  7. Linux cal日历指令
  8. 【JDK】JDK源码分析-HashMap(1)
  9. 北师大本科毕业需要过计算机二级吗,全国计算机二级
  10. MMKV集成与原理,薪资翻倍
  11. Perl学习笔记(六)--文件(一)
  12. 推荐一个前端ui框架:SuperUI ui开发框架
  13. MindSpore实践:对篮球运动员目标的检测
  14. 用python计算长方体的体积用什么函数_python处理DICOM并计算三维模型体积
  15. 读书笔记--云边有个小卖部
  16. javafx项目_爬虫系列(5):JavaFx界面
  17. 谁是HTML5新规则下的牺牲品?
  18. pythonATM,购物车项目实战_补充9文档说明
  19. python 比较两文件夹的内容,具有通用性。
  20. Atitit 文件存储标准化api 总结 目录 1. 操作系统,进行操作 1 1.1. FileUtils类的应用 1 1.2. 各大api 比较 2 2. Java。Io用apache的commo

热门文章

  1. 如何写圆角矩形用html,圆角矩形的html+css实现
  2. mywebsql java版_MyWebSQL|MySQL数据库管理软件(MyWebSQL)下载v3.7官方版 - 欧普软件下载...
  3. mysql行级视图与列级视图_[数据库]--DML、DDL、TCL语言
  4. 鸿蒙开源小米能用吗,鸿蒙2.0开源,任何品牌都可以使用!小米用不用?
  5. php判断是否大写字母,PHP判断字符串由数字和大小写字母组成、长度至少6位
  6. java接口注入空指针_spring 注入空指针是怎么回事?
  7. 拆分文件_领导让把工作表拆分每个文件,我花半个小时,同事1分钟搞定了
  8. python支持什么操作方式_python模拟点击常用的操作方法有哪些?
  9. 电脑连接到网络显示未连接到服务器未响应,电脑dns服务器未响应怎么办?
  10. 华为vrrp默认优先级_华为的VRRP怎么配置