04-03-2006 3:08 PM
Hi
I need to use BADI ME_PROCESS_PO_CUST - Method CHECK for validating ME21N - PEP element.
I can read the header and the elements but i don't know how to acces GET_ACCOUNTINGS method and their values.
What can i do.
Another one:
How can i configurate SAP Business WorkPlace my e-mail in internet, name, ....
Best Regards
03-14-2007 8:15 PM
Pedro,
The following are the sample codes that you can reference.
Good luck!
Fisher Li
DATA: LW_POSTED_HEADER TYPE MEPOHEADER.
DATA: ITAB_IF_ITEM TYPE PURCHASE_ORDER_ITEMS.
DATA: LW_IF_ITEM TYPE PURCHASE_ORDER_ITEM.
DATA: ITAB_IF_ACCT TYPE PURCHASE_ORDER_ACCOUNTINGS.
DATA: LW_IF_ACCT TYPE PURCHASE_ORDER_ACCOUNTING.
DATA: LW_ACCT TYPE MEPOACCOUNTING.
DATA: LW_POSTED_ACCT TYPE MEPOACCOUNTING.
DATA: W_MODIFIED(5) TYPE C.
DATA: W_BNAME TYPE UST04-BNAME.
*
*
CHECK SY-UNAME+0(5) <> 'BATCH'.
Get the posted header data
CLEAR LW_POSTED_HEADER.
*
CALL METHOD IM_HEADER->GET_PERSISTENT_DATA
IMPORTING
EX_DATA = LW_POSTED_HEADER
EXCEPTIONS
NO_DATA = 1.
*
CHECK SY-SUBRC = 0.
*
Get PO line items
REFRESH ITAB_IF_ITEM.
CLEAR ITAB_IF_ITEM.
*
CALL METHOD IM_HEADER->GET_ITEMS
RECEIVING
RE_ITEMS = ITAB_IF_ITEM.
*
CLEAR W_MODIFIED.
*
LOOP AT ITAB_IF_ITEM INTO LW_IF_ITEM.
Get account assignment for each PO line item
REFRESH ITAB_IF_ACCT.
CLEAR ITAB_IF_ACCT.
*
CALL METHOD LW_IF_ITEM-ITEM->GET_ACCOUNTINGS
RECEIVING
RE_ACCOUNTINGS = ITAB_IF_ACCT.
*
LOOP AT ITAB_IF_ACCT INTO LW_IF_ACCT.
CLEAR LW_ACCT.
Get the newly updated PO item data
CALL METHOD LW_IF_ACCT-ACCOUNTING->GET_DATA
RECEIVING
RE_DATA = LW_ACCT.
*
CLEAR LW_POSTED_ACCT.
Get the posted PO item data
CALL METHOD LW_IF_ACCT-ACCOUNTING->GET_PERSISTENT_DATA
IMPORTING
EX_DATA = LW_POSTED_ACCT
EXCEPTIONS
NO_DATA = 1.
*
IF SY-SUBRC > 0.
CLEAR LW_POSTED_ACCT.
ENDIF.
*
IF LW_ACCT-LOEKZ <> LW_POSTED_ACCT-LOEKZ OR " Delete indicator
LW_ACCT-PRCTR <> LW_POSTED_ACCT-PRCTR OR " Cost center/WBS element
LW_ACCT-SAKTO <> LW_POSTED_ACCT-SAKTO OR " GL acct
LW_ACCT-VPROZ <> LW_POSTED_ACCT-VPROZ OR " Dist. Percentage
LW_ACCT-GSBER <> LW_POSTED_ACCT-GSBER OR " Business area
LW_ACCT-AUFNR <> LW_POSTED_ACCT-AUFNR. " Internal order
Account assignment was changed
W_MODIFIED = 'YES'.
EXIT.
ENDIF.
ENDLOOP.
*
IF W_MODIFIED = 'YES'.
EXIT.
ENDIF.
*
ENDLOOP.
04-03-2006 3:16 PM
Hi,
There is no such method GET_ACCOUNTINGS in this BADI.
GET_ACCOUNTINGS from where you are trying to access.
Regards
vijay
04-04-2006 7:24 AM
Hello Pedro,
I am not sure if there is easier and more secure way, but I would collect the data in the PROCESS_ACCOUNT method and than retrieve it in the CHECK method. You can use e.g. additional attribute and method in your implementation class.
Regards,
Michal
04-04-2006 7:50 AM
Hi ,
In BADI ME_PROCESS_PO_CUST- Method CHECK is having access to header data IM_HEADER. This header interface is having a method called GET_ITEMS it will give reference to item level data. In item level you have the GET_ACCOUNTINGS method which you want to access.
rajkumar
03-14-2007 8:15 PM
Pedro,
The following are the sample codes that you can reference.
Good luck!
Fisher Li
DATA: LW_POSTED_HEADER TYPE MEPOHEADER.
DATA: ITAB_IF_ITEM TYPE PURCHASE_ORDER_ITEMS.
DATA: LW_IF_ITEM TYPE PURCHASE_ORDER_ITEM.
DATA: ITAB_IF_ACCT TYPE PURCHASE_ORDER_ACCOUNTINGS.
DATA: LW_IF_ACCT TYPE PURCHASE_ORDER_ACCOUNTING.
DATA: LW_ACCT TYPE MEPOACCOUNTING.
DATA: LW_POSTED_ACCT TYPE MEPOACCOUNTING.
DATA: W_MODIFIED(5) TYPE C.
DATA: W_BNAME TYPE UST04-BNAME.
*
*
CHECK SY-UNAME+0(5) <> 'BATCH'.
Get the posted header data
CLEAR LW_POSTED_HEADER.
*
CALL METHOD IM_HEADER->GET_PERSISTENT_DATA
IMPORTING
EX_DATA = LW_POSTED_HEADER
EXCEPTIONS
NO_DATA = 1.
*
CHECK SY-SUBRC = 0.
*
Get PO line items
REFRESH ITAB_IF_ITEM.
CLEAR ITAB_IF_ITEM.
*
CALL METHOD IM_HEADER->GET_ITEMS
RECEIVING
RE_ITEMS = ITAB_IF_ITEM.
*
CLEAR W_MODIFIED.
*
LOOP AT ITAB_IF_ITEM INTO LW_IF_ITEM.
Get account assignment for each PO line item
REFRESH ITAB_IF_ACCT.
CLEAR ITAB_IF_ACCT.
*
CALL METHOD LW_IF_ITEM-ITEM->GET_ACCOUNTINGS
RECEIVING
RE_ACCOUNTINGS = ITAB_IF_ACCT.
*
LOOP AT ITAB_IF_ACCT INTO LW_IF_ACCT.
CLEAR LW_ACCT.
Get the newly updated PO item data
CALL METHOD LW_IF_ACCT-ACCOUNTING->GET_DATA
RECEIVING
RE_DATA = LW_ACCT.
*
CLEAR LW_POSTED_ACCT.
Get the posted PO item data
CALL METHOD LW_IF_ACCT-ACCOUNTING->GET_PERSISTENT_DATA
IMPORTING
EX_DATA = LW_POSTED_ACCT
EXCEPTIONS
NO_DATA = 1.
*
IF SY-SUBRC > 0.
CLEAR LW_POSTED_ACCT.
ENDIF.
*
IF LW_ACCT-LOEKZ <> LW_POSTED_ACCT-LOEKZ OR " Delete indicator
LW_ACCT-PRCTR <> LW_POSTED_ACCT-PRCTR OR " Cost center/WBS element
LW_ACCT-SAKTO <> LW_POSTED_ACCT-SAKTO OR " GL acct
LW_ACCT-VPROZ <> LW_POSTED_ACCT-VPROZ OR " Dist. Percentage
LW_ACCT-GSBER <> LW_POSTED_ACCT-GSBER OR " Business area
LW_ACCT-AUFNR <> LW_POSTED_ACCT-AUFNR. " Internal order
Account assignment was changed
W_MODIFIED = 'YES'.
EXIT.
ENDIF.
ENDLOOP.
*
IF W_MODIFIED = 'YES'.
EXIT.
ENDIF.
*
ENDLOOP.