• [转载]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中,修改,显示等。
    这是比较简单的逻辑,如果有其他复杂的要求,可以对上述代码大做文章。

  • 相关阅读:
    开源ITIL管理软件iTop 2.5-2.6安装
    并发服务器
    套接字通信
    libevent
    gdb调试
    值得收藏的技术社区
    关于博客园随笔编辑页面内容不刷新(空白)的问题解决
    嵌入式Web框架
    内存地址的传递问题
    linux文件缓冲区
  • 原文地址:https://www.cnblogs.com/sapSB/p/3338107.html
Copyright © 2020-2023  润新知