bapi sap 创建物料_SAP-开发基本知识(01)-简单聊聊BAPI

c01500e37d7ecb88063243fbc930b871.png

原文路径

SAP-跨模块知识小贴士系列(01)-简单聊聊BAPI​mp.weixin.qq.com
c04107d073ce54ff2dafb537b6454258.png

如果大家对SAP相关行业知识和经验有兴趣,可以搜索公众号:ERP知识图谱。

正文

很多处于实习阶段的业务顾问,在刚做项目时候,、和开发顾问进行沟通时,会在函数、RFC、BAPI这几个概念的理解上容易有一定障碍,或者有概念模糊的情况。本篇,将以较为浅显易懂的方式,简单地介绍一些相关概念,便于一些刚入行的童鞋进行理解。

刚入行的小白同学的故事,可能就这样开始了……

刚入行的业务顾问小白同学,和用户开会确认需求之后,发现一些需求的实现,是需要新开发或修改程序的。

于是小白同学,默默地梳理了很多遍需求,保证自己深刻理解需求后,鼓起勇气,找到了开发顾问老司机,开始了以下对话:

小白同学:开发老师,您看这个功能如何实现呢?

开发顾问老司机:哦,这个功能简单,需要写一个函数,调个bapi,进而去实现这个功能。

此时,刚入行的小白同学,产生了困惑,心里道:函数?bapi?介都是嘛?学PA的时候,没听过呀~~

7a195469bbc7f08c061d7ad55126f740.png

伴随着突如其来的困惑,所带来的短暂恐慌,小白同学梳理了心情,给自己鼓鼓劲,又鼓起勇气,小白同学还要继续沟通下去。小白同学要问第二个问题,TA希望通过弄明白第二个问题,进而帮助理解第一个问题。

于是,小白同学又问道:开发老师,用户提出要通过外部系统,在SAP创建订单,应该怎么处理呢?

开发顾问老司机:哦,这个问题啊,我们可以通过call RFC的方式,调用创建订单的相关bapi,最后让外部系统调用我们的RFC。这个呢,到时候得找外部系统技术人员和用户,一起再确认具体的接口交互策略,是不是直接call RFC,或者其他方式进行接口。

又是一个新的概念,小白同学有点措手不及。此时此刻,小白同学心态有点崩,心想:啥?刚才说了个啥? Call 个啥?Call的不是 666嘛?emmmmmm,这SAP业务顾问的工作适合我吗?要不要下班和公司商量一下,出个项目,离个职?

b83f5a488666dcdae3132e8338fb3bd4.png

经过了若干分钟的凌乱后,小白同学终于冷静了,下定决心:晚上先吃一套加蛋的煎饼!要加班搞明白,啥是函数!啥是RFC!!啥是扒皮(bapi)!!!

其实上述情景,描述的比较极端,就是为了芥末效果。但是,作为业务顾问,在刚接触项目时,多多少少都会有类似的经历。下来,我们就简单介绍一下什么是函数、什么是RFC,什么是bapi。

我们先从函数简单聊起:

函数(function):就是指一段在一起的、可以做某一件事的程序。一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。

简单地理解,就是将可能重复的程序,或者具有一定特殊性的程序功能,封装起来,写成一个子程序块,有输出和输入参数,方便以后使用时,直接调用。

RFC函数(Remote Function Call):RFC函数,本质上也是一种函数,是一种可远程调用的函数。此类函数,可以被外部程序或者外部系统所调用。也就是说,RFC函数,不仅可以被SAP系统的内部程序所直接调用,也可以被非SAP的外部系统所调用。

注意:RFC函数可以与外部系统进行接口,也就是说可以与外部系统进行数据交换,所以,RFC函数,不仅可以理解为一种函数,也可以理解为一种数据通信协议。

BAPI(business application programming interfaces):中文翻译为"业务应用编程接口"。BAPI本质上也是一种RFC函数,或者说是一种特殊的RFC函数。BAPI是SAP系统提供的、标准的、可用于在SAP系统中实现相关事务的RFC函数。也就是说,类似小白同学遇到的情况,用户希望通过外部系统做操作,进而通过接口直接在SAP中创建订单等,就可以通过外部系统调用SAP的BAPI进行实现。

SAP系统本身提供了大量的BAPI,比如,采购订单、销售订单、生产订单等的创建、更改、显示等。

基于以上解释,我们可以简单理解函数、RFC函数以及BAPI,在一定维度上,有定义的包含从属关系。如下图所示。

06616b09dbbf1f261e0a73f6f694633a.png

注意,这里的BAPI理解为项目中常用到的、SAP提供可用于外部调用的标准BAPI。

当刚入行的小白同学,看到这篇内容时,也许就暂时不考虑出项目转行了。

对于SAP顾问,还要学会查找BAPI,查找BAPI的常见方法,请在公众号“ERP知识图谱”中查找。

~oh yeah!~

在使用BAPI_GOODSMVT_CREATE跨工厂物料调拨时,需要对以下参数进行赋值: 1. GOODSMVT_HEADER:物料凭证头数据 - PSTNG_DATE:过账日期 - DOC_DATE:凭证日期 - REF_DOC_NO:参考凭证号码 - HEADER_TXT:凭证抬头文本 - GM_CODE:物料移动类型 2. GOODSMVT_CODE:物料移动类型数据 - GM_CODE:物料移动类型代码 3. GOODSMVT_ITEM:物料凭证行项目数据 - MATERIAL:物料- PLANT:发货工厂 - STORAGE_LOC:发货库存地点 - MOVE_TYPE:移动类型 - ENTRY_QNT:数量 - ENTRY_UOM:计量单位 - COSTCENTER:成本中心 - VAL_TYPE:价值类型 - MOVE_PLANT:收货工厂 - MOVE_STLOC:收货库存地点 - ITEM_TEXT:项目文本 下面是一个简单的示例代码: ``` DATA: lv_material TYPE bapi2017_gm_item_create-matnr, lv_plant TYPE bapi2017_gm_item_create-werks, lv_stloc TYPE bapi2017_gm_item_create-lgort, lv_move_type TYPE bapi2017_gm_head-mvt_code, lv_entry_qnt TYPE bapi2017_gm_item_create-menge, lv_entry_uom TYPE bapi2017_gm_item_create-meins, lv_costcenter TYPE bapi2017_gm_item_create-kostl, lv_val_type TYPE bapi2017_gm_item_create-bwtar, lv_move_plant TYPE bapi2017_gm_item_create-wempf, lv_move_stloc TYPE bapi2017_gm_item_create-lgort, lt_item_data TYPE TABLE OF bapi2017_gm_item_create, ls_item_data LIKE LINE OF lt_item_data. ls_item_data-matnr = lv_material. ls_item_data-werks = lv_plant. ls_item_data-lgort = lv_stloc. ls_item_data-mvt_ind = lv_move_type. ls_item_data-menge = lv_entry_qnt. ls_item_data-meins = lv_entry_uom. ls_item_data-kostl = lv_costcenter. ls_item_data-bwtar = lv_val_type. ls_item_data-wempf = lv_move_plant. ls_item_data-welme = lv_entry_uom. ls_item_data-lgort_wempf = lv_move_stloc. APPEND ls_item_data TO lt_item_data. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = ls_header_data goodsmvt_code = ls_code_data TABLES goodsmvt_item = lt_item_data EXCEPTIONS error_message = 1 OTHERS = 2. ``` 请根据实际情况进行相应的修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值