SAP MIGO屏幕增强的具体实施步骤介绍(SE19:MB_MIGO_BADI) <转载>

news2024/11/24 8:50:59

原文链接:https://mp.weixin.qq.com/s/cDoKsc3nBPMa0GRTtQawHw

在SAP/ERP项目实施中经常会遇到MIGO屏幕增强的需求,就是要在MIGO标准屏幕的抬头或行项目中添加一个客制化页签,在增强页签下增加一些字段供用户录入一些额外信息,比如如下需求:

在MIGO界面的抬头和项目都增加一个【备注信息】字段(如下图),用于做MIGO操作时候录入一些备注信息。
在这里插入图片描述

下面详细介绍下这个需求的具体增强实施步骤:

1.MIGO抬头屏幕增强具体增强实施步骤

1.1.创建存储抬头客制化数据的增强表
在这里插入图片描述
1.2.创建增强结构
在这里插入图片描述
1.3.创建函数组ZMM_MIGO
在这里插入图片描述
1.3.1.定义全局变量
在这里插入图片描述
1.3.2.创建数据处理函数

ZMIGO_H_GET_DATA
在这里插入图片描述
在这里插入图片描述
ZMIGO_H_SET_DATA
在这里插入图片描述
在这里插入图片描述
ZMIGO_SET_GOACTION
在这里插入图片描述
ZMIGO_UPDATE_DATA
在这里插入图片描述
在这里插入图片描述
1.4.创建字屏幕9001
在这里插入图片描述
在这里插入图片描述

屏幕PBO在这里插入图片描述
在这里插入图片描述

  loop at screen.

    if screen-group1 = 'G1' AND g_goaction =  'A04'.
          screen-input = 0 .
          modify screen.
    endif.
  endloop.

1.5.实施新BADI增强

SE19创建BADI实施
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
双击实施类ZCL_MIGO_EN_01
在这里插入图片描述
IF_EX_MB_MIGO_BADI~INIT
在这里插入图片描述
IF_EX_MB_MIGO_BADI~RESET
在这里插入图片描述
IF_EX_MB_MIGO_BADI~POST_DOCUMENT
在这里插入图片描述

method if_ex_mb_migo_badi~post_document.

  if is_head is not initial.

    data: wa_head type zstr_mkpf.
    wa_head-mandt = sy-mandt.
    wa_head-mblnr = is_mkpf-mblnr.
    wa_head-mjahr = is_mkpf-mjahr.
    wa_head-zmark = is_head-zmark.

    call function 'ZMIGO_UPDATE_DATA' in update task
      exporting
        i_head = wa_head.
  endif.

endmethod.

IF_EX_MB_MIGO_BADI~MODE_SET
在这里插入图片描述

method IF_EX_MB_MIGO_BADI~MODE_SET.

if i_action = 'A03' or i_action = 'A04' .
    g_no_input = abap_true.
  endif.
  if i_action = 'A03'.
    g_cancel = abap_true.
  endif.

call function 'ZMIGO_SET_GOACTION'
    exporting
      i_goaction = i_action.

endmethod.

IF_EX_MB_MIGO_BADI~STATUS_AND_HEADER
在这里插入图片描述

method if_ex_mb_migo_badi~status_and_header.

  if is_gohead-mblnr is not initial and is_gohead-mjahr is not initial and is_head is initial.

    select single * from ztab_mkpf into is_head
          where mblnr = is_gohead-mblnr and mjahr = is_gohead-mjahr.

  endif.

endmethod.

IF_EX_MB_MIGO_BADI~PBO_HEADER
在这里插入图片描述


method IF_EX_MB_MIGO_BADI~PBO_HEADER.

IF gf_class_id = i_class_id.
     CALL FUNCTION 'ZMIGO_H_SET_DATA'
       EXPORTING
         i_input = is_head.
     e_cprog = 'SAPLZMM_MIGO'.      "'SAPL' + 'FG Name'
     e_dynnr = '9001'.
     e_heading = '客户数据(抬头增强屏幕)'(001).
   ENDIF.

endmethod.

IF_EX_MB_MIGO_BADI~PAI_HEADER
在这里插入图片描述

method if_ex_mb_migo_badi~pai_header.
  data: wa_head type zstr_mkpf.
  call function 'ZMIGO_H_GET_DATA'
    importing
      e_output = wa_head.
  is_head = wa_head.
endmethod.

1.6.增强效果确认
在这里插入图片描述
2.MIGO项目行屏幕增强具体增强实施步骤

2.1.创建存储行项目客制化数据的增强表
在这里插入图片描述
2.2.增强结构

