1、文档说明

本方法是将新增字段,展示在MIGO的新增页签中,并保存到自建表。

新增页签的方法,和采购订单新增页签的方法原理基本一致,都是需要创建函数组,并实现相应方法和屏幕,并在增强中调用该函数组,展示出屏幕,实现对应操作。

2、实现过程

2.1、创建自建表和结构

自建表中存储物料凭证主键和增强的字段ZNUM单据号

参考自建表,创建对应的结构,用于函数组数据传递

创建表类型,用于增强实施类

2.2、增强和函数组

为了清楚的展示增强和调用的函数之间的关系,此处将增强和函数实现放在一起讲解

2.2.1、创建增强实施和函数组

根据增强点MB_MIGO_BADI创建实施

点击实施类,添加表类型到实施类属性

创建函数组ZEMIGO,并声明全局变量

2.2.2、初始化

实现增强方法IF_EX_MB_MIGO_BADI~INIT

"--------------------@斌将军--------------------
method IF_EX_MB_MIGO_BADI~INIT.
APPEND gf_class_id TO ct_init.
endmethod.
"--------------------@斌将军--------------------

2.2.3、实现PBO

创建SET函数ZEMIGO_SET_DATA

创建子屏幕9001,类型选择子屏幕

实现增强方法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 zspp001.
CHECK i_line_id IS NOT INITIAL.
e_cprog = 'SAPLZEMIGO'."函数组
e_dynnr = '9001'."展示的页签屏幕
e_heading = '客户数据'."页签标题 g_line_id = i_line_id.
READ TABLE it_item INTO wa_item WITH KEY line_id = i_line_id.
CALL FUNCTION 'ZEMIGO_SET_DATA'
EXPORTING
i_input = wa_item.
ENDIF.
ENDMETHOD.
"--------------------@斌将军--------------------

2.2.4、实现PAI

创建GET函数ZEMIGO_GET_DATA

实现增强方法IF_EX_MB_MIGO_BADI~PAI_DETAIL

"--------------------@斌将军--------------------
METHOD if_ex_mb_migo_badi~pai_detail.
DATA: wa_item_new TYPE zspp001,
wa_item_old TYPE zspp001. CHECK i_line_id <> 0. CALL FUNCTION 'ZEMIGO_GET_DATA'
IMPORTING
e_out = wa_item_new. MODIFY it_item FROM wa_item_new TRANSPORTING znum WHERE line_id = i_line_id.
READ TABLE it_item INTO wa_item_old WITH KEY line_id = i_line_id. IF wa_item_new-line_id <> i_line_id.
e_force_change = 'X'.
ENDIF. ENDMETHOD.
"--------------------@斌将军--------------------

2.2.5、实现MODIFY

实现增强方法IF_EX_MB_MIGO_BADI~LINE_MODIFY

"--------------------@斌将军--------------------
METHOD if_ex_mb_migo_badi~line_modify.
DATA: wa_item_new TYPE zspp001,
wa_item_old TYPE zspp001,
wa_ztmm_i_migo01 TYPE ztpp001,
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 ztpp001
INTO wa_ztmm_i_migo01
WHERE mblnr = cs_goitem-mblnr
AND mjahr = cs_goitem-mjahr
AND zeile = cs_goitem-zeile. IF wa_ztmm_i_migo01 IS NOT INITIAL.
MOVE-CORRESPONDING wa_ztmm_i_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 'ZEMIGO_GET_DATA'
IMPORTING
e_out = wa_item_new.
* wa_item_new-line_id = i_line_id. MODIFY it_item FROM wa_item_new TRANSPORTING znum WHERE line_id = i_line_id.
ENDIF. ENDMETHOD.
"--------------------@斌将军--------------------

2.2.6、实现DELETE

实现增强方法IF_EX_MB_MIGO_BADI~LINE_DELETE

"--------------------@斌将军--------------------
METHOD IF_EX_MB_MIGO_BADI~LINE_DELETE.
DELETE TABLE it_item WITH TABLE KEY line_id = i_line_id.
ENDMETHOD.
"--------------------@斌将军--------------------

2.2.7、实现RESET

实现增强方法IF_EX_MB_MIGO_BADI~RESET

"--------------------@斌将军--------------------
METHOD IF_EX_MB_MIGO_BADI~RESET.
* Clear all internal data:
CLEAR: gt_extdata,
g_no_input,
gs_exdata_header,
g_cancel,
it_item,
g_line_id. ENDMETHOD.
"--------------------@斌将军--------------------

2.2.8、实现存表

创建UPDATE函数ZEMIGO_UPDATE_DATA

选择处理类型

实现增强方法IF_EX_MB_MIGO_BADI~POST_DOCUMENT

