我们在前面章节里讲了一篇 [ SAP所有模块顾问都必须懂的BAPI
](http://mp.weixin.qq.com/s?__biz=MzI0MjQ2OTUxNw==&mid=2247484219&idx=1&sn=98e1330dbcd93cf9198ffbf474ae7d8b&chksm=e97a9cd9de0d15cf2f3bbdc37416adff4451202936bb4d2e770660ccbc1e0175351fa75553cc&scene=21#wechat_redirect)
.
这节课,我们拿一个采购申请冻结的案例来分析一下:
这个案例的BAPI是 BAPI_PR_CHANGE (采购申请修改)。
1、首先你怎么知道这个BAPI 名称叫什么呢?
肯定是问度娘了。
2、 这个事务码该怎么用呢?
我们再返回到第四张图 ,知道 NUMBER 该填什么了吗?答案是采购申请单号
另外我们会发现:
慢慢试错
小贴士:对于一个陌生的BAPI 我们不可能一下子就知道怎么用,肯定是要慢慢试错,慢慢琢磨
上面那个地方也是慢慢扒拉扒拉到的
请记住,我们的参数名是 PRITEM (第3步会用到)。
然后双击的是他的类型 BAPIMEREQITEMIMP。
继续往下找
我们要记住第一个框框里名称:REQ_BLOCKED 和 RESON_BLOCKING .
注意:REQ_BLOCKED 数据类型是 CHAR1 (一个字符), 是不是和下图的 1、3、4、空白吻合了呢?
经过前面几步的分析, **_基本把我们业务上需要的字段和BAPI里的字段对应起来了。_ **
3 输入运行参数
4 双胞胎用法(并非所有BAP都会出现)
仔细观察下 PREQ_ITEMX 和 PREQ_ITEM 里面的组件名称完全一样,只是长度是1
像带X一般和不带X的是一对 ,如果我们那个字段要修改,必须打上X,否则不生效。
5 开始运行
为什么说,暂时成功呢?
虽然说提示成功了,我们退出来之后用ME53N查看,数据并没有修改,难道SAP忽悠我们不成,不是,这个涉及到一个保存机制,我们下节课讲。
6 思考篇
这个过程操作下来,是不是感觉到还是挺麻烦的。
其实我们这个过程只是测试而已,真正调用时要用ABAP代码或者接口。
比如OA要调用SAP一个功能,我们可以在OA里调用,也可以直接在SAP里按照前面步骤调用、测试。
还有如果OA调用的结果不符合预期,到底是OA处理过程错了,还是SAP本身写错了,我们可以按照前面步骤测试下,看看到底是谁错了。