SAP增强与修正系列06_BTE增强
sap增强

增强(enhancement)的概念其实很广,SAP标准系统之上的所有二次开发,我们都可以理解为增强,做增强的目的就是标准的sap正常的业务系统不能满足实际需求,所以我们在标准的系统基础进行增加不同的功能来达到不同企业的要求,换句话说我们今天开发过程中所有的ADD-ON都可以说是增强开发。
但作为开发人员所说的增强主要是标准系统事先预留好的接口,根据不同业务需求,进行开发,我们称为增强,又叫出口。
比如:1:在业务检查时,比如在某个工厂发货,可以设定在某个库位的出货只能使用某种移动类型。
2:在需要界面增强时,比如用户对某个字段要求大写,但是最终用户不按规范操作,这也可以在出口中自动转换,有些模块甚至能自定义数据库字段,并且可以在出口中增加字段输入。
还有的模块能对输入数据检查,甚至实现自动替代等功能。
3:有不规则业务时,比如按某种条件定价,可以设定从自己定义的表中按某种条件取值4:搜索帮助的出口,可以对Sap标准的搜索帮助做权限控制。
等等。
Sap的用户出口发展至今有四代:一、第一代(基于源代码的增强)是sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求。
这类增强都需要修改sap的标准代码,它们在发布的时候都是空的,集中在一些文件名倒数第二个字符为Z的包含程序中,由于在标准程序中,所以所有程序的全局数据都可以使用,但同时系统升级时会被新版本覆盖;这种源代码增强和屏幕增强的说明可以从事务码spro 后台配置中相关模块的路径里面找到;一般是以UserExit_打头的子模块。
找到所要增强的的程序,查找UserExit关键字。
这类增强事先要到service marketplace 申请对象键(ACCESS KEY),然后才能修改这些子程序。
查找此类出口的方法:1、在增强程序中找第二个字符为Z的包含程序;2、在后台找对应模块增强;3、在程序中搜索USEREXIT_打头的关键字子程序;4、字节列出对象列表“Display Object List”按钮,在Subroutines列表下找“userexit”打头的子程序;二、第二代增强(基于函数模块的增强),用SMOD和CMOD维护;在SAP发布的版本中,使用Call customer-function ‘xxx’调用函数模块的,所以你可以通过在程序中收cusomer-function来查找第二代增强,第二代增强函数名构成:Exit_程序名_’xxx(3 digital number)’,这样你就可以找到对应的增强函数模块了,它们在发布的时候只有一句代码include ‘xxxxxxx’,修改时无需像第一代增强一样需要ACCESS key,直接双击回车就可以了,但同时这种增强以及后面几代的增强都不能像第一代一样随便使用程序的全局数据,只能使用接口中传递进来的参数。
sap增强方式一般来说有五种

sap增强方式一般来说有五种,我下面说的前三种可能搞过abap的都知道,user-exit,badi,modifcatio n,还有最新流行的两种就是ENHANCEMENT-POINT和隐式的ENHANCEMENT-POINT。
user-exit
这个不说了,原始了,现在应用也很扩。
BADI
用于BAPI的增强,也不说了
Modifcation
修改SAP标准程序,这种方式风险较高,升级后有影响。
ENHANCEMENT-POINT
ECC5.0,nw 2004以后sap提供这个标准的增强方式,未来sap增强的趋势,应用场合广范,好处是不像user-exit那么难找,不像badi那么麻烦,只需在业务所对应的FM中找就到ENHANCEMENT-POINT 就可以,系统升级也不会有影响,只有你想不到的,没有你改不了的。
选择,
选择创建
在这个地方就可以实现增强程序,修改逻辑等。
特点:可以在任何有ENHANCEMENT-POINT的地方做增强。
隐式的ENHANCEMENT-POINT
特点:只能在程序的头和尾做增强。
第一步:
选择
第二步:
第三步:
第四步:。
BTE

3. BF24: 定义客户组件。并且在Active上打勾。
4. BF34或BF44:维护客户BTE函数。将第一步得到的Event ID,第二步定义的Functjion module和第三部定义的客户组件关联。
一些相关的TCODE:
FIBF Maintenance transaction BTE
BTE增强有2种类型,类似于会计凭证验证和替代。
n Publish and Subscribe Interface:只提供SAP数据源,可以供外部程序使用或者达到数据检查的目的。
n Process Interface:是达到数据修改的目的,用来增强标准的业务流程。
BF41 Application Modules per Process
BF42 Partner Modules per Process
BF44 Customer Modules per Process
本文来自CSDN博客,转载请标明出处:/zjjmac/archive/2008/07/29/2733710.aspx
BERE Business Event Repository
BERP Business Processes
BF31 Application modules per Event
BF32 Partner Modules per Event
ห้องสมุดไป่ตู้
BF34 Customer Modules per Event
BTE增强
1. 查找BTE增强,在标准程序中查找String ‘OPEN_FI_PERFORM’,找到的函数如果最后是’_E’,则说明这是Publish and Subscribe Interface:,如果是’_P’,则是Process Interface。
SAP ABAP 增强 BTE 开发