"--------------------@斌将军--------------------
METHOD if_ex_mb_migo_badi~post_document. DATA: wa_ztmm_i_migo01 TYPE ztpp001,
lt_ztmm_i_migo01 TYPE TABLE OF ztpp001,
wa_item TYPE zspp001,
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_i_migo01.
MOVE-CORRESPONDING wa_mseg TO wa_ztmm_i_migo01.
APPEND wa_ztmm_i_migo01 TO lt_ztmm_i_migo01.
ENDIF.
ENDLOOP.
CALL FUNCTION 'ZEMIGO_UPDATE_DATA' IN UPDATE TASK
TABLES
t_item = lt_ztmm_i_migo01.
ENDIF. ENDMETHOD.
"--------------------@斌将军--------------------

2.2.9、控制编辑状态

可以通过里面对应的ACTION,来控制增强字段的显示效果,比如在A04显示物料凭证时,设置增强字段为不可更改

创建函数ZEMIGO_SET_GOACTION接收ACTION

实现屏幕流

实现增强方法IF_EX_MB_MIGO_BADI~MODE_SET

"--------------------@斌将军--------------------
METHOD if_ex_mb_migo_badi~mode_set.
* ACTION and REFDOC will discribe the mode of transaction MIGO.
* ----------------------------------------------------------------------
* 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
*----------------------------------------------------------------------- * In case of 'DISPLAY' the global field G_NO_INPUT will be set to 'X'.
* The result is that a different external subscreen will be choosen in
* method PBO_DETAIL.
IF i_action = 'A04' OR i_action = 'A03'.
g_no_input = 'X'.
ENDIF.
* In case of 'CANCEL' the global field G_CANCEL will be set to 'X'.
* The result is that in method POST_DOCUMENT a different handling is
* used
IF i_action = 'A03'.
g_cancel = 'X'.
ENDIF.
CALL FUNCTION 'ZEMIGO_SET_GOACTION'
EXPORTING
i_goaction = i_action.
ENDMETHOD.
"--------------------@斌将军--------------------

2.3、测试效果

存表成功

到此,MIGO新增页签就实现了

定期更文,欢迎关注

 
 
 
 
 
 
 
 
 
 
此页面的语言为英语
 
翻译为中文(简体)
 
 
 
 
  • 中文(简体)
  • 中文(繁体)
  • 丹麦语
  • 乌克兰语
  • 乌尔都语
  • 亚美尼亚语
  • 俄语
  • 保加利亚语
  • 克罗地亚语
  • 冰岛语
  • 加泰罗尼亚语
  • 匈牙利语
  • 卡纳达语
  • 印地语
  • 印尼语
  • 古吉拉特语
  • 哈萨克语
  • 土耳其语
  • 威尔士语
  • 孟加拉语
  • 尼泊尔语
  • 布尔语(南非荷兰语)
  • 希伯来语
  • 希腊语
  • 库尔德语
  • 德语
  • 意大利语
  • 拉脱维亚语
  • 挪威语
  • 捷克语
  • 斯洛伐克语
  • 斯洛文尼亚语
  • 旁遮普语
  • 日语
  • 普什图语
  • 毛利语
  • 法语
  • 波兰语
  • 波斯语
  • 泰卢固语
  • 泰米尔语
  • 泰语
  • 海地克里奥尔语
  • 爱沙尼亚语
  • 瑞典语
  • 立陶宛语
  • 缅甸语
  • 罗马尼亚语
  • 老挝语
  • 芬兰语
  • 英语
  • 荷兰语
  • 萨摩亚语
  • 葡萄牙语
  • 西班牙语
  • 越南语
  • 阿塞拜疆语
  • 阿姆哈拉语
  • 阿尔巴尼亚语
  • 阿拉伯语
  • 韩语
  • 马尔加什语
  • 马拉地语
  • 马拉雅拉姆语
  • 马来语
  • 马耳他语
  • 高棉语
 
随时将英语翻译为中文(简体)PRO
一律不翻译英语
一律不翻译i.cnblogs.com

