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: 

ME_PROCESS_PO_CUST - Process Item assignments

Former Member
0 Kudos

I need some help with ME_PROCESS_PO_CUST. I am trying to use the POST method but I need a bit of help. My end goal is to loop at the account assignment items (the EKKN values) on the save. I was planning on doing something like the following:

DATA: it_items TYPE PURCHASE_ORDER_ITEMS,
          wa_items TYPE PURCHASE_ORDER_ITEM,
          it_accountings type PURCHASE_ORDER_ACCOUNTINGS,
          wa_accountings type PURCHASE_ORDER_ACCOUNTING.


CALL METHOD im_header->get_items
    RECEIVING
      re_items = it_items.

  loop at it_items into wa_items.

    CALL METHOD wa_items->get_accountings
      receiving
        re_accountings = it_accountings.


  endloop.

It looks to me like I need to continue in that manner until I get to the account assignment level. However, I get a syntax error on the second call. Can somebody help me get to the account assignment level?

Regards,

Davis

1 ACCEPTED SOLUTION

uwe_schieferstein
Active Contributor
0 Kudos

Hello Davis

There is just a minor error in your coding. The coding shown elow works.


METHOD if_ex_me_process_po_cust~post.
  DATA: lt_items TYPE purchase_order_items,
        ls_item  TYPE purchase_order_item,
        lt_accountings TYPE purchase_order_accountings,
        ls_accounting  TYPE purchase_order_accounting,
        ls_accdata     TYPE mepoaccounting.


  lt_items = im_header->get_items( ).

  LOOP AT lt_items INTO ls_item.
    REFRESH: lt_accountings.

    lt_accountings = ls_item-item->get_accountings( ).  " You wrote: CALL METHOD wa_items->get_accountings => wrong
    LOOP AT lt_accountings INTO ls_accounting.
      CLEAR: ls_accdata.
      ls_accdata = ls_accounting-accounting->get_data( ).

"     If condition is not met then inactivate accouting
      IF ( 1 = 2 ).
      ELSE.
        ls_accounting-accounting->invalidate( ).
      ENDIF.

    ENDLOOP.

  ENDLOOP.

ENDMETHOD.

Regards

Uwe

1 REPLY 1

uwe_schieferstein
Active Contributor
0 Kudos

Hello Davis

There is just a minor error in your coding. The coding shown elow works.


METHOD if_ex_me_process_po_cust~post.
  DATA: lt_items TYPE purchase_order_items,
        ls_item  TYPE purchase_order_item,
        lt_accountings TYPE purchase_order_accountings,
        ls_accounting  TYPE purchase_order_accounting,
        ls_accdata     TYPE mepoaccounting.


  lt_items = im_header->get_items( ).

  LOOP AT lt_items INTO ls_item.
    REFRESH: lt_accountings.

    lt_accountings = ls_item-item->get_accountings( ).  " You wrote: CALL METHOD wa_items->get_accountings => wrong
    LOOP AT lt_accountings INTO ls_accounting.
      CLEAR: ls_accdata.
      ls_accdata = ls_accounting-accounting->get_data( ).

"     If condition is not met then inactivate accouting
      IF ( 1 = 2 ).
      ELSE.
        ls_accounting-accounting->invalidate( ).
      ENDIF.

    ENDLOOP.

  ENDLOOP.

ENDMETHOD.

Regards

Uwe