`
Jack Wu
  • 浏览: 894894 次
  • 来自: ...
社区版块
存档分类
最新评论

如何使用BADI修改PO (processing to ME21N )

阅读更多

Requirement:

Populate EVERS [ Shipping Point ] at the time of purchase order ceration. Shipping point should be derivated from the shipping point on sales order [ if PO created from in reference to a sales order ].


Processing:

This is an example to show - how to achieve post-processing [ follow-on processing ] functionality using BADIs [ Business Add-inn ] or user-exits.

  • Find the relevant BADI using transaction SE18. In this case BADI ME_PURCHDOC_POSTED is used.
  • Further, implement the BADI using transaction SE19.
  • In Attributes section of BADI, define a STATIC attribute as PO_NUMBER. Static means the attribute will keep its value between the calls. This will be checked to ensure that same PO will not be processed twice. Also these kind of user-exits and BADIs might get called recursively and get caught into an infinite loop, if not coded properly. Rememeber that this BADI is at the time of PO save and then you are again trying to change & save the Purchase Order from within the BADI.
  • BAPI to change Purchase Order 'BAPI_PO_CHANGE' will be called IN BACKGROUND TASK to ensure that it will be called when COMMIT WORK is encountered.
  • Don't forget to activate the BADI implementation in SE19.


method IF_EX_ME_PURCHDOC_POSTED~POSTED .

DATA: wa_ekpo like line of IM_EKPO,
      lt_po_item type standard table of BAPIMEPOITEM,
      lt_po_itemx type standard table of BAPIMEPOITEMX,
      wa_po_item type BAPIMEPOITEM,
      wa_po_itemx type BAPIMEPOITEMX,
      lt_return type standard table of BAPIRET2.


*data: ls_ebeln type BAPIMEPOHEADER-PO_NUMBER.

check im_ekko-ebeln ne PO_NUMBER.

PO_NUMBER = im_ekko-ebeln.

LOOP AT IM_EKPO into wa_ekpo.

  wa_po_item-PO_ITEM = wa_ekpo-ebelp.
* EVERS to be derived
  wa_po_item-SHIPPING = 'C'.
  APPEND wa_po_item to lt_po_item .

  wa_po_itemx-PO_ITEM = wa_ekpo-ebelp.
  wa_po_itemx-SHIPPING = 'X'.
  APPEND wa_po_itemx to lt_po_itemx.
ENDLOOP.

 CALL FUNCTION 'BAPI_PO_CHANGE' IN BACKGROUND TASK
   EXPORTING
     purchaseorder                = PO_NUMBER
*    POHEADER                     =
*    POHEADERX                    =
*    POADDRVENDOR                 =
*    TESTRUN                      =
*    MEMORY_UNCOMPLETE            =
*    MEMORY_COMPLETE              =
*    POEXPIMPHEADER               =
*    POEXPIMPHEADERX              =
*    VERSIONS                     =
    NO_MESSAGING                 = 'X'
    NO_MESSAGE_REQ               = 'X'
    NO_AUTHORITY                 = 'X'
    NO_PRICE_FROM_PO             = 'X'
*  IMPORTING
*    EXPHEADER                    =
*    EXPPOEXPIMPHEADER            =
   TABLES
     RETURN                       = lt_return
     POITEM                       = lt_po_item
     POITEMX                      = lt_po_itemx
*    POADDRDELIVERY               =
*    POSCHEDULE                   =
*    POSCHEDULEX                  =
*    POACCOUNT                    =
*    POACCOUNTPROFITSEGMENT       =
*    POACCOUNTX                   =
*    POCONDHEADER                 =
*    POCONDHEADERX                =
*    POCOND                       =
*    POCONDX                      =
*    POLIMITS                     =
*    POCONTRACTLIMITS             =
*    POSERVICES                   =
*    POSRVACCESSVALUES            =
*    POSERVICESTEXT               =
*    EXTENSIONIN                  =
*    EXTENSIONOUT                 =
*    POEXPIMPITEM                 =
*    POEXPIMPITEMX                =
*    POTEXTHEADER                 =
*    POTEXTITEM                   =
*    ALLVERSIONS                  =
*    POPARTNER                    =
           .

endmethod.
来源:http://www.geocities.com/rmtiwari/main.html?http://www.geocities.com/rmtiwari/Resources/MySolutions/Dev/ABAP_nsFAQ.html

分享到:
评论

相关推荐

    SAP BADI增强PO GR

    标题:“SAP BADI增强PO GR”表示本文档将专注于如何通过SAP的增强技术-Business Add-In(BADI)来增强采购订单(PO)的Good Receipt(GR)流程。BADI是SAP中用来实现面向对象的增强技术,它允许用户不改动标准代码...

    BADI-BADI介绍

    通过预定义的接口,BAdI允许开发人员在不修改原生SAP标准代码的基础上扩展或覆盖现有业务流程的行为。这不仅保持了系统的灵活性,同时也降低了升级时的风险。 #### 工作原理 BAdI的工作原理主要基于面向对象的设计...

    SAP_ABAP_BADI_增强_开发

    详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。...

    BADI --实现步骤

    BADI(Business Add-In)是 SAP 提供的一种用户出口机制,允许用户在不修改 SAP 标准代码的情况下,实现自己的业务逻辑。BADI 的实现步骤可以分为两个部分:BADI 定义和在应用程序中调用 BADI。 BADI 定义 1. 使用...

    SAP 开发 SD 相关的增强BADI.pdf

    SAP (Systems, Applications, and Products in Data Processing) 是全球知名的ERP (Enterprise Resource Planning, 企业资源计划) 软件提供商,其产品广泛应用于各个行业的企业信息管理。SAP SD (Sales and ...

    Badi 实例

    BADI提供了在SAP源码中插入自定义逻辑的能力,而不必修改标准代码,这有助于维护系统的稳定性和兼容性。本实例将深入探讨BADI的使用方法和实践应用。 **一、BADI基础知识** 1. **BADI定义**:BADI是SAP提供的一种...

    abap BADI的实现

    综上所述,BADI是ABAP编程中一个非常强大的特性,它不仅提供了高度灵活的扩展机制,还允许开发人员在不修改标准代码的情况下实现自定义功能。通过以上步骤,可以有效地创建、实现和使用BADI来满足各种业务需求。

    SAP BADI开发示例

    因此,本文提供了一个实用的SAP BADI开发示例,展示了如何使用BADI来满足特定业务需求,并提供了一个详细的实现步骤,供读者参考和学习。 需要注意的是,在实现BADI时,需要遵守SAP的开发规范和命名惯例,以确保...

    BADI资料 有截图

    【BADI(Business Add-In)简介】 BADI是SAP系统中的一个重要概念...掌握BADI的使用方法,对于SAP系统管理员和开发人员来说至关重要,因为它允许他们有效地调整系统以满足业务需求,同时避免了对标准软件的直接修改。

    什么是BADI_如何从SAP中查找BADI

    3. **ST05监控工具的应用**:可以使用ST05工具监控某一事务代码的执行情况,并通过选择查看上述表和视图的操作来追踪BADI的使用情况。这样可以帮助开发者找到与特定事务代码相关的所有BADI。 4. **SE18和SE19工具的...

    SAP how to find a badi

    在SAP系统中,BADI(Business Add-In)是一种非常重要的扩展机制,允许用户自定义业务逻辑而不修改标准SAP代码。对于开发人员来说,了解如何快速有效地查找与特定事务代码或功能模块相关的BADI是非常重要的。本文将...

    SAP ABAP开发BADI与增强资料

    BADI是一种灵活的、面向对象的设计技术,它允许开发人员在不修改标准SAP代码的情况下对SAP功能进行扩展。BADI由一个接口定义和实现组成,接口定义了要扩展的功能,而实现则提供了具体的业务逻辑。当SAP系统执行到特...

    如何使用BADI对XD01/XD02/XD03进行附加屏幕,字段的增强

    使用 BADI 对 XD01/XD02/XD03 进行附加屏幕,字段的增强 在 SAP 中,对客户主数据的屏幕增强是一个重要的需求。使用 Business Add-Ins (BADI) 可以实现对客户主数据的屏幕增强。本文档将详细介绍如何使用 BADI 对 ...

    采购订单BAPI增强数值型字段转换方法.docx

    在这里,我们将使用BADI:ES_BADI_ME_BAPI中的ME_BAPI_PO_CUST来实现数值型字段的转换。 以下是实现BADI的步骤: 1. 进入TCode:SE19,在New BADI处填入ES_BADI_ME_BAPI,点击Create Impl按钮。 2. 填写名称和描述...

    SAP_ABAP_BADI

    SAP_ABAP_BADI ...最后,给出了一个示例程序来使用 BADi 方法,展示了 BADi 的实际应用。 这个资源提供了关于 SAP 系统中的业务增强接口 BADi 的详细介绍和实现过程,以及一个示例程序来展示 BADi 的实际应用。

    BADI开发实例

    BADI(Business Add-Ins)是SAP系统中一种非常重要的扩展机制,它允许开发者在不修改标准代码的前提下,为SAP应用程序添加自定义功能。BADI提供了一种标准化的方式来扩展SAP标准业务流程,而不会影响到SAP的标准代码...

    查找sap标准程序用户出口以及badi的方法

    1. **了解 BADI**:BADI 是 SAP 引入的一种更加灵活的扩展机制,它基于接口实现,允许在不修改标准代码的情况下扩展功能。BADI 包含一个或多个方法,每个方法代表一个业务操作。 2. **查找 BADI**: - 事务码 **SE...

    [SAP ABAP开发技术总结]ABAP Enhancement:第二部分

    用户出口子程序所能使用的数据变量 VA01增强示例 第二代:基于函数出口增强(Function) SMOD与CMOD的区别 查找出口函数 根据出口函数查找对应的出口对象 出口对象激活(SMOD) 增强详细说明文档 示例:通过出口实现...

    BADI及UserEXIT查找工具

    这种程序通常涉及查询多个SAP表,如`TSTC`(交易代码)、`MODSAPT`(SAP增强-短文本)、`SXS_ATTRT`(SAP BADI-短文本)、`MODACT`(修改)、`TRDIR`(系统表TRDIR)、`TFDIR`(函数模块)和`ENLFDIR`(函数模块附加...

    怎么写一本BADI程序

    如何写一本BADI程序,详细手顺

Global site tag (gtag.js) - Google Analytics