ZHRISSAP增强概述演示教学.docx
- 文档编号:914008
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:25
- 大小:1.03MB
ZHRISSAP增强概述演示教学.docx
《ZHRISSAP增强概述演示教学.docx》由会员分享,可在线阅读,更多相关《ZHRISSAP增强概述演示教学.docx(25页珍藏版)》请在冰豆网上搜索。
ZHRISSAP增强概述演示教学
ZHRIS-SAP增强概述
1总论
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简单的修改屏幕属性
每个屏幕字段都有用户在定义屏幕时在屏幕制作器中设置的属性。
在运行时,根据用户在上一个屏幕中请求的功能,可能需要更改这些属性。
在运行时,每个屏幕字段的属性存储在名为SCREEN的内存表格中。
不必在程序中声明该表格,系统内部维护该表格并且在每次屏幕更改时更新它。
内存表格SCREEN包括下列字段:
名称
长度
说明
NAME
30
屏幕字段的名称
GROUP1
3
属于字段组1的字段
GROUP2
3
属于字段组2的字段
GROUP3
3
属于字段组3的字段
GROUP4
3
属于字段组4的字段
ACTIVE
1
可见并准备输入的字段
REQUIRED
1
字段输入是强制的
INPUT
1
字段准备输入
OUTPUT
1
字段仅用于显示
INTENSIFIED
1
高亮显示字段
INVISIBLE
1
禁用字段
LENGTH
1
减少字段输出长度
DISPLAY_3D
1
以三维框架显示字段
VALUE_HELP
1
显示有值帮助的字段
要激活字段属性,则将它的值设置为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这个信息类型,进行用户字段增加。
可以通过信息类型的子类型控制屏幕的显示。
以0021地址为例进行说明,首先在pm01的“单个屏”页签的“客户包含”创建增强的ci结构,如下图:
在“单个屏”页签中点选“生成对象”按钮,将相应屏幕结构生成。
此时系统已自动将增强字段添加的系统屏幕中,如下图:
0200子屏幕也自动建立好了
接下来,我们通过选择不同的子类型来控制是否显示name字段。
首先创建自己的特征z0021
在sm30中维护t588m表,建立如下的3条维护记录:
注意“变量码”与特征中的“返回值”向对应。
当变量码为“none”时,将字段隐藏。
结果:
当选择子类型1“配偶”时,显示增强字段。
当选择其他子类型时,则不显示增强字段。
需要特别注意的是:
在创建特征时,请不要忘记将其激活!
2.3对第1类9字头信息类型的增强
160client
当人员的公司代码为A300时:
当输入材料转出时间(P9967-ZZ_DAZCSJ)时,则生成材料转递号(P9967-ZZ_DACLZDH)。
材料转递号为9位号码,前两位是CC,第三到第六位为四位的年份,第七位到第九位为流水号。
如CC2006001。
四位的年份取材料转出时间(P9967-ZZ_DAZCSJ)所输入的年份。
PA30进入,如下图:
2.详细逻辑说明
字段名
系统字段
取数逻辑说明
材料转出时间
P9967-ZZ_DAZCSJ
材料转递号
P9967-ZZ_DACLZDH
公司代码
PA0001-BUKRS
A300
此增强只对A300集团公司总部有效
3.输出显示
4.关键逻辑技术说明
1、2000屏幕PAI中
PROCESS AFTER INPUT.
MODULE EXIT AT EXIT-COMMAND.
CHAIN.
FIELD P9967-BEGDA.
FIELD P9967-ZZ_DACLZCYY.
FIELD P9967-ZZ_DACLZDH.
FIELD P9967-ZZ_DAHZSJ.
FIELD P9967-ZZ_DACLSJR.
FIELD P9967-ZZ_DACLJSR.
FIELD P9967-ZZ_DAZCSJ MODULE INPUT_DACLZDH.
FIELD P9967-ZZ_DAZRSJ.
FIELD P9967-ZZ_DACLZWDW.
FIELD P9967-ZZ_DACLYS.
FIELD P9967-ZZ_DACLFS.
FIELD P9967-ZZ_DACLLY.
FIELD P9967-ZZ_DACLMC.
MODULE INPUT_STATUS ON CHAIN-REQUEST.
ENDCHAIN.
2、在程序mp996730中包含完成增强功能的form
MODULE INPUT_DACLZDH INPUT.
PERFORM FRM_DACLZDH.
ENDMODULE. " INPUT_DACLZDH INPUT
FORM FRM_DACLZDH .
DATA:
L_BUKRS(4) TYPE C,
L_VAL1 TYPE I,
L_VAL2 TYPE I,
L_VAL(3).
DATA:
L_ZZ_ZRH LIKE P9967-ZZ_DACLZDH.
SELECT SINGLE BUKRS INTO L_BUKRS FROM PA0001
WHERE PERNR = P9967-PERNR AND BUKRS = 'A300'.
IF SY-SUBRC = 0.
IF NOT P9967-ZZ_DAZCSJ IS INITIAL.
CLEAR:
L_VAL1,L_VAL2,L_VAL.
SELECT B~ZZ_DACLZDH INTO L_ZZ_ZRH FROM PA0001 AS A
INNER JOIN PA9967 AS B
ON A~PERNR = B~PERNR
WHERE A~BUKRS = 'A300'.
IF NOT L_ZZ_ZRH IS INITIAL AND L_ZZ_ZRH+2(4) = P9967-ZZ_DAZCSJ+0(4).
L_VAL1 = L_ZZ_ZRH+6(3).
IF L_VAL1 > L_VAL2.
L_VAL2 = L_VAL1.
ENDIF.
ENDIF.
CLEAR L_ZZ_ZRH.
ENDSELECT.
L_VAL2 = L_VAL2 + 1.
L_VAL = L_VAL2.
CONDENSE L_VAL.
IF STRLEN( L_VAL ) = 3.
CONCATENATE 'CC' P9967-ZZ_DAZCSJ+0(4) L_VAL INTO P9967-ZZ_DACLZDH.
ELSEIF STRLEN( L_VAL ) = 2.
CONCATENATE 'CC' P9967-ZZ_DAZCSJ+0(4) '0' L_VAL INTO P9967-ZZ_DACLZDH.
ELSE.
CONCATENATE 'CC' P9967-ZZ_DAZCSJ+0(4) '00' L_VAL INTO P9967-ZZ_DACLZDH.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
3Sap第一代增强
sap提供一个空代码的子过程,在这个子过程中用户可以添加自己的代码,控制自己的需求。
这类增强都需要修改sap的标准代码。
例子:
销售订单就比较简单,用SE38打开SAPMV45A这个主程序,里面所有以USEREXIT开头的子例程都是用户出口,交货单SAPMV50A也是这样的。
不过每个子例程是派啥用的还要在onlinehelp里看看清楚,多测试测试。
4Sap第二代增强
SMOD包含具体的增强,而CMOD是包含一组SMOD编写的增强.
Userexits(Functionmoduleexits)是sap提供出口,它的命名规则如下:
EXIT_
4.1使用CMOD建立增强项目
输入自定义的项目名(ZHRPA002),点击“创建”;
进入增强项目,选择“配置增强”,进入增强配置屏幕;
输入增强名如:
PBAS0001(PA:
人事管理/招聘:
缺省值和核查),点击修改,进入sap增强维护屏幕
点击“组件”按钮,进入组件维护屏;
将光标移到“功能模块名”,输入模块名,如:
EXIT_SAPFP50M_001;
选择“代码修改”按钮进入函数模块;
双击函数模块的包含单元,进入包含单元加入自定义代码并激活保存;
4.2示例代码
4.2.1调用点
MODULE before_output OUTPUT.
……….
IF psyst-iinit EQ yes AND "QNO4.0
psyst-ioper EQ copy OR psyst-ioper EQ insert. "QNO4.0 PERFORM customer_function_pbo(sapfp50m).
move_cprel_to_pnnnn.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ZHRISSAP 增强 概述 演示 教学