MIGO行项目屏幕增强

MIGO行项目屏幕增强
一、增强描述
  1. 由于在事务码MIGO中存在的字段中没有能够满足客户需求的字段,所以需要在事务码MIGO的屏幕中添加一个新的页签用来保存物料凭证中行项目增加的字段。

  2. 通过查找BADI的程序ZDEMO_BADI,输入参数MIGO后,得到对应BADI为MB_MIGO_BADI。

    在这里插入图片描述

二、增强步骤
  1. 创建增强数据表和增强结构

    • 创建增强数据存储表。

      在这里插入图片描述

    • 创建增强数据结构

      在这里插入图片描述

    • 创建增强数据表类型结构。

      在这里插入图片描述

  2. 创建增强屏幕

    • 新建Function Group,定义全局变量。

      在这里插入图片描述

    • 创建函数ZMM_I_GET_DATA(行项目:从屏幕获取数据)

      在这里插入图片描述

      在这里插入图片描述

    • 创建函数ZMM_I_SET_DATA(行项目:输出数据到屏幕)

      在这里插入图片描述

      在这里插入图片描述

    • 创建函数ZMM_UPDATE_DATA(抬头/行项目:更新数据到数据库 )

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

    • 创建函数ZMM_SET_GOACTION(抬头/行项目:设置屏幕Action Code)

      在这里插入图片描述

      在这里插入图片描述

  3. 创建行项目子屏幕9000

    • 创建屏幕9000.

      在这里插入图片描述

    • 创建屏幕字段根据自建表的增强字段命名。

      在这里插入图片描述

    • 给屏幕创建PBO事件。

      在这里插入图片描述

  4. 创建BADI实施

    • 使用事务码SE19创建BADI实施,最后一步建立空类。

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

    • 新增实施类属性

      在这里插入图片描述

    • 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 zsmm_migo01.
      
            CHECK i_line_id IS NOT INITIAL.
            e_cprog = 'SAPLZMM_MIGO01'(001).   "'SAPL + 'FG Name'
            e_dynnr = '9000'.
            e_heading = 'Item Addition1'.
            g_line_id = i_line_id.
            READ TABLE it_item INTO wa_item WITH KEY line_id = i_line_id.
      
            CALL FUNCTION 'ZMM_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 zsmm_migo01,
                wa_item_old TYPE zsmm_migo01.
      
          CHECK i_line_id <> 0.
      
          CALL FUNCTION 'ZMM_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 zsmm_migo01,
                wa_item_old    TYPE zsmm_migo01,
                wa_ztmm_migo01 TYPE ztmm_migo01,
                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 ztmm_migo01
              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 'ZMM_I_GET_DATA'
              IMPORTING
                e_output = wa_item_new.
      
            MODIFY it_item FROM wa_item_new TRANSPORTING ztest01 ztest02 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

       CLEAR: it_item,
               g_no_input,
               g_cancel,
               g_line_id.
      
    • IF_EX_MB_MIGO_BADI~POST_DOCUMENT

        METHOD if_ex_mb_migo_badi~post_document.
          DATA: wa_ztmm_migo01 TYPE ztmm_migo01,
                lt_ztmm_migo01 TYPE TABLE OF ztmm_migo01,
                wa_item        TYPE zsmm_migo01,
                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 'ZMM_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.
          " i_action:
          " A01 = Goods receipt
          " A02 = Return delivery
          " A03 = Cancellation
          " A04 = Display
          " A05 = Release GR bl.st.
          " A06 = Subsequent deliv.
          " A07 = Goods issue
          "
          " i_refdoc:
          " R01 = Purchase order
          " R02 = Material document
          " R03 = Delivery note
          " R04 = Inbound delivery
          " R05 = Outbound delivery
          " R06 = Transport
          " R07 = Transport ID code
          " R08 = Order
          " R09 = Reservation
          " R10 = Other GR
      *------------------------------------------------*
          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 'ZMM_SET_GOACTION'
            EXPORTING
              i_goaction = i_action.
        ENDMETHOD.
      
  5. 验证效果

    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型培训老师叶梓:通过微调提升小型语言模型的复杂推理能力

