使用增强:MEREQ001 购买申请中的客户自有数据
1、如果需要向PR中加入自定义字段,事务码se11,打开透明表EBAN,双击include:CI_EBANDB,创建结构CI_EBANDB,维护自定义的字段。
2、事务码CMOD create project:ZMMpr001,在Enhancement assignment中添加增强MEREQ001,保存。
3、事务码smod:MEREQ001,打开如下图,
有三个function module,还有screen area,可知screen :0111便是预留的屏幕,可以在其函数组中创建screen 0111,然后在其上画一些需要的字段栏位就ok了。
双击其中一个function module,然后点击display object list按钮
,显示如下图
在函数组XM02中create screen 0111,然后在其上画一些需要的字段栏位,注意0111设置为subscreen。
激活,CMOD中激活ZMMpr001,此时在事务码ME51n中就能看到多了一个客户数据tab页,相应me52n,me53n等也有。
到此为止,屏幕做好了,但是要在屏幕栏位上输入数据并能保存到透明表,及显示的时候能从透明表读出到屏幕栏位,就需要在上述三个function module中写代码。
4、在函数组XM02中,有include:ZXM02TOP,目前是空的,create it,添加代码:
data : gv_trtyp type aktvt.
DATA: FL_INPUT TYPE FLAG.
激活EXIT_SAPLMEREQ_001中的include添加如下代码:
TABLES : ci_ebandb.
DATA : i_mereq_item TYPE mereq_item.
CALL METHOD im_req_item->get_activity
RECEIVING
re_aktvt = gv_trtyp.
CASE gv_trtyp.
WHEN 'A'.
fl_input = space. "Output only
WHEN 'V'.
fl_input = 'X'. "Input/Output
ENDCASE.
IF im_req_item IS INITIAL.
CLEAR: ci_ebandb.
ELSE.
i_mereq_item = im_req_item->get_data( ).
MOVE-CORRESPONDING i_mereq_item TO ci_ebandb.
ENDIF.
激活EXIT_SAPLMEREQ_003中的include,添加下面代码:
DATA : i_mereq_item TYPE mereq_item.
IF NOT im_req_item IS INITIAL.
i_mereq_item = im_req_item->get_data( ).
MOVE-CORRESPONDING ci_ebandb TO i_mereq_item .
CALL METHOD im_req_item->set_data( i_mereq_item ).
ex_changed = 'X'.
ENDIF.
最后对上述建立的subscreen 0111添加PBO,如下代码:
*----------------------------------------------------------------------*
***INCLUDE ZXM02O01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0111 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0111 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
CHECK fl_input IS INITIAL.
LOOP AT SCREEN.
screen-input = 0.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE. " STATUS_0111 OUTPUT
OK,到此为止,ME51n等的屏幕增强就完成了,屏幕0111上栏位可以保存到eban中,修改,显示等。
这是比较简单的逻辑,如果有其他复杂的要求,可以对上述代码大做文章。