MM 增强

1.mir7发票预制

 . 业务需求

发票预制时金额不能为零

2 . 解决方案 
发票预制BADI增强:INVOICE_UPDATE

SE18:INVOICE_UPDATE,实施->显示,打开ZINVOICE_UPDATE,在界面页CHANGE_BEFORE_UPDATE里面的程序

发-票预制BADI增强:INVOICE_UPDATE

代码示例:

method IF_EX_INVOICE_UPDATE~CHANGE_BEFORE_UPDATE.


* 发票预制的增强
  IF sy-tcode = 'MR11' or sy-tcode = 'MR11SHOW'.
    return.
  ENDIF.

  IF S_RBKP_NEW-RMWWR = 0.
    message '金额不能为零!' type 'E'.
    exit.
  ENDIF.

endmethod.
2.

采购订单BADI增强-ME_PROCESS_PO_CUST

 
 
 

一 . 用户需求

在PT项目中,用户实际业务需求如下:

  1. 采购订单抬头中通信页签中的销售员(VERKF)字段文本更改为OA合同号(参考文章:修改SAP标准字段文本描述–CMOD增强);

  2. 当采购订单的公司代码是8200时,该字段输入OA合同号,且是必输项,不能为空值,否则弹出报错消息,采购订单不能保存。

  3. 当采购订单行项目库存地点出现在自定义表ZMM_SET_INSMK时,收货库存类型设置为质检库存

二 . 采购订单BADI增强ME_PROCESS_PO_CUST

  1. 为满足用户第二个需求,使用采购订单BADI增强ME_PROCESS_PO_CUST,在该增强的CHECK函数中写入检查逻辑,如不满足以上第二项业务需求逻辑,系统弹出错误消息,采购订单不允许保存。 
    采购订单BADI增强ME_PROCESS_PO_CUST 如下: 
    采购订单BADI增强ME_PROCESS_PO_CUST

代码示例如下:

METHOD if_ex_me_process_po_cust~check.
  DATA: lds_header TYPE mepoheader.

  DO 1 TIMES.
    CALL FUNCTION 'ZENHANCEMNET_CHECK'
      EXPORTING
        progname    = 'ZMM007'
        form        = 'ZME_PROCESS_PO_CUST->CHECK'
        serno       = 1
      EXCEPTIONS
        no_activity = 1
        OTHERS      = 2.
    IF sy-subrc <> 0.
      EXIT.
    ENDIF.

    CALL METHOD im_header->get_data
      RECEIVING
        re_data = lds_header.
    IF lds_header-bukrs = '8000' OR lds_header-bukrs = '8200'.  
        IF lds_header-verkf IS INITIAL.  
          MESSAGE '请输入OA合同号! (抬头信息中的"通信"标签页中)' TYPE 'E'.  ''弹出错误信息
          ch_failed = 0.
        ENDIF.
      ENDIF.

ENDMETHOD.

 

2 . 当采购订单行项目库存地点出现在自定义表ZMM_SET_INSMK(质检库存类型的库存地点设定表)时,收货库存类型设置为质检库存。 
解决方案:在采购订单BADI增强ME_PROCESS_PO_CUST 中的PROCESS_ITEM方法写入以下逻辑代码:

METHOD if_ex_me_process_po_cust~process_item.

  DATA: lds_item  TYPE mepoitem,
        ldf_mandt TYPE mandt.

* 设置库存类型! 'X'-质检库  S-
  lds_item = im_item->get_data( ).
  IF lds_item-werks IS NOT INITIAL AND lds_item-lgort IS NOT INITIAL.
    SELECT SINGLE mandt
      INTO ldf_mandt
      FROM zmm_set_insmk
     WHERE werks = lds_item-werks
       AND lgort = lds_item-lgort.
    IF sy-subrc = 0.
      lds_item-insmk = 'X'.
      im_item->set_data( lds_item ).
    else.
      lds_item-insmk = ''.
      im_item->set_data( lds_item ).
    ENDIF.
  ENDIF.

ENDMETHOD.

 

用户需求:SAP标准采购订单抬头,通信页签中的销售员字段文本,修改为OA合同号:

1 . 按F1键,查看销售员字段名称:VERKF

修改SAP标准字段文本描述--CMOD增强

2 . 事务代码:CMOD 增强

选择菜单->文本增强->关键字->更改 
修改SAP标准字段文本描述--CMOD增强

3 . 输入销售员字段名称:VERKF

修改SAP标准字段文本描述--CMOD增强

4 . 文本修改为OA合同号

修改SAP标准字段文本描述--CMOD增强

5 . 查看采购订单抬头的销售员字段文本

修改SAP标准字段文本描述--CMOD增强

 
posted @ 2018-04-04 16:04  以成Ronny  阅读(461)  评论(0编辑  收藏  举报