MIGO新增页签增强的更多相关文章

  1. easyui-tabs 页签绑定click事件,动态加载jqgrid

    .前台代码 <%-- builed by manage.aspx.cmt [ver:] at // :: --%> <%@ Page Language="C#" ...

  2. Android实现图片滚动控件,含页签功能,让你的应用像淘宝一样炫起来

    首先题外话,今天早上起床的时候,手滑一下把我的手机甩了出去,结果陪伴我两年半的摩托罗拉里程碑一代就这么安息了,于是我今天决定怒更一记,纪念我死去的爱机. 如果你是网购达人,你的手机上一定少不了淘宝客户 ...

  3. SAP 实例- 页签tabsrip

    屏幕页签:项目上有一需求,对标准TCODE 一个屏幕增加一个页签.于是做了个例子. 下面屏幕有两个页签. 我们来看一下屏幕结构.100屏幕是主屏幕,101,102是子屏幕,对应页签test1,test ...

  4. ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  5. WPF如何实现一个漂亮的页签导航UI

    最近看到一个比较漂亮的UI主界面,该UI是用左边的页签进行导航,比较有特色,就想着尝试用WPF来实现一下.经过一番尝试,基本上将UI设计图的效果用WPF程序进行了实现.下面介绍一下主要的思路: 1 U ...

  6. JavaScript选项卡/页签/Tab的实现

    选项卡,也称页签,英文用Tab(Module-Tabs)表示.Tab将不同的内容重叠放在一个布局块内,重叠的内容区里每次只有其中一个是可见的. Tab可以在相同的空间里展示更多的信息,它把相似的主题分 ...

  7. C# 重绘tabControl,添加关闭按钮(页签)

    C# 重绘tabControl,添加关闭按钮(页签) 调用方法 参数: /// <summary> /// 初始化 /// </summary> /// <param n ...

  8. 实现TabView(页签)效果

    今天花了点时间,设计了一个网页上用的tabview(页签.tabcontrol)效果.个人觉得实现得比较不错,网页元素用得比较少,js代码也比较精练.测试了一下支持IE.FireFox以及chrome ...

  9. WPF4.5 中的新增功能和增强功能的信息

    本主题包含有关 Windows Presentation Foundation (WPF) 版本 4.5 中的新增功能和增强功能的信息. 本主题包含以下各节: 功能区控件 改善性能,当显示大时设置分组 ...

  10. android124 zhihuibeijing 新闻中心-新闻 -北京页签 下拉刷新

    缓存工具类:以url为key,json数据为value, package com.itheima.zhbj52.utils; import com.itheima.zhbj52.global.Glob ...

随机推荐

  1. MySQL系列之主从复制进阶——延时从库、半同步、过滤复制、GTID复制

    目录 1. 延时从库 1.1介绍 1.2 为什么要有延时从 1.3 配置延时从库 1.4 延时从库应用 1.4.1 故障恢复思路 1.4.2 故障模拟及恢复 2. 半同步 *** 2.1 半同步复制工 ...

  2. android 反编译 apk 分享 smali2java 1.0.0.558

    smali2java 1.0.0.558 smali2java是一个将smali代码反编译成java代码的工具. 什么是smali?smali是将Android字节码用可阅读的字符串形式表现出来的一种 ...

  3. frida动态插桩初探

    前言 近期碰到了分析app的需求,就学习了一下 frida的动态插桩技术.frida是一款轻量级HOOK框架,可用于多平台上,例如android.windows.ios等.frida分为两部分,服务端 ...

  4. 利用信号量SemaphoreSlim实现PaddleOCR的线程安全访问

    Wlkr.Core.ThreadUtils 项目背景 早在PaddleOCR 2.2版本时期,认识了周杰大佬的PaddleSharp项目,试用其中PaddleOCR时,发现它在改为web api调用时 ...

  5. C++常见算法&数据结构模版

    各种常见算法 & 数据结构模板 1. 最长不下降子序列(LIS) 1.1 \(O(n^2)\) 做法 点击查看代码 for (int i = 1;i <= n;i++) { cin &g ...

  6. OA、CRM、SCM、ERP之间的区别和联系是什么?

    当然,各个系统之间要集成.集成之后的东西,不叫做ERP.做ERP的人说叫ERP,做PLM的人说叫PLM,卖OA的人更愿意叫OA.其实,那个集成之后的东西,啥也不叫.   英文名 中文名 百科释义 关注 ...

  7. 生成伪随机数 rand;srand函数

    1 相关内容来自鱼c论坛https://fishc.com.cn/forum.php?mod=viewthread&tid=84363&extra=page%3D1%26filter% ...

  8. timeSetEvent()函数定时器的使用

    1.定时器函数的使用 微软公司在其多媒体Windows中提供了精确定时器的底层API支持,利用多媒体定时器可以很精确地读出系统的当前时间,并且能在非常精确的时间间隔内完成一个事件.函数或过程的调用. ...

  9. Qt官网开源最新版下载安装保姆级教程

    什么是Qt(了解请跳过) Qt 基本介绍 Qt 是一个跨平台C++图形用户界面应用程序开发框架. 有关 Qt 的详细介绍,可以参考这篇文章: Qt是什么?Qt简介(非常全面) - 李清龙的文章 - 知 ...

  10. java的反应式流

    Java的反应式流是一种新的编程模型,它在异步和事件驱动的环境下工作.反应式流的目的是为了解决传统的单线程或者多线程编程模型在高并发和大流量情况下的性能瓶颈. 反应式流的核心是Observable和O ...