on 02-21-2007 7:13 PM
We have created a tab on the PO with some custom fields. However, some of these fields drive the account assignment. Is there way to call IF_EX_ME_PROCESS_PO_CUSTPROCESS_ACCOUNT to execute our custom logic for account determination or set an indicator after the processing our custom screen in IF_EX_ME_PROCESS_PO_CUSTPROCESS_ITEM has been processed?
What we are finding is that IF_EX_ME_PROCESS_PO_CUST~PROCESS_ACCOUNT is only executed once unless something in the accounting data is changed. Therefore, when something else is changed on the PO in the custom part, accounting is not getting redetermined.
David,
In BADI ME_PROCESS_PO_CUST method PROCESS_ITEM, you can still access your account assignment data.
The following are the sample codes.
Regards,
Fisher Li
DATA: LW_ITEM TYPE MEPOITEM.
DATA: LW_POSTED_ITEM TYPE MEPOITEM.
DATA: ITAB_ACCT TYPE PURCHASE_ORDER_ACCOUNTINGS,
ACCT_INTERFACE TYPE PURCHASE_ORDER_ACCOUNTING,
LW_ACCT TYPE MEPOACCOUNTING,
LW_POSTED_ACCT TYPE MEPOACCOUNTING.
Get currently being modified data for the PO line item
CALL METHOD IM_ITEM->GET_DATA
RECEIVING
RE_DATA = LW_ITEM.
Get posted data for the PO line item
CALL METHOD IM_ITEM->GET_PERSISTENT_DATA
IMPORTING
EX_DATA = LW_POSTED_ITEM
EXCEPTIONS
NO_DATA = 1.
IF SY-SUBRC = 1.
CLEAR LW_POSTED_ITEM.
ENDIF.
REFRESH ITAB_ACCT.
CALL METHOD IM_ITEM->GET_ACCOUNTINGS
RECEIVING
RE_ACCOUNTINGS = ITAB_ACCT.
LOOP AT ITAB_ACCT INTO ACCT_INTERFACE.
CLEAR LW_ACCT.
Get the newly updated PO item data
CALL METHOD ACCT_INTERFACE-ACCOUNTING->GET_DATA
RECEIVING
RE_DATA = LW_ACCT.
CLEAR LW_POSTED_ACCT.
Get the posted PO item data
CALL METHOD ACCT_INTERFACE-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. " GL acct
Account assignment was changed
IF W_MODIFIED NS 'ACCT1'.
CONCATENATE W_MODIFIED 'ACCT1' INTO W_MODIFIED SEPARATED BY '-'.
ENDIF.
ENDIF.
IF 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
IF W_MODIFIED NS 'ACCT2'.
CONCATENATE W_MODIFIED 'ACCT2' INTO W_MODIFIED SEPARATED BY '-'.
ENDIF.
ENDIF.
ENDLOOP.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
I guess it works only when you try to change the data.
If you want to force the users to change the data in acc assignment, may be you can try 'overall check' there.
Or
Pl also check BADI ME_PURCHDOC_POSTED.
Best regards
Ramki
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
102 | |
12 | |
11 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.