增强的BADI是:MB_DOCUMENT_BADI,特别要注意的是假如你是想在点击保存按钮的时候根据生成的凭证号,把某些数据更新到你的自建表的话,要用第二个方法MB_DOCUMENT_UPDATE,调试可以在第一个方法MB_DOCUMENT_BEFORE_UPDATE里面调试,特别注意不能在方法MB_DOCUMENT_BEFORE_UPDATE里面写COMMIT WORK,因为两个方法的参数完全一样,所以可以在第一个方法那边调试,然后直接把所有的代码拷贝到第二个,要注意第二个方法打断点是无法进去的,但是他确实有执行,所以说只能在第一个方法那边调试,下面赋一段写的代码吧:

method if_ex_mb_document_badi~mb_document_update.
  data: gs_mseg type  mseg.
  data: gt_gdfh type table of ztmm_gdfh.
  data: gs_gdfh type ztmm_gdfh.

data: gt_gdth type table of ztmm_gdth.
  data: gs_gdth type ztmm_gdth.
  data: gt_lxjj type table of ztmm_lxjjgl.
  data: gs_lxjj type ztmm_lxjjgl.
  data: gs_mkpf type mkpf.
  if sy-tcode eq ‘MIGO’ or sy-tcode  eq ‘MB11′.
    read table xmkpf into gs_mkpf index 1.

loop at xmseg into gs_mseg.

if   gs_mseg-bwart eq ‘201′ and gs_mseg-sobkz eq ” .
        select single zgngo into gs_lxjj-zlxjjbm from marc where matnr eq gs_mseg-matnr and werks eq gs_mseg-werks.
        if sy-subrc eq 0.
          gs_lxjj-mblnr = gs_mseg-mblnr.
          gs_lxjj-matnr = gs_mseg-matnr.
          gs_lxjj-werks = gs_mseg-werks.
          gs_lxjj-bldat = gs_mkpf-bldat.
          append gs_lxjj to gt_lxjj.
        endif.
      endif.

if gs_mseg-werks eq ‘SD00′ and ( ( gs_mseg-bwart eq ‘201′ and gs_mseg-sobkz eq ” )  or  ( gs_mseg-bwart eq ‘201′ and gs_mseg-sobkz eq ‘K’ )
      or ( gs_mseg-bwart eq ‘221′ and gs_mseg-sobkz eq ‘Q’ ) or ( gs_mseg-bwart eq ‘251′ and gs_mseg-sobkz eq ” )
     or ( gs_mseg-bwart eq ‘251′ and gs_mseg-sobkz eq ‘K’ ) or ( gs_mseg-bwart eq ‘221′ and gs_mseg-sobkz eq ‘K’ ) ).
*      BREAK ZZWANGLP.

gs_gdfh-mblnr = gs_mseg-mblnr.
        gs_gdfh-mjahr = gs_mseg-mjahr.
        gs_gdfh-bldat = gs_mkpf-bldat.
        gs_gdfh-budat = gs_mkpf-budat.
        gs_gdfh-cpudt = gs_mkpf-cpudt.
        gs_gdfh-cputm = gs_mkpf-cputm.
        gs_gdfh-mblpo = gs_mseg-zeile.
        gs_gdfh-matnr = gs_mseg-matnr.
        gs_gdfh-menge = gs_mseg-menge.
        gs_gdfh-charg = gs_mseg-charg.
        gs_gdfh-lgort = gs_mseg-lgort.
        gs_gdfh-lgpla = gs_mseg-lgpla.
        gs_gdfh-dmbtr = gs_mseg-dmbtr.
        gs_gdfh-pspel   = gs_mseg-ps_psp_pnr.
        gs_gdfh-zdj   = gs_gdfh-dmbtr / gs_gdfh-menge.“单价=(本位币金额/发放数量)
**序列号:通过MBLNR&MJAHR& MBLPO在表SER03中找到OBKNR,再通过OBKNR在表OBJK找到SERNR作为序列号更新到表ZTMM_GDFH
*        SELECT SINGLE SERNR INTO GS_GDFH-SERNR FROM OBJK
*          JOIN SER03 ON SER03~OBKNR = OBJK~OBKNR
*        WHERE MBLNR EQ GS_MSEG-MBLNR AND MJAHR EQ GS_MSEG-MJAHR AND ZEILE EQ GS_MSEG-ZEILE.

*      供应商:通过CHARG在表MCHA找到LIFNR
        select single lifnr into gs_gdfh-lifnr from mcha where charg eq gs_gdfh-charg and matnr eq gs_gdfh-matnr and werks eq ‘SD00′.
*      合同号:通过CHARG在表EKBE中找到EBELN,再通过EBELN在表EKKO找到SUBMI。
        select single submi into gs_gdfh-submi from ekko
          join ekbe on ekbe~ebeln = ekko~ebeln
        where charg eq gs_gdfh-charg and matnr eq gs_gdfh-matnr and werks eq ‘SD00′.

