新浪博客

【转载】ME21N采购订单新增页签增强

2024-02-01 16:44阅读:
【转载】ME21N采购订单新增页签增强

1、实现效果

根据客制化需求,要在采购订单中新增大量字段,所以要在界面上添加一个单独的页签。效果如下:
【转载】ME21N采购订单新增页签增强

2、增强实现

2.1、增强结构


因为是在抬头上边添加,所以增强CI_EKKODB结构
【转载】ME21N采购订单新增页签增强

2.2、函数组


仿照Function Group MEPOBADIEX建一个Function Group
【转载】ME21N采购订单新增页签增强
【转载】ME21N采购订单新增页签增强

2.3、增强实施

2.3.1、BADI:ME_GUI_PO_CUST


方法:SUBSCRIBE
method IF_EX_ME_GUI_PO_CUST~SUBSCRIBE. DATA: LS_SUBSCRIBERS TYPE MEPO_SUBSCRIBERS.*1 抬头 IF IM_APPLICATION = 'PO' AND IM_ELEMENT = 'HEADER'. CLEAR RE_SUBSCRIBERS[] . CLEAR LS_SUBSCRIBERS. LS_SUBSCRIBERS-NAME = SUBSCREEN_H.'屏幕名称 LS_SUBSCRIBERS-DYNPRO = '9001'.'函数组的屏幕编号 LS_SUBSCRIBERS-PROGRAM = 'SAPLZMMPO001'.'调用的函数组 LS_SUBSCRIBERS-STRUCT_NAME = 'CI_EKKODB'.'增强的结构 LS_SUBSCRIBERS-LABEL = '其他数据'.'页签名称 LS_SUBSCRIBERS-POSITION = 30.'页签处于的位置 LS_SUBSCRIBERS-HEIGHT = 7.'页签高度 APPEND LS_SUBSCRIBERS TO RE_SUBSCRIBERS. ENDIF.*2 * IF IM_APPLICATION = 'PO' AND IM_ELEMENT = 'ITEM'.* CLEAR RE_SUBSCRIBERS[] .* CLEAR LS_SUBSCRIBERS.* LS_SUBSCRIBERS-NAME = SUBSCREEN_I.* LS_SUBSCRIBERS-DYNPRO = '9100'.* LS_SUBSCRIBERS-PROGRAM = 'SAPLZMM003'.* LS_SUBSCRIBERS-STRUCT_NAME = 'CI_EKPODB'.* LS_SUBSCRIBERS-LABEL = 'Badi增强行项目屏幕'.* LS_SUBSCRIBERS-POSITION = 24. '页签处于的位置* LS_SUBSCRIBERS-HEIGHT = 4.* APPEND LS_SUBSCRIBERS TO RE_SUBSCRIBERS.* ENDIF. endmethod.


【转载】ME21N采购订单新增页签增强
method IF_EX_ME_GUI_PO_CUST~MAP_DYNPRO_FIELDS. FIELD-SYMBOLS: LIKE LINE OF ch_mapping. LOOP AT ch_mapping ASSIGNING . CASE -fieldname. WHEN 'ZEJFL'. -metafield = mmmfd_cust_01. '抬头 * WHEN 'ZHEAD02'. -metafield = mmmfd_cust_02. * WHEN 'ZZ001'. -metafield = mmmfd_cust_03. '明细 * WHEN 'ZZ005'. -metafield = mmmfd_cust_04. * '自定义字段 * WHEN 'ZFIELD3'.-metafield = mmmfd_cust_05. ENDCASE. ENDLOOP. endmethod. 方法:TRANSPORT_FROM_MODEL method IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_MODEL.
DATA: ls_header TYPE REF TO if_purchase_order_mm,
ls_mepoheader TYPE mepoheader,
ls_item TYPE REF TO if_purchase_order_item_mm,
ls_mepoitem TYPE mepoitem.
*1 抬头
IF im_name = subscreen_h.
mmpur_dynamic_cast ls_header im_model.
IF ls_header IS NOT INITIAL.
ls_mepoheader = ls_header->get_data( ).
MOVE-CORRESPONDING ls_mepoheader TO dynp_data_pbo_h.
ENDIF.
ENDIF.
*2 明细
* IF im_name = subscreen_i.
* mmpur_dynamic_cast ls_item im_model.
* IF ls_item IS NOT INITIAL.
* ls_mepoitem = ls_item->get_data( ).
* MOVE-CORRESPONDING ls_mepoitem TO dynp_data_pbo_i.
* ENDIF.
* ENDIF.
endmethod.


方法:TRANSPORT_TO_DYNP
METHOD IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_DYNP.
CASE IM_NAME.
*1 抬头
WHEN SUBSCREEN_H.
call function 'ZMMPO001_PUSH'
EXPORTING
IM_DYNP_DATA = DYNP_DATA_PBO_H.
*2 明细
* WHEN subscreen_i.
* CALL FUNCTION 'ZMMPO002_PUSH'
* EXPORTING
* im_dynp_data = dynp_data_pbo_i.
WHEN OTHERS.
ENDCASE.

ENDMETHOD.
方法:TRANSPORT_FROM_DYNP
METHOD IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_DYNP.
CASE IM_NAME.
*1 抬头
WHEN SUBSCREEN_H.
call function 'ZMMPO001_POP'
IMPORTING
EX_DYNP_DATA = DYNP_DATA_PAI_H.
IF DYNP_DATA_PAI_H <> DYNP_DATA_PBO_H.
RE_CHANGED = MMPUR_YES.
ENDIF.
*2 明细
* WHEN subscreen_

我的更多文章

下载客户端阅读体验更佳

APP专享