如何使用BADI修改PO (processing to ME21N )
来源:互联网 发布:激光点云算法工程师 编辑:程序博客网 时间:2024/05/22 11:58
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
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1344686
- 如何使用BADI修改PO (processing to ME21N )
- 如何使用BADI修改PO (processing to ME21N )
- 如何使用BADI修改PO (processing to ME21N )
- 如何使用BADI修改PO (processing to ME21N )[转]
- ME21N/ME22N/ME23N屏幕增强BADI ME_GUI_PO_CUST
- ME21N/ME22N/ME23N屏幕增强BADI ME_GUI_PO_CUST
- ME21N,ME22N,ME23N之BADI增强ME_PROCESS_PO_CUST
- me21n增强BADI:ME_PROCESS_PO_CUST之process_account
- ME21N/ME22N/ME23N屏幕增强BADI ME_GUI_PO_CUST
- ME21N,ME22N,ME23N之BADI增强ME_PROCESS_PO_CUST
- PO增强BADI
- 在SAP PO 功能,使用BADI 设置Default Value (e.g. Tax Code )
- 利用BADI ME_PROCESS_PO_CUST進行PO check
- 如何使用Processing播放声音?
- 如何使用BADI RSU5_SAPI_BADI 增强数据源0FI_AR_04--图解
- 如何调用BADI
- 如何做出类似ME21N的折叠屏幕
- 如何做出类似ME21N的折叠屏幕
- 关于SmartForm和ScriptForm的输出格式设置说明
- SAP BOM的读取逻辑
- 如何提高读取BSEG的性能(sap已清项和未清项的提取)
- GL A/C posting using BAPI_ACC_GL_POSTING_POST.
- Inbound IDOC Status Report for Sales Orders
- 如何使用BADI修改PO (processing to ME21N )
- 许多的sap网站
- 权限对象和配置文件列表报表
- 锁定/解锁所有用户
- 获取SAP标准函数的说明(含参数和异常)
- SAP的架构
- SAP Basis 常用事务码
- 如何设计ABAP/4 Query报表
- How to Get Name of Months in ABAP/4