外行假装内行,我也来谈谈SAP BAPI和BADI

A, 什么是BAPI?

BAPI是business application programming interface的缩写,是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/3专有产品。为了完成一些特殊的商业任务,如上传交易数据等,R/3系统中内置了BAPI。

1.BAPI – business application programming interface。

2.它实际上是一种特殊的Remote Function Modules (RFC)是为了提供使用外部程序来进行交易活动, BAPI是SAP以外程序访问SAP内部数据和程序的标准方式。

3.它提供的基于企业目标(Business Object) 技术的接口应用界面。

4.SAP采用了Object-oriented技术,逻辑定义了SAP R/3系统的所有功能目标,并且将所有的目标(Objects) 和BAPIs存储于企业对象库(Business Objects Repository)。

5.SAP R/3 企业目标的目标类型(Object Type) 相当于目标设计语言中类(Class) 的概念,其定义结构由以下几部分组成:基本数据,接口界面,键(Key Fields),方法(Methods),特征(Attributes),事件(Events)。

6.BAPI在SAP系统内部以Function Module的方式实现.所有的BAPI Function都支持Remote Function Call (RFC),处理过程中不激活对话窗口。

7.BAPI是被定义为Business Object Repository(BOR)中的SAP Business Object类型或SAP interface类型的方法,并且以Function Module方式实现的. 这种定义和实现分离的方式是我们可以通过2种方式访问BAPI:

- 通过面向对象的方法调用BOR中的BAPI

- 通过RFC直接调用Function Module

需要注意的事项:

在T-CODE:SE11中创建的结构必须保存在开发类中,不可保存为本地对象。

BAPI业务应用程序接口(Business Application Programming Interface,简称BAPI)是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/3专有产品。为了完成一些特殊的商业任务,比如上传交易数据等,系统中内置了BAPI。

BAPI业务应用程序接口是一个标准化的开放接口。有了BAPI,用户可以通过浏览器、Exchange电子邮件来使用ERP系统,用户可以将这些软件模块与非ERP软件混合匹配使用。

用户可以按需求单独更新某一个模块,而没有必要为了增强某一个功能对系统进行全面升级。用户用逐个模块更新的办法增强系统的功能,而不必更换整个系统。

BAPI技术对ERP软件的开发商来说是非常重大的进步。从MRPII到ERP,系统功能越来越多,一个软件公司无论多么强大,也无法独自开发包括企业全部专业的全部管理功能的软件。在技术上必须有能力把第三方软件接到自己的核心软件上。SAP的BAPI和Oracle应用的30多个API能够使自己的软件具有“无限”的扩展能力。

BAPI是SAP提供的基于业务对象的函数,关键是它们处理的对象是R/3的业务相关对象,比如单据类销售订单,它们是一系列实体,RFC则是一种系统间通讯的方式(Remote Fcuntion Call),一个BAPI函数是一个RFC函数。

B, 如何创建BAPI程序?

主要有如下几个步骤:

1.定义BAPI Structure (Structure不能在BAPI中重复使用,因为一旦BAPI被释放,其Structure被冻结)。事务代码SE11。

2.创建FUNCTION MODULE。事务代码SE80。

每个BAPI必须有自己的Function Group,Function Group属性必须为RFC。

3.创建Business Object。事务代码SWO1。

4.使用BAPI WIZARD创建API Method。

这样BAPI可以被外部程序调用。

5.Function Module符合BOR Method。

4.释放BAPI Function Module, 事务代码SE37、SWO1。

释放Business Object Type,释放BAPI作为BOR的一种Method。

C,BADI 和BAPI 的区别

BADI是一种面向对象的增强方式,SE19可以实现SAP已定义好的BADI。
而BAPI是SAP业务对象的一个方法,底层多以Function Module来实现。所以在ABAP里更多地是作为FM来使用。

BAPI 是函数,你可以输入T-code:BAPI,查找系统里的BAPI函数。比如采购申请的审批的勾打上,就可以调用BAPI函数来实现。

BADI 是ABAP的一种增强,他的调用方式是CALL METHOD (instance),(相关的TCODE是SE18和SE19),你可以通过EXIT_HANDLER这个单词查找BADI。

