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

2022-09-15 10:47:44 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

外行假装内行,我也来谈谈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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163911.html原文链接:https://javaforall.cn

0 人点赞