Skip to Content

Po Creation Price Change Updation.

I am fetching some pricing condition values from the ztable, And passing to PO while creation.

BADI: ME_PROCESS_PO_CUST

METHOD: IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM

CODE:

im_item->get_conditions( IMPORTING ex_conditions = lt_conditions ).

LOOP AT lt_conditions INTO ls_condition WHERE kposn = ls_mepoitem-ebelp. "AND

kschl = 'ZGR'.

lv_flag = 'X'.

ls_condition-kbetr = lv_exval.

ls_condition-kwert = lv_exval.

MODIFY lt_conditions FROM ls_condition TRANSPORTING kbetr kwert.

im_item->set_conditions( EXPORTING im_conditions = lt_conditions ).

ENDLOOP.

While executing Pricing values updated in ME21N but displaying

ERROR An endless loop occurred during the processing of the Business Add-In ME_PROCESS_PO_CUST. The system terminated the processing.

ADDED Below code to avoid Error.

cl_po ?= im_header.

IF NOT cl_po->my_recheck_queue IS INITIAL.

CLEAR cl_po->my_recheck_queue.

ENDIF.

But pricing conditions values not getting updated in Po.

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

2 Answers

  • Best Answer
    Posted on Jan 10, 2015 at 06:05 PM

    Solved by

    Replacing

    im_item->set_conditions( EXPORTING im_conditions = lt_conditions ).

    IF NOT cl_po->my_recheck_queue IS INITIAL.

    CLEAR cl_po->my_recheck_queue.

    ENDIF.

    With


    Data cl_po TYPE REF TO cl_po_header_handle_mm.


    CALL METHOD cl_po->set_tkomv(

    im_tkomv = lt_conditions

    im_item_conditions_changed = mmpur_yes ).

    Regards,

    Venkat Ramesh.V

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 10, 2015 at 04:23 PM

    Why not just set a flag to check if it is your first iteration in the BAdi?

    Add a comment
    10|10000 characters needed characters exceeded

    • Former Member Venkatramesh V

      Umm, I am not sure what cl_po->my_recheck_queue. does.


      But I guess you are getting into infinite loop because you are changing the item within the process of changing an item. So, whenever you try to set the condition, PROCESS_ITEM must be triggered. Hence, a better way is to declare a flag as attribute of the class of the implementation, and set it whenever you get in loop for the first time. and then check the flag before calling set_conditions again.

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.