创建增强有多种方法,用CMOD可以创建,用SPRO也可以创建。网上有这段:
针对BADI的增强
 1、BADI对象的信息存储在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 这四个表中。
 2、SAP程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP 和 V_EXT_ACT)进行查询和搜索。
 3、基于这个机理,我查用ST05来监控一个TCODE来跟踪,然后选择查找有关上述几个表和视图的操作,就可获得相关BADI。

4、se18 查找接口,se19 实现接口就可以实现用户增强。

在程序中,查找BAdI的常用方法:

使用事务代码 SE84 :Repository information system

使用事务代码 SPRO: Customizing Guide, SAP标准发布的BAdI会在相关应用配置点中说明

在程序中搜索关键字CL_EXITHANDLER=>GET_INSTANCE或关键字GET BADI

在程序中搜索BAdI相关的接口名称,其接口的命规范通常为IF_EX_

事务代码CODE_SCANNER, 可指定在特定的package、program中所有相关的字符串

D,SAP 各模块常用的BAPI

MM模块

1、 BAPI_MATERIAL_SAVEDATA 创建物料主数据

注意参数EXTENSIONIN的使用,可以创建自定义字段

例如:WA_BAPI_TE_MARA-MATERIAL = ITAB_UP-MATNR.

T_EXTENSIONIN-STRUCTURE = 'BAPI_TE_MARA'.

T_EXTENSIONIN-VALUEPART1 = WA_BAPI_TE_MARA.

APPEND T_EXTENSIONIN.

WA_BAPI_TE_MARAX-MATERIAL = ITAB_UP-MATNR.

   T_EXTENSIONINX-STRUCTURE = 'BAPI_TE_MARAX'.

T_EXTENSIONINX-VALUEPART1 = WA_BAPI_TE_MARAX.

APPEND T_EXTENSIONINX.

2、 BAPI_OBJCL_CREATE 分类视图的创建

3、 BAPI_OBJCL_GETCLASSES 分类视图得到详细信息

4、 BAPI_MATERIAL_SAVEREPLICA 物料视图的扩充

5、 BAPI_GOODSMVT_CREATE 创建物料凭证 注意表T158G可以决定goodsmvt_code

GOODSMVT_CODE参数对应值:

  01 MB01

  02 MB31

  03 MB1A

  04 MB1B

  05 MB1C

  06 MB11

  07 MB04

6、 BAPI_GOODSMVT_CANCEL 冲销物料凭证

7、 BAPI_PR_CREATE 创建PR

8、 BAPI_PO_CREATE1 创建PO

9、 BAPI_PO_CHANGE 修改PO和删除PO

10、WS_REVERSE_GOODS_ISSUE 冲销交货单的过账发货

11、BAPI_RESERVATION_CREATE1 创建预留   如果要检查ATP,必须使用

BAPI_RESERVATION_CREATE

12、BAPI_RESERVATION_CHANGE 修改和删除预留

13、PRICES_CHANGE PRICES_POST 更改物料移动平均价或者标准价格

SD模块

1、 BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单

2、 SD_SALESDOCUMENT_CREATE 创建销售订单 (如果要检查ATP,必须使用这个)

3、 BAPI_OUTB_DELIVERY_CREATE_SLS 根据销售订单创建交货单

4、 BAPI_BILLINGDOC_CREATEMULTIPLE 创建发票,注意参数ref_doc_ca

5、 BAPI_SALESORDER_CHANGE 修改或者删除销售订单

6、 MB_CANCEL_GOODS_MOVEMENT 冲销交货单的过账发货

7、 BAPI_BILLINGDOC_CANCEL1 发票的冲销

8、 BAPI_OUTB_DELIVERY_CHANGE 修改外向交货单

9、 SD_DELIVERY_UPDATE_PICKING 修改外向交货单拣配数量

10、WS_DELIVERY_UPDATE 外向交货单的发货过账
11、SD_CUSTOMER_MAINTAIN_ALL   创建客户 。

PM模块

1、BAPI_OBJCL_CREATE 、

BAPI_OBJCL_CHANGE、

BAPI_OBJCL_GETDETAIL

计量点通用属性导入

2、MEASUREM_DOCUM_RFC_SINGLE_001 计量凭证创建

FI模块

1、K_HIERARCHY_TABLES_READ 成本要素组明细

2、BAPI_ACC_DOCUMENT_POST 创建会计凭证

3、BAPI_ACC_DOCUMENT_REV_POST 反冲会计凭证   可以冲销自开发程序生成的凭证   必须传入交易码参数
     BAPI_ACC_GL_POSTING_REV_POST 只能冲销标准TCODE生成的凭证

