S4 MIGO屏幕增强

news/2024/11/8 17:05:12/

1.创建结构和表

 结构:ZSMIGO_ITEM

 

 表类型:

 

表 :ZTMIGO_ITEM(用来保存增强字段的值)

 

2.创建函数组

 TOP里的代码:

FUNCTION-POOL zfg_migo.                     "MESSAGE-ID ..* INCLUDE LZFG_MIGOD...                      " Local class definitionTABLES :ztmigo_item.

ZMIGO_ITEM_GET_DATA  :行项目数据从screen->BADI

FUNCTION zmigo_item_get_data.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  EXPORTING
*"     REFERENCE(E_OUTPUT) TYPE  ZSMIGO_ITEM
*"----------------------------------------------------------------------MOVE-CORRESPONDING ztmigo_item  TO e_output.ENDFUNCTION.

ZMIGO_ITEM_SET_DATA:行项目数据从BADI->SCREEN

FUNCTION zmigo_item_set_data.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(I_INPUT) TYPE  ZSMIGO_ITEM
*"----------------------------------------------------------------------MOVE-CORRESPONDING  I_INPUT TO ztmigo_item.ENDFUNCTION.

ZMIGO_SAVE_DATA:将增强字段存到自定义表

FUNCTION zmigo_save_data.
*"----------------------------------------------------------------------
*"*"更新函数模块:
*"
*"*"本地接口:
*"  TABLES
*"      IT_ITEM STRUCTURE  ZTMIGO_ITEM
*"----------------------------------------------------------------------MODIFY ztmigo_item  FROM TABLE it_item[].IF sy-subrc <> 0.MESSAGE 'Error update  ZTMIGO_ITEM'  TYPE 'A'.ENDIF.ENDFUNCTION.

创建屏幕:用来显示增强的字段

 3.实施BADI:MB_MIGO_BADI

  1.属性

  

GT_EXTDATA	Instance Attribute	Private	Type	ZSMIGO_ITEM_T	MIGO行项目增强 	                                                                                                                                    
GT_EXTDATA_MAA	Instance Attribute	Private	Type	ZSMIGO_ITEM_T	MIGO行项目增强 	                                                                                                                                    
GF_CLASS_ID	Instance Attribute	Private	Type	MIGO_CLASS_ID	MIGO 组件的类标识 (外部细节屏幕)	'MIGO_BADI_IMPLEMENTATION1'
G_NO_INPUT	Instance Attribute	Private	Type	XFELD	复选框	                                                                                                                                    
G_CANCEL	Instance Attribute	Private	Type	XFELD	复选框	                                                                                                                                    
G_LINE_ID	Instance Attribute	Private	Type	MB_LINE_ID	凭证行的唯一标识	                                                                                                                                    

IF_EX_MB_MIGO_BADI~INIT

  METHOD if_ex_mb_migo_badi~init.APPEND gf_class_id TO ct_init.ENDMETHOD.

IF_EX_MB_MIGO_BADI~PBO_DETAIL

  METHOD if_ex_mb_migo_badi~pbo_detail.DATA ls_extdata TYPE zsmigo_item.CHECK i_class_id = gf_class_id.CHECK i_line_id <> 0.IF g_no_input IS INITIAL.e_cprog = 'SAPLZFG_MIGO'.   "'SAPL + 'FG Name'e_dynnr = '9001'.e_heading = '客户数据'.g_line_id = i_line_id.READ TABLE gt_extdata INTO ls_extdataWITH TABLE KEY line_id = i_line_id.
*CALL FUNCTION 'ZMIGO_ITEM_SET_DATA'EXPORTINGi_input = ls_extdata.ENDIF.ENDMETHOD.

IF_EX_MB_MIGO_BADI~PAI_DETAIL

  METHOD if_ex_mb_migo_badi~pai_detail.DATA: ls_extdata_new TYPE zsmigo_item,ls_extdata_old TYPE zsmigo_item.
*CHECK i_line_id <> 0.
*CALL FUNCTION 'ZMIGO_ITEM_GET_DATA'IMPORTINGe_output = ls_extdata_new.READ TABLE gt_extdata INTO ls_extdata_oldWITH TABLE KEY line_id = i_line_id.ls_extdata_new-line_id = i_line_id.IF ls_extdata_old <> ls_extdata_new.e_force_change = 'X'.ENDIF.ENDMETHOD.

IF_EX_MB_MIGO_BADI~LINE_MODIFY

  METHOD if_ex_mb_migo_badi~line_modify.DATA: ls_extdata_old      TYPE zsmigo_item,ls_extdata_new      TYPE zsmigo_item,ls_migo_badi_exampl TYPE ztmigo_item,l_subrc             TYPE sy-subrc.*
