资讯详情

SAP用户出口的类型

sap共有三代用户出口:

1、第一代sap提供空代码的子过程,用户可以添加自己的代码来控制自己的需求。这种增强需要修改sap标准代码。示例:USEREXIT.. in SAPMV45A

2、第二代sap提供的是CUSTOMER-FUNCTION,它是通过SMOD和CMOD完成实现。见我的http://blog.csdn.net/CompassButton/archive/2006/08/31/1150258.aspx

3、第三代sap第三代用户出口是BADI,他的调用方式是CALL METHOD (instance),(相关的TCODE是SE18和SE19),你可以通过EXIT_HANDLER搜索这个词BADI。

第二代: 如何使用SMOD和CMOD进行SD的用户增强 1.简要介绍增强情况1.1 SMOD包括具体的增强CMOD是包含一组SMOD编写的增强. 1.2 User exits (Function module exits)是sap其命名规则如下: EXIT_<3 digit suffix> 示例:sd的VA01事务,相应的程序是SAPMV45A ,您将在程序中找到(使用)CALL CUSTOMER-FUNCTION字符串)以下代码:CALL CUSTOMER-FUNCTION '003' exporting xvbak = vbak xvbuk = vbuk xkomk = tkomk importing lvf_subrc = lvf_subrc tables xvbfa = xvbfa xvbap = xvbap xvbup = xvbup. 则exit calls function module名称为: EXIT_SAPMV45A_003

2、先试用SMOD建立一个SAP增强2.1.选择一种增强:SDVFX001 ,点击修改,进入sap加强屏幕维护;2.点击组件按钮进入组件维护屏;2.将光标转移到功能模块名,输入模块名,如:EXIT_SAPLV60B_001;2.选择代码修改按钮进入函数模块;2.5.双击函数模块的包含单元,进入包含单元添加自定义代码并激活保存;

3、使用CMOD建立增强项目3.1、输入自定义的项目名,点击“创建”;3.2.进入增强项目,选择配置增强,进入增强屏;3.3.输入增强名称如下:SDVFX0013.四、保存,退出;

4、使用CMOD将加强项目激活,便大工告成。

如何查找*判断是否有相应增强的定义(SMOD) select single name from modsapa into mod0-name where name = 'PPCO0002'. if sy-subrc = 0. endif. select single * from tadir into ps_tadir_db where pgmid = 'R3TR' and object = 'SMOD' and obj_name = 'PPCO0002'.

*判断是否有相应增强项目的定义(CMOD) SELECT SINGLE name FROM MODATTR into mod0-name WHERE NAME = 'PPCO0002'..

*提取增强定义的组件 (可用此反查增强定义) select * from modsap where name = 'PPCO0002'.

*判断增强是否移植到BADI实现*Enhancement & has already been migrated in Business Add-In definition select single migrated badi_def into (migrated, exit_name) from modsapa where name = modname. if sy-subrc = 0 and migrated = seex_true. message s621 with modname exit_name. check mode ne 'CHAM'. endif.

MODTYP 类型:E : 功能退出S : 屏幕T : 表C : GUI代码sap增强存在MODSAP表内

*获取增强组件的参见函数MOD_SAP_MEMBER_TEXT*获取退出功能模块的信息 select single * from tftit where "SPRAS" = '1' AND "FUNCNAME" = 'EXIT_SAPLCORE_001' if sy-subrc = 0. endif.

*值得学习的函数MOD_KUN_ACTIVATE(会操作相关报表)

BADI作为SAP第三代用户出口,他的应用越来越广泛,但如何找到合适的呢?badi是许多abap程序员的困惑。以下是我个人应用经验的介绍,供您参考。

1、badi存储对象的信息SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR这四个表(见SECE包);

2、sap将调用程序cl_exithandler=>get_instance判断对象是否存在,并返回实例;事实上,get_instance就是对上述几个表和他们的视图(V_EXT_IMP和 V_EXT_ACT)查询和搜索。

3、基于这个机理,我查用ST05来监控一个TCODE跟踪,然后选择查找上述表和视图的操作,以获得相关信息BADI。

4、se18 查找接口,se19 用户增强可以通过实现接口来实现。示例:用LE_SHP_DELIVERY_PROC控制跨月CancelMETHOD IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER .data : thismonth(2) type c.data : wa_likp type line of SHP_LIKP_T.data : wa_log type line of SHP_BADI_ERROR_LOG_T.clear ct_log[],thismonth.thismonth = sy-datum 4(2). "-----&gt这个月loop at i_xlikp into wa_likp.check IS_V50AGL-WARENAUSG_STORNO ='X'."---&gt代表作GI cancelif wa_likp-WADAT_IST+4(2) < thismonth.wa_log-VBELN = cs_likp-vbeln.wa_log-MSGTY = 'E'. "錯誤訊息wa_log-MSGID = 'ZDN_ERROR'. "這一個class要自己建wa_log-MSGNO = '001'.append wa_log to ct_log. "Error log寫入endif.endloop.ENDMETHOD.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/166523/viewspace-173519/,如需转载,请注明出处,否则将追究法律责任。

标签: s621传感器对应耗材设定

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台