SDN ContributionFI Enhancement Technique – How-To-Guide on theUsage of Business Transaction Events (BTE)Applies to:SAP 4.6C and AboveSummary:This article provides a step-by-step guide on the usage of Business Transaction Events, as an Enhancement technique in the Financial Accounting Module of the SAP R/3 system.Created on: 2 May 2006Author BioLakshman Tandra is working in Intelligroup from more than 9 years. He is member ofNetweaver / ESA core team and currently oversees competency building activities atIntelligroup.Table of ContentsFI ENHANCEMENT TECHNIQUE – HOW-TO-GUIDE ON THE USAGE OF BUSINESS TRANSACTION EVENTS (BTE) (1)APPLIES TO: (1)AUTHOR BIO (1)TABLE OF CONTENTS (2)WHAT ARE BUSINESS TRANSACTION EVENTS (3)DIFFERENCE BETWEEN BADI’S AND BTE’S (3)TYPES OF INTERFACES (4)FINDING BUSINESS TRANSACTION EVENTS (5)BASIC STEPS IN CONFIGURING BUSINESS TRANSACTION EVENTS (5)EXAMPLE BUSINESS SCENARIO FOR BTE - PROCESS INTERFACE (6)RELATED TRANSACTION CODES (15)DISCLAIMER AND LIABILITY NOTICE (16)What are Business Transaction Events¾The enhancement technique (Open FI) that were developed for Financial Accounting component.¾Open FI is based upon the following principles:Application developers must define their interface in a function module, an assignment table is read in the accompanying (generated) code, and the customer modules assigned are called dynamically.¾This technique differentiates between enhancements that are only allowed to have one implementation and enhancements that can call multiple implementations in any sequence desired.Both industry-specific and country-specific enhancements may be defined.¾This can be easily adopted / customized to the business needs wherein SAP does not provide the standard functionality through customization or enhancements. This functionality is primarily used in FI in the areas of dunning, credit management, banking etc. For Example: Standard Dunningfunctionality in SAP sends the notice to the Pay to partner function (based on the partner functions in SD module i.e. pay to hits the books in Accounts Receivable in FI module), whereas the requirement could be to send the same to Bill to party, based on the premise that the original invoice was sent to him as per the partner functions in SD.Difference between BADI’s and BTE’sThe concepts behind the Business Add-Ins enhancement technique and Open FI are basically the same. However, the two enhancement techniques do differ from each other in the following points: ¾Open FI can only be used to make program enhancements, that is, you can only enhance source code using Open FI. You cannot enhance user interface elements with Open FI like you can withBusiness Add-Ins.¾Open FI assumes that enhancement will only take place on three levels (SAP - partners - customers), whereas with Business Add-Ins you can create and implement enhancements in asmany software layers as you like.¾Open FI uses function modules for program enhancements. With Business Add-Ins, ABAP Objects are used enhance programs.Types of InterfacesThere are two types of interface availablea) Publish and Subscribe Interfaceb) Process Interfacein the General Ledger Accounting (FI-GL), Accounts Receivable and Accounts Payable (FI-AR/FI-AP) and Sales and Distribution (SD) components.Publish and Subscribe InterfacePublish & Subscribe interfaces (also called "informing interfaces" in the following)¾These should inform you about particular events (such as a document being entered) in the SAP standard application and make the data generated as a result available to the external software. The external software does not return any data to the standard R/3 System. Examples of such events in the R/3 System are:•Master record was created, changed, or blocked•Document was entered, parked, changed, or reversed•Items were cleared or resetAdditional processing can be caused in the additional component on the basis of these events and data: •Starting a workflow•Generating or changing additional data•Requesting correspondenceProcess InterfaceProcess interfaces (also referred to as "process" in the following)¾Process interfaces are used to submit business processes to a different control which cannot be realized with the standard system, that is process interfaces replace standard processes.¾Here you can structure determination of individual field contents or of specific reactions to process flows individually. It is possible to connect different external developments to the standard R/3System. The additional developments are generally carried out using the ABAP/4 DevelopmentWorkbench.•This way you can, for example, influence the control of payment transactions.Selection of payment method, house bank and partner bank can be made using thepayment data (currency, amount, and payee) according to a selection logic whichyou have defined.Finding Business Transaction Events¾SAP Reference IMG -> Financial Accounting -> Financial Accounting Global Settings -> Business Transaction Events•For Publish and Subscribe Interfaces, Environment - > Info system (P/S)•For Process Interfaces, Environment -> Infosystem(Processes) ¾Find for Character String “OPEN_FI_PERFORM” in source codeBasic Steps in Configuring Business Transaction Events¾Make sure the application is active for Business Transaction Events.¾Identify the BTE¾Copy the sample interface function module into a "Z” or “Y” function module.¾Write the ABAP code into the source code section of the new "Z” or “Y” function module. You may choose to create a "Z” or “Y” program to enter the code into and then insert the "Z" or “Y” program into your function module source code.¾Save and activate the function module.¾Assign the function module to the event, country and application.Example Business Scenario for BTE - Process InterfaceCompany A would like to the copy the Assignment field with custom value ‘Demo BTE’ when an accounting document is posted for a certain Company Code for accounting purposes to analyze the data. To accomplish this requirement, Company A will use the Business Transaction Event 1120, Post Document: SAP Internal Field Substitution. Depending on the business scenarios, generally the reference document number field and assignment number field will be populated with a unique identifier for analyzing the accounting data.For the purpose of this document, I have used a scenario of populating the text field while creating accounting document.Steps1. IMG Menu Path: Financial Accounting ->Financial Accounting Global Settings->BusinessTransaction Events-> Environment-> Infosystem (Processes).2. Find the correct Business Event. You are updating a field, so you need to select the Processes InfoSystem instead of the Publish and Subscribe Info System.3. Execute the search with the defaults.4. Find the correct interface for updating a document: Document Posting: Field Substitutionheader/items5. Place cursor on the event 1120 and click on the Sample Function Module.6. You are now in transaction SE37 – Function Builder. This is the function module(SAMPLE_PROCESS_00001120) you will need to copy into a "Z" or “Y” name function module for your coding7. Click on the Copy button.8. Specify the "Z" or “Y” function module name in the To Function Module field9. Specify a Function Group. If you need to create a "Z" or “Y” function group, go to transaction codeSE37 and follow menu path: Go to Function Groups Create Group. A function group is a logical grouping of function modules, and the ABAP code is generated for function groups. You will be prompted for a development class and transport when creating the function group.10. In Function Builder (transaction SE37), enter the new "Z" or “Y” function module. Click on theChange button.11. The system will default into the source code screen where you may enter your ABAP code.12. Notice the tables available for the code. Additional tables may be declared if necessary.13. Enter the source code as per the requirement:Loop at t_bseg.* Move the Text into all line items allocation field.Loop at t_bsegsub.t_bsegsub-zuonr = ‘Demo BTE’.Modify t_bsegsub index sy-tabix.endloop. "t_bsegsubendloop. "t_bseg14. Save and activate the function module.15. To assign Function module to the Event, first create a product say “ZPRODUCT”Click on the “New Entries” button.Enter the Product name and make sure you select the “Active” check box, otherwise the BTE will not trigger.Now assign the function module “Z_SAMPLE_PROCESS_00001120” create in step 7 to the Event.Depending on the requirement, Country and Application has to be specified.16. Test the BTE by creating accounting document from FB01 TransactionSpecify the required fields to post the accounting document.17. To check whether the Assignment field is populated with “Demo BTE”, display the createdaccounting from FB03 and check for the Assignment value.Related Transaction CodesFIBF Maintenance transaction BTEBERE Business Event RepositoryBERP Business ProcessesBF31 Application modules per EventBF32 Partner Modules per EventBF34 Customer Modules per EventBF41 Application Modules per ProcessBF42 Partner Modules per ProcessBF44 Customer Modules per ProcessDisclaimer and Liability NoticeThis document may discuss sample coding or other information that does not include SAP official interfaces and therefore is not supported by SAP. Changes made based on this information are not supported and can be overwritten during an upgrade.SAP will not be held liable for any damages caused by using or misusing the information, code or methods suggested in this document, and anyone using these methods does so at his/her own risk.SAP offers no guarantees and assumes no responsibility or liability of any type with respect to the content of this technical article or code sample, including any liability resulting from incompatibility between the content within this document and the materials and services offered by SAP. You agree that you will not hold, or seek to hold, SAP responsible or liable with respect to the content of this document.。
SAP增强总结-第四代增强(BTE概念及原理)

