Skip to Content
0
Former Member
Jan 04, 2008 at 09:17 AM

Regarding Error message in ME_PROCESS_PO_CUST badi for validation.

1398 Views

hi Friends,

I am Using ME_PROCESS_PO_CUST badi for validation in Purchase order (ME21N),

For that I implemented PROCESS_ITEM method which fires during each row now i add another validation in same implementation for plant should be same through out the all line item. Now following code is woking fine but when for second line item user changese plant then it shows error message as per logic which is fine but even after changing plant to correct one the error message is still coming why is it so?

following is my current validation code

method IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM.

DATA:ls_poitem TYPE mepoitem,

ls_poitem_set TYPE mepoitem.

DATA:ls_poheader TYPE MEPOHEADER.

DATA:lm_poheader TYPE ref to IF_PURCHASE_ORDER_MM.

DATA:w_mara TYPE mara.

DATA:IT_ZMMTBL039 TYPE STANDARD TABLE OF ZMMTBL039 ,

WA_ZMMTBL039 TYPE ZMMTBL039 .

DATA:ls_poitem1 TYPE mepoitem.

DATA:V_KUNNR1 TYPE KNA1-KUNNR.

DATA:V_KUNNR2 TYPE KNA1-KUNNR.

DATA:W_WERKS(4),

w_werks_tmp(4),

w_flag(1).

ls_poitem = im_item->get_data( ).

lm_poheader = im_item->GET_HEADER( ).

ls_poheader = lm_poheader->GET_DATA( ).

IF ls_poitem-werks IS NOT INITIAL.

w_werks = ls_poitem-werks.

import w_flag to w_flag from MEMORY ID 'FLAG'.

if w_flag is initial.

w_flag = 'X'.

EXPORT w_werks_tmp FROM w_werks TO MEMORY ID 'MEMO1'.

export w_flag from w_flag to MEMORY ID 'FLAG'.

clear: w_flag.

endif.

ENDIF.

IMPORT w_werks_tmp TO w_werks FROM MEMORY ID 'MEMO1'.

break swaroopb.

IF ls_poitem-werks NE w_werks.

MESSAGE E010(zparts) with 'Different plants are not allowed in single PO.'.

ENDIF.

CLEAR: WA_ZMMTBL039,w_mara.

REFRESH:IT_ZMMTBL039[] .

SELECT *

INTO TABLE IT_ZMMTBL039

FROM ZMMTBL039

WHERE bsart EQ ls_poheader-bsart.

IF sy-subrc EQ 0.

CLEAR: WA_ZMMTBL039,w_mara.

SELECT SINGLE *

INTO w_mara

FROM mara

WHERE matnr EQ ls_poitem-MATNR.

IF SY-SUBRC EQ 0.

READ TABLE IT_ZMMTBL039 INTO WA_ZMMTBL039 WITH KEY bsart = ls_poheader-bsart

mtart = w_mara-mtart

spart = w_mara-spart.

IF SY-SUBRC NE 0.

MESSAGE E009(zparts) WITH ls_poitem-MATNR w_mara-spart ls_poheader-bsart .

ENDIF.

ENDIF.

ENDIF.

end method