[转载]ME51n,ME52n,ME53n屏幕增强

使用增强:MEREQ001 购买申请中的客户自有数据

1、如果需要向PR中加入自定义字段,事务码se11,打开透明表EBAN,双击include:CI_EBANDB,创建结构CI_EBANDB,维护自定义的字段。
image

2、事务码CMOD create project:ZMMpr001,在Enhancement assignment中添加增强MEREQ001,保存。

3、事务码smod:MEREQ001,打开如下图,

image 
有三个function module,还有screen area,可知screen :0111便是预留的屏幕,可以在其函数组中创建screen 0111,然后在其上画一些需要的字段栏位就ok了。
双击其中一个function module,然后点击display object list按钮image,显示如下图
image 
在函数组XM02中create screen 0111,然后在其上画一些需要的字段栏位,注意0111设置为subscreen。

激活,CMOD中激活ZMMpr001,此时在事务码ME51n中就能看到多了一个客户数据tab页,相应me52n,me53n等也有。
image
到此为止,屏幕做好了,但是要在屏幕栏位上输入数据并能保存到透明表,及显示的时候能从透明表读出到屏幕栏位,就需要在上述三个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中,修改,显示等。
这是比较简单的逻辑,如果有其他复杂的要求,可以对上述代码大做文章。

原文地址:https://www.cnblogs.com/sapSB/p/3338107.html