1、BTE的基本概念及用途
2、BTE接口类型及应用范围
● Publish and Subscribe Interface (P/S接口)
用于告诉外部软件在SAP标准应用中触发了某些事件,并且把产生的数据提供给它们。
外部软件不能给R/3系统返回任何数据。
例如可以用在以下地方:
·主数据被创建、修改或锁定
·凭证被输入、预制、修改或冲销
·项目被清除或重置
也可以在附加的开发中基于此事件和数据产生附加的处理:
·启动工作流
·产生或修改附加数据
·请求通信
● Process Interface (处理接口)
·用于控制与标准R/3系统处理方法不同的业务流程,也就是用process interface替换标准处理。
它们干预标准流程,并返回数据给SAP应用
3、BTE实现原理。
sap增强

REPORT ZLC_FIND_EXIT no standard page heading.
tables : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
tables : tstct.
data : jtab like tadir occurs 0 with header line.
where name = 'PPCO0002'.
2 'Exit Name',
21 sy-vline ,
22 'Description',
95 sy-vline.
write:/(95) sy-uline.
loop at jtab.
select single * from modsapt
where sprsl = sy-langu and
增强(enhancement)的概念其实很广,SAP标准系统之上的所有二次开发,我们都可以理解为增强,做增强的目的就是标准的sap正常的业务系统不能满足实际需求,所以我们在标准的系统基础进行增加不同的功能来达到不同企业的要求,换句话说我们今天开发过程中所有的ADD-ON都可以说是增强开发。
后面几代的增强都不能像第一代一样随便使用程序的全局数据,只能使用接口中传递进来的参数。
第二代增强中主要有3类:1)E . Ehancement exits: 这些出口 Exit_打头,你可以到SE37中查看,也可以在数据字典中TFDIR(函数表)中查询Exit_打头的函数。2)C .GUI codes, (GUI增强) 3)S . Subscreens(屏幕增强)。4)T. include structure增强
SAP 增强出口概述

