ZHRIS-SAP增强概述

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

11总论Sap增强从种类上可划分为以下几类:修改原代码;空代码的子过程(第1代);SAP增强管理(第2代)(smod);Badi增强(第3代)。其中“修改原代码”主要使用的sap的hr模块中,在sap的其他模块中使用很少,也不推荐使用此类增强。“空代码的子过程”可以称为sap的第一代增强方法,目前使用不多。BADI(BusinessAdd-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简单的修改屏幕属性每个屏幕字段都有用户在定义屏幕时在屏幕制作器中设置的属性。在运行时,根据用户在上一个屏幕中请求的功能,可能需要更改这些属性。在运行时,每个屏幕字段的属性存储在名2为SCREEN的内存表格中。不必在程序中声明该表格,系统内部维护该表格并且在每次屏幕更改时更新它。内存表格SCREEN包括下列字段:名称长度说明NAME30屏幕字段的名称GROUP13属于字段组1的字段GROUP23属于字段组2的字段GROUP33属于字段组3的字段GROUP43属于字段组4的字段ACTIVE1可见并准备输入的字段REQUIRED1字段输入是强制的INPUT1字段准备输入OUTPUT1字段仅用于显示INTENSIFIED1高亮显示字段INVISIBLE1禁用字段LENGTH1减少字段输出长度DISPLAY_3D1以三维框架显示字段VALUE_HELP1显示有值帮助的字段要激活字段属性,则将它的值设置为1。要使它无效,则将它设置为0。将ACTIVE属性设置为0时,系统禁用字段并取消准备输入属性。用户不能查看字段也不能对它输入值。2.1.3代码示例可以在PBO模块中实现对该字段属性的更改:MODULEMODIFY_SCREENOUTPUT.LOOPATSCREEN.IFSCREEN-NAME='0001'.SCREEN-INPUT='0'.ENDIF.MODIFYSCREEN.ENDLOOP.ENDMODULE.2.2对第1类系统信息类型的字段增强在800client在sap系统hr模块中,可对人事信息类的系统信息类型(0000——0999)进行增强,包括对此类信息类型的用户字段增加和逻辑增强。下面这个例子是对0021这个信息类型,进行用户字段增加。3可以通过信息类型的子类型控制屏幕的显示。以0021地址为例进行说明,首先在pm01的“单个屏”页签的“客户包含”创建增强的ci结构,如下图:在“单个屏”页签中点选“生成对象”按钮,将相应屏幕结构生成。此时系统已自动将增强字段添加的系统屏幕中,如下图:0200子屏幕也自动建立好了4接下来,我们通过选择不同的子类型来控制是否显示name字段。首先创建自己的特征z0021在sm30中维护t588m表,建立如下的3条维护记录:5注意“变量码”与特征中的“返回值”向对应。当变量码为“none”时,将字段隐藏。结果:当选择子类型1“配偶”时,显示增强字段。当选择其他子类型时,则不显示增强字段。6需要特别注意的是:在创建特征时,请不要忘记将其激活!2.3对第1类9字头信息类型的增强160client当人员的公司代码为A300时:当输入材料转出时间(P9967-ZZ_DAZCSJ)时,则生成材料转递号(P9967-ZZ_DACLZDH)。材料转递号为9位号码,前两位是CC,第三到第六位为四位的年份,第七位到第九位为流水号。如CC2006001。四位的年份取材料转出时间(P9967-ZZ_DAZCSJ)所输入的年份。PA30进入,如下图:72.详细逻辑说明字段名系统字段取数逻辑说明材料转出时间P9967-ZZ_DAZCSJ材料转递号P9967-ZZ_DACLZDH公司代码PA0001-BUKRSA300此增强只对A300集团公司总部有效3.输出显示84.关键逻辑技术说明1、2000屏幕PAI中PROCESSAFTERINPUT.MODULEEXITATEXIT-COMMAND.CHAIN.FIELDP9967-BEGDA.FIELDP9967-ZZ_DACLZCYY.FIELDP9967-ZZ_DACLZDH.FIELDP9967-ZZ_DAHZSJ.FIELDP9967-ZZ_DACLSJR.FIELDP9967-ZZ_DACLJSR.FIELDP9967-ZZ_DAZCSJMODULEINPUT_DACLZDH.FIELDP9967-ZZ_DAZRSJ.FIELDP9967-ZZ_DACLZWDW.FIELDP9967-ZZ_DACLYS.FIELDP9967-ZZ_DACLFS.FIELDP9967-ZZ_DACLLY.FIELDP9967-ZZ_DACLMC.MODULEINPUT_STATUSONCHAIN-REQUEST.ENDCHAIN.2、在程序mp996730中包含完成增强功能的formMODULEINPUT_DACLZDHINPUT.9PERFORMFRM_DACLZDH.ENDMODULE.INPUT_DACLZDHINPUTFORMFRM_DACLZDH.DATA:L_BUKRS(4)TYPEC,L_VAL1TYPEI,L_VAL2TYPEI,L_VAL(3).DATA:L_ZZ_ZRHLIKEP9967-ZZ_DACLZDH.SELECTSINGLEBUKRSINTOL_BUKRSFROMPA0001WHEREPERNR=P9967-PERNRANDBUKRS='A300'.IFSY-SUBRC=0.IFNOTP9967-ZZ_DAZCSJISINITIAL.CLEAR:L_VAL1,L_VAL2,L_VAL.SELECTB~ZZ_DACLZDHINTOL_ZZ_ZRHFROMPA0001ASAINNERJOINPA9967ASBONA~PERNR=B~PERNRWHEREA~BUKRS='A300'.IFNOTL_ZZ_ZRHISINITIALANDL_ZZ_ZRH+2(4)=P9967-ZZ_DAZCSJ+0(4).L_VAL1=L_ZZ_ZRH+6(3).IFL_VAL1L_VAL2.L_VAL2=L_VAL1.ENDIF.ENDIF.CLEARL_ZZ_ZRH.ENDSELECT.L_VAL2=L_VAL2+1.L_VAL=L_VAL2.CONDENSEL_VAL.IFSTRLEN(L_VAL)=3.CONCATENATE'CC'P9967-ZZ_DAZCSJ+0(4)L_VALINTOP9967-ZZ_DACLZDH.ELSEIFSTRLEN(L_VAL)=2.CONCATENATE'CC'P9967-ZZ_DAZCSJ+0(4)'0'L_VALINTOP9967-ZZ_DACLZDH.ELSE.CONCATENATE'CC'P9967-ZZ_DAZCSJ+0(4)'00'L_VALINTOP9967-ZZ_DACLZDH.ENDIF.ENDIF.ENDIF.ENDFORM.103Sap第一代增强sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求。这类增强都需要修改sap的标准代码。例子:销售订单就比较简单,用SE38打开SAPMV45A这个主程序,里面所有以USEREXIT开头的子例程都是用户出口,交货单SAPMV50A也是这样的。不过每个子例程是派啥用的还要在onlinehelp里看看清楚,多测试测试。4Sap第二代增强SMOD包含具体的增强,而CMOD是包含一组SMOD编写的增强.Userexits(Functionmoduleexits)是sap提供出口,它的命名规则如下:EXIT_programname3digitsuffix4.1使用CMOD建立增强项目输入自定义的项目名(ZHRPA002),点击“创建”;进入增强项目,选择“配置增强”,进入增强配置屏幕;输入增强名如:PBAS0001(PA:人事管理/招聘:缺省值和核查),点击修改,进入sap增强11维护屏幕点击“组件”按钮,进入组件维护屏;将光标移到“功能模块名”,输入模块名,如:EXIT_SAPFP50M_001;选择“代码修改”按钮进入函数模块;双击函数模块的包含单元,进入包含单元加入自定义代码并激活保存;124.2示例代码4.2.1调用点MODULEbefore_outputOUTPUT.……….IFpsyst-iinitEQyesANDQNO4.0psyst-ioperEQcopyORpsyst-ioperEQinsert.QNO4.0PERFORMcustomer_function_pbo(sapfp50m).move_cprel_to_pnnnn.7842ENDIF.……ENDMODULE.FORMCUSTOMER_FUNCTION_PBO.CALLCUSTOMER-FUNCTION'001'EXPORTINGTCLAS=PSPAR-TCLASINNNN=CPRELIPSYST=PSYSTI001P=T001PI503=T503IMPORTINGINNNN=CPRELCHANGINGIPREF=PREFEXCEPTIONSOTHERS=1.ENDFORM.FUNCTIONEXIT_SAPFP50M_001.INCLUDEZXPADU01.ENDFUNCTION.4.2.2增强代码DATA:I0001LIKEP0001,I0006LIKEP0006,13I0008LIKEP0008.CASEINNNN-INFTY.WHEN'0001'.MOVEINNNNTOI0001.MOVE'XX'TOI0001-VDSK1.MOVEI0001TOINNNN.WHEN'0008'.CALLMETHODCL_HR_PNNNN_TYPE_CAST=PRELP_TO_PNNNNEXPORTINGPRELP=INNNNIMPORTINGPNNNN=I0008.MOVE'YY'TOI0008-TRFGR.CALLMETHODCL_HR_PNNNN_TYPE_CAST=PNNNN_TO_PRELPEXPORTINGPNNNN=I0008IMPORTINGPRELP=INNNN.WHEN'0006'.CALLMETHODCL_HR_PNNNN_TYPE_CAST=PRELP_TO_PNNNNEXPORTINGPRELP=INNNNIMPORTINGPNNNN=I0006.MOVE'100011'TOI0006-PSTLZ.CALLMETHODCL_HR_PNNNN_TYPE_CAST=PNNNN_TO_PRELPEXPORTINGPNNNN=I0006IMPORTINGPRELP=INNNN.ENDCASE.4.3作业找到EXIT_SAPFP50M_002的调用点并写些代码。4.4如何查找用户出口此类增强均保存在表“MODSAP”中,如下图:14MODTYP类型:E:功能退出S:屏幕T:表C:GUI代码REPORTZFINDCMOD.tables:tstc,tadir,modsapt,modact,trdir,tfdir,enlfdir.tables:tstct.data:jtabliketadiroccur

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功