ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:83.19KB ,
资源ID:6195484      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6195484.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(透视ERP增强精.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

透视ERP增强精.docx

1、透视ERP增强精透视ERP增强(一)什么是增强(Enhancement 简单地说,增强就是ERP系统中标准程序的出口,在该出口中由用户根据企业实际需求编写客户化逻辑代码。增强是ERP系统设计时考虑到企业实际的流程有可能和系统默认标准流程不同,在标准流程框架下专门留的接口,每个接口对应一个客户化函数,这些出口函数有标准处理程序传入的参数和输出参数,用户可根据系统输入参数做条件编写适合本企业流程的逻辑,然后通过输出参数传输回。(二)用户增强分类SAP的用户增强通常包括下面3类。1.E类:Enhancement exits,即通常所谓的用户出口(User_exit )用户出口也叫功能出口(Funct

2、ion Exit。使用Tcode:SE37搜索EXIT*,找到的函数大都是做系统预留的出口函数,前面说过,用户出口是标准程序留给用户的接口,标准程序通常不允许用户任意修改,如果修改需要申请Access Key,而且修改标准程序可能导致的错误ERP公司通常是不负责的。在SAP中,自定义的程序通常以保留字Y或Z开头,因此,出口函数中都预包含了一个Z开头的程序。2.C类:GUI接口(GUI codes3.S类:屏幕增强(Screen Exit比如,在建立采购订单,工单和固定资产主数据时,系统都预留屏幕增强,也就是说允许用户自定义用户输入界面并编写相应的输入输出处理程序。在各类增强中,可能还用户自己定

3、义结构或表格,系统对应类型T类。比如增强MM06E005允许用户建立两个结构CI_EKKODB和CI_EKPODB。接下来将重点介绍功能出口的应用。(三)组织用户增强相关增强表格:MODSAP:增强表格TFDIR:包括出口函数在内的所有函数表(E类CUATEXTS:修改 GVI 界面,界面: 菜单文本被客户(C类. N8 m- r8 |( v6 - y% T1 UTSDIR:动态程序区 CALL CUSTOMER SUBSCREEN(S类* 对于以EXIT开头的出口函数,TFDIR-MAND值为C表示此出口函数被激活。相关增强检查函数:MODX_FUNCTION_ACTIVE_CHECK:检查

4、E类用户出口是否被激活。MODX_MENUENTRY_ACTIVE_CHECK:检查C类增强激活状况MODX_SUBSCREEN_ACTIVE_CHECK: 检查S类增强激活状况你可能会发现,SAP的各模块的任何一个事务码(Tcode对应的标准程序都留下了大量的用户出口,正是SAP灵活的配置功能和强大的用户出口才使其产品轻松应对各种复杂需求成为可能,系统还为能快速找到和激活这些增强进行了有效组织,各类增强被记录在table中并且提供了相关检查函数,从而更方便企业用户。熟悉ABAP开发的朋友通常都收集了一个可以输入事务码快速找到系统留下的所有出口的程序,下表就是一个检测系统增强被激活的简单参考程

5、序。* 该程序可以检测出系统所有被激活的用户增强.*By Stone Fu. on 2006/11/07 .*Used to find out all the activated user-exit of SAP .report zfindactexit .tables: modsap,tfdir.data : begin of itab_exitoccurs 0, funcname like tfdir-funcname, mand like tfdir-mand, name like modsap-name, end of itab_exit .data : field1(30.selec

6、t afuncname amand bnameinto table itab_exitfrom tfdir as a inner join modsap as b on afuncname = bmemberwhere amand = Cand afuncname = bmember .format color col_heading intensified on.write:/1 sy-vline,2 Enhancement Name,21 sy-vline ,22 Activated Exit Function,95 sy-vline.write:/(95 sy-uline.loop at

7、 itab_exit.format color col_normal intensified off.write:/1 sy-vline,2 itab_exit-name hotspot on,21 sy-vline ,22 itab_exit-funcname,95 sy-vline.endloop.at line-selection.get cursor field field1.set parameter id MON field sy-lisel+1(10.call transaction SMOD and skip first screen.有一种直接有效的查找用户出口增强的方法,就

8、是使用函数MODX_FUNCTION_ACTIVE_CHECK,如图1。2011-10-6 18:15:45 上传下载附件 (42.79 KB 图1中的判断语句If tfdir-mand = aktiv_flag(常数C则出口函数active标志=X,表示该用户出口被激活,处理逻辑将从标准程序转入出口函数,在该语句设置断点然后运行任一个事务码,都会调用该函数判断是否存在用户出口。(四)增强应用实例业务背景:如果采购订单已经做了发票校验后,则不再允许用户修改价格。相关程序:MM06EFPO_POT_FUELLEN| MM06EF0C_CUSTSCR1_ITEM_SET_DAT相关Tcode:SM

9、OD|CMOD如果没有启动采购审批功能,SAP标准功能是允许用户随时修改采购价格的,不同的企业有对采购价格控制有不同的策略,甲企业规模较小为了省事可能为以后数月的采购开了一个大采购单,如果中途材料价格变动则直接修改价格就行,乙集团则严格控制采购价格,采购价格由总部集中维护,各企业采购员只需要维护采购数量等信息等,真因如此,ERP系统显然不会去禁止用户修改价格,如果企业确实需要如此,则可通过增强实现。前面已经介绍过如何通过在函数MODX_FUNCTION_ACTIVE_CHECK设置断点跟踪系统每个事务预留的用户出口,你很快将发现增强MM06E005的EXIT_SAPMM06E_017用户出口非

10、常适合此业务背景。首先来看看增强的EXIT_SAPMM06E_017用户出口(以下称017出口处理流程,Include程序MM06EFPO_POT_FUELLEN被专门用来处理增强出口,调用了子程序CUSTSCR1_ITEM_SET_DATA_PAI(对应下一级Include程序MM06EF0C_CUSTSCR1_ITEM_SET_DAT,分析Include程序MM06EF0C_CUSTSCR1_ITEM_SET_DAT的代码,如下表,这个程序是从系统原本Copy出来的,注意本人所加的附注粗体部分:*-* User-Exit fr Positionsfelder versorgen (PAIF

11、ORM custscr1_item_set_data_pai USING im_no_screen LIKE fc_call. 770427DATA: l_ucomm LIKE sy-ucomm, l_enj_call TYPE c.STATICS: first_call(1 TYPE c VALUE X, active LIKE sy-calld.ENHANCEMENT-POINT CUSTSCR1_ITEM_SET_DATA_PAI_02 SPOTS ES_MM06EF0C_CUSTSCR1_I_SET_DAT INCLUDE BOUND .*$*$-Start: CUSTSCR1_ITE

12、M_SET_DATA_PAI_02-$*$*ENHANCEMENT 1OI0_COMMON_MM06EF0C_ITEM_S_DAT. active version* C5030897 I.Twardowski Implementation of BADI for OGSDPERFORM OI0_BADISCR1_ITEM_SET_DATA_PAI.ENDENHANCEMENT.*$*$-End: CUSTSCR1_ITEM_SET_DATA_PAI_02-$*$*IF NOT first_call IS INITIAL.CLEAR first_call.*注释: MODX_FUNCTION_A

13、CTIVE_CHECK用来检查017出口是否被激活,如果激活则执行之. CALL FUNCTION MODX_FUNCTION_ACTIVE_CHECK EXPORTING cprogname= SAPMM06E funcnumber = 017 IMPORTING active = active EXCEPTIONS not_found= 1 OTHERS = 2. IF NOT sy-subrc IS INITIAL. CLEAR active. ENDIF.ENDIF.CHECK NOT active IS INITIAL.IF fc_vorga EQ cva_en. l_enj_cal

14、l = X.ELSE. l_enj_call = space.ENDIF.*-Define Data:DATA: lt_usr_tekpo LIKE bekpo OCCURS 0, lt_usr_teket LIKE beket OCCURS 0, lt_usr_tekkn LIKE ekknu OCCURS 0, lt_usr_tkomv LIKE tkomv OCCURS 0.*-Copy Tables:lt_usr_tekpo = pot.lt_usr_teket = ett.lt_usr_tekkn = knt.lt_usr_tkomv = tkomv.l_ucomm = ok-cod

15、e.*注释:调用出口的一般步骤是先定义数据(Define Data,多为内表或工作区,再将参数赋予这些内表(Copy Tables,相当于*建立了原始参数的一个镜象.*-User Exit:*如果017出口增强被激活则执行它.CALL FUNCTION EXIT_SAPMM06E_017 EXPORTING i_ekpo = ekpo i_ekpo_old= *ekpo i_ekko = ekko i_aktyp = aktyp i_bstyp = ekko-bstyp i_no_screen = im_no_screen 770427 i_lfa1 = lfa1 i_lfm1 = lfm1

16、i_rekpo = rekpo i_kekpo = kekpo i_aekpo = aekpo i_reban = reban i_mt06e = mt06e i_eina = *eina i_eine = *eine i_komp = komp i_ucomm = l_ucomm i_enj_call= l_enj_call TABLES tekpo = lt_usr_tekpo teket = lt_usr_teket tekkn = lt_usr_tekkn tkomv = lt_usr_tkomv EXCEPTIONS OTHERS = 0.ENDFORM. CUSTSCR1_ITEM

17、_SET_DATA_PAI上面的程序代码非常简单,相信聪明的读者看了对ERP增强的设计思路会开始有一定了解。现在你可以通俗理解,增强就是ERP设计者在合适的地点设置了一些合适的游戏规则并提供了一些有意义的游戏给用户自己玩耍!独乐乐,与人乐乐,孰乐?好玩的东西应该留点给用户自己乐呵乐呵。接下来开始编写增强程序,可以使用Tcode:SMOD直接激活增强或CMOD建立一个项目包含一个或多个增强,如图2,输入增强MM06E005并激活它,然后在EXIT_SAPMM06E_017出口函数中编写代码。在图2中,我们发现增强MM06E005包括用户出口和屏幕增强(Screen Exit),屏幕增强允许用户在

18、采购订单自定义用户界面,从而使采购订单包含更多企业客户化的信息,这种屏幕增强在固定资产模块中更始发挥到极致。2011-10-6 18:15:45 上传下载附件 (39.03 KB EXIT_SAPMM06E_017包含程序ZXM06U42,程序ZXM06U42示例代码如下表,这段客户化代码逻辑十分简单,为了方便说明,本人注释出该出口函数的输入参数,该出口没有输出参数,也就是说,你只能根据输入参数进行判断而不能更改任何数据:*增强 ZXM06U42的示例代码*By Stone.Fu 2007/01/02*Lokale Schnittstelle:*IMPORTING/TABLES是输入的单个参数

19、和输入的内表参数*IMPORTING* VALUE(I_EKPO LIKEEKPO STRUCTUREEKPO* VALUE(I_AKTYP* VALUE(I_BSTYP LIKEEKKO-BSTYP* VALUE(I_NO_SCREEN* VALUE(I_LFA1 LIKELFA1 STRUCTURELFA1* VALUE(I_LFM1 LIKELFM1 STRUCTURELFM1* VALUE(I_EKKO LIKEEKKO STRUCTUREEKKO* VALUE(I_REKPO LIKEEKPO STRUCTUREEKPO OPTIONAL* VALUE(I_KEKPO LIKEEKP

20、O STRUCTUREEKPO OPTIONAL* VALUE(I_AEKPO LIKEEKPO STRUCTUREEKPO OPTIONAL* VALUE(I_REBAN LIKEEBAN STRUCTUREEBAN OPTIONAL* VALUE(I_MT06E LIKEMT06E STRUCTUREMT06E OPTIONAL* VALUE(I_EINA LIKEEINA STRUCTUREEINA OPTIONAL* VALUE(I_EINE LIKEEINE STRUCTUREEINE OPTIONAL* VALUE(I_EKPO_OLD LIKEEKPO STRUCTUREEKPO

21、 OPTIONAL* VALUE(I_KOMP LIKEKOMP STRUCTUREKOMP OPTIONAL* VALUE(I_UCOMM LIKESY-UCOMM OPTIONAL* VALUE(I_ENJ_CALL OPTIONAL*TABLES* TEKPO STRUCTUREBEKPO OPTIONAL* TEKET STRUCTUREBEKET OPTIONAL* TEKKN STRUCTUREEKKNU OPTIONAL* TKOMV STRUCTUREKOMV OPTIONAL*-*判断程序代码如下:DATA ZWATEKPO like BEKPO. TABLES EKBE .

22、* 输入的内表参数TEKPO记录该采购单所有的原始旧数据 .* 输入的I_EKPO 参数表示当前处理的PO行项目,其包含的是采购行项目的最新更新数据 .READ TABLE TEKPO INTO ZWATEKPO WITH KEY EBELP = I_EKPO-EBELP .*只对ME21N/22/23才生效.check SY-TCODE = ME22N or SY-TCODE =ME22Nor SY-TCODE =ME23N .*EKBE是PO history 表,如有Q,R表示有发票校验历史,不允许更改价#SELECTSINGLE * FROM EKBE WHERE EBELN = I_E

23、KPO-EBELN AND EBELP = I_EKPO-EBELP AND ( BEWTP = Q OR BEWTP = R .*如果SY-SUBRC =0表示发票已经校验,不允许更改价格。CHECK SY-SUBRC = 0 .*判断数据更改后新采购行项目的单价是否和从数据库读出的原始行项目单价一致IF I_EKPO-NETPR ZWATEKPO-NETPR . MESSAGEE001(00 with 采购订单行项目已经进行发票校验,不再允许修改价格ENDIF.如果你熟悉增强,你会发现一些用户出口都会传入旧数据和更新后的新数据以方便两者比较,和财务模块的替代(Substitution)不同

24、,ERP系统一般对增强保留严谨态度,通常只允许在出口中做检查工作,这一点类似财务模块的检查(Validation)。(五)再次浅析增强2011-10-6 18:15:46 上传下载附件 (32.06 KB 企业实施ERP的目的之一就是实现各部门信息共享,避免数据孤岛,以一个简单的采购收货为实例,仓库人员只要在收货时输入采购订号,收货日期,物料收货数量和仓位,系统将自动产生各模块数据,对财务数据,系统根据输入的采购订单号找到采购订单主数据中的工厂,通过在组织结构中设置的工厂和公司代码的对应关系找到相应公司代码;通过收货物料的Valuation class和收货的移动类型找到对应科目,通过收货数量

25、*采购单价得到本次该料库存金额,通过物料主数据获得业务范围和利润中心,这样财务凭证数据自动收集完毕;如果物料采用标准价格出现采购差异并将差异科目的模认成本对象对应到获利分析段,则将数据写入利润分析模块等等;我要说的是,在这些复杂的逻辑背后,任何一个模块收集过程中存在校验,任何校验失败ERP系统都将停止业务交易,比如说校验收货日期不在物料期间或会计期间允许范围,校验失败向用户提示错误,比如预算模块找不到对应基金中心提示错误中止交易等,当所有的校验完毕,系统将数据Commit到数据库,这些校验是系统标准的,而增强则是系统预留给用户的,和系统的校验一样,在任何模块的增强中只要是出现错误都将停止本次业

26、务交易。在图3中出现的检查/替代/增强/字段移动/推导等关键词,实际上这些东东都可看成系统增强,即使用客户化代码增强标准功能。有趣的是,SAP的各种增强的代码编写都是极其简单的,象检查/替代/字段移动/推导/派生用户甚至只要简单将对应的源字段和目标字段拖拖拽拽关联关联就行,代码是自动生成的,即使涉及Coding也是非常简单的。神奇的是,作为SAP顾问你甚至可以对编程和数据库毫不了解,实际上很都SAP顾问的确如此,你只要专注于业务蓝图实现就行,这一点值得国内管理软件设计同行学习,在管理软件设计过程中,同样是细节决定成败。新一代增强BADI (Tcode:SE17|SE18BADI(Business Add-In是一种新的功能增强概念,它使用类、接口及方法等面向对象的概念,采用一种使用面向对象的方法来进行SAP 增强。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1