SAP用户出口有几种:第一种是在系统预留的出口程序中插入自定义代码,Hard Code;第二种是使用功能组,借助TCode:CMOD和SMOD;第三种是传说中的BADI,是最新的技术。
调用方式是CALL METHOD (instance),相关的TCODE是SE18和SE19,可以通过EXIT_HANDLER这个单词查找BADI;第四种是BTE,即Business Transaction Events (Open FI),好像专给财务用的;第五种是字段增强,过时的技术,效率很低,移植不便,但是有时候也不得不用它;第六种是屏幕增强,用来对付苛刻的用户,这一种和第二种稍有重叠。
为实现某种客户功能,大部分的情形使用标准预留出来的接口即可实现,但是极端的时候我们可能不得不去更改标准程序。
如何使用SMOD和CMOD进行SD的用户增强1、关于增强的简单介绍1.1 SMOD包含具体的增强,而CMOD是包含一组SMOD编写的增强.1.2 User exits (Function module exits)是sap提供出口,它的命名规则如下:EXIT_<program name><3 digit suffix>示例:sd的VA01事务,对应的程序是SAPMV45A ,你会在程序里查到(用CALL CUSTOMER-FUNCTION字符串)如下代码:CALL CUSTOMER-FUNCTION '003'exportingxvbak = vbakxvbuk = vbukxkomk = tkomkimportinglvf_subrc = lvf_subrctablesxvbfa = xvbfaxvbap = xvbapxvbup = xvbup.则exit calls function module的名称就是: EXIT_SAPMV45A_0032、先试用SMOD建立一个SAP增强2.1、选择一个增强,如:SDVFX001 ,点击修改,进入sap增强维护屏幕;2.2、点击“组件”按钮,进入组件维护屏;2.3、将光标移到“功能模块名”,输入模块名,如:EXIT_SAPLV60B_001;2.4、选择“代码修改”按钮进入函数模块;2.5、双击函数模块的包含单元,进入包含单元加入自定义代码并激活保存。
SAP增强基本概念

传统增强技术----技术出口程序出口是从SAP程序到客户源代码的一种连接。
这些出口被客户用来实现对SAP程序的补充或替代功能,而不需要对SAP程序作出修正。
SAP可以使用各种增强技术来实现程序出口子程序(用户出口,user exit)在SAP子程序中写客户代码函数模块(客户出口,customer exit)在SAP函数模块中写客户代码函数模块(BTE,Business Transaction Events)客户函数模块方法(bapi)客户方法要使用显式增强点和段,则需要以下步骤:1.显示SAP对象(程序,函数模块,方法)2.搜索所需的增强点/段(使用菜单“编辑-搜索/替换”)3.在应用工具栏,选择增强按钮4.使用增强点/段的上下文菜单创建增强实现5.指定增强实现的名字(客户名字空间Y*或Z*)6.输入源代码7.在应用工具栏,选择“激活增强”隐式的增强点和增强选项1.要实现附加功能,客户可以使用增强框架在特定的通用指定位置插入附加源代码,而无需作出修正。
相应的SAP对象可以来源于较早的版本,且不需要SAP应用程序员作出任何预设。
2.增强框架还允许为SAP函数模块和方法增强接口而无需做出修正,并且增强SAP类的属性和方法。
3.要使用增强点和选项,就要实现一个增强实现。
在函数模块中实现隐式的增强---增强选项----增强SAP函数模块的接口1.在函数制作器(se37)中显示函数模块2.选择菜单选项“函数模块-增强接口”并且指定一个增强实现来添加新的接口参数并指定类型3.在应用工具栏,选择“激活增强”---这些新添加的接口参数都是可选的,并且可以被相应函数模块的源代码增强所激活。
在函数模块中实现隐式的增强----增强点---增强SAP函数模块的源代码:1.显示函数模块的源代码2.在应用工具栏,选择增强按钮3.选择菜单选项“编辑—增强操作—显示隐式增强选项”来显示隐式的增强选项4.在编辑器中,使用一个隐式增强点的上下文菜单来创建增强实现5.插入源代码6.在应用工具栏,选择“激活增强”在全局SAP类中实现隐式的增强---增强选项--增强全局SAP类的接口和定义附加的属性/方法:1. 在类制作器(se24)中显示类2.选择菜单选项“类-增强”并指定一个增强实现来增加新的属性、方法和接口参数3. 在应用工具栏,选择“激活增强”--双击附加的方法可以进入方法编辑器来实现它--这些新增的接口参数一般是可选的,可以被相应的方法的源代码增强来激活--新增属性和方法可以在该类的方法的源代码增强中被激活在全局SAP 类中实现隐式的增强-定义方法为全局SAP 类定义方法的预处理/后处理/覆盖方法:1、在类制作器中显示类2、选择菜单选项“类-增强” 来指定/创建一个增强实现3、使用光标来标记所需SAP 方法4、选择菜单选项“编辑-增强操作” 然后选择其中一个菜单条目:插入预处理方法、插入后处理方法、添加覆盖方法5、选择列“预/后/覆盖出口” 的新建按钮来实现相应的方法6、保存方法7、在应用工具栏,选择“激活增强”(奇怪)。
SAP_出口增强查找