4、FCOM_COSTCENTER_CHANGEMULTIPLE

FCOM_COSTCENTER_CREATEMULTIPLE

BAPI_COSTCENTER_CHANGEMULTIPLE :Change One or More Cost Centers
      BAPI_COSTCENTER_CHECKMULTIPLE  :Check One or More Cost Centers
      BAPI_COSTCENTER_CREATEMULTIPLE :Create One or More Cost Centers
      BAPI_COSTCENTER_DELETEMULTIPLE :Delete One or More Cost Centers

4、BAPI_INCOMINGINVOICE_CREATE 发票检验(miro)

5、BAPI_INCOMINGINVOICE_CANCEL 发票校验冲销(mr8m)

PS模块

1、BAPI_PS_INITIALIZATION、BAPI_BUS2001_CREATE、BAPI_PS_PRECOMMIT 创建项目定义

2、BAPI_PS_INITIALIZATION、BAPI_BUS2054_CREATE_MULTI、BAPI_PS_PRECOMMIT 创建WBS

创建WBS的时候,注意参数 wbs_left和 wbs_up,这个是创建有层级的WBS必须要填写的

3、KBPP_EXTERN_UPDATE_CO 修改项目和WBS的预算

PP模块

Routing(工艺路线)

BAPI_ROUTING_CREATE                                                     创建工艺路线BAPI - ca03

BAPI_ROUTING_EXISTENCE_CHECK                               检查工艺路线是否存在

Reference operation set:(参考操作集)

BAPI_REFSETOFOPERATIONS_CREATE                           创建参考参考工序集

BAPI_REFSETOFOPR_EXISTENCE_CHK                           检查参考参考工序集

Planned order:(计划订单)

BAPI_PLANNEDORDER_CHANGE                                       更改计划订单  -md04

BAPI_PLANNEDORDER_CREATE                                         创建计划订单

BAPI_PLANNEDORDER_DELETE                                         删除计划订单

BAPI_PLANNEDORDER_EXIST_CHECK                              检查计划订单是否存在

BAPI_PLANNEDORDER_GET_DETAIL                                获取计划订单详细信息(计划订单)

BAPI_PLANNEDORDER_GET_DET_LIST                            获得计划订单信息

Planned Independent Requirement:(计划独立需求)

BAPI_REQUIREMENTS_CHANGE                                         更改计划独立需求 -md61

BAPI_REQUIREMENTS_CREATE                                           创建计划独立需求

BAPI_REQUIREMENTS_GETDETAIL                                   显示计划独立需求

Production order:(生产订单)

BAPI_PRODORD_WM_MAT_STAGING                                WM材料分期

BAPI_PRODORD_SETUSERSTATUS                                       设置用户状态

BAPI_PRODORD_SET_DEL_INDICATOR                             设置删除标识

BAPI_PRODORD_SET_DELETION_FLAG                            设置删除标识

BAPI_PRODORD_SCHEDULE                                                  进行调整

BAPI_PRODORD_REVOKEUSERSTATUS                         取消用户状态

BAPI_PRODORD_RELEASE                                                发布

BAPI_PRODORD_GET_LIST                                               列表抬头订单

BAPI_PRODORD_GET_DETAIL                                          抬头订单明细

BAPI_PRODORD_EXIST_CHECK                                      确认检查性

BAPI_PRODORD_CREATE_FROM_REF                          创建模板

BAPI_PRODORD_CREATE_FROM_PLORD                     创建带有计划订单

BAPI_PRODORD_CREATE_CAP_REQ                                产生能力需求

BAPI_PRODORD_CREATE                                                   创建生产订单

BAPI_PRODORD_COSTING                                                创建成本估计

BAPI_PRODORD_COMPLETE_TECH                               完整的技术

BAPI_PRODORD_CLOSE                                                      关闭订单

BAPI_PRODORD_CHECK_MAT_AVAIL                            检查物料可用性

BAPI_PRODORD_CHANGE                                                  更改生产订单

Production order confirmation:(生产订单确认)

BAPI_PRODORDCONF_GET_TT_PROP                            确认计工单

BAPI_PRODORDCONF_GET_TE_PROP                            确认计工单

BAPI_PRODORDCONF_GETLIST                                        生产订单确认