*       采购订单及行号:通过CHARG在表EKBE中找到EBELN,再通过EBELN在表EKPO找到EKPO-EBELP。
        select single ekbe~ebeln ebelp into (gs_gdfh-ebeln,gs_gdfh-ebelp)
          from ekko
          join ekbe on ekbe~ebeln = ekko~ebeln
          where charg eq gs_gdfh-charg and matnr eq gs_gdfh-matnr and werks eq ‘SD00′.“EBELP EQ GS_MSEG-ZEILE.

*    依据预留编号及预留项目编号作为关键字段,在表ZTMM_GDXX找到工单、作业工种(工序)、工单行号字段
        select single zgd zgx zhxmbh into (gs_gdfh-zgd,gs_gdfh-zgx,gs_gdfh-zgdhh) from ztmm_gdxx where rsnum eq gs_mseg-rsnum and rspos eq gs_mseg-rspos.
        if sy-subrc ne 0.
          clear gs_gdfh.
        else.
          gs_gdfh-zyfh = ‘X’.
          append gs_gdfh to gt_gdfh.
        endif.

endif.

if gs_mseg-werks eq ‘SD00′ and ( ( gs_mseg-bwart eq ‘202′ and gs_mseg-sobkz eq ” ) or ( gs_mseg-bwart eq ‘202′ and gs_mseg-sobkz eq ‘K’ )  or  ( gs_mseg-bwart eq ‘222′ and gs_mseg-sobkz eq ‘Q’ )
          or ( gs_mseg-bwart eq ‘252′ and gs_mseg-sobkz eq ” ) or ( gs_mseg-bwart eq ‘222′ and gs_mseg-sobkz eq ‘K’ )
         or ( gs_mseg-bwart eq ‘252′ and gs_mseg-sobkz eq ‘K’ ) ).“OR ( GS_MSEG-BWART EQ ’242′ AND GS_MSEG-SOBKZ EQ ” )dete by libin 20120516 bc songwenbin
*      BREAK ZZWANGLP.

gs_gdth-mblnr = gs_mseg-mblnr.
        gs_gdth-mjahr = gs_mseg-mjahr.
        gs_gdth-bldat = gs_mkpf-bldat.
        gs_gdth-budat = gs_mkpf-budat.
        gs_gdth-cpudt = gs_mkpf-cpudt.
        gs_gdth-cputm = gs_mkpf-cputm.
        gs_gdth-mblpo = gs_mseg-zeile.
        gs_gdth-matnr = gs_mseg-matnr.
        gs_gdth-menge = gs_mseg-menge.
        gs_gdth-charg = gs_mseg-charg.
        gs_gdth-lgort = gs_mseg-lgort.
        gs_gdth-lgpla = gs_mseg-lgpla.
        gs_gdth-dmbtr = gs_mseg-dmbtr.
        gs_gdth-pspel   = gs_mseg-ps_psp_pnr.
        gs_gdth-zdj   = gs_gdth-dmbtr / gs_gdth-menge.“单价=(本位币金额/发放数量)
**序列号:通过MBLNR&MJAHR& MBLPO在表SER03中找到OBKNR,再通过OBKNR在表OBJK找到SERNR作为序列号更新到表ZTMM_GDFH
*        SELECT SINGLE SERNR INTO GS_GDFH-SERNR FROM OBJK
*          JOIN SER03 ON SER03~OBKNR = OBJK~OBKNR
*        WHERE MBLNR EQ GS_MSEG-MBLNR AND MJAHR EQ GS_MSEG-MJAHR AND ZEILE EQ GS_MSEG-ZEILE.

*    依据预留编号及预留项目编号作为关键字段,在表ZTMM_GDXX找到工单、作业工种(工序)、工单行号字段
        select single zgd zgx zhxmbh into (gs_gdth-zgd,gs_gdth-zgx,gs_gdth-zgdhh) from ztmm_gdxx where rsnum eq gs_mseg-rsnum and rspos eq gs_mseg-rspos.
        if sy-subrc ne 0.
          clear gs_gdfh.
        else.
          gs_gdth-zyfh = ‘X’.
          append gs_gdth to gt_gdth.
        endif.
      endif.
    endloop.
    if gt_gdfh is not initial.
      modify ztmm_gdfh from table gt_gdfh.
    endif.
    if gt_gdth is not initial.
      modify ztmm_gdth from table gt_gdth.
    endif.
    if gt_lxjj is not initial.
      modify ztmm_lxjjgl from table gt_lxjj.
    endif.

endif.
endmethod.

