采购订单屏幕BADI增强Word文档下载推荐.docx

上传人:b****2 文档编号:834889 上传时间:2023-04-29 格式:DOCX 页数:26 大小:287.44KB
下载 相关 举报
采购订单屏幕BADI增强Word文档下载推荐.docx_第1页
第1页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第2页
第2页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第3页
第3页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第4页
第4页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第5页
第5页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第6页
第6页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第7页
第7页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第8页
第8页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第9页
第9页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第10页
第10页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第11页
第11页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第12页
第12页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第13页
第13页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第14页
第14页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第15页
第15页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第16页
第16页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第17页
第17页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第18页
第18页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第19页
第19页 / 共26页
采购订单屏幕BADI增强Word文档下载推荐.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

采购订单屏幕BADI增强Word文档下载推荐.docx

《采购订单屏幕BADI增强Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《采购订单屏幕BADI增强Word文档下载推荐.docx(26页珍藏版)》请在冰点文库上搜索。

采购订单屏幕BADI增强Word文档下载推荐.docx

on 

the 

Header 

tab 

5. 

CHECK 

im_application 

'

PO'

6. 

im_element 

HEADER'

7. 

8. 

CLEAR 

lw_subscribers. 

9. 

lw_subscribers-name 

subscreen1. 

10. 

lw_subscribers-dynpro 

0100'

11. 

lw_subscribers-program 

SAPLZCI_EKKODB'

12. 

lw_subscribers-struct_name 

CI_EKKODB'

13. 

lw_subscribers-label 

Zero 

test2'

14. 

lw_subscribers-position 

11. 

15. 

lw_subscribers-height 

8. 

16. 

APPEND 

TO 

re_subscribers. 

17.ENDMETHOD. 

METHODif_ex_me_gui_po_cust~subscribe.

DATA:

lw_subscribersTYPEmepo_subscribers.

*wewanttoaddacustomersubscreenontheHeadertab

CHECKim_application='

CHECKim_element='

CLEARlw_subscribers.

lw_subscribers-name=subscreen1.

lw_subscribers-dynpro='

lw_subscribers-program='

lw_subscribers-struct_name='

lw_subscribers-label='

Zerotest2'

lw_subscribers-position=11.

lw_subscribers-height=8.

APPENDlw_subscribersTOre_subscribers.

ENDMETHOD.

Step5:

在IF_EX_ME_GUI_PO_CUST~MAP_DYNPRO_FIELDS,加入代码,使fieldname和它的数字编号关联起来

1.FIELD-SYMBOLS:

<

mapping>

LIKE 

LINE 

OF 

ch_mapping. 

3.LOOP 

AT 

ch_mapping 

ASSIGNING 

4. 

CASE 

-fieldname. 

WHEN 

LV_TEST1'

-metafield 

mmmfd_cust_01. 

LV_TEST2'

mmmfd_cust_02. 

LV_TEST3'

mmmfd_cust_03. 

ENDCASE. 

9.ENDLOOP. 

FIELD-SYMBOLS:

<

LIKELINEOFch_mapping.

LOOPATch_mappingASSIGNING<

CASE<

-fieldname.

WHEN'

.<

-metafield=mmmfd_cust_01.

-metafield=mmmfd_cust_02.

-metafield=mmmfd_cust_03.

ENDCASE.

ENDLOOP.

Custom的field估计只能加9个,因为我在TYPE-POOLS 

mmmfd看到最大的是mmfd_cust_09,

这里也可以把一些standardfield弄到customsubscreen上.

经过以上五步,我们可以在ME23N看到customsubscreen,但在ME21N和ME22N依然是看不到的...这个是为什么,我还搞不清楚.

Step6:

给BADIME_PROCESS_PO_CUST建一个implementation

在PublicSection加入TYPE-POOLS 

Step7:

在MethodIF_EX_ME_PROCESS_PO_CUST~FIELDSELECTION_HEADER加入代码,改变表ch_fieldselection的fieldstatus

-'

代表hidden,'

+'

或'

.'

表示editable,'

*'

代表display

if_ex_me_process_po_cust~fieldselection_header. 

lv_persistent 

mmpur_bool. 

FIELD-SYMBOLS:

fs>

ch_fieldselection. 

DEFINE 

set_input. 

read 

table 

ch_fieldselection 

assigning 

with 

key 

metafield 

&

1. 

if 

sy-subrc 

0. 

im_header->

is_changeable( 

) 

mmpur_yes. 

-fieldstatus 

else. 

endif. 

END-OF-DEFINITION. 

16.* 

item 

is 

already 

database, 

disallow 

change 

field 

badi_bsgru 

17. 

is_persistent( 

). 

18. 

19. 

set_input 

20. 

21. 

22. 

23.ENDMETHOD. 

METHODif_ex_me_process_po_cust~fieldselection_header.

lv_persistentTYPEmmpur_bool.

LIKELINEOFch_fieldselection.

DEFINEset_input.

readtablech_fieldselectionassigning<

withtablekeymetafield=&

1.

ifsy-subrc=0.

ifim_header->

is_changeable()=mmpur_yes.

-fieldstatus='

else.

endif.

END-OF-DEFINITION.

*iftheitemisalreadyonthedatabase,wedisallowtochangefieldbadi_bsgru

lv_persistent=im_header->

is_persistent().

set_inputmmmfd_cust_01.

set_inputmmmfd_cust_02.

set_inputmmmfd_cust_03.

这里有两点注意下:

