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的增强技术-Business Add-In(BADI)来增强采购订单(PO)的Good Receipt(GR)流程。BADI是SAP中用来实现面向对象的增强技术,它允许用户不改动标准代码...
通过预定义的接口,BAdI允许开发人员在不修改原生SAP标准代码的基础上扩展或覆盖现有业务流程的行为。这不仅保持了系统的灵活性,同时也降低了升级时的风险。 #### 工作原理 BAdI的工作原理主要基于面向对象的设计...
详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。详细讲述SAP ABAP的BADI增强的概述及使用。...
BADI(Business Add-In)是 SAP 提供的一种用户出口机制,允许用户在不修改 SAP 标准代码的情况下,实现自己的业务逻辑。BADI 的实现步骤可以分为两个部分:BADI 定义和在应用程序中调用 BADI。 BADI 定义 1. 使用...
SAP (Systems, Applications, and Products in Data Processing) 是全球知名的ERP (Enterprise Resource Planning, 企业资源计划) 软件提供商,其产品广泛应用于各个行业的企业信息管理。SAP SD (Sales and ...
BADI提供了在SAP源码中插入自定义逻辑的能力,而不必修改标准代码,这有助于维护系统的稳定性和兼容性。本实例将深入探讨BADI的使用方法和实践应用。 **一、BADI基础知识** 1. **BADI定义**:BADI是SAP提供的一种...
综上所述,BADI是ABAP编程中一个非常强大的特性,它不仅提供了高度灵活的扩展机制,还允许开发人员在不修改标准代码的情况下实现自定义功能。通过以上步骤,可以有效地创建、实现和使用BADI来满足各种业务需求。
因此,本文提供了一个实用的SAP BADI开发示例,展示了如何使用BADI来满足特定业务需求,并提供了一个详细的实现步骤,供读者参考和学习。 需要注意的是,在实现BADI时,需要遵守SAP的开发规范和命名惯例,以确保...
【BADI(Business Add-In)简介】 BADI是SAP系统中的一个重要概念...掌握BADI的使用方法,对于SAP系统管理员和开发人员来说至关重要,因为它允许他们有效地调整系统以满足业务需求,同时避免了对标准软件的直接修改。
3. **ST05监控工具的应用**:可以使用ST05工具监控某一事务代码的执行情况,并通过选择查看上述表和视图的操作来追踪BADI的使用情况。这样可以帮助开发者找到与特定事务代码相关的所有BADI。 4. **SE18和SE19工具的...
在SAP系统中,BADI(Business Add-In)是一种非常重要的扩展机制,允许用户自定义业务逻辑而不修改标准SAP代码。对于开发人员来说,了解如何快速有效地查找与特定事务代码或功能模块相关的BADI是非常重要的。本文将...
BADI是一种灵活的、面向对象的设计技术,它允许开发人员在不修改标准SAP代码的情况下对SAP功能进行扩展。BADI由一个接口定义和实现组成,接口定义了要扩展的功能,而实现则提供了具体的业务逻辑。当SAP系统执行到特...
使用 BADI 对 XD01/XD02/XD03 进行附加屏幕,字段的增强 在 SAP 中,对客户主数据的屏幕增强是一个重要的需求。使用 Business Add-Ins (BADI) 可以实现对客户主数据的屏幕增强。本文档将详细介绍如何使用 BADI 对 ...
在这里,我们将使用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 ...最后,给出了一个示例程序来使用 BADi 方法,展示了 BADi 的实际应用。 这个资源提供了关于 SAP 系统中的业务增强接口 BADi 的详细介绍和实现过程,以及一个示例程序来展示 BADi 的实际应用。
BADI(Business Add-Ins)是SAP系统中一种非常重要的扩展机制,它允许开发者在不修改标准代码的前提下,为SAP应用程序添加自定义功能。BADI提供了一种标准化的方式来扩展SAP标准业务流程,而不会影响到SAP的标准代码...
1. **了解 BADI**:BADI 是 SAP 引入的一种更加灵活的扩展机制,它基于接口实现,允许在不修改标准代码的情况下扩展功能。BADI 包含一个或多个方法,每个方法代表一个业务操作。 2. **查找 BADI**: - 事务码 **SE...
用户出口子程序所能使用的数据变量 VA01增强示例 第二代:基于函数出口增强(Function) SMOD与CMOD的区别 查找出口函数 根据出口函数查找对应的出口对象 出口对象激活(SMOD) 增强详细说明文档 示例:通过出口实现...
这种程序通常涉及查询多个SAP表,如`TSTC`(交易代码)、`MODSAPT`(SAP增强-短文本)、`SXS_ATTRT`(SAP BADI-短文本)、`MODACT`(修改)、`TRDIR`(系统表TRDIR)、`TFDIR`(函数模块)和`ENLFDIR`(函数模块附加...
如何写一本BADI程序,详细手顺