Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BADI ME_PROCESS_PO_CUST

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

fisher_li
Participant
0 Kudos

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.

4 REPLIES 4

former_member188685
Active Contributor
0 Kudos

Hi,

There is no such method GET_ACCOUNTINGS in this BADI.

GET_ACCOUNTINGS from where you are trying to access.

Regards

vijay

Former Member
0 Kudos

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

Former Member
0 Kudos

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

fisher_li
Participant
0 Kudos

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.