设为首页 收藏本站
查看: 1698|回复: 0

[经验分享] 实战SAP USER EXIT MBCF0009 (摘)

[复制链接]
累计签到:4 天
连续签到:1 天
发表于 2015-9-21 00:59:44 | 显示全部楼层 |阅读模式
实战SAP USER EXIT MBCF0009
  SAP通过增强来实现用户自定义代码来增强原有的SAP系统程序, 一般有以下几种增强方式:
USER-EXIT  比较旧的增强方式通过实现在某个位置放置的过程函数来增强, 同一个增强点只能实现一次
Business-Add-ins 一种新的增强技术, 同一个增强点可以有多个不同的实现
Modifications   直接修改SAP系统代码增强
以下文档实现User-Exit增强, Business-Add-ins的实现可以参考我先前发过的文档:
http://www.itpub.net/thread-1202518-1-2.html
增强MBCF0009, 此函数实现可以控制物料异动的库存位置的控制,如:MIGO, MB1A发料时通过程序控制物料的库存位置
创建增强:
事务码CMOD, 也可以通过SMOD加入这个Exit, 但是用CMOD可以一次加入多个相关联的EXIT在一个项目以便于管理:
<ignore_js_op> DSC0000.png
创建项目ZMM01后点击 <ignore_js_op> DSC0001.png 将MBCF0009 Exit加入到此项目:
<ignore_js_op> DSC0002.png
点击 <ignore_js_op> DSC0003.png 查看它包含的组件,一个EXIT可能包含多个组件,可以只实现我们需要的那个组件:
<ignore_js_op> DSC0004.png
默认EXIT被禁用执行 <ignore_js_op> DSC0005.png 激活EXIT:
<ignore_js_op> DSC0006.png
双击 <ignore_js_op> DSC0007.png 实现EXIT:
<ignore_js_op> DSC0008.png
可以看到, 一个USER EXIT增强只不过是SAP在某个程序点上放置一个空函数,因为没有实现所以并没有代码执行,实现之后它就会调用这段代码以达到增强原有系统的功能.
  双击ZXMBCU09添加要实现的代码:
<ignore_js_op> DSC0009.png
以上是一个简单的示例, 它会修改所有物料的存储位置为0001, 如果你只想测试一下增强的效果,可以激活并运行MB1A输入一个发货检查程序是否可以正确工作
USER EXIT增强一般都是一个函数, SAP会按照某个增强所有实现的功能来传入不同的参数,如:
<ignore_js_op> DSC00010.png
EXPORT参数指示可以修改存储位置的值
<ignore_js_op> DSC00011.png
以下是一个示例程序, 检查输入的参数值来判断物料位置:
*&---------------------------------------------------------------------*
*&  Include           ZXMBCU09
*&---------------------------------------------------------------------*
DATA:
      mtart TYPE mara-mtart.
SELECT SINGLE mtart INTO mtart
  FROM mara
  WHERE matnr EQ i_mseg-matnr.  "查询物料类型
IF sy-subrc EQ 0.
  IF mtart EQ 'ROH'.   "当物料类型是ROH时设定库存位置为0107
    e_lgort = '0107'.
  ELSEIF mtart EQ 'FERT'. "当物料类型是FERT时设定库存位置CP03
    e_lgort = '0001'.
  ENDIF.
ENDIF.
激活程序后此增强即可完成, 测试程序是否工作:
事务码MB1A:
<ignore_js_op> DSC00012.png
<ignore_js_op> DSC00013.png
输入物料和数量后按Enter:
<ignore_js_op> DSC00014.png



2009-8-20 20:43 上传下载附件 (7.32 KB)
  
系统自动填入存储位置0107, 因为它的物料类型是ROH
<ignore_js_op> DSC00015.png
T-BZ12存储位置自动填入0001
  为了让程序更加灵活可以定义参数ID控制它的执行, 一个Parameter ID可以指派给一个用户,它对于SAP程序全局可用,可以为某个字段定义默认值使用,可以通过程序控制它的值以达到某个实用功能:
创建一个Parameter ID:
SM30
<ignore_js_op> DSC00016.png
点击 <ignore_js_op> DSC00017.png 出现创建ID的画面:
<ignore_js_op> DSC00018.png
输入一个参数ID号并确认, 系统提示输入描述:
<ignore_js_op> DSC00019.png
点击Save保存记录
我使用这个参数ID控制只有设定ID值为X后才执行自动设定库存位置:
修改用户信息填入参数ID资料, 事务码SU01:
<ignore_js_op> DSC00020.png
修改先前创建的增强程序检查参数ID信息:
*&---------------------------------------------------------------------*
*&  Include           ZXMBCU09
*&---------------------------------------------------------------------*
DATA:
      mtart TYPE mara-mtart,
      id    TYPE sy-repid.
GET PARAMETER ID 'Z02' FIELD id.  "获取参数ID值
IF id EQ 'X'.   "只有当用户有设定参数ID:Z02值为'X'时才会执行以下程序, 这样可以方便的控制EXIT执行
SELECT SINGLE mtart INTO mtart
  FROM mara
  WHERE matnr EQ i_mseg-matnr.
IF sy-subrc EQ 0.
  IF mtart EQ 'ROH'.
    e_lgort = '0107'.
  ELSEIF mtart EQ 'FERT'.
    e_lgort = '0001'.
  ENDIF.
ENDIF.
ENDIF.
完成. 以上程序在SAP IDES中ECC 6.0中测试并用于生产环境只不过程序代码有过更改.
User exit是SAP中比较旧的增强技术,可以通过BADI新的增强技术同样可实现这里所实现的功能, 如实现BADI: MB_MIGO_ITEM_BADI也可修改库存位置
  
  摘自:http://www.itpub.net/forum.php?mod=viewthread&tid=1206557

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-116361-1-1.html 上篇帖子: [转]ABAP Program to Display SAP Icons 下篇帖子: SAP中和计量单位有关的表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表