BAPI_PRODORDCONF_GETDETAIL                        生产订单确认详细信息

BAPI_PRODORDCONF_GET_HDR_PROP                 确认计划订单

BAPI_PRODORDCONF_EXIST_CHK                           检查工单是否存在

BAPI_PRODORDCONF_CREATE_TT                          确认计划工单

BAPI_PRODORDCONF_CREATE_TE                          确认计划工单

BAPI_PRODORDCONF_PDC_UPLOAD_TT                 PP 确认计工单

BAPI_PRODORDCONF_PDC_UPLOAD_TE                  PP 确认计工单

BAPI_PRODORDCONF_CREATE_HDR                        输入订单确认

BAPI_PRODORDCONF_CREATE_ACT                         输入订单激活确认

BAPI_PRODORDCONF_CANCEL                                  取消生产订单

BDC Download & Upload for production order: (下载和上传的BDC的生产订单)

BAPI_RCVPRORDCF_RECEIVEPRODORD               PP-PDC: 下载生产订单

BAPI_RCVPRORDCF_RECEIVEWORKC                    PP-PDC: 下载工作中心

BAPI_RCVPRODCF_REQUEST_CONF                       PP-PDC: 上传请求

KANBAN: (看板)

BAPI_KANBAN_CHANGE                                           更改kanban数据

BAPI_KANBAN_CHANGESTATUS                          更改kanban状态

BAPI_KANBAN_CHANGESTATUS1                        更改kanban状态1

BAPI_KANBAN_GETLIST                                         匹配选择标准KANBAN的测定BAPI_KANBAN_GETLIST_ALL                                匹配选择标准KANBAN的测定

BAPI_KANBAN_GETLISTFORSUPPLIE1                匹配选择标准KANBAN的测定

BAPI_KANBAN_GETLISTFORSUPPLIER               为供应商提供kanban数据

BAPI_KANBAN_SETINPROCESS                          为供应商提供kanban数据

KANBAN CONTROL CYCLE: (看板)

BAPI_KANBANCC_ADDEVENTDRKANBAN           Create Event-Driven KANBAN for Control Cycle

BAPI_KANBANCC_CHANGE                                 Change Control Cycle

BAPI_KANBANCC_CREATE                                   Create Control Cycle

BAPI_KANBANCC_DELETE                                   Delete Control Cycles

BAPI_KANBANCC_EXISTCHECK                         Check Existence of Control Cycle

BAPI_KANBANCC_GETLIST                                 Determine Kanban Control Cycles with Selection Criteria

BAPI_KANBANCC_GETLIST_ALL                        Determine Kanban Control Cycles with Selection Criteria

BAPI_KANBANCC_WITHDRAWQUANTITY          Quantity Signal for Kanban Control Cycle

REM Confirmation: ( REM确认)

BAPI_REPMANCONF_CANCEL                        处理的重复制造取消

BAPI_REPMANCONF_CREATE_MTO               销售订单执行重复制造情况

BAPI_REPMANCONF_CREATE_PLOT             执行生产成本

BAPI_REPMANCONF_CREATE_MTS               在很多情况下,执行生产成本

BAPI_REPMANCONF_EXIST_CHK                  检查对象存在

REM Confirmation1:

BAPI_REPMANCONF1_CANCEL                       处理的重复制造取消

BAPI_REPMANCONF1_CREATE_MTO           销售订单执行重复制造情况

BAPI_REPMANCONF1_CREATE_MTP            在很多情况下,执行生产成本

BAPI_REPMANCONF1_CREATE_MTS            在很多情况下,执行生产成本

BAPI_REPMANCONF1_EXIST_CHK                检查对象存在

-完-

整理于2021-12-30