* Get external data from internal table:READ TABLE gt_extdata INTO ls_extdata_oldWITH TABLE KEY line_id = i_line_id.l_subrc = sy-subrc.IF l_subrc <> 0.IF NOT cs_goitem-mblnr IS INITIAL AND NOT cs_goitem-mjahr IS INITIALAND NOT cs_goitem-zeile IS INITIAL.SELECT SINGLE * FROM ztmigo_item INTO ls_migo_badi_examplWHERE mblnr = cs_goitem-mblnrAND mjahr = cs_goitem-mjahrAND zeile = cs_goitem-zeile.IF sy-subrc = 0.MOVE-CORRESPONDING ls_migo_badi_exampl TO ls_extdata_new.ENDIF.ENDIF.ls_extdata_new-line_id = i_line_id.INSERT ls_extdata_new INTO TABLE gt_extdata.ELSE.CHECK g_line_id = i_line_id.CALL FUNCTION 'ZMIGO_ITEM_GET_DATA'IMPORTINGe_output = ls_extdata_new.ls_extdata_new-line_id = i_line_id.MODIFY TABLE gt_extdata FROM ls_extdata_new.ENDIF.ENDMETHOD.

IF_EX_MB_MIGO_BADI~LINE_DELETE

  METHOD if_ex_mb_migo_badi~line_delete.DELETE TABLE gt_extdata WITH TABLE KEY line_id = i_line_id.ENDMETHOD.

IF_EX_MB_MIGO_BADI~RESET

  METHOD if_ex_mb_migo_badi~reset.CLEAR: gt_extdata,g_no_input,
*         gs_exdata_header,g_cancel,g_line_id.ENDMETHOD.

IF_EX_MB_MIGO_BADI~POST_DOCUMENT 

过账里面的逻辑不在这里写,写在此处只有前台可以触发,为了调bapi时也能触发,需要写在

     BADI:MB_DOCUMENT_BADI里面的方法:IF_EX_MB_DOCUMENT_BADI~MB_DOCUMENT_BEFORE_UPDATE


http://www.ppmy.cn/news/477313.html

相关文章

三星性能测试软件,13款软件压力测试 Galaxy S4性能体验

第1页:前言 第2页:第一轮测试&#xff1a;检阅综合性能 第3页:第二轮测试&#xff1a;考验CPU单元 第4页:第三轮测试&#xff1a;考验GPU单元(一) 第5页:第四轮测试&#xff1a;考验GPU单元(二) 第四轮测试&#xff1a;考验GPU单元(二) 除了这些国内用户耳熟能详的工具外&#…

S4 BP详解

ECC中客户和供应商是分开管理的&#xff0c;这种模式具有部分局限性&#xff1a; 客户和供应商不能是同一实体关系&#xff0c;建两个主数据会造成数据的冗余 客户/供应商只能有一个地址 属性无时间相关性 S4中使用BP业务伙伴模型解决这个问题(代替了传统的FD01/VD01/FK01/…

AntV G6 的坑之——从卡掉渣到满帧需要几步

AntV G6 是一款图可视化与分析开源引擎。《AntV G6 的坑之——XXX》系列文章持续更新中&#xff0c;总结常见问题及神坑解决方案。任何问题可在 GitHub Issue 中提问&#xff0c;求 GitHub Star ⭐️https://github.com/antvis/g6 原文链接&#xff1a;https://g6.antv.antgrou…

Android studio虚拟机联网

Android studio虚拟机联网 背景 最近由于需要调试老是使用真机每次都要链接太麻烦,我的大致思路是功能慢慢完善使用虚拟机调试,一个功能开发的差不多了再到真机上试一下,但是虚拟网络不同很是不爽,网上搜了一大堆要么不详细,要么不兼容,所以观者需要先看一下开发环境的版本和s…

AndroidStudio中虚拟机的联网问题

最近使用云数据库进行移动开发遇到了一些网络问题 报错1&#xff1a;在虚拟机页面的报错 尚未失败: Unable to resolve host “open.cctvcloud.cn” No address associated with hostname 解决&#xff1a;把校园网换成流量就好了…无语 关于虚拟机版本选择的联网 在遇到虚…

vmware虚拟机联网问题

linux虚拟机联网问题&#xff0c;首先你要确认你的网卡是不是支持虚拟化&#xff0c;很多联想的无线网卡&#xff0c;在使用vm虚拟网卡通信时都会出现问题&#xff0c;解决办法网上买块无限网卡&#xff0c;或者直接用有线网卡。 1、vm虚拟化网卡&#xff0c;虚拟机访问外网的…

win10系统VMware虚拟机联网问题解决及配置

1.右键“我的电脑”&#xff0c;选择“管理”&#xff0c;双击进入 2.找到“”服务“”这个选项&#xff0c;双击进入服务 3.找到如下两个服务&#xff0c;将这两个服务启动 4.打开VMware软件&#xff0c;打开虚拟机的编辑>虚拟网络配置器 5.点击更改配置 6.配置如…

虚拟机联网三种方式

写在最前&#xff1a; 据本人了解到的&#xff0c;虚拟机的联网方式一共有三种&#xff08;1.桥接、2.NAT、3.Host-Only&#xff09;&#xff0c;本人折腾了前两种&#xff0c;第三种希望研究的大佬分享下&#xff01; 知识普及&#xff1a; NAT: NAT模式中&#xff0c;就是…