• ME51N ME52N创建修改采购申请…


    怎样找badi不做介绍
    无论是类里打断点、或者st05跟踪,或者是spro里找都行
    我这个badi比较简单,网上一搜或者群里一问大家都知道
    ME_PROCESS_REQ_CUST
    这里简单实现里面的check

    ME51N <wbr>ME52N创建修改采购申请时的一个BADI
    FM内具体代码见最后

    这里说下不借助其他帮助的时候,怎么找到想要的方法,怎么找到需要的值
    ME51N <wbr>ME52N创建修改采购申请时的一个BADI

     显示参数

    ME51N <wbr>ME52N创建修改采购申请时的一个BADI

    ME51N <wbr>ME52N创建修改采购申请时的一个BADI

    双击进入im_header 

     

    一般都会有get_data.此处还有个get_tiems 

    ME51N <wbr>ME52N创建修改采购申请时的一个BADI
    打开参数
    ME51N <wbr>ME52N创建修改采购申请时的一个BADI

    双击查看该结构

    ME51N <wbr>ME52N创建修改采购申请时的一个BADI

    就是想要的采购申请号和行项目号,不过描述是:last item number

    说明是一条数据,而不是个表

    注意看看后面的描述


    然后看get_items,一般情况这两个方法是常用的

    ME51N <wbr>ME52N创建修改采购申请时的一个BADI

    会发现re_itmes 个内表

    而且这个内表参考类型,是个类IF_PURCHASE_REQUISITION_ITEM

    ME51N <wbr>ME52N创建修改采购申请时的一个BADI

    一般也会有get_data.

     一层层跟下去,调用的时候定义类对象,调用其方法即可


    另外:ME53N查看时,点编辑按钮,进入编辑状态,可以在ME_PROCESS_REQ_CUST -- open方法中写逻辑


    FM内代码:

     

    FUNCTION zlm_fm_me52n.

    *"----------------------------------------------------------------------

    *"*"Local interface:

    *"  IMPORTING

    *"     VALUE(IM_HEADER) TYPE REF TO  IF_PURCHASE_REQUISITION OPTIONAL

    *"  EXPORTING

    *"     VALUE(E_ITEM_DATA) TYPE  MEREQ_ITEM

    *"  EXCEPTIONS

    *"      ERROR

    *"----------------------------------------------------------------------

    *"*"Local interface:

    *"  IMPORTING

    *"     VALUE(IM_HEADER) TYPE REF TO  IF_PURCHASE_REQUISITION OPTIONAL

    *

    *1、  通过Tcode:ME52N进行采购申请修改时,

    *     更改行项目物料编码保存时需判断已更换物料是否未冻结物料,

    *     如果为冻结物料,则禁止采购申请保存并给与错误提示:行项目XXX新更换物料XXXXXXX已冻结,请选择其他物料。

    *2、  冻结物料判断逻辑如下:

    *     当物料主数据MARA-MATNR的跨工厂物料状态MARA-MSTAE为非空时表示该物料已经冻结;

    *     当物料主数据MARA-MATNR的MARA-LVORM字段为“X”表示该物料已删除

    *"----------------------------------------------------------------------


      DATA: wa_head     TYPE mereq_header.                           "表头数据:采购申请号等

      DATA: it_item     TYPE mmpur_requisition_items.                "行项目表:采购申请下各行项目

      DATA  wa_item     LIKE LINE OF it_item.                        "行项目工作区

      DATA  cl_item     TYPE REF TO if_purchase_requisition_item.    "获取行项目数据的类

      DATA  l_item_data TYPE mereq_item.                             "行项目中具体值

      DATA: l_matnr     TYPE matnr.

      DATA:

            BEGIN OF str_dongjie,

            mstae     TYPE mstae,

            lvorm     TYPE lvorm,

             END OF str_dongjie,

            wa_dongjie LIKE str_dongjie.


      "获取头数据

      CALL METHOD im_header->get_data

        RECEIVING

          re_data = wa_head.


      "如果不是ME52N进入,没有采购申请单号,采购申请单号第一位是‘#’,不需要进行后续校验

      IF wa_head-banfn(1) = '#'.

        RETURN.

      ENDIF.


      "获取行项目

      CALL METHOD im_header->get_items

        RECEIVING

          re_items = it_item.


      "解析行项目

      LOOP AT it_item INTO wa_item.


        "获取行项目数据的类

        cl_item = wa_item-item.


        "获取行项目值

        CALL METHOD cl_item->get_data

          RECEIVING

            re_data = l_item_data.


        CLEAR l_matnr.


        "获取采购申请物料号

        SELECT SINGLE matnr

          FROM eban

          INTO l_matnr

          WHERE banfn = wa_head-banfn AND

                bnfpo = l_item_data-bnfpo.


        "如果修改了物料,检查更新的物料是否被冻结,冻结则输出物料信息、抛出异常并退出

        IF l_item_data-matnr <> l_matnr.


          SELECT SINGLE mstae lvorm

            INTO wa_dongjie

            FROM mara

            WHERE matnr = l_item_data-matnr.

          IF sy-subrc = 0 AND ( wa_dongjie-mstae IS NOT INITIAL OR wa_dongjie-lvorm = 'X'  ) .

            e_item_data = l_item_data.

            RAISE error.

            RETURN.

          ENDIF.

        ENDIF.

      ENDLOOP.


    ENDFUNCTION.


    http://blog.sina.com.cn/sapliumeng
  • 相关阅读:
    Exp5 MSF基础应用
    20155239 《网络对抗》Exp4 恶意代码分析
    20155239吕宇轩《网络对抗》Exp3 免杀原理与实践
    20155239 吕宇轩 后门原理与实践
    20155239吕宇轩 Exp1 PC平台逆向破解(5)M
    学号—20155239—吕宇轩《信息安全系统设计基础》课程总结
    20155238 2016-2017-2《Java程序设计》课程总结
    20155238 第十五周课堂实践
    20155238 实验四 Android程序设计
    20155238 《JAVA程序设计》实验三(敏捷开发与XP实践)实验报告
  • 原文地址:https://www.cnblogs.com/senlinmu110/p/3802147.html
Copyright © 2020-2023  润新知