11
在【资源库信息系统】-->【增强点/复合增强点】增强清单。双击清单行项可以直接进入增强点代码区。
10
6. Source Code Plug-in (增强点,增强段)
在如下图中找到增强点,点选按钮“ABAP”或 ABAP EDITOR”,可看到增强详情。
1使用事务使用事务se80se80在在资源库信息系统资源库信息系统增强点增强点复合增强点复合增强点进入选择界面进入选择界面输入相应条件可以输入相应条件可以查找到已做的增强清单
SAP系统 出口增强查找
1
系统升级--增强检查
系统常用增强分类,实施代码查找方法
ER_EXIT
SAP
专 业 铸 就 完 美
2.CUSTOMER-EXIT 3.BADI
4.传统财务确认和替换增强 5.BTE
6.Source Code Plug-in(增强点/段) 7.其它
服 务
2
ER-EXIT 1.1使用事务代码SE80
在【资源库信息系统】-->【增强实施】,进入选择界面,可以查找到已做的增强清单。双击清单行项可以直接进入增强代码区。
4.财务确认和替代 4.使用事务OB28 和 GCX2
通过一行配置代码,可以找到增强清单,检查是否有自定应的“退出程序”。如果有可以双击该程序产看代码。
8
5.BTE增强 5.1使用事务BF34
通过事务,可以找到BTE增强清单,检查是否有自定的【函数模块】。如果有可以双击该函数产看其源代码。
9
6. Source Code Plug-in (增强点,增强段) 6.1使用事务SE80
3
2. CUSTOMER-EXIT 2.1 使用事务CMOD ,找到已经创建的实施项目.
SAP模块常用增强总结

SAP模块常用增强总结SAP系统的模块中有很多可以进行增强的功能和扩展性,用于满足不同行业和企业的特殊需求。
以下是常见的SAP模块的常用增强总结。
1.财务会计模块(FI)增强:-自动支付程序增强:可以根据不同的支付条件和筛选规则对付款进行更精确的控制和管理。
-合并报表增强:可以通过添加自定义报表字段和计算公式来满足企业特定的合并报表需求。
-预算管理增强:可以根据不同的预算情况进行灵活的预算规划和监控。
2.物料管理模块(MM)增强:-供应商采购评估增强:可以根据供应商的绩效评估和供应商风险来调整采购决策和供应商选择。
-基于时间的物料需求计划增强:可以根据历史销售数据和未来需求预测来优化物料采购和库存管理。
-采购订单扩展增强:可以根据企业特定的采购流程需求添加自定义字段和审批规则。
3.销售和分销模块(SD)增强:-销售订单定价增强:可以根据不同的定价策略、折扣活动和促销活动来定价,并自动计算出最佳价格。
-销售订单出货增强:可以根据不同的运输方式和目的地配置出货计划,并根据实际情况进行及时调整。
-订单交付跟踪增强:可以实时跟踪订单的交付情况,并及时通知客户订单的状态和发货信息。
4.生产计划与控制模块(PP)增强:-生产订单调度增强:可以根据不同的优先级、资源可用性和工作中心的负载情况进行生产订单的调度和优化。
-预测和需求管理增强:可以根据历史订单数据和市场需求预测来优化生产计划和需求管理。
-工作中心的作业计划增强:可以根据企业的特定需求添加自定义的工作中心属性和作业计划字段。
5.人力资源模块(HR)增强:-人事招聘管理增强:可以根据不同的招聘渠道和招聘流程来管理和筛选候选人,并对他们的价值和风险进行评估。
-绩效管理增强:可以根据不同的绩效指标和评估标准对员工的绩效进行评估和管理,并制定相应的激励计划。
-员工培训管理增强:可以根据不同的培训计划和培训评估指标来管理和跟踪员工的培训情况。
总的来说,SAP系统的各个模块都可以根据企业的特定需求进行增强和扩展,以满足不同行业和企业的特殊需求。
SAP增强总结-第四代增强(BTE实例详解)2