在人工智能的快速发展中&#xff0c;复杂推理能力的提升一直是研究者们追求的目标。最近&#xff0c;一项发表在arXiv上的研究成果【1】&#xff0c;提出了一种创新的方法&#xff0c;即通过微调小型语言模型&#xff08;LMs&#xff09;&#xff0c;并将其与大型语言模型&…

【测试】Kali Linux 渗透安全学习笔记(4) - 单一服务器扫描

距离上次做 Kali Linux 分享已经相隔半年之久了&#xff0c;刚好需要主导公司每半年一次的本地安全加固工作&#xff0c;这次将简单分享自己是如何做单一服务器的扫描。 声明&#xff1a; 本文测试的站点为自家站点仅做学习使用&#xff0c;不存在侵犯网络信息安全问题&#…

Kotlin语法快速入门--条件控制和循环语句(2)

Kotlin语法入门–条件控制和循环语句&#xff08;2&#xff09; 文章目录 Kotlin语法入门--条件控制和循环语句&#xff08;2&#xff09;二、条件控制和循环语句1、if...else2、when2.1、常规用法2.2、特殊用法--并列&#xff1a;2.3、特殊用法--类型判断&#xff1a;2.4、特殊…

Ubuntu 自己写的程序如何创建快捷方式

在Ubuntu中创建程序的快捷方式通常是通过将一个指向程序可执行文件的.desktop文件放入/usr/share/applications/或用户的~/.local/share/applications/目录来实现的。以下是创建快捷方式的基本步骤和示例&#xff1a; 创建一个新的.desktop文件。 在文件中填写必要的信息&…

【MySQL】Linux环境下MySQL基本操作

目录 一、登录进入MySQL 二、MySQL数据库的查看、创建、删除、重命名、拷贝操作 三、数据库下表的创建、删除、查看、修改&#xff08;增加、删除、更新字段/列&#xff0c;修改字段/列名&#xff09; 四、表中数据的插入、删除、查找、更新 一、登录进入MySQL mysql -u u…

如何登陆远程桌面?

远程桌面登录是一种在不同网络环境下实现电脑之间远程连接的常见技术手段。本文将介绍一种名为【天联】的组网产品&#xff0c;它是一款由北京金万维科技有限公司自主研发的连接产品&#xff0c;可帮助用户在异地组网环境中构建局域网&#xff0c;解决电脑与电脑、设备与设备、…

入坑 Node.js 1

原文&#xff1a;https://blog.iyatt.com/?p14717 前言 前面刚刚对 Spring Boot 有了个概念&#xff0c;再来学学 Node.js&#xff0c;顺便当学 JavaScript&#xff0c;为后面入前端做准备。 环境 Node.js 20.12.2 官方 API 文档&#xff1a;https://nodejs.org/docs/lat…

使用 ArcGIS 对洪水预测进行建模

第一步 — 下载数据 所有数据均已包含在 Esri 提供的项目压缩文件中。我将创建一个名为“Stowe_Hydrology.gdb”的新地理数据库,在其中保存这些数据以及创建的所有后续图层。 1-0。斯托市边界 斯托城市边界是佛蒙特州地理信息中心提供的矢量要素类面。我将这一层称为“Stow…

C#语法基础知识之环境搭建

C#基础语法知识 环境搭建 、变量、运算符、条件分支语句、循环语句 目录 C#基础语法知识环境搭建1、程序语言是什么2、常用的主流语言3、为何要学习C#语言4、IDE是什么5、下载安装Visual Studio6、新建项目进行基础设置7、基础设置8、理解写代码9、注释的三种方式10、控制台…

面试集中营—mysql架构相关

一、Mysql基本架构 这个问题没太有人问&#xff0c;笔者也是浅尝辄止&#xff0c;但是了解一个中间件一定要从架构开始&#xff0c;上来就背八股文那就没意思了。 从下图可以看到Mysql的包括网络连接、服务、数据存储和系统文件&#xff08;日志&#xff09;四大部分。 数据连接…