在这里插入图片描述
2.3.创建增强数据表类型结构
在这里插入图片描述
在这里插入图片描述
2.4.新建Function Group

定义全局变量
在这里插入图片描述
ZMIGO_I_GET_DATA
在这里插入图片描述
在这里插入图片描述
ZMIGO_I_SET_DATA
在这里插入图片描述
在这里插入图片描述
创建函数ZMIGO_UPDATE_DATA(抬头/行项目:更新数据到数据库 )
在这里插入图片描述
在这里插入图片描述


function zmigo_update_data.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_HEAD) TYPE  ZSTR_MKPF OPTIONAL
*"  TABLES
*"      IT_ITEM STRUCTURE  ZTAB_MESG
*"----------------------------------------------------------------------
  data : wa_head type zstr_mkpf.
  if i_head is not initial .
    wa_head = i_head .
    modify ztab_mkpf from wa_head.
  endif.
  if it_item[] is not initial .
    modify ztab_mesg from table it_item[] .
  endif.

endfunction.

ZMIGO_SET_GOACTION
在这里插入图片描述
在这里插入图片描述
2.6.创建屏幕
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

module STATUS_9002 output.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.

  loop at screen.

    if screen-group1 = 'G1' and g_goaction =  'A04'.
      screen-input = 0 .
      modify screen.
    endif.
  endloop.

endmodule.

2.7.创建BADI实施(具体步骤见前文)

使用事务码SE19创建BADI实施
在这里插入图片描述
双击实施类ZCL_MIGO_EN_01

在这里插入图片描述
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.

  if gf_class_id = i_class_id.
    data: wa_item type zstr_mesg.

    check i_line_id is not initial.
    e_cprog = 'SAPLZMM_MIGO'(001).   "'SAPL + 'FG Name'
    e_dynnr = '9002'.
    e_heading = '客户字段(项目增强屏幕)'.
    g_line_id = i_line_id.
    read table it_item into wa_item with key line_id = i_line_id.

    call function 'ZMIGO_I_SET_DATA'
      exporting
        i_input = wa_item.
  endif.

endmethod.

IF_EX_MB_MIGO_BADI~PAI_DETAIL


method if_ex_mb_migo_badi~pai_detail.

  data: wa_item_new type zstr_mesg,
        wa_item_old type zstr_mesg.

  check i_line_id <> 0.

  call function 'ZMIGO_I_GET_DATA'
    importing
      e_output = wa_item_new.

  read table it_item into wa_item_old with  key line_id = i_line_id.
  if wa_item_new <> wa_item_old.
    e_force_change = 'X'.
  endif.

endmethod.

IF_EX_MB_MIGO_BADI~LINE_MODIFY


method if_ex_mb_migo_badi~line_modify.

  data: wa_item_new    type zstr_mesg,
            wa_item_old    type zstr_mesg,
            wa_ztmm_migo01 type ztab_mesg,
            l_subrc        type sy-subrc.

  read table it_item into wa_item_old with key line_id = i_line_id.
  l_subrc = sy-subrc.
  if sy-subrc <> 0.
    if cs_goitem-mblnr is not initial
      and cs_goitem-mjahr is not initial
      and cs_goitem-zeile is not initial.

      select single * from ztab_mesg
      into wa_ztmm_migo01
      where mblnr = cs_goitem-mblnr
        and mjahr = cs_goitem-mjahr
        and zeile = cs_goitem-zeile.

      if wa_ztmm_migo01 is not initial.
        move-corresponding wa_ztmm_migo01 to wa_item_new.
      endif.
    endif.

    wa_item_new-line_id = i_line_id.
    insert wa_item_new into table it_item.
  else.
    check g_line_id = i_line_id.
    call function 'ZMIGO_I_GET_DATA'
      importing
        e_output = wa_item_new.

    modify it_item from wa_item_new transporting zmark  where line_id = i_line_id.
  endif.


endmethod.

IF_EX_MB_MIGO_BADI~LINE_DELETE

method IF_EX_MB_MIGO_BADI~LINE_DELETE.
DELETE it_item WHERE line_id = i_line_id.
endmethod.

IF_EX_MB_MIGO_BADI~RESET

method IF_EX_MB_MIGO_BADI~RESET.
clear : is_head, g_no_input, g_cancel, g_line_id.
endmethod.

IF_EX_MB_MIGO_BADI~POST_DOCUMENT


method if_ex_mb_migo_badi~post_document.

*MIGO屏幕抬头增强表更新
  if is_head is not initial.
    data: wa_head type zstr_mkpf.
    wa_head-mandt = sy-mandt.
    wa_head-mblnr = is_mkpf-mblnr.
    wa_head-mjahr = is_mkpf-mjahr.
    wa_head-zmark = is_head-zmark.

    call function 'ZMIGO_UPDATE_DATA' in update task
      exporting
        i_head = wa_head.
  endif.

