SAP增强基本概念
sap增强进阶(七)- 验证和替代

1. 基本概念简单理解, 系统将用户自屏幕上输入的信息首先保存在一些临时内表中,当通过所有的业务检查时最后保存到数据库,替代则是根据用户设置的条件去退换掉内表的一些临时内容从而保存到一些字段内容最终保存到数据库时是用户替换的内容。
在叙述SAP增强时会详细描述这个机制。
和Validation不同的是,Validation只做检测,一般不做相应数据的修改,Substitution弥补了这方面的缺陷,它和user exit结合将方便用户编写更复杂的逻辑。
注意的是,如果Substitution使用User exit在程序中只做检查而不替代内容,此时,Substitution可以完全取代Validation。
2. 实现方法业务场景:现有的WBS主数据的维护过程中,存在WBS和相应的负责成本中心的组织结构不一致的情况,包括功能范围、公司代码、利润中心。
处理步骤:1) SE91新建消息类ZPS图-20-1 验证与替代实现过程2) GGB0编写校验A. 检查利润中心图-20-2 验证与替代实现过程B. 检查功能范围图-20-3 验证与替代实现过程C. 检查公司代码图-20-4 验证与替代实现过程3) GCX2维护用户出口,ZGGBR000,应用区域为GBLR[若为替代,使用应用区域GBLS]图-20-5 验证与替代实现过程4) SE38编写ZGGBR000代码[U901]1.exits-name = ‘U901′.2.exits-param = c_exit_param_none. “Check Profit Center.3.exits-title = text-901. “Check profit center with cost center master data4.APPEND exits.5.FORM U901 CHANGING B_RESULT.6.DATA: L_PRCTR type csks-PRCTR.7.Select single PRCTR from csks into l_PRCTR8.where ( KOSTL = prps-FKSTL ) “查询与WBS上负责成本中心相同的数据9.And ( datbi >= sy-datum ) “成本中心的有效截至日期不早于系统当前日期 And ( KOKRS =prps-FKOKR ). “查询成本控制范围相同的数据10.If sy-subrc <> 0 or l_prctr <> prps-prctr.11.b_result = b_false.12.else.13.b_result = b_true. endif.14.ENDFORM.复制代码5) 若校验/替代未生效,通过SE38执行程序RGUGBR00。
SAP ABAP 增强简介

简单说一下我的理解:第一代:基于源代码的增强。
源代码增强以子程序形式发布,在 SAP 的发行版本中,使用 PERFORM 调用这些子程序,它们在发布时都是空的,集中在一些文件名倒数第二个字符为 Z 的包含程序中。
用户增强时,应首先到 service marketplace 申请对象键,然后才能修改这些子程序,这些子程序可以使用程序中所有的全局数据。
屏幕增强以客户屏幕形式发布,它们包含在标准程序中,没有什么特别规律。
这种源代码增强和屏幕增强的说明可以从事务码 spro 后台配置中相关模块的路径里面找到。
同时使用的针对数据表的增强是 append structure,可以在事务码 se11 中打开透明表,点击应用工具栏最右边的那个 append structure 按钮就能为数据表追加新的字段。
第二代:基于函数模块的增强。
源代码增强以函数模块形式发布,在 SAP 的发行版本中,使用 CALL CUSTOMER-FUNCTION 调用这些函数模块,它们在发布时只有一句代码 INCLUDE xxxxxxx。
用户增强时,无需申请对象键,直接双击这个包含,然后回车,就可以创建相关的包含文件,编写相应的代码了。
这些函数模块中只能使用接口中传递的参数,不能使用调用程序的全局变量。
屏幕增强也包含在函数模块所属的函数组中。
针对数据表的增强是 CI_ 结构,这些结构以 .INCLUDE 结构的形式包含在 SAP 发布的数据表中,用户可以通过向这些结构中添加字段而对数据表进行增强。
上述这类增强通过事务码 SMOD 进行维护,CMOD 进行实现。
SMOD 中的一个增强可以包含上述的源代码、屏幕和表结构增强,按照较容易理解的逻辑结构来管理这些增强,使用相对更加便利。
第三代:基于面向对象概念的增强。
这就是传说中的 BAdI(Business Add-Ins),源代码增强以接口形式发布,在 SAP 的发行版本中,也是通过接口的方法调用来使用。
统一SAP财务增强

