MIGO行项目屏幕增强

news2024/9/21 7:33:12
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. 验证效果

    在这里插入图片描述

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

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

相关文章

面试官竟然是个小黑子,问我用过状态机吗

状态机的组成 状态机是一种抽象的数学模型&#xff0c;描述了对象或系统在特定时间点可能处于的各种状态以及状态之间的转换规则。它由一组状态、事件、转移和动作组成&#xff0c;用于模拟对象在不同条件下的行为和状态变化。 状态机包括以下基本组成部分&#xff1a; 状态&…

React首次加载渲染2次的问题

在开发React项目的时候&#xff0c;发现useEffect会调用2次的情况&#xff0c;依赖数组明明没有变化&#xff0c;怎么会调用2次&#xff1f;百思不得其解&#xff0c;依赖没变化的话&#xff0c;那肯定是整个组件重渲染了。 最最简单的代码如下&#xff1a; const container …

微信抽奖活动怎么做_微信抽奖大狂欢

随着科技的飞速发展&#xff0c;微信已经成为我们生活中不可或缺的一部分。它不仅仅是一个简单的通讯工具&#xff0c;更是一个集社交、购物、娱乐等多种功能于一体的平台。今天&#xff0c;我们为大家带来了一场别开生面的微信抽奖活动&#xff0c;让你在享受乐趣的同时&#…

三相电子式电表ADL400储能防逆流含CE/MID认证

安科瑞薛瑶瑶18701709087/17343930412 ADL400 导轨式多功能电能表&#xff0c;是主要针对电力系统&#xff0c;工矿企业&#xff0c;公用设施的电能统计、 管理需求而设计的一款智能仪表&#xff0c;产品具有精度高、体积小、安装方便等优点。集成 常见 电 力参数测量及电能…

解决zabbix中文乱码问题

目录 1、遇到的问题 2、解决方法 第一步&#xff1a;在windows电脑上可以搜索simkai.ttf文件&#xff0c;上传到 /usr/share/zabbix/assets/fonts文件夹 第二步&#xff1a;删除软链接 第三步&#xff1a;创建软链接 第四步:重启服务 3、检查问题是否被解决 1、遇到的问…

Unity的Animator Animation的使用攻略

Animator 动画控制器 Animation 动画 动画片段 .anin 一、创建Animator 创建动画控制器 模型添加Animator组件 把控制器和模型绑定 二、创建动画 进入动画界面 创建动画片段anin 动画窗口分析 制作动画 点击录制&#xff0c; 移动子对象&#xff0c;在视窗 通过移动线来编辑关…

相机标定的原理

1.相机标定资料 这个视频是建议有一定基础的去看&#xff0c;详细介绍了整个标定的过程。 https://www.bilibili.com/video/BV1R7411m7ZQ/?spm_id_from333.337.search-card.all.click&vd_sourcec205d4d10f730a57820343328741984a 这个文章基础一点&#xff0c;可以先看 h…

钻刀无忌,过孔莫愁

高速先生成员--姜杰 钻刀是冷的&#xff0c;单板是冷的&#xff0c;眼见着过孔阻抗居高不下&#xff0c;雷豹的心也越来越冷…… 雷豹最近在研究过孔&#xff0c;少不了先学习相关的理论&#xff1a;过孔作为信号路径上一个重要的阻抗突变点&#xff0c;相对于传输线的特征阻抗…

合约X—314协议系统开发

随着区块链技术的不断发展&#xff0c;越来越多的协议被提出和应用&#xff0c;其中X314协议就是其中之一。该协议旨在通过去中心化、安全性和可扩展性等方面&#xff0c;为区块链应用提供更好的支持。本文将从多个角度对X314协议进行深度解析&#xff0c;探讨其优势和不足&…

SV610PRO无线模块:小体积,高速率通信解决方案

思为无线生产的SV610PRO无线数据传输模块以其超小的尺寸和出色的数据传输速率&#xff0c;在竞争激烈的无线通信市场中脱颖而出。这款模块采用先进的射频技术&#xff0c;确保在广泛的应用场景中提供稳定可靠的通信连接&#xff0c;无论是工业自动化、智能家居还是远程监控系统…

什么是区块链?什么是X314协议?

X314协议是一种基于区块链技术的分布式账本协议&#xff0c;具有去中心化、安全性高和可扩展性强的特点。本文将从多个角度对X314协议进行通俗解释&#xff0c;带您了解这一前沿技术。 一、什么是区块链和分布式账本&#xff1f; 首先&#xff0c;我们需要了解什么是区块链和分…

Mysql如何查询不需要Group by的字段

问题背景 在实际业务场景中&#xff0c;我们有时会对某些字段进行分组统计&#xff0c;并且需要查出多余字段展示。比方说根据机构id统计每个机构下有多少部门&#xff0c;字段展示机构名称、部门数量、机构id。 这时会提示查询的字段必须得在group by子句中&#xff0c;否则无…

手撕红黑树(map和set底层结构)(2)

[TOC]红黑树 一 红黑树概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出俩倍&…

SuperMap GIS基础产品FAQ集锦(20240422)

一、SuperMap iDesktopX 问题1&#xff1a;请问一下&#xff0c;执行“要素数据集平滑”算子报错“Could not find a SpatialRDDProvider to process the params” 11.1.1 【解决办法】使用大数据下的算子配置大数据环境不正确&#xff0c;客户数据量不多&#xff0c;可以使…

双链向表专题

1.链表的分类 链表的种类非常多组合起来就有 2 2 8种 链表说明&#xff1a; 虽然有这么多的链表的结构&#xff0c;但是我们实际中最常⽤还是两种结构&#xff1a; 单链表 和 双向带头循环链表 1. 无头单向⾮循环链表&#xff1a;结构简单&#xff0c;⼀般不会单独⽤来存数…

bugku ezbypass

bugku ezbypass 1.代码审计 2.题目代码如下所示 <?php error_reporting(0); highlight_file(__FILE__);if (isset($_POST[code])) {$code $_POST[code];if (strlen($code) < 105){if (is_string($code)) {if (!preg_match("/[a-zA-Z0-9#%^&*:{}\-<\?>…

运行Java或Python的时候,Git是必要的吗?

在运行Java或Python代码时&#xff0c;Git并不是必需的&#xff0c;但它可以成为一个非常有用的工具&#xff0c;特别是在团队协作、版本控制和代码管理方面。 Git的作用和优势 版本控制&#xff1a; Git是一个分布式版本控制系统&#xff0c;可以跟踪文件的更改历史&#xff…

从数据库中到处所有表的列、注释、类型、是否必填等信息

从数据库中到处所有中文表名、英文表名、所有列、注释、类型、长度、是否必填等信息&#xff0c;效果如下&#xff1a; 要实现上面的表格可以直接用SQL实现&#xff0c;实现SQL如下&#xff1a; #查询SQL select* FROMinformation_schema.COLUMNS as columns left join (sele…

ExcelVBA把当前工作表导出为PDF文档

我们先问问Kimi Excel导出为PDF的方法有多种&#xff0c;以下是一些常见的方法&#xff1a; 1 使用Excel软件的内置功能&#xff1a; 打开Excel文件&#xff0c;点击“文件”菜单。 选择“另存为”&#xff0c;在“保存类型”中选择“PDF”。 设置保存路径和文件名&#xff…

Leetcode 119 杨辉三角 II

目录 一、问题描述二、示例及约束三、代码方法一&#xff1a;递推方法二&#xff1a;线性递推 四、总结 一、问题描述 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。   在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。   自我…