*MIGO屏幕项目增强表更新

  data:   wa_ztmm_migo01 type ztab_mesg,
          lt_ztmm_migo01 type table of ztab_mesg,
          wa_item        type zstr_mesg,
          wa_mseg        type mseg.

  if it_item is not initial.
    loop at it_item into wa_item.
      if g_cancel is initial.
        read table it_mseg into wa_mseg
          with key line_id = wa_item-line_id.
      else.
        read table it_mseg into wa_mseg
          with key smbln = wa_item-mblnr
                   smblp = wa_item-zeile
                   sjahr = wa_item-mjahr.
      endif.
      if sy-subrc is initial.
        move-corresponding wa_item to wa_ztmm_migo01.
        move-corresponding wa_mseg to wa_ztmm_migo01.
        append wa_ztmm_migo01 to lt_ztmm_migo01.
      endif.
    endloop.
    call function 'ZMIGO_UPDATE_DATA' in update task
      tables
        it_item = lt_ztmm_migo01.
  endif.

endmethod.

IF_EX_MB_MIGO_BADI~MODE_SET


method IF_EX_MB_MIGO_BADI~MODE_SET.

if i_action = 'A03' or i_action = 'A04' .
    g_no_input = abap_true.
  endif.
  if i_action = 'A03'.
    g_cancel = abap_true.
  endif.

call function 'ZMIGO_SET_GOACTION'
    exporting
      i_goaction = i_action.

endmethod.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2046011.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第338题比特位计数

题目&#xff1a; 题解&#xff1a; int* countBits(int n, int* returnSize) {int* bits malloc(sizeof(int) * (n 1));*returnSize n 1;bits[0] 0;for (int i 1; i < n; i) {bits[i] bits[i & (i - 1)] 1;}return bits; }

公钥基础设施PKI

数字证书的生成方式&#xff1a; 第一步&#xff0c;密钥生成。有两种方法&#xff0c;一是主体可以用某个软件生成的公钥/私钥对&#xff0c;主体要使生成的私钥保密&#xff0c;然后把公钥和其他信息与身份证明发送给注册机构。二是注册机构也可以为主体生成密钥对&#xff…

前端工程师如何快速入门鸿蒙开发?

在当今科技飞速发展的时代&#xff0c;前端工程师们面临着不断拓展技能边界的挑战。随着鸿蒙操作系统的崛起&#xff0c;掌握鸿蒙开发成为了前端工程师们提升自身竞争力的重要途径。那么&#xff0c;前端工程师如何才能快速入门鸿蒙开发呢? 一、了解鸿蒙开发的基础知识 前端工…

mybatis xml 动态sql相关语法

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"com.xiaKangan.mapper.EmpMapper&qu…

定期修改密码竟然导致好几任运维小哥离职

某云服务商为政企客户提供私有云服务&#xff0c;每朵云里交换机、服务器、防火墙等网络/安全设备可多达数百台&#xff0c;而该企业仅有二、三十名运维人员&#xff0c;每人要负责2-3朵云的运维管理工作。当前&#xff0c;设备管理存在一些重大安全隐患&#xff0c;主要体现在…

微服务架构的未来发展趋势

文章目录 摘要引言当前发展趋势ServerlessService MeshAIOps 未来可能出现的挑战代码示例微服务架构示例 QA环节小结未来展望参考资料 摘要 微服务架构在软件开发中已经成为主流&#xff0c;但随着市场需求和技术环境的快速变化&#xff0c;微服务架构也在不断演进。本文将分析…

在线教育新突破:Codigger 视频会议的实战案例

在当今数字化时代&#xff0c;在线教育如同一颗璀璨的新星&#xff0c;迅速崛起并照亮了知识传播的新路径。然而&#xff0c;随着竞争的加剧&#xff0c;如何提升教学质量和增强互动性&#xff0c;成为了在线教育机构亟待解决的难题。这时候&#xff0c;视频会议的出现就如同一…

【python】Matplotlib+LaTeX绘图 字符加粗 || 代码合集

【start&#xff1a;240814】 文章目录 动机Matplotlib库调用报错 LaTeX 模式安装使用配置属性&#xff1a;text.latex.preamble属性简介amsmathtextcomp 非LaTeX 模式配置属性&#xff1a;mpl.rcParams[...] 字符加粗&#xff08;label&#xff09;非LaTeX模式&#xff08;关闭…

英飞凌高压侧智能电源开关:BSP762T中文资料书

