MIGO屏幕增强
定义表ZQMT005、结构ZQMT005_BADI、表结构ZQMT005_BADI_TAB
编辑->包括->插入
se37,或者se80创建4个接口,如下图所示
附上传参
这里需要设置个变量,控制更新屏幕内容,不然会出现回车就清空内容等问题。
在函数组中定义全局变量
FUNCTION-POOL zqmigo. "MESSAGE-ID ..
* INCLUDE LZQMIGOD... " Local class definition
TABLES:zqmt004_badi,zqmt004,zqmt005,zqmt005_badi.
DATA:g_goaction TYPE goaction.
DATA:g_refdoc TYPE refdoc.
DATA:g_action TYPE action.
SE51绘制屏幕
屏幕的PBO里
SE19,在MB_MIGO_BADI创建实施
定义全局变量
设置全局变量(初始化)
然后是添加SE51绘制的子屏幕,
IF_EX_MB_MIGO_BADI~PBO_DETAIL 是在MIGO下面的行项目里增加
IF_EX_MB_MIGO_BADI~PBO_HEADER是在MIGO的抬头里增加
这里是在PBO_DETAIL增加
CHECK gf_class_id = i_class_id.
CHECK i_line_id IS NOT INITIAL.
IF g_no_input2 IS NOT INITIAL.
e_cprog = 'SAPLZQMIGO'.
e_dynnr = '9002'.
e_heading = '配置信息'.
ENDIF.
在IF_EX_MB_MIGO_BADI~LINE_MODIFY中行项目数据到
表it_zqmt005_badi中,点击'签名',可以看到有全局变量cs_goitem。
DATA: ls_zqmt005 TYPE zqmt005.
DATA: ls_zqmt005_badi TYPE zqmt005_badi.
DATA: ls_zqmt005_badi_new TYPE zqmt005_badi.
* IF sy-uname EQ 'IT0003'.
* BREAK-POINT.
* ENDIF.
**工单使用的模具号
READ TABLE it_zqmt005_badi WITH KEY global_counter = i_line_id
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
**************取屏幕中现有数据
CLEAR: ls_zqmt005_badi_new.
CALL FUNCTION 'ZQMIGO_ITEM_BADI_GET_DATA'
IMPORTING
e_output2 = ls_zqmt005_badi_new.
IF ls_zqmt005_badi_new-global_counter = i_line_id.
**************BADI全局变量中已存在
DELETE it_zqmt005_badi WHERE global_counter = i_line_id.
MOVE-CORRESPONDING cs_goitem TO ls_zqmt005_badi.
ls_zqmt005_badi-aufnr = cs_goitem-pps_aufnr.
ls_zqmt005_badi-plnbez = cs_goitem-matnr.
ls_zqmt005_badi-zmatnr = ls_zqmt005_badi_new-zmatnr.
APPEND ls_zqmt005_badi TO it_zqmt005_badi.
ENDIF.
ELSE.
**************BADI全局变量中不存在
IF NOT cs_goitem-matnr IS INITIAL.
**************从自定义表中取数
CLEAR: ls_zqmt005.
SELECT SINGLE *
FROM zqmt005
INTO CORRESPONDING FIELDS OF ls_zqmt005
WHERE plnbez = cs_goitem-matnr.
IF sy-subrc = 0.
MOVE-CORRESPONDING ls_zqmt005 TO ls_zqmt005_badi_new.
ELSE.
MOVE-CORRESPONDING cs_goitem TO ls_zqmt005_badi_new.
ls_zqmt005_badi_new-aufnr = cs_goitem-pps_aufnr.
ls_zqmt005_badi_new-plnbez = cs_goitem-matnr.
ENDIF.
ENDIF.
ls_zqmt005_badi_new-global_counter = i_line_id.
ls_zqmt005_badi_new-zmatnr = ls_zqmt005_badi_new-zmatnr.
APPEND ls_zqmt005_badi_new TO it_zqmt005_badi.
ENDIF.
在IF_EX_MB_MIGO_BADI~LINE_DELETE中增加删除对应行操作
DELETE it_ZQMT005_BADI WHERE global_counter = i_line_id.
在RESET(取消)中,清空废弃的数据。
CLEAR: it_zqmt004_badi,it_zqmt005_badi.
CLEAR: G_NO_INPUT,G_NO_INPUT2,
g_cancel,g_cancel2.
在IF_EX_MB_MIGO_BADI~POST_DOCUMENT中,将内表it_zqmt005_badi数据保存到自建表,这里也可以直接增加检查。为了区分,检查后面再加。
在IF_EX_MB_MIGO_BADI~CHECK_ITEM中添加检查
到此结束。
日志:
一、2021年11月12日。
检查写在CHECK_ITEM方法中没用,直接多点几次过账,就能跳过这里的检查,需要改到
IF_EX_MB_MIGO_BADI~POST_DOCUMENT中,
这里就不写了。中间也发现了其它的一些BUG,比如显示的时候,自己画的只能显示一个,有兴趣的自己调试下。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)