SAP操作手册之 MIGO屏幕增强

2021-10-30 19:59发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

点击蓝字 关注我们

前言

商品凭证是SAP ECC软件中最重要的单据之一. 项目中可能需要增强字段到商品凭证抬头和商品凭证明细中. 用于实现业务的特定需求. 一般单据增强字段都需要扩展两部分内容

  • BAPI调用部分

  • 标准屏幕部分

本文主要介绍商品凭证标准事务MIGO的屏幕增强


MIGO屏幕增强的实现效果

字段增强在表 MKPF  MSEG 中. (S4系统通过代理视图关联到MATDOC).



按采购订单收货时, 增强字段允许输入,保存后



显示商品凭证时,增强字段可以带出之前输入的内容


实现方式-数据定义

行项目字段增强包含两部分 

  • 通过财务配置COBL增强的字段

  • MSEG表单独扩展的字段

后文介绍以抬头字段为例, 行项目字段类似.

把要增强的抬头字段放到一个结构ZSMKPF中.



把该结构通过附加结构的方式扩展到标准表MKPF中



因为存在屏幕增强,视图调整,表增强等等. 在所有需要调整的表,视图,结构中嵌入结构 ZSMKPF. 这样后续ZSMKPF中新增的字段,所有需要的位置就会自动扩展.

图示:ZSMKPF的相关结构

图示:ZSMSEG的相关结构

S4系统的特殊处理

S/4系统中商品凭证数据整合到MATDOC中. 所以创建DDL视图用于扩展NSDM_E_MKPF. 扩展后, MKPF中增强的字段会添加到MATDOC中. 

MSEG需要做类似的处理.



这个扩展的视图是MKPF的代理对象(用SE16N可以看到这个关系)



用SE11可以看到 NSDM_V_MKPF 与 扩展的视图NSDM_E_MKPF的关系(同一个CDS视图的不同名称)


代码部分

创建一个独立的函数组,把相关的内容(函数,屏幕定义)放入该函数组

函数部分分为三组,用于通过函数组的全局变量传递数据.使用 MEMORY ID 可以达成相同的效果.

(其中函数 

Z_BC_MB_SAVE_MKPF_DB Z_BC_MB_SAVE_MSEG_DB

废弃不再使用)



增强部分

标准BADI  MB_MIGO_BADI

SE19中可以看这个BADI的示例代码. (图一)

大部分的逻辑按照示例代码即可. 只是需要把数据传递部分替换成自己定义的函数.

比如PAI_DETAIL中的示例代码使用的函数替换成自定义的函数(图二)

示例代码数据保存到自定义表,没有保存到标准表MKPF. 所以需要对示例代码做一个简单的调整. 调整POST部分.

IF_EX_MB_MIGO_BADI~POST_DOCUMENT

特别说明

SPRING

尝试把示例代码中修改自定义表的函数调整为更新MKPF/MSEG 是无效的. 原因: 这里 IN UPDATE TASK 提交的数据更改内容早于标准逻辑提交MKPF/MSEG的修改. 这样就导致变更的内容又被系统覆盖.

把示例程序中更新数据表的部分调整为通过函数全局变量传递数据.(图三)

图一

图二

图三



到另一个增强 

MB_DOCUMENT_BADI 

方法 

MB_DOCUMENT_BEFORE_UPDATE 

接收上述传递的内容



因为这个方法中的参数是传入参数, 方法中无法修改传入参数.

所以需要找到这个BADI的调用点. 通过下述逻辑调整调用点的内存变量


总结

上述过程完成后,就实现了MIGO的屏幕增强,并且增强字段放到标准表中(MKPF/MSEG->MATDOC).

标准BADI MB_MIGO_BADI 实现方式比较啰嗦,可能是因为标准商品凭证的复杂性导致的. 好在系统给出了一个示例程序. 熟练的开发仿照示例程序基本上就能实现屏幕增强.

只是要把增强字段内容保存到标准表有点麻烦. 文中采用了一个不太标准的方式,实际测试倒没啥问题. 如果你有更好的解决方案, 请不吝赐教.


THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)



公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077


公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群

赞赏支持