描述&#xff1a; 集成垂直功率FET的高压侧电源开关&#xff0c;提供嵌入式保护和诊断功能。 特性 - 过载保护 - 电流限制 - 短路保护 - 带重启功能的热关断 - 过压保护&#xff08;包括负载转储&#xff09; - 电感负载快速消磁 - 电池反向保护&#xff0c;带外部电阻 - CMOS兼…

【手撕数据结构】Topk问题

目录 题目思路代码 题目 TOP-K问题&#xff1a;即求数据结合中前K个最⼤的元素或者最⼩的元素&#xff0c;⼀般情况下数据量都⽐较⼤。 ⽐如&#xff1a;专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 对于Top-K问题&#xff0c;能想到的最简单直接的⽅式就是排序…

智联云采 SRM2.0 runtimeLog/download 任意文件读取漏洞复现

0x01 产品简介 智联云采是一款针对企业供应链管理难题及智能化转型升级需求而设计的解决方案&#xff0c;针对企业供应链管理难题&#xff0c;及智能化转型升级需求&#xff0c;智联云采依托人工智能、物联网、大数据、云等技术&#xff0c;通过软硬件系统化方案&#xff0c;帮…

Python 中的 SHAP 简介

本文中有多篇计划文章&#xff0c;后期会补充相关链接。鉴于公众号内无法后期修改文章&#xff0c;请关注原文链接。 如何创建和解释 SHAP 图&#xff1a;瀑布图、力图、平均 SHAP 图、蜂群图和依赖图 可直接在橱窗里购买&#xff0c;或者到文末领取优惠后购买&#xff1a; SHA…

iOS替代商店AltStore PAL获得EPIC的资助 即日起取消1.5欧元的年度订阅费

知名游戏开发商 EPIC 日前宣布通过 EPIC MegaGrant 计划向 iOS 替代商店 AltStore PAL 进行捐赠&#xff0c;该商店是在欧盟市场经过苹果批准的合规的第三方应用商店。 按苹果规定第三方替代商店需要缴纳核心技术费并且没有豁免条款&#xff0c;因此该商店每被一名用户安装&am…

RIP学习笔记

1.RIP简介 Rip&#xff1a;routing information protocol&#xff0c;路由信息协议。属于动态路由协议的一种。 RIP是应用较早、使用较普遍的内部网关协议(InteriorGatewayProtocol,简称IGP)&#xff0c;适用于小型同类网络&#xff0c;是典型的距离向量(distance-vector)协议…

OKR 与 KPI 的区别

OKR出现后&#xff0c;大家经常会拿KPI与之一起比较&#xff0c;结果两级分化&#xff1a;爱KPI的一如既往KPI&#xff0c;把OKR说的一无是处。爱OKR的&#xff0c;搞起了“去KPI”化。Tita作为OKR应用软件的服务商&#xff0c;我们也必须对OKR和KPI有充分的理解。对此我认真做…

Ubuntu离线安装docker

查看操作系统版本&#xff1a; rootzyh-VMware-Virtual-Platform:~/install# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04 LTS Release: 24.04 Codename: noble rootzyh-VMware-Virtual-Platform:~/install#…

微服务架构设计中的常见的10种设计模式

微服务架构设计的概念 微服务架构&#xff08;Microservices Architecture&#xff09;是一种用于构建分布式系统的软件设计模式。它将大型应用程序拆分成一组小型、自治的服务&#xff0c;每个服务都运行在其独立的进程中&#xff0c;服务之间通过轻量级的通信机制&#xff08…

重塑商业生态:技术驱动下的批发供应系统开发与革新

在当今这个快速变化的商业环境中&#xff0c;批发供应系统作为连接生产商、分销商与零售商的关键纽带&#xff0c;其效率与智能化水平直接影响着整个供应链的运作效率与市场竞争力。随着信息技术的飞速发展&#xff0c;特别是大数据、云计算、人工智能&#xff08;AI&#xff0…

D. 二进制

1.题意&#xff1a;给出2中操作 1)&#xff1a;将段排序 2)&#xff1a;将段输出为十进制数 思路&#xff1a; 1.考虑第一种操作。只需要查询l-r中1的个数即可。如果递增&#xff0c;则中为1&#xff0c;否则中为1&#xff0c;需要一个覆盖tag 2.考虑如何维护十进制的值。…

基于Java的美妆购物网站的设计与实现

TOC springboot323基于Java的美妆购物网站的设计与实现 第1章 绪论 1.1选题动因 当前的网络技术&#xff0c;软件技术等都具备成熟的理论基础&#xff0c;市场上也出现各种技术开发的软件&#xff0c;这些软件都被用于各个领域&#xff0c;包括生活和工作的领域。随着电脑和…