一、BADI简介 BADI是SAP主要的增强的方式之一,目前BADI有两种:CLassic BADI 和 New BADI。两种BADI的基本原理差不多,但是具体的实现方式不同,具体的不同主要表现在以下三个方面。
在CALL处设置断点后再打开一个新的会话,执行需要查找BADI的事务如MIGO :
BADI的全称是Business Add-in,它的主要技术是基于ABAP的对象来实现增强。SAP中BADI的维护事务代码是SE18和SE19,SE18主要是创建及维护BADI对象,而SE19用于维护BADI的实例,即如何来实现BADI对象的功能。
声明:本文仅代表原作者观点,仅用于SAP软件的应用与学习,不代表SAP公司。注:文中所示截图来源SAP软件,相应著作权归SAP所有。
声明:本文仅代表原作者观点,版权归原作者所有!仅用于SAP软件的应用与学习,不代表SAP公司。注:文中所示截图来源SAP软件,相应著作权归SAP所有。文中所指ERP即SAP软件。
第一代(FORM 增強) 在所需增強的主程序中,查找form名中有userexit_的form. 第二代(Function 增強) 在程序中搜索customer-function,找到customer-function後面的3位數字編號,出口函數名為EXIT_程序名_3位數字,然後用出口函數名去MODSAP表中取得增強對象。 在MODX_FUNCTION_ACTIVE_CHECK中第36行打斷點,運行要查找出口的T-code,進入debug,查看l_funcname值。funcname就是出口函數名稱
1. SE30 运行时间分析评估,找到EXIT_*开头的函数-可以查到CMOD增强点
User-Exits: IPRM0002 Determine planned date info for maintenance plan IPRM0003 User field: Maintenance plan IPRM0004 Maintenance plan / item: Customer check for time "SAVE" IPRM0005 Determine Offset for Performance-Based Strategy Plans BADIs: DI_WPS_PLAN_EXT_DATE Set Reference Date for Scheduling Multiple Counter Plan IMRM_TL_WORKFLOWS Workflows, Based On Task Lists IPM5_CALL_INSPLOT Generate Inspection Lot as Call Object for Maintenance Plan IPRM_CHECK_UPD_SCHED Do Not Run DB Update in Scheduling IPRM_DIG_SIGNATURE Digital Signature for Maintenance Planning IPRM_MCP_DATE_I_PAST Check Whether Plan Date May be in the Past IPRM_MCP_SCHE_CHANGE Multiple Counter Plan: Adapt Dates During Scheduling IPRM_MCP_UPD_CALLOBJ Adjust Plan/Basic Dates of Call Objects IWP3_INSP_PLAN_CHECK Stability Study:Check Test Plan, Physical Sample in Schedule IWP3_INSP_TYPE_CHECK Inspectn Type Check in Maint. Plan for Inspection Lot Origin IWP3_ROUTING_SELECT Inspection Plan Selection in Schedule for Stability Study Function Module: MEASUREM_POINT_UPD_PYEAR Dynamically change the annual performance of a counter. BOR Objects: BUS1020 Preventitive Maintenance Plan
1. 举个我们这次系统中的一个业务场景 前面讲到我们需要把一个Oracle应付发票的凭证导入到SAP中,但是导入的字段比较多,就会出现如下的问题: SAP系统中把凭证中的[分支号]作为不同系统的来源,例如凭证来源于Oracle,金蝶,用友,那么分支号分别是'001','002','003'。 我们这里使用BAPI_ACC_DOCUMENT_POST来导入凭证, 大家可以看一下在BKPF表中存在[分支号]字段
1.通过SE24,输入CL_EXITHANDLER,然后在方法GET_INSTANCE中设置断点,然后运行事务代码判断exit_name的值,具体操作过程如下:
SAP与金税连接有两种方式:组件接口及文本接口。 文本接口为例: 1、SAP取发票数据,主要来自合同,销售订单,交货单,发票,客户供应商主数据等 2、SAP处理:合并,拆分,折扣等 3、导出TXT文本 4、金税开票机读取文本:通过参数传递数据,注意1分钱误差问题(参数传递导致) 5、回写
ZCL_FI_BILL_ISSUE_SPLIT中IF_EX_FI_BILL_ISSUE_SPLIT~ACTIVATE_AUTOMATIC_SPLIT方法,代码如下:
增强(enhancement)的概念其实很广,SAP标准系统之上的所有二次开发,我们都可以理解为增强,做增强的目的就是标准的sap正常的业务系统 不能满足实际需求,所以我们在标准的系统基础进行增加不同的功能来达到不同企业的要求,换句话说我们今天开发过程中所有的ADD-ON都可以说是增强开 发。
BAPI是business application programming interface的缩写,是面向对象程序设计方法中的一组程序接口。它允许程序员通过SAP将第三方软件整合成R/3专有产品。为了完成一些特殊的商业任务,如上传交易数据等,R/3系统中内置了BAPI。
CALL METHOD cl_exithandler=>get_class_name_by_interface后面设置一个断点。然后执行业务事务代码如MIRO,然后查看exit_name。 就可以得到BAID的名称。
本文章仅用于SAP软件的应用、学习沟通,文中所示的截图来源于SAP软件,相应著作权归SAP公司所有。
领取专属 10元无门槛券
手把手带您无忧上云