SAP ABAP收货或者货物移动(MIGO,MB11,MB1A)在保存时候的增强点相关推荐

  1. SAP 评估收货结算(ERS)

    评估收货结算(ERS): 事务代码:MRRL ERS:SAP支持后台自动批量发票校验,发票校验不需要MIRO中每个手工输入. 业务场景: 公司业务量大,每月底需要核对多个供应商发票.可以采取线下人工核 ...

  2. SAP 通过收货上架凭证流浅析MM-WM集成应用

    MM-WM的集成应用在系统中是如何实现的?本文以实际公司MM中收货--WM上架处理来简单梳理其过程及关联性. MM中通过MIGO收货后,产生收货物料凭证.注意,收货时会指定库位,如果某库位在WM中相关 ...

  3. SAP 基于收货的发票校验 GR-Based IV

    1.不勾选GR-based IV(基于收货的发票验证) ME21N创建采购订单时不勾选GR-based IV: MIGO先做多笔收货,在做发票:       MIRO发票验证: 由上可知,(1).若不 ...

  4. SAP中收货到WM库位和非WM管理库位的区别应用实例

    在的MM和WM模块的公司中,很多时候如果关联到WM中的仓库移动,MM中的动作相应就会产生一些关联的信息或动作:如本例中MIGO对同一物料收货到不同库位(带WM管理库位和不带WM管理库位)后,用MB51 ...

  5. SAP BAPI_GOODSMVT_CREATE收货时序列号传入

    用到的是MIGO对应的BAPI:BAPI_GOODSMVT_CREATE 序列号是通过创建物料凭证时,BAPI下的GOODSMVT_SERIALNUMBER结构传入. 对应前台的界面如下: 代码如下: ...

  6. 【测试】SAP 委外加工收货BAPI Demo

    一.创建委外采购订单(事务代码ME21N) 二.将所需材料发货至供应商处(事务代码MB1B) 查看供应商库存报表(事务代码MBLB) 三.委外PO的收货(这里使用BAPI_GOODSMVT_CREAT ...

  7. SAP中收货没有产生检验批库存的原因分析推测实例

    近期接到用户反馈,在QM和MM的集成应用中,收化产生检验批之后,没有相应产生检验批库存. 首先,在对比中发现(己标记)除了没有检验批库存标签外,系统状态也有所不同,少一个SPCO. 试试打开详细的系统 ...

  8. SAP 委外加工-收货异常处理

    在做委外加工-收货时报以下错误: (1).对于移动类型543和帐户41010901 资产报废 (016)的不同的字段选择 这是因为,在移动类型屏幕上,给定的字段是必需输入的字段,但是在总帐科目屏幕上, ...

  9. SAP收货后更改采购单价格

    采购单部分收货或者完全收货后,仍然可以更改价格.这是SAP系统的标准设置.这一点的意义究竟何在呢?收完货再改价格,影响到了什么?为什么允许这么做? 当然SAP提供了一些增强,可以自己写一些代码来控制收 ...

最新文章

  1. 在失败中学习,MIT新研究显示,机器可以像婴儿一样学会理解人类目标
  2. 【无套路送书】架构师是怎样炼成的?
  3. ObjectAnimator属性动画应用demo
  4. 第八届蓝桥杯-日期问题
  5. 记录第二次遇到ERROR! MySQL server PID file could not be found!
  6. c++ lamda表达式调用自身实现定时器
  7. android 深色主题背景适配原理剖析
  8. storm配置:如何解决worker进程内存过小的问题
  9. rocketMq消息重复消费问题
  10. Qt moc文件缺少“stdafx.h”异常
  11. MTCNN论文翻译 人脸检测
  12. DataGrip连接MySQL报错: Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezon
  13. 关于Gradle新版插件依赖方式
  14. eclipse取消默认工作空间的两种方法
  15. 市政管网检测机器人收费标准_淮安市金湖县市政管道机器人检测怎么收费
  16. 基于Android平台im软件开发,基于Android平台IM软件多媒体数据传输保护
  17. 公众号榜单 | 2020·6月公众号行业排行榜重磅发布
  18. 切换双屏之后应用不显示在桌面的问题
  19. (转载)MATLAB机器人运动学与动力学
  20. vue中使用day.js(时间日期处理库)

热门文章

  1. PMCAFF 八周年老友会倒计时 | 北京活动
  2. 征集活动 | PMCAFF八周年,十万产品经理送祝福
  3. BUAA_OO第三单元作业总结——JML
  4. 解决Yum下载慢 的问题
  5. JAVA模拟HTTP post请求上传图片
  6. dede DedeTag Engine Create File False
  7. MySQL常用数据类型小结
  8. 志愿怎么填?洞察应届毕业生就业形式,把握未来求职方向 | 易观千帆行业案例
  9. API接口让呼叫中心渠道,变更加全面丰富
  10. 赴马来西亚旅游遇车祸 70岁中国籍老人不幸身亡