Enhancement for ME21N/ME22N/ME23N customer Screen Enhancement.
Purpose:SAP 中使用ME21N/ME22N/ME23N创建/修改/查看采购订单时,
需要在屏幕的头信息中增加以下字段以及相关按钮。
因此利用屏幕增强增加字段,以便用户输入内容并保存至自定义中。
触发时间:
ME21N/ME22N/ME23N点击‘客户数据’标签页时触发
选中“创建”按钮进入界面以后,为新建的增强项目分配增强出口MM06E005并回车。
对出口中的相关组件进行实施。
首先向数据表中增加需要新建的字段,
具体操作为在包含表CI_EKKODB上双击,然后新增增强字段。
新增字段最好以ZZ_开头(如果要增强行项目,双击CI_EKPODB)。
双击“CI_EKKODB”进行新增字段。
使增强屏幕显示,在Screen exit中,双击要增强的SAPMM06(头信息增强屏幕编号为0101,行信息增强屏幕为0111),
进入以后即可绘制屏幕显示,查找要显示的CI_EKKODB中的字段显示到屏幕上。
查找字段(f6),输入表或字段名(ekko_ci),找到显示的字段。
在定义屏幕的PBO和PAI中分别增加如下代码:
PROCESS BEFORE OUTPUT.
MODULE CHANGE_CUSTOM_TAB.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0101.
==========================
MODULE CHANGE_CUSTOM_TAB OUTPUT.
IF BUKRS+0(2) = ’83’ OR BUKRS = ‘5140’ OR BUKRS+0(2) = ’81’
OR BUKRS+0(2) = ’82’.
IF GV_STATUS = CV_SHOW.
LOOP AT SCREEN.
IF SCREEN-NAME <> ‘HTWB’
AND SCREEN-NAME <> ‘HTMB’
AND SCREEN-NAME <> ‘PRVW’ .
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
==========================
MODULE USER_COMMAND_0101 INPUT.
DATA: ACT TYPE SYUCOMM.
DATA: Z001_HEAD LIKE THEAD.
RANGES: LR_EBELN FOR EKKO-EBELN.
ACT = SY-UCOMM.
CLEAR SY-UCOMM.
CASE ACT.
WHEN ‘HTWB’.
====================
输入合同文本的FORM如下:
FORM FRM_PURORD_CONTRACT_TEXT USING HEAD TYPE THEAD.
CALL FUNCTION ‘EDIT_TEXT’
EXPORTING
* DISPLAY = ‘ ‘
EDITOR_TITLE = TEXT-ZH1
HEADER = HEAD
* PAGE = ‘ ‘
* WINDOW = ‘ ‘
* SAVE = ‘X’
* LINE_EDITOR = ‘ ‘
* CONTROL = ‘ ‘
* PROGRAM = ‘ ‘
在功能退出去,双击EXIT_SAPMM06E_006,
进入包含文件ZXM06U36 ,即Pbo中增加如图所示代码(显示和更新编辑状态):
*&———————————————————————*
*& 包含 ZXM06U36
*&———————————————————————*
MOVE-CORRESPONDING I_CI_EKKO TO EKKO_CI.
BUKRS = I_EKKO-BUKRS.
EKORG = I_EKKO-EKORG.
EBELN = I_EKKO-EBELN.
GV_STATUS = I_TRTYP.
其中,变量BUKRS和GV_STATUS分别用来存储格式代码和屏幕的编辑和显示情况。
其定义在FUNCTION组的ZXM06TOP中定义,实现代码如下:
CONSTANTS CV_SHOW TYPE C VALUE ‘A’.
DATA: GV_STATUS TYPE C,
BUKRS TYPE EKKO-BUKRS,
EKORG TYPE EKKO-EKORG,
MENGE TYPE EKBE-MENGE,
TDNAME TYPE THEAD-TDNAME,
EBELN TYPE EKKO-EBELN,
FLAG TYPE CHAR1.
双击EXIT_SAPMM06E_008,进入INCLUDE ZXM06U37,
即 Import Data from Customer Subscreen for Purchasing Document Header中(修改后提示保存),增加如下所示代码:
*&——————————————-*
*& 包含 ZXM06U37
*&—————————————-—-*
MOVE-CORRESPONDING EKKO_CI TO E_CI_EKKO.
最后逐个激活增强组件即可。使用ME21N创建采购订单的时候,头部信息的“客户数据”页不可编辑。
使用ME22N修改采购订单的时候,头部信息的“客户数据”页可编辑。
点击保存按钮时便可将数据保存到标准表EKKO中。
MODULE CHANGE_CUSTOM_TAB OUTPUT.
IF BUKRS+0(2) = ’83’ OR BUKRS = ‘5140’ OR BUKRS+0(2) = ’81’
OR BUKRS+0(2) = ’82’.
IF GV_STATUS = CV_SHOW.
LOOP AT SCREEN.
IF SCREEN-NAME <> ‘HTWB’
AND SCREEN-NAME <> ‘HTMB’
AND SCREEN-NAME <> ‘PRVW’ .
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF MENGE > 0 AND SY-UNAME <> ‘HANDPANSW’.
LOOP AT SCREEN.
IF SCREEN-NAME = ‘EKKO_CI-ZHTBH’.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ELSE.
LOOP AT SCREEN.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDMODULE.
MODULE USER_COMMAND_0101 INPUT.
DATA: ACT TYPE SYUCOMM.
DATA: Z001_HEAD LIKE THEAD.
RANGES: LR_EBELN FOR EKKO-EBELN.
ACT = SY-UCOMM.
CLEAR SY-UCOMM.
CASE ACT.
WHEN ‘HTWB’.
BREAK HANDQIUY.
CLEAR Z001_HEAD.
Z001_HEAD-TDOBJECT = ‘ZDQ_MM_001’.
Z001_HEAD-TDNAME = TDNAME.
Z001_HEAD-TDID = ‘Z001’.
Z001_HEAD-TDSPRAS = SY-LANGU.
Z001_HEAD-TDLINESIZE = ‘072’.
PERFORM FRM_PURORD_CONTRACT_TEXT USING Z001_HEAD.
WHEN ‘HTMB’.
* CALL SCREEN 9001 STARTING AT 5 5 ENDING AT 50 10.
WHEN ‘PRVW’.
* MESSAGE I001(00) WITH ‘打印预览’.
* IF EBELN IS NOT INITIAL.
LR_EBELN-SIGN = ‘I’.
LR_EBELN-OPTION = ‘EQ’.
LR_EBELN-LOW = EBELN.
APPEND LR_EBELN.
EXPORT LR_EBELN[]
GT_LINES[] TO MEMORY ID ‘ZDQ_MM_014’.
CALL TRANSACTION ‘ZDQMM014’ AND SKIP FIRST SCREEN.
* ENDIF.
WHEN OTHERS.
ENDCASE.
CLEAR ACT.
ENDMODULE. ” USER_COMMAND_0101 INPUT
我的微信公众号【 hot583 】 或者在这个链接联系我
本文链接 :http://www.hot583.com/2022/06/27/mm06e005-ci_ekkodb
本文为作者原创,如果这篇文章对您有用,欢迎转载,
转载请务必注明来源《今日热点在看》http://www.hot583.com/
微信原文《全文完》