分类:
A06 SAP_ABAP(11)
★在创建或修改客户时做最终检查,不符合条件不允许保存
●查找合适的事件
1、运行事务码XD02,查找到对应的程序为SAPMF02D,在此程序中搜索字符串“OPEN_FI_PERFORM”,可以找到此程序中的所有用到的BTE。
2、运行事务码FIBF。
由于此例只是做检查,因此要查找的是P/S型的事件,因此选择菜单“环境->信息系
统(P/S)->F8运行程序”,根据事件描述和事件文档对事件的详细描述逐个筛查,找出最符合要求的BTE事件。
3、通过筛查可以看到“00001340客户主数据:最终检查”比较符合要求。
●根据样本函数创建自定义函数
●创建产品
●配置事件、产品和函数的对应关系。
sap增强小总结

一、表增强SAP 提供了两种方法为表和结构增加字段全部在se11中选择表•追加结构---追加结构只是向表内增加字段而不是修改结构,另外追加结构只能属于一个表。
•定制包含(CI 包含)在上面的“编辑”选择“包括”再选择“插入”组件•文本元素增强(CMOD-转到-全局增强-数据元素)使用追加结构时注意下面几点:✓不能为池表或簇表创建追加结构。
✓如果表包含长字段(例如数据类型LCHR 或LRAW),就不能为表扩展追加结构。
这是因为这种类型的长字段必须是相关表的最后字段。
从追加结构中的字段不能被添加到它们后面。
✓如果使用追加结构来扩展一个SAP 表,追加结构中的字段名必须在客户命名空间中,就是用YY 或ZZ 开头。
这可以避免SAP 将来插入新字段时发生命名冲突。
二、事务变式、屏幕变式使用事务码FB50选中‘项目的屏幕变式’,(在菜单栏“编辑”下面选择“屏幕变式”----再到“创建屏幕变式”)点击右键选择屏幕变式->创建屏幕变式(也可以直接使用t-code:SHD0(零)进入屏幕变式创建)在事务代码中输入需要定制屏幕变式的T-code:FB50Screen variant:属于以Z开头的自定义屏幕变式的名称(必须以Z开头)Program:输入要用到的程序SAPLFSKBScreen:输入要定义的屏幕编号100然后点击创建根据需要进行凭证字段的选择:只输出:表示只读不能修改不可见:表示隐藏强制:表示必须输入编写屏幕变式的文本说明:如图所示‘省公司的屏幕变式’选择完成后点击‘Exit and Save’点击,然后在小对话框中点击‘本地对象’,则屏蔽变式建立并保存成功回到FB50凭证输入的界面,选中‘项目的屏幕变式’,点击右键选择屏幕变式->添加屏幕变式输入刚才建立的变式名称,点击‘继续’。
刚才创建的屏蔽变式就会加入到变式的树形列表中,双击该变式就可使用删除屏幕变式:对于不使用的屏幕变式可以选中该变式后点击右键,选择屏幕变式->搬移屏幕变式三、程序增强(程序、屏幕)1、用户出口---user exit,通过修改助手修改标准程序,修改时必须有相应修改key,实际中使用不是太多修改助手(修正助手会自动生成注释行框架来描述操作。
sap出口(增强)详解

CCUX0005按匹配类型传输项目类别
CCUX0006修补订单BOM
AMSP0002确定两个公司代码间的关系类型
ANLR0001 Additional control level texts in AM reporting
ARVL0001确定手工重估
ATP00001有效检查的用户出口
BADA0001 Customer-specific conversion method in asset reports
C1CA0002 EHS:确定EH&S中分配给物质的商品标识
C1CA0003 EHS:生成具有MSDS装运的所有物质的表格
C1CA0004 EHS:决定MSDS的语言版本
C1CA0005 EHS:报表选择MSDS运送的SRGV决定
C1CA0006 EHS:报表运送:检查是否代发送
C1G20001 EHS:菜单退出1:报告管理
进入如下界面:在这里看到增强的出口程序是EXIT_SAPMM07R_001.双击EXIT_SAPMM07R_001。
进入如下界面,发现EXIT_SAPMM07R_001实际上是一个function,蓝色的注释部分是这个函数的输入,这里只有tables项,点击tables选项卡可以看到更详细的信息。
双击INCLUDE ZXMBCU08,进入如下界面。在这里就可以添加自己的代码了。添加完毕之后保存激活就可以了。
BC621E02 Customer Function for BC621 Group 02
BC621E03 Customer Function for BC621 Group 03
BC621E04 Customer Function for BC621 Group 04
SAP增强技术详解

内容目录1. SAP第一代增强技术:基于源码增强(子函数subroutine) (2)基本概念 (2)通过实例说明实施步骤 (2)2. SAP第二代增强技术:基于函数出口增强(功能模块Function) (2)基本概念 (2)通过实例说明实施步骤 (3)3. SAP第三代增强技术:基于类的增强(BADI技术) (12)概念介绍: (12)通过实例说明实施步骤 (12)4. SAP第四代增强技术:显式和隐式增强技术 (32)基本概念 (32)通过实例说明实施步骤 (35)1.显式增强实施步骤 (35)2.隐式增强实施步骤 (45)1.SAP一代增强技术:基于源码增强(子函数subroutine)基本概念➢这些Form集中存储在一些文件名倒数第二个字符为Z的包含程序中(如后面销售凭证主程序SAPMV45A中的MV45ATZZ、MV45AOZZ等Include文件)➢这些Form的名称一般是以UserExit_打头的子模块,所以一般找到所要增强的主程序,再查找UserExit_ 关键字即可找到相关的出口➢Form源代码增强事先要到service marketplace 申请对象键(ACCESS KEY),然后才能修改这些子程序➢另外,可以在SPRO中搜索USER EXIT关键字来查找通过实例说明实施步骤略由于一代增强由于目前基本上不使用,所以本文也不再进行详细介绍。
本文主要针对SAP二代,三代、四代增强技术的基本概念原理和具体的实施步骤做详细介绍和讲解。
2.SAP二代增强技术:基于函数出口增强(功能模块Function)基本概念➢基于函数出口增强(Function):用SMOD(激活增强,只需一次激活)和CMOD (实现增强)维护;在SAP发布的版本中,使用CALL CUSTOMER-FUNCTION <3位数字>调用函数模块的,所以你可以通过在程序中查找cusomer-function来查找增强,出口函数名称由三部分组成:EXIT_<程序名>_<3位数字>(注:这里的<程序名>即指调用此出口函数的程序名),这样你就可以找到对应的增强函数了。
21 SAP Enhancement(SAP增强)(里面有MIGO和供应商附件屏幕增强实例)

5. SAP 增强(SAP Enhancements)相关数据库表(可以在 SE11 中查看) 1) MODSAP: 增强表格 2) TFDIR:包括出口函数在内的所有函数表 3) CUATEXTS:修改 GVI 界面,界面: 菜单文本被客户 4) TSDIR:动态程序区 CALL CUSTOMER SUBSCREEN
5) * 对于以 EXIT 开头的出口函数,TFDIR-MAND 值为 C 表示此出口函数被激 活。
6. 相关增强检查函数 1) MODX_FUNCTION_ACTIVE_CHECK:检查 E 类用户出口是否被激活。 2) MODX_MENUENTRY_ACTIVE_CHECK:检查 C 类增强激活状况 3) MODX_SUBSCREEN_ACTIVE_CHECK: 检查 S 类增强激活状况
AT LINE-SELECTION. data : wf_object type tadir-object. clear wf_object. GET CURSOR FIELD FIELD1. CHECK FIELD1(8) EQ 'WA_TADIR'. read table jtab with key obj_name = sy-lisel+1(20). move jtab-object to wf_object. case wf_object. when 'SMOD'. SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10). CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN. when 'SXSD'. SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20). CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN. endcase.
SAP出口与增强开发介绍

