SAP:采购申请ME51N/ME52N/ME54N/ME57屏幕增强

1.通过debug或者百度找到屏幕增强点:MEREQ001
2.SMOD组件中查看增强点提供我们增强的部分:
在这里插入图片描述
这里有一个预留屏幕可供我们增强,函数组XM02,屏幕编号0111
在这里插入图片描述
3.以上说明在采购申请中增加屏幕是可以实现的,此时我们就需要开始完成以下功能:增加一个屏幕实现业务需求
3.1采购申请标准表:EBAN
在这里插入图片描述
其中可以看到配额优先级就是我们要加的一个字段,其中对于该表所有的增强字段都需要存放在CI_EBANDB结构中
在这里插入图片描述
3.2查看函数组SE80:
在这里插入图片描述
创建屏幕0111:
在这里插入图片描述
此时我们在ME57或者其它事务代码中就可以查看到该页签客户数据存放的就是增强字段:
在这里插入图片描述
3.3CMOD中创建项目,将增强点:MEREQ001增加进去,如果之前已经被添加进去了,那就可以用之前的,这里只要存在就可以了

在这里插入图片描述
3.4此时还需要在出口做一些增强:
首先PBO中代码如下:ZXM02TOP中定义一些全局变量
在这里插入图片描述

*&---------------------------------------------------------------------*
*& 包含               ZXM02TOP
*&---------------------------------------------------------------------*

DATA:gv_aktvt TYPE aktvt,
     gv_input TYPE flag.
DATA:gv_werks TYPE ewerk,
     gv_matnr TYPE matnr.
*INCLUDE zxm02o01.

ZXM02U01中就是一些数据处理展示:

*&---------------------------------------------------------------------*
*& 包含               ZXM02U01
*&---------------------------------------------------------------------*
TABLES:equk,ci_ebandb.
DATA:i_mereq_item TYPE mereq_item.
DATA:lv_quote TYPE equp-quote.
DATA:lv_qunum TYPE equk-qunum.
DATA:BEGIN OF lt_equp OCCURS 0,
       lifnr TYPE equp-lifnr,
       qumng TYPE equp-qumng,
       qubmg TYPE equp-qubmg,
       quote TYPE equp-quote,
       qupos TYPE equp-qupos,
       zpbl  TYPE  qubas,
     END OF lt_equp.
CALL METHOD im_req_item->get_activity
  RECEIVING
    re_aktvt = gv_aktvt.
CASE gv_aktvt.
  WHEN 'A'.
    gv_input = space. "Output only
  WHEN 'V'.
    gv_input = 'X'. "Input/Output
ENDCASE.
IF im_req_item IS INITIAL.
  CLEAR ci_ebandb.
ELSE.
  CLEAR:gv_werks,gv_matnr.
  i_mereq_item = im_req_item->get_data( ).
*  MOVE-CORRESPONDING i_mereq_item TO ci_ebandb.
  gv_werks = i_mereq_item-werks.
  gv_matnr = i_mereq_item-matnr.
  CLEAR lv_quote.
  SELECT SINGLE qunum INTO lv_qunum
        FROM equk WHERE werks = gv_werks AND matnr = gv_matnr
        AND vdatu <= sy-datum AND bdatu <= sy-datum.
  IF sy-subrc = 0.
    SELECT lifnr qumng qubmg quote qupos
       INTO CORRESPONDING FIELDS OF TABLE lt_equp
         FROM equp WHERE qunum = lv_qunum AND quote > 0.
    LOOP AT lt_equp ASSIGNING FIELD-SYMBOL(<fs_equp>).
      <fs_equp>-zpbl = ( <fs_equp>-qumng + <fs_equp>-qubmg ) / <fs_equp>-quote.
    ENDLOOP.
    SORT lt_equp BY zpbl qupos .  "降序排列
    LOOP AT lt_equp INTO DATA(ls_equp).
      ci_ebandb-zzlifnr =  ci_ebandb-zzlifnr && '/' && ls_equp-lifnr.
      CLEAR ls_equp.
    ENDLOOP.
  ELSE.
    ci_ebandb-zzlifnr = ''.
  ENDIF.

ENDIF.

*IF gv_werks IS NOT INITIAL AND gv_werks IS NOT INITIAL.
*
*ENDIF.

ZXM02U03中调用方法将数据存入EBAN表中

*&---------------------------------------------------------------------*
*& 包含               ZXM02U03
*&---------------------------------------------------------------------*
DATA:ls_mereq_item TYPE mereq_item.
IF im_req_item IS NOT INITIAL.
  ls_mereq_item = im_req_item->get_data( ).

  MOVE-CORRESPONDING ci_ebandb TO ls_mereq_item.

  CALL METHOD im_req_item->set_data( ls_mereq_item ).

  ex_changed = abap_true.
ENDIF.

屏幕0111中PBO做一些屏幕控制:

*----------------------------------------------------------------------*
***INCLUDE ZXM02ZZZ.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0111 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0111 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_0111 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
  CHECK gv_input IS INITIAL.
  LOOP AT SCREEN.
      screen-input = 0.
    MODIFY SCREEN.
  ENDLOOP.

ENDMODULE.

ZXM02U12:这里面可写一些屏幕校验逻辑
在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值