S A P财务增强的统一规划作者:付鸿杰集团在实施和推广ERP大都会采用统一和集中原则,然而,由于集团业务庞杂,ERP统一和集中曲折之路往往难以避免,下面以实例简单介绍下SAP财务增强统一规划和管理思路。
一、用户增强简介SAP系统预留有3类增强:菜单增强(Menu ENTRY)、屏幕增强(SubScreen)和功能增强(Function Enhancement),顾名思义,屏幕增强,就是诸如采购订单、资产卡片或内部订单等主数据允许客户化子屏幕和相应辅助字段,扩展分析维度;而功能增强就是在事务码(Transaction Code,简称Tcode)对应标准程序中留下出口,允许用户插入自定义逻辑代码,因此这类增强亦称用户出口(User Exit)。
二、理解FICO增强FICO模块也有自己特定的增强,财务增强分为两类:替代(Substitution)和有效性检查(Validation),替代允许根据用户逻辑替换会计凭证字段的原始内容,例如,当FICO标准凭证生成功能无法满足集团对会计核算的明细需求时,就可使用替代将相应辅助核算信息填充完整,对无法手工干预的自动会计凭证来讲,替代尤为重要;而有效性检查则是根据核算需求对会计凭证内容进行“完整性”检查,预先避免不完整的核算数据进入系统形成垃圾信息。
常用的FICO增强Tcode如下:GGB0(全部有效性检查)/OB28/OKC7 :FI/CO有效性检查GGB1(全部替代)/OBBH/OKC9: FI/CO替代财务增强有特定执行顺序,不妨假设检查某核算字段内容缺失时报告错误,如果检查优先执行,则可能因内容确实报告错误,事务直接终止,而实际上该核算内容是启用替代来填入的,信息并不缺失,不应报告错误,由此推断,替代显然应该优先执行。
无论替代还是有效性检查最后都形成代码,从技术角度来看,任何管理软件无非是代码+数据库表的集合,而从代码角度,替代和有效性检查的区别仅仅在于替代可以替换内容,而检查不能,如果替代代码中只做检查,它就是有效性检查,简单理解,就是替代功能>有效检查功能,因此,财务增强统一只注重替代的统一就足够。
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 增强简介

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、双击函数模块的包含单元,进入包含单元加入自定义代码并激活保存;3、使用CMOD建立增强项目3.1、输入自定义的项目名,点击"创建";3.2、进入增强项目,选择"配置增强",进入增强配置屏幕;3.3、输入增强名如:SDVFX0013.4、保存,并退出;4、使用CMOD将增强项目激活,便大工告成。
*************************************************************************** ************************************************小技巧透视ERP增强(一)什么是增强(Enhancement)?简单地说,增强就是ERP系统中标准程序的出口,在该出口中由用户根据企业实际需求编写客户化逻辑代码。
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增强
ZHRIS-SAP增强概述演示教学

Z H R I S-S A P增强概述1总论Sap增强从种类上可划分为以下几类:●修改原代码;●空代码的子过程(第1代);●SAP 增强管理(第2代)(smod);●Badi增强(第3代)。
其中“修改原代码”主要使用的sap的hr模块中,在sap的其他模块中使用很少,也不推荐使用此类增强。
“空代码的子过程”可以称为sap的第一代增强方法,目前使用不多。
BADI(Business Add-Ins ),即业务增强,是SAP基于面向对象的思想提出的新型的增强类型。
本文主要讨论:修改原代码增强、badi增强2修改源代码增强2.1 原理2.1.1PBO和PAI执行的逻辑PBO(processbeforeoutput):PBO中包含的代码,指在屏幕显示前执行的代码,其代码功能准备或格式化要输入的数据;PAI(processafterinput):PAI中包含的代码,指在触发屏幕控制键所执行的代码,当屏幕显示时,触发屏幕上的任何控制键(含回车键),屏幕将根据PAI代码控制格式化屏幕的输出格式。
屏幕显示时,PAI与PBO执行的逻辑:PAI->PBO当屏幕显示时,屏幕的代码运行状态是PBO已经执行完毕,即将开始运行PAI,如果此时触发屏幕上的任何控制键,将开始执行PAI,PAI执行完毕以后,再次运行PBO,重新恢复至PBO执行完毕,即将开始运行PAI的状态,每当触发一个新的屏幕事件时,就执行一次这样的循环。
2.1.2简单的修改屏幕属性每个屏幕字段都有用户在定义屏幕时在屏幕制作器中设置的属性。
在运行时,根据用户在上一个屏幕中请求的功能,可能需要更改这些属性。
在运行时,每个屏幕字段的属性存储在名为SCREEN的内存表格中。
不必在程序中声明该表格,系统内部维护该表格并且在每次屏幕更改时更新它。
内存表格SCREEN包括下列字段:要激活字段属性,则将它的值设置为1。
要使它无效,则将它设置为0。
将ACTIVE属性设置为0时,系统禁用字段并取消准备输入属性。
sap出口(增强)详解

下面具体介绍怎样写出口程序:
为了对出口程序的修改进行管理,sap提供了专门用来管理出口程序的事务,事务代码是CMOD。
输入事务代码--CMOD进入如下界面:
输入一个项目名称:ztest003,创建一个增强项目。
点击创建进入下面的界面:输入项目描述。点击保存。
AIST0002资产主数据中的客户字段
ALE00001 ALE用户退出
ALTD0001 Individual additional checks when transferring old data
AMAV0001确定资产起息日
AMGS_001在资产报表中用户定义的转换方法
AMPL0001 AMPL上附加数据地用户子屏幕
BC621E18 Customer Function for BC621 Group 18
BC621EDX Customer Function for BC621
BDMO0001 Enhancement to the ALE distribution reference model
BG000001用户出口:担保检查
CAVC0000用户出口:变量配置:外部应用程序接口
CAWAO_TS Text Layout of Worklist
CBP00001用户由于PP-CBP退出
CCOWB001修改菜单条目的用户退出
CCT00001 User exit characteristics mgmt.: Char. data before backup
BC621E02 Customer Function for BC621 Group 02
BC621E03 Customer Function for BC621 Group 03
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
传统增强技术----技术出口
程序出口是从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、在应用工具栏,选择“激活增强”(奇怪)。