客户出口:系统调用
客户出口函数模块由SAP 应用开发者定义,在源代码的某 个点被调用。
这种增强函数的命名方式 是 EXIT_programname_NNN , 实际上在SAP的标准程序里, 会用到下面的方式调用该 增 强 的 逻 辑 : call customer-function 'NNN',从而来达到用户的 需求。
➢SAP 参考实施向导(SPRO)
SD 中,系统修正-用户出口,选择相应组件。
8
客户出口 SAP 增强由组件部分组成。这些组件包括程序出口、菜单 出口和屏幕出口。一个特定组件只能在一个SAP 增强中使 用一次(这确保了SAP 增强的唯一性)。 – 客户增强项目由SAP 增强组成。每个独立的SAP 增强 在一个单独的客户增强程序中只能使用一次(这确 保了 客户项目的唯一性)
出口与增强3出口与增强4csp补充软件产品complementarysoftwareproduct增强类型5?表增强在表和结构增加字段实际不修改表和结构本身?文本增强文本增强由特定客户的字段标签和sap数据元素的文档组成?屏幕增强它们允许在sap应用程序屏幕显示和维护附加对象?菜单增强菜单增强允许向sap标准菜单添加附加菜单条目?程序增强允许为sap应用程序执行附加程序逻辑增强技术6用户出口7用户出口是一种系统类型的增强最初为r3销售和分销模块开发
2
出口与增强
3
出口与增强
CSP 补充软件产品(Complementary Software Product)
4
增强类型
➢表增强
在表和结构增加字段,实际不修改表和结构本身
➢文本增强
文本增强由特定客户的字段标签和SAP 数据元素的文档组成
➢屏幕增强
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
处理函数模块:
– 会发生双向的数据交换,因此限制了一个接口可以附加开发的组 件个数。
– 事件触发时,一个标准处理流程只能被一个外部流程所替换。 – 对于一个process interface,如果你使用SAP合作伙伴的附加开发的
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
7
课程内容
什么是BTE及BTE用途 BTE详解 BTE实现示例
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
8
BTE:Possible Scenarios(1)
此图是关于Publish & Subscribe interfaces的,我们可以看到数据是单向流动 的,从SAP application到additional component。 SAP在事务的某些调用点提供了可用的接口,SAP合作伙伴和客户都可以使用 这些接口,增加一些附加的逻辑。这和Customer exits有点类似。
组件,运行时会使用他的增强;如果后来对此process interface使 用自己开发的,在运行时将会用你的增强替换合作伙伴的。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
12
BTE处理过程
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
13
BTE的调用语法
5
BTE:Software Delivery Process
2Hale Waihona Puke 20/3/3© 北京博宏慧点科技有限公司(Bright Key)
6
BTE接口类型和使用范围
• Publish and Subscribe Interface(P/S接口)
用于告诉外部软件在SAP标准应用中触发了某些事件,并且把产生的数据提 供给它们。外部软件不能给R/3系统返回任何数据。例如可以用在以下地方:
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
9
BTE:Possible Scenarios(2)
此图也是关于Publish & Subscribe interfaces的,和Customer exits不一样 ,BTE允许一个接口有多个附加逻辑,但是必须确定在什么时候用哪一个。这些 接口是并行的。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
10
P/S函数模块和处理函数模块
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
11
P/S函数模块和处理函数模块
P/S函数模块:
– 一个事件触发时,允许开始一个或多个附加操作,它们不影响标 准的R/3程序。
00001420 更改凭证: 行项 SAMPLE_PROCESS_00001420 目字段修改
控制凭证项目的字段 隐藏或不可输入
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
29
问题与解答
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
30
24
查找合适的事件
• 1、运行事务码XD02,查找到对应的程序为 SAPMF02D,在此程序中搜索字符串 “OPEN_FI_PERFORM”,可以找到此程序中的所有 用到的BTE。
• 2、运行事务码FIBF。由于此例只是做检查,因此 要查找的是P/S型的事件,因此选择菜单“环境-》 信息系统(P/S)-》F8运行程序”,根据事件描述 和事件文档对事件的详细描述逐个筛查,找出最 符合要求的BTE事件。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
14
SAP和客户
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
15
查找BTE的方法
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
16
查找BTE的方法
1、运行事务码(例如XK02),选择“System->Status->双击“Program (screen)”,选中“In main program”,查找“OPEN_FI_PERFORM”字符串,如 上图所示。
2、IMG=>财务会计全局设置 (新)=> 工具=>客户增强=>业务事务事件(FIBF),选 择菜单“环境”。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
17
文档
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
18
产品的作用
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
SAP增强与修正
BTE增强 北京博宏慧点科技有限公司 (BRIGHT KEY) 张伟朋 2011年4月23日
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
1
注意事项
• 请填写签到表 • 对任何疑问
– 您可以随时提出 – 或者将问题书面提交讲解者 – 讲解者会向与会人元征询
• 请填写课程评价表 • 考试
备注
00001440 供应商主数据: SAMPLE_INTERFACE_00001440 最终检查
00001340 客户主数据: 最 SAMPLE_INTERFACE_00001340 终检查
00001410 更改凭证: 凭证 SAMPLE_PROCESS_00001410 表头字段修改
控制凭证抬头的字段 隐藏或不可输入
• 3、通过筛查可以看到“00001340 客户主数据: 最终检查 ”比较符合要求。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
25
根据样本函数创建自定义函数
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
26
创建产品
如果产品在外部系统,则需要输入RFC目标系统,如果产品在同一系 统,则不需要输入。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
22
课程内容
什么是BTE及BTE用途 BTE详解 BTE实现示例
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
23
业务需求
• 在创建或修改客户时做最终检查,不符合 条件不允许保存。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
• BTEs(Business Transaction Events),是SAP的 一种增强方式,技术上讲是介于Customer Exits 和BAdIs的产物。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
4
什么是BTE
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
19
如何实现BTE
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
20
Customer Exit和BTE的异同
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
21
总结
• BTE比较核心的理念是,使一个接口重复利用,多 种实现并且互不干扰。
• 技术实现的时候,就采用在标准程序中Call固定的 一个function,然后再用这个function动态调用自 己定义的增强function,从而达到预期目的。
– 主数据被创建、修改或锁定 – 凭证被输入、预制、修改或冲销 – 项目被清除或重置
也可以在附加的开发中基于此事件和数据产生附加的处理: – 启动工作流 – 产生或修改附加数据 – 请求通信
• Process Interface(处理接口)
用于控制与标准R/3系统处理方法不同的业务流程,也就是用process interface替换标准处理。它们干预标准流程,并返回数据给SAP应用。
不要忘记激活产品。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
27
配置事件、产品和函数的对应关系
将“Ctr”和“应用”字段留空,除非你想使用特定国家或特定行业的实 施增强代替标准流程的。
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
28
练习
事件
描述
函数
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
2
课程内容
什么是BTE及BTE用途 BTE详解 BTE实现示例
2020/3/3
© 北京博宏慧点科技有限公司(Bright Key)
3
什么是BTE
• BTE( Business Transaction Event ),业务交 易事件