SAP的增强(Enhancement)是指SAP提供的开发接口可以由客户采用开发来实现某些标准配置所不能实现的特定业务功能。
下面介绍QM中常用的SAP的两种增强:
1)基于函数模块的用户出口(User Exit)的增强。在SAP中以函数模块形式发布,预定义了参数,在代码中预留为INCLUDE Function Module Name的形式。实现增强时,在该预留的功能模块中写入代码,实现业务逻辑。该类增强可以用事务码SMOD或者CMOD进行维护和实现。
2)基于面向对象概念的增强。即BAdI(Business Add-Ins),源代码增强以接口形式来发布,实现BAdI时,把对该接口一些预定义的方法写入实现类,用来实现不同的业务逻辑。这种增强可以使用事务码SE18/SE19进行创建和实现。
下面采用一个实例来对上述内容进行说明。
1.业务需求
对公司内所有工厂产生的检验批,要在检验批的说明(Short Description)中自动记录触发检验批产生的事务代码。
2.业务分析
采用SAP用户出口实现该功能。
3.后端配置
采用标准配置。
4.开发与前端操作
如图12-26所示,运行SMOD,查找QM用户出口。具体的出口介绍需要查询SAP在线文档并做相关测试。此处采用主数据相关的用户出口QPL10001(QM:Inspection lot creation-editing work area on creation)。
如图12-27所示,运行SMOD,单击Display按钮后,进入用户接口属性页,单击Com-ponents按钮。
图12-26 实现用户出口(SMOD)(一)
图12-27 实现用户出口(SMOD)(二)
如图12-28所示,一个用户出口会包含一个或多个功能列表,在该功能模块列表中双击“EXIT_SAPLQPL1_002”,即“Customer Function for Changing QALS Work Area”。
图12-28 实现用户出口(SMOD)(三)
如图12-29所示,出现代码后,该代码不可以直接修改,客户的业务实现需要在预定义的功能模块“ZXQPLU02.”中实现。双击代码中的“INCLUDE ZXQPLU02”,如有警告,则按〈Enter〉键跳过,系统会提示创建代码,单击Yes按钮。
图12-29 实现用户出口(SMOD)(四)
如图12-30所示,在功能模块“ZXQPLU02”中输入测试代码,该代码的功能是将用户出口的标准输出数据修改为需要的值,然后传出功能模块,实现业务需求。编辑完成后激活代码。
图12-30 实现用户出口(SMOD)(五)
如图12-31所示,测试用户出口,用QA01创建检验批,可以看到,检验批描述中的说明已被更新。
图12-31 测试用户出口(QA01)(一)
如图12-32所示,测试用户出口,用MB1B移动类型309创建检验批,此时检验批描述中的说明已被更新,如果客户需要按不同厂创建更复杂的说明,可以在代码中加入相应的逻辑。
图12-32 测试用户出口(QA03)
SAP QM的用户出口列表见表12-1。
表12-1 SAP QM的用户出口列表
(续)
(续)
(www.xing528.com)
下面对第二种增强BAdI做一些测试。
1.业务需求
对公司内所有工厂产生的检验批,在保存检验批时,需求系统会弹出对话框,提示用户输入某些数据。
2.业务分析
采用SAP BAdI实现该功能
3.后端配置
采用标准配置。
4.开发与前端操作
如图12-33所示,运行SE18,输入BAdI的名称“INSPECTION UPDATE”,单击Dis-play按钮,查看BAdI的接口。
如图12-34所示,查看BAdI的接口,选择查看接口的方法和传入参数等,确定将要实现的方法。此处选择CREAT AT SAVE方法在后续步骤中实现。
图12-33 定义BAdI(SE18)(一)
图12-34 定义BAdI(SE18)(二)
如图12-35所示,运行SE19,在Create Implementation选项组选择Classic BAdI,并输入BAdI的名称“INSPECTION UPDATE”,然后单击Create Impl.按钮。
图12-35 实现BAdI(SE19)(一)
如图12-36所示,在Implementation Name文本中输入“ZINSP UPDATE 001”。
图12-36 实现BAdI(SE19)(二)
如图12-37所示,选择CREATE_AT_SAVE,双击进入,编辑代码。
图12-37 实现BAdI(SE19)(三)
如图12-38所示,在接口中输入代码,该代码可以使系统在保存检验批时弹出对话框,接受用户输入某些数值,待传入系统中做后续处理。
图12-38 实现BAdI(SE19)(四)
如图12-39所示,激活代码后,进入QA01创建检验批,保存时系统会弹出对话框,提示用户输入某些数值。
图12-39 BAdI测试(QA01)
对于SAP BAdI,采用接口形式的增强,可用以下方法进行查找运行某操作码将会触发何种BAdI,如图12-40所示,运行SE37,输入功能模块名“SXV_ADD_PREFIX”在代码中找到子功能模块“SX_NAME_SPACE_SPLIT”,设定断点。
图12-40 功能模块查询(SE37)
如图12-41所示,运行QA01,创建检验批,此时会进入Debug模式。如未能进入,可以输入“/h”,强制进入Debug模式。
图12-41 执行创建检验批(QA01)(一)
如图12-42所示,在Debug模式中查看功能模块“SX_NAME_SPACE_SPLIT”的返回值,即“NAME”,该值就是事务码对应的BAdI名称。
图12-42 执行创建检验批(QA01)(二)
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。