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

外行假装内行,我也来谈谈SAP BAPI和BADI外行假装内行,我也来谈谈SAPBAPI和BADIA,什么是BAPI?BAPI是businessapplicationprogramminginterface的缩写,是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/3专有产品。为了完成一些特殊的商业任务,如上传交易数据等,R/3系统中内置了BAPI。1.BAPI–businessapplicationprogramminginterface。2.它实际上是一种特殊的

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

外行假装内行,我也来谈谈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中创建的结构必须保存在开发类中,不可保存为本地对象。

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

 

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函数。

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

 

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。

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

 

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中所有相关的字符串

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

 

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生成的凭证

 

4FCOM_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的预算

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

 

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                检查对象存在 

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

 

-完-

整理于2021-12-30

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 移位运算(无符号移位运算,有符号移位运算)

    移位运算(无符号移位运算,有符号移位运算)移位运算,所有移位以5和-5为例移位运算左移(<<)正数负数带符号右移(>>)(右移向前面补对应的符号位所对应的值(正数补0,负数补1))正数负数不带符号右移(>>>)(>>>为java独有语法)正数负数移位运算可以移位运算的类型有:iuint,int,lang等类型.我们本次使用int类型一个int类型占4个字节,共32位,带符号…

  • vue 页面关闭_vue怎么关闭滴一声

    vue 页面关闭_vue怎么关闭滴一声关闭vue中的ESLint

  • kettle教程二

    kettle教程二转载:http://www.cnblogs.com/limengqiang/archive/2013/01/16/KettleApply2.html1、应用场景这里简单概括一下几种具体的应用场景,按网络环境划分主要包括:表视图模式:这种情况我们经常遇到,就是在同一网络环境下,我们对各种数据源的表数据进行抽取、过滤、清洗等,例如历史数据同步、异构系统数据交互、数据对称发布或备份等都归属于这…

  • 同名的cookie会不会存在多个

    同名的cookie会不会存在多个

    2021年10月31日
  • execute,executeQuery和executeUpdate的区别

    execute,executeQuery和executeUpdate的区别在jdbc中有3种执行sql的语句分别是execute,executeQuery和executeUpdateexecute执行增删改查操作execute返回的结果是个boolean型,当返回的是true的时候,表明有ResultSet结果集,通常是执行了select操作,当返回的是false时,通常是执行了insert、update、delete等操作。execute通常用于执行不明确的s

    2022年10月19日
  • 中缀表达式转换为后缀表达式(C语言代码+详解)

    中缀表达式转换为后缀表达式(C语言代码+详解)中缀表达式转换为后缀表达式1.创建栈2.从左向右顺序获取中缀表达式a.数字直接输出b.运算符情况一:遇到左括号直接入栈,遇到右括号将栈中左括号之后入栈的运算符全部弹栈输出,同时左括号出栈但是不输出。情况二:遇到乘号和除号直接入栈,直到遇到优先级比它更低的运算符,依次弹栈。情况三:遇到加号和减号,如果此时栈空,则直接入栈,否则,将栈中优先级高的运算符依次弹栈(注意:加号和减号属于同一个…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号