如何编写多client多公司的增强
在 sap的使用中,存在多个多个开发团队为不同 client进行开发维护,为了避免增强的影响,我们可以如下框架去编写增强
1)参照MV45AFZA创建一个程序为Y+XXXX+XX_MV45AFZA
XXXX=〉公司代码
XX=〉Modlue abbreviation
2) add Y+XXXX+XX before all form names to avoid form name conflict
For example
*---------------------------------------------------------------------*
* FORM USEREXIT_MOVE_FIELD_TO_KOMKD *
*---------------------------------------------------------------------*
* This userexit can be used to move some fields into the *
* communication workarea for product substitution. *
* *
* This form is called from form KOMKD_KOMPD_FUELLEN. *
* *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_KOMKD.
* KOMKD-zzfield = xxxx-zzfield2.
ENDFORM.
*---------------------------------------------------------------------*
* FORM USEREXIT_MOVE_FIELD_TO_KOMKG *
*---------------------------------------------------------------------*
* This userexit can be used to move some fields into the *
* communication workarea for product listing or exclusion. *
* *
* This form is called from form KOMKG_KOMPG_FUELLEN. *
* *
*---------------------------------------------------------------------*
form y0029sd_move_field_to_komkg.
* KOMKG-zzfield = xxxx-zzfield2.
endform.
3)add include statement into MV45AFZA
include y0000sd_mv45afza. "
include y0077sd_mv45afza. "
include y0076sd_mv45afza. "
include y0029sd_mv45afza. "
include y0031sd_mv45afza. "
*} INSERT*
************************************************************************
* *
* This include is reserved for user modifications *
* *
* Forms for sales document processing *
* *
* The name of modification modules should begin with 'ZZ'. *
* *
************************************************************************
*---------------------------------------------------------------------*
* FORM USEREXIT_MOVE_FIELD_TO_KOMKD *
*---------------------------------------------------------------------*
* This userexit can be used to move some fields into the *
* communication workarea for product substitution. *
* *
* This form is called from form KOMKD_KOMPD_FUELLEN. *
* *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_KOMKD.
* KOMKD-zzfield = xxxx-zzfield2.
ENDFORM.
4) add code depent company or client into Y+XXXX+XX_MV45AFZA
*---------------------------------------------------------------------*
* FORM USEREXIT_MOVE_FIELD_TO_KOMKD *
*---------------------------------------------------------------------*
* This userexit can be used to move some fields into the *
* communication workarea for product substitution. *
* *
* This form is called from form KOMKD_KOMPD_FUELLEN. *
* *
*---------------------------------------------------------------------*
form y0029sd_move_field_to_komkd.
perform xvbpa_lesen(sapfv45k) using 'ZH' vbap-posnr sy-tabix.
move xvbpa-kunnr to komkd-yyheadq.
DATA: BEGIN OF yhpath OCCURS 10.
INCLUDE STRUCTURE vbpavb.
DATA: END OF yhpath.
CLEAR: yhpath.
REFRESH: yhpath.
CALL FUNCTION 'SD_CUSTOMER_HIERARCHY_PATH'
EXPORTING
customer = vbak-kunnr "sold-to party
date = sy-datum "todays date
htype = 'A' "Customer hierarchy A
sales_channel = vbak-vtweg "distr. channel
sales_division = vbak-spart "division
sales_org = vbak-vkorg "sales org.
TABLES
hpath = yhpath
EXCEPTIONS
hityp_not_exist = 1
node_not_exist = 2
parvw_not_exist = 3
OTHERS = 4.
IF sy-subrc = 0.
LOOP AT yhpath.
CASE sy-tabix.
WHEN 1.
komkd-yy0000sd_hienr01 = yhpath-kunnr.
WHEN 2.
komkd-yy0000sd_hienr02 = yhpath-kunnr.
WHEN 3.
komkd-yy0000sd_hienr03 = yhpath-kunnr.
WHEN 4.
komkd-yy0000sd_hienr04 = yhpath-kunnr.
ENDCASE.
ENDLOOP.
ENDIF.
endform.
5) modify MV45AFZA source form code to check whether different company or client enhancement is active, If it is active, it is will be called
*---------------------------------------------------------------------*
* FORM USEREXIT_MOVE_FIELD_TO_KOMKD *
*---------------------------------------------------------------------*
* This userexit can be used to move some fields into the *
* communication workarea for product substitution. *
* *
* This form is called from form KOMKD_KOMPD_FUELLEN. *
* *
*---------------------------------------------------------------------*
FORM USEREXIT_MOVE_FIELD_TO_KOMKD.
* KOMKD-zzfield = xxxx-zzfield2.
*{ INSERT TASK900030 1
*{ INSERT TE1K900020 1
*** functionality: determine customer number of partner ZH (headquarter)
data: c_programm like y0000ca_userexit-yprogramm value 'MV45AFZA'.
data: c_funcname like y0000ca_userexit-yfuncname value
'USEREXIT_MOVE_FIELD_TO_KOMKD'.
data: w_programm like y0000ca_userexit-yprogramm.
data: w_funcname like y0000ca_userexit-yfuncname.
data: w_active like y0000ca_userexit-yactive.
data: w_subrc like sy-subrc.
data: w_mandt like sy-mandt.
*** check whether the user exit is activated for this client:
call function 'Y_0000CA_CHECK_USEREXIT'
exporting
pi_programm = c_programm
pi_funcname = c_funcname
importing
pe_programm = w_programm
pe_funcname = w_funcname
pe_active = w_active
pe_subrc = w_subrc.
*** if userexit is active execute it.
if sy-subrc = 0.
if ( w_active <> ' ' ) and ( w_subrc = 0 ).
w_mandt = sy-mandt. w_mandt+2(1) = '0'.
case w_mandt.
when '900' .
perform y0000sd_move_field_to_komkd.
* when '400' .
* perform y0077sd_move_field_to_komkd.
when '410' .
perform y0076sd_move_field_to_komkd.
when '440' .
perform y0031sd_move_field_to_komkd.
when others.
endcase.
endif.
endif.
*} INSERT
*} INSERT
ENDFORM.
*eject
6) 建立一个自定义表维护哪些增强已经激活
7)建立检查激活函数
FUNCTION y_0000ca_check_userexit.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(PI_PROGRAMM) LIKE Y0000CA_USEREXIT-YPROGRAMM
*" REFERENCE(PI_FUNCNAME) LIKE Y0000CA_USEREXIT-YFUNCNAME
*" EXPORTING
*" REFERENCE(PE_PROGRAMM) LIKE Y0000CA_USEREXIT-YPROGRAMM
*" REFERENCE(PE_FUNCNAME) LIKE Y0000CA_USEREXIT-YFUNCNAME
*" REFERENCE(PE_ACTIVE) LIKE Y0000CA_USEREXIT-YACTIVE
*" REFERENCE(PE_SUBRC) LIKE SY-SUBRC
*"----------------------------------------------------------------------
TABLES: y0000ca_userexit.
DATA: w_client LIKE y0000ca_userexit-ymandt.
*** first check whether the user exit is active in the current client:
w_client = sy-mandt.
SELECT SINGLE * FROM y0000ca_userexit CLIENT SPECIFIED
WHERE yprogramm = pi_programm
AND yfuncname = pi_funcname
AND ymandt = w_client.
*** if first check not successful check again with client xx0:
*** this client xx0 should exist in .
IF sy-subrc NE 0.
w_client+2(1) = '0'.
SELECT SINGLE * FROM y0000ca_userexit CLIENT SPECIFIED
WHERE yprogramm = pi_programm
AND yfuncname = pi_funcname
AND ymandt = w_client.
ENDIF.
*** if something was found return the values else only the return code:
pe_subrc = sy-subrc.
IF sy-subrc EQ 0.
pe_active = y0000ca_userexit-yactive.
pe_programm = y0000ca_userexit-yprogramm_exec.
pe_funcname = y0000ca_userexit-yfuncname_exec.
ELSE.
CLEAR: pe_active.
CLEAR: pe_programm.
CLEAR: pe_funcname.
ENDIF.
ENDFUNCTION.
如何编写多client多公司的增强相关推荐
- I2C driver编写指导二:编写i2c client driver指南
原文地址::http://blog.csdn.net/guoshaobei/archive/2010/06/08/5656001.aspx 译者:郭少悲 日期:2010/06/08 源文:linux- ...
- Google 公司的 Java 语言编写规范
为什么80%的码农都做不了架构师?>>> 大部分软件公司可能都有自己的代码编写规范,但是大部分的规范又是粗略到不行不行的,粗到可以忽略,粗略到不同人的代码可以各成一体,同时又符 ...
- SAP ECC 6.0有哪些增强功能
Ecc6.0和R/3 有什么区别? Ecc6.0增加了哪些新的功能? 这些功能是否比原来加强. 还是用起来更方便了, 或者更容易了? ECC6.0 MM模块增强功能描述 1. 跨系统的货物转储: 转储 ...
- SD功能增强业务说明书
1. 流程编码... 4 2. 流程简要描述... 4 3. 操作说明... 4 4.1. 销售合同... 4 1. 同步定价日期... 4 2. 单据附加数据 ...
- 10家最具创新性的机器学习公司
来源:资本实验室 摘要:机器学习是实现人工智能的一种方法,通过使用算法来解析数据.从中学习,然后对现实世界中的事件做出预测和判断.机器学习已经在各个行业得到广泛应用. 近日<Analytics ...
- SAP概念之Client(集团)
Client(集团)是SAP系统的一个组织单元/结构.该组织单元是最高层次的,也是所有实施SAP应用模块必须创建并维护的组织结构.每个Client在与其他业务.组织.技术等方面与其他Client都是独 ...
- 图文并茂——使用xfire编写webservice,并通过C#调用
.首先建立一个web service工程: 点击finish之后,myeclipse自动帮你生成services.xml以及web应用目录结构,其中的services.xml是你导出服务的配置文件,注 ...
- Teradata天睿公司推出适用各种部署环境的全球最强分析数据库
Teradata天睿公司(Teradata Corporation,纽交所:TDC)推出Teradata Everywhere™,成为业内首家在多种公有云.托管云和本地部署环境下部署全球最强海量并行处 ...
- PRD的编写竟然暗含这个思路
作者:高扬 来源:简书 一.PRD的用户是谁? 首先,与大家先分享一句话:把需求文档当成一个"互联网产品"去管理,理解它的用户,关注它的体验,不停迭代,使其价值最大化.(引用) ...
最新文章
- 2021年春季学期-信号与系统-第十次作业参考答案
- 运动想象脑机接口中迁移学习的完整流程
- 网站优化也逃不过“细节决定成败”定律
- 内存映射文件进行写文件和读文件有啥不同_Linux中的mmap映射 [二]
- java数据结构之枚举
- springboot 切换日志实现
- cocos2d-x初探学习笔记(7)--CCProgressTimer
- CF 1025C Plasticine zebra
- 太辛苦的钱,我建议不要挣
- Linux基本的网络配置
- 怎么画六面体网格_使用Abaqus完成网格重划分分析3网格到网格的解映射
- 编程语言对比 引用数据类型-列表
- php loadclass,Laravel如何实现自动加载类
- 年轻人正在双11掀起国潮热
- 网吧计费系统数据库修复/网吧收银系统数据库恢复
- presscad图层LIsp_统赢presscad2010免安装版 32位/64位
- 月薪翻20倍,从小编辑到百度高级产品经理,我是如何打怪升级的
- linux抓包查对方的mac地址,1.根据MAC地址抓包
- JAVA实现:居民电费阶梯式计价器
- 无线投屏(智慧教室)