【python项目推荐】键盘监控--统计打字频率

原文&#xff1a;https://greptime.com/blogs/2024-03-19-keyboard-monitoring 代码&#xff1a;https://github.com/GreptimeTeam/demo-scene/tree/main/keyboard-monitor 项目简介 该项目实现了打字频率统计及可视化功能。 主要使用的库 pynput&#xff1a;允许您控制和监…

免费https证书申请及部署教程

目前随着https访问的普及度逐渐提高&#xff0c;https证书的使用率也与日俱增&#xff0c;多数网站都会通过实现https来保障自身网站的数据传输安全&#xff0c;这时候就离不开SSL证书了&#xff0c;如何获取SSL证书&#xff0c;又如何将SSL证书部署在域名上&#xff0c;今天为…

Hadoop——Yarn 调度器和调度算法

Yarn 调度器和调度算法 YARN调度器&#xff08;Scheduler&#xff09;是负责将集群资源分配给不同应用程序的组件。它根据应用程序的资源需求和优先级&#xff0c;以及集群的资源供给情况&#xff0c;决定如何分配资源。YARN提供了多种调度器实现&#xff0c;每种调度器都有不…

RT-Thread电源管理组件

电源管理组件 嵌入式系统低功耗管理的目的在于满足用户对性能需求的前提下&#xff0c;尽可能降低系统能耗以延长设备待机时间。 高性能与有限的电池能量在嵌入式系统中矛盾最为突出&#xff0c;硬件低功耗设计与软件低功耗管理的联合应用成为解决矛盾的有效手段。 现在的各种…

设计模式之观察者模式(下)

3&#xff09;JDK对观察者模式的支持 1.概述 在JDK的java.util包中&#xff0c;提供了Observable类以及Observer接口&#xff0c;它们构成了JDK对观察者模式的支持。 2.Observer接口 在java.util.Observer接口中只声明一个方法&#xff0c;它充当抽象观察者。 void update…

Matlab软件使用教学

1. Matlab简介 Matlab&#xff08;Matrix Laboratory的缩写&#xff09;是一种由MathWorks公司开发的数值计算和可视化编程环境。它广泛应用于工程、科学研究、数学和教育等领域&#xff0c;因其强大的计算能力和丰富的工具箱而受到青睐。 2. 安装与启动 安装&#xff1a;从M…

05_Qt资源文件添加

Qt资源文件添加 Qt 资源系统是一个跨平台的资源机制&#xff0c;用于将程序运行时所需要的资源以二进制的形式存储于可执行文件内部。如果你的程序需要加载特定的资源&#xff08;图标、文本翻译等&#xff09;&#xff0c;那么&#xff0c;将其放置在资源文件中&#xff0c;就…

【电控笔记5.7】Notch-Filter滤波器

Notch-Filter滤波器 通过阻尼比&#xff0c;限制陡峭程度 阻尼比小&#xff0c;比较陡峭&#xff0c;对周围信号干扰比较小&#xff0c;衰减度小 总结 实现&#xff1a;转换成Z转换进行伯德图验证

5款小伙伴们私信推荐免费软件

​ 最近后台收到好多小伙伴的私信&#xff0c;今天继续推荐五款小工具&#xff0c;都是免费使用的&#xff0c;大家可以去试试看。 1. 数据恢复工具——EaseUS Data ​ EaseUS Data是一款高效的数据恢复软件&#xff0c;能够恢复因各种原因丢失的文件&#xff0c;如误删除、格…

成都多家终端门店反馈:飞天茅台价格已回升至良性稳定区间

成都多家终端门店反馈&#xff1a;飞天茅台价格已回升至良性稳定区间 原创 尼 奥 长江酒道 2024-04-20 16:36 四川 执笔 | 尼 奥 编辑 | 古利特 “价值决定价格&#xff0c;价格围绕价值上下波动。” 进入4月份白酒传统销售淡季&#xff0c;飞天茅台的价格波动成为行业关注…