QE01QA11QA02屏幕增强

作者:斌将军 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

需要对来料检验增加“合格数量”和“不合格数量”字段,涉及三个增强开发

增强表

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

增强点BADI:QEEM_SUBSCREEN_5000

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

创建程序,包含子屏幕,在增强点中调用

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

在程序屏幕中绘制字段

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

在输出流中可以通过事务代码控制字段编辑和必输效果

"--------------------@斌将军--------------------MODULE status_9001 OUTPUT.

DATA:lv_input TYPE char1, lv_req TYPE char1. "可编辑设置 IF sy-tcode = 'QE01' OR sy-tcode = 'QE02'. lv_input = '1'. lv_req = '1'. ELSEIF sy-tcode = 'QA11' OR sy-tcode = 'QA12'. lv_input = '1'. lv_req = '0'. ELSE. lv_input = '0'. ENDIF. LOOP AT SCREEN. IF screen-name = 'QALS-ZHGSL' OR screen-name = 'QALS-ZBHGSL'. screen-input = lv_input. screen-required = lv_req. MODIFY SCREEN. ENDIF. ENDLOOP. ENDMODULE."--------------------@斌将军--------------------

在保存数据时,需要实现增强BADI:QE_SAVE

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

代码如下:

IS_ACTIVE

"--------------------@斌将军-------------------- METHOD if_ex_qe_save~is_active. IF sy-ucomm = 'BU'. rv_active = abap_true. ENDIF. ENDMETHOD."--------------------@斌将军--------------------

TABLES_IN_OPERATION

"--------------------@斌将军-------------------- METHOD if_ex_qe_save~tables_in_operation. IF sy-tcode = 'QE01' OR sy-tcode = 'QE02'. MODIFY qals FROM is_qals. ev_saving_allowed = abap_true. ENDIF. ENDMETHOD."--------------------@斌将军--------------------

效果如下

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

BADI:QEVA_SUBSCREEN_1101

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

创建程序,包含子屏幕,在增强点中调用。此处共用了ZQM003程序

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

增强点CMOD:QPL10004

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

在TOP中定义变量

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

在屏幕100中绘制字段

QE01QA11QA02屏幕增强 - 封面图
QE01QA11QA02屏幕增强 - 封面图

输出流控制字段编辑

"--------------------@斌将军--------------------MODULE status_0100 OUTPUT.* SET PF-STATUS 'xxxxxxxx'.* SET TITLEBAR 'xxx'. LOOP AT SCREEN. IF screen-name = 'QALS_CUST-ZHGSL' OR screen-name = 'QALS_CUST-ZBHGSL'. IF gv_display = 'X'. screen-input = '0'. MODIFY SCREEN. ENDIF. ENDIF. ENDLOOP.ENDMODULE."--------------------@斌将军--------------------

在EXIT_SAPLQPL1_004中展示数据

"--------------------@斌将军--------------------*&---------------------------------------------*& 包含 ZXQPLU04*&---------------------------------------------DATA: l_trtyp LIKE t160-trtyp, l_fs_c(30) TYPE c VALUE '(SAPLQPL1)G_T185F_AKTI'.

FIELD-SYMBOLS: <l_fs>.

ASSIGN (l_fs_c) TO <l_fs>.IF sy-subrc = 0. l_trtyp = <l_fs>. CASE l_trtyp. WHEN 'A'. gv_display = 'X'. WHEN OTHERS. gv_display = ''. ENDCASE.ENDIF.

MOVE-CORRESPONDING i_qals TO qals_cust."--------------------@斌将军--------------------

在EXIT_SAPLQPL1_006中存储数据

"--------------------@斌将军--------------------*&----------------------------------------------*& 包含 ZXQPLU06*&----------------------------------------------

MOVE-CORRESPONDING qals_cust TO e_qals_cust.

e_active = 'X'."--------------------@斌将军--------------------

斌将军

关于作者:斌将军

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「QE01QA11QA02屏幕增强.md」整理生成,仅用于内部技术分享与学习交流。