外行假装内行,我也来谈谈SAP BAPI和BADI相关推荐

  1. 互联网产业中“外行领到内行”和软件工程

    面对这个魅力四射的产业,如果你很有想法,但你却不是IT专业,该怎么办呢? 有些人的做法是外包.可是它有缺点: (1)网站上线后的一年时间里,访问量一般不大,网站即使有技术问题,也不一定能发现.当访问量 ...

  2. 经典的“外行管内行”案例

    一.IBM的前CEO郭士纳是IT行业的技术外行(空降IBM前是一家食品企业的高管),可是他的领导能力无人能比,他领导IBM走出困境,把IBM推向新的辉煌. 是最经典的"外行"领导& ...

  3. SAP BAPI的一些初级资料

    周围的人都比较忙,一切得靠自己学,慢慢摸索. BAPI有的是类,有的是函数.'Business application programming interface'的简称. BAPI is 'Busi ...

  4. SAP BAPI是个啥

    BAPI是什么 BAPI是啥 对象是啥 类是啥 继承是啥 接口是啥 package是啥 BAPI怎么用 BAPI是啥 SAP BAPI(业务应用程序编程接口),是针对业务对象模型的标准接口.BAPI是 ...

  5. 什么是BADI,如何从SAP中查找BADI?

    什么是BADI,如何从SAP中查找BADI?   Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. ...

  6. 谈谈 SAP 产品 UI 开发中的组件概念

    这是 Jerry 2021 年的第 54 篇文章,也是汪子熙公众号总共第 331 篇原创文章. 任何企业级软件的前端开发,都离不开组件(Component)这个概念.撇开具体的 UI 开发技术不谈,所 ...

  7. 深入学习SAP UI5框架代码系列之八:谈谈 SAP UI5 的视图控件 ID,以及 SAP UI5 视图和 Angular 视图的异同

    今天是 2021 年 4 月 27 日,周二,SAP 全球心理健康日.SAP 全球的员工,今天放假一天. 这不,早在上周五,我所在的 SAP Spartacus 开发团队的开发经理,就贴心地在 Sla ...

  8. 从一个实际的例子出发,谈谈SAP Commerce Cloud电商云的UI自定义开发

    昨天 Jerry 读到了 SAP天天事 公众号上发布的一篇文章:多家知名企业选择 SAP Commerce Cloud 为客户提供卓越购物体验. SAP 日前宣布,锦江国际旗下的全球酒店供应链平台锦江 ...

  9. 从 SAP 帮助文档的页面,谈谈 SAP Content Management 的实现

    我们打开一个 SAP 帮助文档的页面,看到如下链接: https://help.sap.com/docs/SAP_COMMERCE/9d346683b0084da2938be8a285c0c27a/8 ...

最新文章

  1. Android Service 服务(二)—— BroadcastReceiver
  2. “纯金”卫星,撞向我们的“蛋壳时代”
  3. 笔记本禁用自带键盘攻略-------针对shift默认按下的解决方案
  4. java newdirectorystream_Path、Paths和DirectoryStreamT
  5. 函数计算搭建小程序Web应用后端服务
  6. 得到选择框句柄 怎么操作_电脑版微信怎么多开?最简单的三种电脑版微信多开教程...
  7. 1.5 编程基础之循环控制 33 计算分数加减表达式的值 python
  8. hacs增加源_基于病案首页加强对医院获得性问题的管理
  9. 自学python好找工作么-转行去培训班学Python好找工作吗?老男孩教育
  10. css 的块级元素和行内元素
  11. python eval exec_Python基础教程 使用 exec和eval 执行字符串及计算其结果
  12. Objective-C写出Json文件(可作配置文件)
  13. atitit. 集合groupby 的实现(2)---自定义linq查询--java .net php
  14. 安卓版有道词典的离线词库-《21世纪大英汉词典》等_我是亲民_新浪博客
  15. Java开源电商系统
  16. Qt常用UI控件读取、写入方法
  17. 简单学生成绩分析系统
  18. 青鸟s1java云题库答案_北大青鸟S1java内部测试试卷(试题)
  19. Tensorflow图像识别-2
  20. 接口自动化参数化(一)

热门文章

  1. MEM/MBA数学基础(02)实数运算和性质
  2. 计算机网络共享硬件吗,计算机网络如何共享硬件资源
  3. 职业生涯规划计算机专业100,计算机专业职业生涯规划书.doc
  4. 如何取消服务器自动关机,服务器自动关机求助
  5. 数据分析(1)——统计学中的各种分布
  6. IPv6闲谈-一起玩玩IPv6自动配置
  7. ICPLAZA凭BFT+POS快速“出圈” 打造更繁荣的生态系统
  8. CVPR 2022 Oral|OGM-GE:基于动态梯度调节的平衡化多模态学习
  9. 微幅波的解析解求解及弥散方程的推导
  10. 冬日舞会服务器维护中,绝版皮肤被天美终结,冬日舞会太优雅?宫本很可惜,这款没见过!...