1.im_header->

is_changeable()可以判断当前这些field是不是处于可编辑状态,如果是则为'

X'

.比如刚进TCODEME21N,ME22N它们是可编辑的,但当按save保存成功后,它们暂时是不可以编辑的,要再按

把它改回编辑状态才可以编辑,这里就实现了这个功能.

2.im_header->

is_persistent()可以判断当这些field在数据库里有值了,它就是'

当我们把数据写进表里就不想它被修改时,可以用这个来判断,比如把某个field设置成ME21N可编辑,ME22N不可编辑.

经过这七步,ME21N/ME22N/ME23N都可以看到这个customsubscreen,但所有自建field都是可编辑状态,必需做完第八步,才能正常显示

Step8:

在screen中调用2个module

这两个module存放在下图的程序里

注意:

如果不调用这两个module,BADI 

ME_GUI_PO_CUST下面的4个method都不会触发

TRANSPORT_FROM_MODEL

TRANSPORT_TO_DYNP

TRANSPORT_FROM_DYNP

TRANSPORT_TO_MODEL

Step9:

在MethodIF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_MODEL加入代码

把header的三个自建field传到attributedynp_data_pho里

if_ex_me_gui_po_cust~transport_from_model. 

lw_header 

REF 

if_purchase_order_mm, 

lw_mepoheader 

mepoheader, 

lw_customer 

ci_ekkodb. 

5.*--------------------------------------------------------------------* 

6.* 

system 

asks 

transport 

data 

from 

business 

logic 

into 

view 

7.*--------------------------------------------------------------------* 

IF 

im_name 

10.* 

it 

an 

Header?

im_model 

can 

be 

header 

or 

item. 

mmpur_dynamic_cast 

im_model. 

NOT 

IS 

INITIAL. 

13.* 

standard 

fields 

lw_header->

get_data( 

15.* 

store 

info 

for 

later 

use 

MOVE-CORRESPONDING 

dynp_data_pbo. 

ENDIF. 

19.ENDMETHOD. 

METHODif_ex_me_gui_po_cust~transport_from_model.

lw_headerTYPEREFTOif_purchase_order_mm,

lw_mepoheaderTYPEmepoheader,

lw_customerTYPEci_ekkodb.

*--------------------------------------------------------------------*

*systemaskstotransportdatafromthebusinesslogicintotheview

IFim_name=subscreen1.

*isitanHeader?

im_modelcanbeheaderoritem.

mmpur_dynamic_castlw_headerim_model.

CHECKNOTlw_headerISINITIAL.

*transportstandardfields

lw_mepoheader=lw_header->

get_data().

*storeinfoforlateruse

MOVE-CORRESPONDINGlw_mepoheaderTOdynp_data_pbo.

ENDIF.

Step10:

在MethodIF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_DYNP加入代码

通过调用FM:

ZCI_EKKODB_PUSH把attribute

if_ex_me_gui_po_cust~transport_to_dynp. 

CALL 

FUNCTION 

ZCI_EKKODB_PUSH'

EXPORTING 

im_dynp_data 

8.ENDMETHOD. 

METHODif_ex_me_gui_po_cust~transport_to_dynp.

CALLFUNCTION'

EXPORTING

im_dynp_data=dynp_data_pbo.

Step11:

在IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_DYNP加入代码

PAI事件时,把屏幕的值传到attribute 

dynp_data_pai,并且比较dynp_data_pbo和dynp_data_pai,确定自建field的值有所改变,把re_changed置为'

这样IF_EX_ME_PROCESS_PO_CUST~PROCESS_HEADER就会触发.

if_ex_me_gui_po_cust~transport_from_dynp. 

ZCI_EKKODB_POP'

IMPORTING 

ex_dynp_data 

dynp_data_pai. 

dynp_data_pai 

>

something 

has 

changed 

therefor 

have 

notify 

framework 

11.* 

model 

re_changed 

14.ENDMETHOD. 

METHODif_ex_me_gui_po_cust~transport_from_dynp.

IMPORTING

ex_dynp_data=dynp_data_pai.

IFdynp_data_pai<

dynp_data_pbo.

*somethinghaschangedthereforwehavetonotifytheframework

*totransportdatatothemodel

re_changed=mmpur_yes.

Step12:

在IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_MODEL加入代码,把修改后的数据传到bussinessobject里

if_ex_me_gui_po_cust~transport_to_model. 

ci_ekkodb, 

lw_po_header_handle 

cl_po_header_handle_mm. 

8.* 

transported 

9.*--------------------------------------------------------------------* 

12.* 

item?

changed?

dynp_data_pbo-lv_test1 

dynp_data_pai-lv_test1 

OR 

dynp_data_pbo-lv_test2 

dynp_data_pai-lv_test2 

dynp_data_pbo-lv_test3 

dynp_data_pai-lv_test3. 

20.* 

update 

lw_mepoheader-lv_test1 

dynp_data_pai-lv_test1. 

lw_mepoheader-lv_test2 

dynp_data_pai-lv_test2. 

23. 

lw_mepoheader-lv_test3 

24. 

25. 

METHOD 

set_data 

26. 

27. 

im_data 

lw_mepoheader. 

28. 

29. 

30. 

31.ENDMETHOD. 

METHODif_ex_me_gui_po_cust~transport_to_model.

lw_customerTYPEci_ekkodb,

lw_po_header_handleTYPEREFTOcl_po_header_handle_mm.

*-----------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2