BADI - ME_PROCESS_PO_CUST - CHECK Method

Hi ALL,
When I create I'm able to get data of all the line items in the purchase order in the method IF_EX_ME_PROCESS_PO_CUST~CHECK.
I need to do validations and change material and material group.
I want to call the method like below:
Data HS_DETAIL type MEPOITEM
      CALL METHOD IM_HEADER->SET_DATA
        EXPORTING
          IM_DATA = HS_DETAIL.
System is giving an error - type incompatible..
Am I missing something?
Meghna

HI,
The type of the importing parameter IM_DATA is MEPOHEADER and not MEPOITEM while you have defined HS_DETAIL  of type MEPOITEM
So you will get the error.
Regards,
Ankur Parab
Edited by: Ankur Parab on Aug 24, 2009 6:06 PM

Similar Messages

  • Badi-- ME_PROCESS_PO_CUST, PROCESS_ACCOUNT method

    Hi,
    My requirement is that While Creating PO,if the first four characters of Cost Center and FundsCenter is not equal to Plant then an error message should be raised . For this i used
    Badi>ME_PROCESS_PO_CUST   and Method->PROCESS_ACCOUNT .
    The problem is that  in  PROCESS_ACCOUNT method the parameter IM_ACCOUNT doesn't contain Plant value.
    If I am using PROCESS_ITEM method,in this IM_ITEM is not capturing Fundscenter value.
    Please help in solving the issue. Is  there any User Exit or Badi which gives me Plant,CostCenter,FundsCenter Values.?
    Thanks
    K Srinivas

    Hi,
      You can use same Badi for getting Plant,CostCenter,FundsCenter. what are all values you are not getting for that you use field-symbols. like here for getting Plant value Try these steps.
    1. Press F1 on PO Screen Plant value. Get Program name, screen field structure from that.
    2. declare one variable as field as field-symbols, in badi.
    FIELD-SYMBOLS: <lv_var> type any.
    Assign '((SAPLMEGUI)MEPO1211-NAME1) to <lv_var>.
    Here SAPLMEGUI is Program Name And MEPO1211-NAME1 is field structure of your program screen.
    in <lv_var> you will get the value of plant.
    Same process you can try for other fields also.
    Regards
    Vishnu Gupta

  • How to issue warning message in BADI ME_PROCESS_PO_CUST

    Hi Guys,
    I have already checked the forum regarding this. There are lots of threads. Unfortunately none of them helped me. I must be missing some thing in my code.
    I tried issuing warning message in BADI ME_PROCESS_PO_CUST and method PROCESS_ITEM.
    First i tried with normal message statement
    MESSAGE w001(00) WITH text-001 text-002.
    Didn't worked.
    Next tried calling standard macros
      DATA:mmmfd_cust_01 TYPE mmpur_metafield VALUE 90000000.
      call method cl_contextfield_mm=>set_current_field
                                      exporting im_field = mmmfd_cust_01.
      mmpur_metafield mmmfd_cust_01.
    mmpur_message_config 'W' 'X' ' '.      "Tried all permutations here
    mmpur_message_forced 'W' '00' '001' text-001 text-002 '' ''.
    Still no solution
    Tried with macro mmpur_message also
    Can some one helpme out to solve this issue.
    Thanks,
    Vinod.

    Hi all,
    Thanks for the responce.
    Not sure whether you have looked into BADI documentation or not. Please check below.
    "Further notes
    The above-mentioned macros are defined in the program MM_MESSAGES_MAC. Please include this program in your own application.
    Never issue messages in BAdI ME_GUI_PO_CUST! This is the task of the business logic and must therefore be done via the BAdI ME_PROCESS_PO_CUST.
    "Never use the ABAP statement MESSAGE in the BAdI ME_PROCESS_PO_CUST. Please use the macro mmpur_message_forced only. This macro only writes a message in the message collector.
    If you wish to mark the business object as invalid in order to prevent posting, you must additionally use the INVALIDATE ( ) method of the relevant interface. In this connection, see also the code example in the PROCESS_ITEM method of the BAdI ME_PROCESS_PO_CUST.
    I have tried almost all macros including mmpur_message_forced 'E' 'ME' '083' l_text ' '  ' '  ' '.
    Not sure where i am missing:(
    If i give error using MESSAGE statement it is working perfectly i.e. give error and save the PO. Only wanted to know if there are any implications.
    Thanks,
    Vinod

  • Implementing Badi ME_PROCESS_PO_CUST

    Hi all,
    I'm trying to implement the BADI ME_PROCESS_PO_CUST, the method PROCESS_ITEM, and I'm trying to change the field ls_positem-lebre, but it doesn't works. I've seen that this field is in the mepoitem_tech structure in the method set_data and it restores this value to his old value, anyone knows how to change this field?
    ..and another question...
    In the same BADI, I'm trying to change the sale's area in the shipping data, but when I call the method set_shipping_data there is a firewall that only allows me to change the fields vstel, lprio, vsbed, route and ablad. Is there any way to change the other fields?
    Thanks,
    Xavi

    Hi,
    By implementing the above badi you can change limited fields at item level.
    I am using this to change the following and it is working fine for me.
    a) Chaning field -- PLIFZ and RESWK and NETPR based on some header conditions
      DATA  : LS_MEPOITEM TYPE MEPOITEM.
      DATA  : ZZPLIFZ TYPE EKPO-PLIFZ.
    Get the Item data
        LS_MEPOITEM = IM_ITEM->GET_DATA( ).
         LS_MEPOITEM-PLIFZ = ZZPLIFZ.
         LS_MEPOITEM-NETPR = V_NETPR.
    Set the Item data
        CALL METHOD IM_ITEM->SET_DATA
          EXPORTING
            IM_DATA = LS_MEPOITEM.
    Try this.
    I hope this will help.
    Message was edited by: Lanka Murthy

  • BADI: PO creation : ME_PROCESS_PO_CUST : check line item matnr

    Hi all,
    I am using a BADI for PO creation definition is ME_PROCESS_PO_CUST and method PROCESS_ITEM
    if material number in the Line item is blank, create a material number(BDC or BAPI) and fill it in the line item.
    I am not very conversant in Objects...
    i seek help on the correctness of the method iam referring to for this purpose and also how to pass values to field matnr in the line item of the PO.
    i have used Get_Data for getting all the values and am using set_Data for changing the value of matnr if it is blank. but if i set the value of matnr it doesnt seem to change and am not able to figure out where i am wrong.
    Thanks in advance,
    Harish Ramakrishnan.

    Hi Harish!
    Then you are aware of the comment of SAP to process_item:
    "Under no circumstances make any changes to the database within this method. On no account use Commits."
    But also method post is commented like this: "On no account use Commits in this method."
    And you need a commit before you can use any created data in your PO.
    Nevertheless, you tried to change a value in process_item. I guess, you use method set_data of the interface, which is import parameter of this method. I had a look into the method set_item: there is just a update to an internal (hashed) table. So technically it should be changed. But if further checks will prohibit changes of special fields - who knows.
    I'm not surprised, that line checks can't change the matnr any longer, but at least online it's possible to change the material.
    Maybe you can debug, what happens when doing you changes. It might be already after a view steps, where the changes get lost.
    Regards,
    Christian
    P.S.: Do you also use method set_datax - or I'm in a totally wrong area?
    Message was edited by: Christian Wohlfahrt

  • BADI ME_PROCESS_PO_CUST Method Post

    Hi, how can we know in the method post of the BADI ME_PROCESS_PO_CUST if we are in creation mode (me21n) or change mode (me22n), I need to do some coding only at the creation of the PO but this method is call anytime we click save!
    thanks!

    Hello Alexandre
    It would be possible to check the transaction. However, if the BAPI BAPI_PO_CREATE is used the BAdI is also processed yet the transaction is most likely wrong.
    An <u>unambigous </u>approach is to check IMPORTING parameter IM_TRTYP in method IF_EX_ME_PROCESS_PO_CUST~OPEN:
    METHOD if_ex_me_process_po_cust~open.
    * define local data
      DATA:
        lo_po          TYPE REF TO cl_po_header_handle_mm,
        ls_header      TYPE mepoheader.
      me->md_trtyp = im_trtyp.  " save transaction type
      IF ( im_trtyp = 'H' ).  " add new purchase order
    I would add an instance attribute MD_TRTYP to the BAdI implementing class and save the transaction type in method IF_EX_ME_PROCESS_PO_CUST~OPEN (see above).
    Now you can simply add the following IF condition to your POST method:
    METHOD if_ex_me_process_po_cust~open.
      CASE me->md_trtyp. 
        WHEN 'H'.    " add new purchase order
      ...  " do required action for CREATE
        WHEN ... .
        WHEN others.
      ENDCASE.
    The possible transaction types can be found at: im_trtyp -> data element -> <b>domain </b>(fixed values).
    Regards
      Uwe

  • BADI ME_PROCESS_PO_CUST Method:PROCESS_ITEM

    Hi,
    I have to update the vendor material field through BADI ME_PROCESS_PO_CUST.
    I have created an implementation for this BADI.Can anyone help me find the solution for the same.
    Thanks.

    DATA: wa_ekko TYPE ekko,
            wa_ekkn TYPE ekkn,
            wa_ekpo TYPE ekpo,
            wa_vbap           TYPE vbap.
      DATA : lt_item TYPE mepoitem.
      IF im_item->is_persistent( ) EQ mmpur_no. "Only check for new items
    * Retrieve item data into BADI buffer
    *get data
        CALL METHOD im_item->get_data
          RECEIVING
            re_data = lt_item.
        ENDIF.
        SELECT SINGLE * FROM ekko
          INTO wa_ekko
          WHERE reswk NE ''.
        IF sy-subrc EQ 0.
          SELECT SINGLE * FROM ekkn
              INTO wa_ekkn
              WHERE ebeln = wa_ekko-ebeln.
          IF wa_ekkn-vbeln <> ''.
            SELECT SINGLE * FROM ekpo
              INTO wa_ekpo
              WHERE ebeln = wa_ekko-ebeln
              AND   idnlf = ''.
            IF sy-subrc EQ 0.
            SELECT SINGLE * FROM vbap
              INTO wa_vbap
              WHERE vbeln = wa_ekkn-vbeln
              AND   posnr = wa_ekkn-ebelp.
            IF sy-subrc EQ 0.
              lt_item-idnlf = wa_vbap-kdmat.
            ENDIF.
          ENDIF.
        ENDIF.
            ENDIF.
    * Update changes
        CALL METHOD im_item->set_data
          EXPORTING
            im_data = lt_item.

  • Warning message in me_process_req_cust badi - check method

    Hi all,
    I have implement me_process_req_cust badi and I want to give a warning message in check method. But it doesnt work. When I change the message type to E instead of W, it works. How can I give a warning message in check method? I will be very happy if you help me..
    Thanks...

    Thanks, but it didn't solve my problem. I still can't see my message..

  • Badi: ME_PROCESS_PO_CUST Method: IF_EX_ME_PROCESS_PO_CUST~PROCESS_SCHEDULE

    Hi,
    in method: IF_EX_ME_PROCESS_PO_CUST~PROCESS_SCHEDULE of Badi ME_PROCESS_PO_CUST
    i will get schedule-data and item data.
    I try this:
    METHOD IF_EX_ME_PROCESS_PO_CUST~PROCESS_SCHEDULE.
      DATA: LS_ITEM TYPE MEPOITEM.
      LS_ITEM = IM_ITEM->GET_ITEM( ).
      DATA: LS_SCHEDULE TYPE MEPOSCHEDULE.
      LS_SCHEDULE = IM_SCHEDULE->GET_DATA( ).
      BREAK-POINT.
    ENDMETHOD.
    LS-SCHEDULE are filled correct.
    in Line   LS_ITEM = IM_ITEM->GET_ITEM( ). i get an syntax error -> IM_ITEM are unknown.
    Has anyone an idea how i can get the ITEM Data?
    Thanks.
    Regards, Dieter

    Hi Vinod,
    thanks, it solved my Problem.
    I have another thread for ME_PROCESS_PO_CUST.
    Question to Z_ME_PROCESS_PO_CUST with item catagory L
    Do you have an idea for this problem?
    Thanks.
    Regards, Dieter

  • METHOD PROCESS_ACCOUNT OF BADI ME_PROCESS_PO_CUST.

    HI,
    I need to implement the method PROCESS_ACCOUNT of badi ME_PROCESS_PO_CUST.
    can anyone suugest me the samolw code for the same.
    i know i can get the account assignment data in the mathod IM_ACCOUNT->get_data.
    But how to declare the variable to store the data of im_account->getdata.
    so that i can use it in the progra?
    i mean for ex for header we will declare
    ls_header type mepoheader
    and then
    ls_header  = im_header->get-data.
    similarly can you plese tell me the declaration for storing the account assinment data.
    which table that variable will refer to.
    Smriti

    hai smriti
    u can call the method
    data: it_data type MEPOACCOUNTING
    im_accoutn->get_data  importing re_data  = it_data.
    just click the method type of parameter IM_ACCOUNT which is IF_PURCHASE_ORDER_ACCOUNT_MM  an interface
    u will get all the methods fro the same  u have ur mehtod get_data just click on it and click parameters and u get the paramter type  which is MEPOACCOUNTING
    regards
    m.a
    Edited by: mohammad afzal on Jul 9, 2009 7:11 AM

  • Save BADI Check Method

    ME_PROCESS_PO_CUST
    All,
    I'm able to change Purchase order at the item level using the check method
    CALL METHOD LO_ITEM->SET_DATAX
              EXPORTING
                IM_DATA = LS_ITEMX.
    I can see the changes before I hit the save button
    But once I hit save button and create the Purchase order the fields are not changed.
    Am I missing something?
    Meghna

    Thanks Vijay.
    I'm using ME_PROCESS_PO_CUST and the transaction is ME21n.
    Any Ideas.
    Meghna

  • BADI ME_PROCESS_PO_CUST

    hi experts,
    we are using me59n to create the stock transfer orders from stock transport requisitions. the requirement is during the creation of STO we need to stop the creation of STO for some of the STR based on custom logic. the logic needs the STR number.
    i tried "check" method  of BADI ME_PROCESS_PO_CUST and it seems working. i was able to stop the creation of PO based on some condition. but, in the actual requirement i need to to know STR ( that is purchase requisition number ) number in the method. based on the values in STR i need to stop the PO creation. i have checked the import parameters of the method but could not find anything.
    but when i went inside IM_HEADER associated type IF_PURCHASE_ORDER_MM I this is the importing parameter of the "check" method) i found a method IF_MESSAGE_OBJ_MM~GET_PARENT. I am not sure whether this will help? or is there any other way u think i can get the STR number in this method.
    or is there any other BADI / exit to meet this requirement.
    thanks

    no replies from anybody

  • Urgent Help Needed in BAdI ME_PROCESS_PO_CUST

    Hello friends,
    I m workin on BAdI ME_PROCESS_PO_CUST , my requirement is to store header level text in po if it is left blank by user , for this i have creadted standard text for every po header text , and implemeted method POST of the badi. so when user is saving the po , i m checking whether all header text is filled by user or not , for this i have called method GET_TEXT , if the text is blank i m reading data from standard text using READ_TEXT function module and setting in perticular text by using method SET_TEXT , every thing is working fine , the respective text ifrom standard text  getting filled to the perticular text of the po , if left blank by the user .  But the actual problem is that when i m going to display the same po again , the text that i was supplied by standard text is not showing in po.
    is there is anything that i missed out , i also done coomit work , but its not working ,
    so please suggest.......
    dont worry abt points

    Dear Mr Mahesh
    I also face similar problem . But my limitation is that I am new to BADI . Sir it will be great help if you can please mail me the steps / procedure and code to be written for implementing the above BADI .
    Sir , I look forward for your kind help please .
    Regards
    B V Mittal
    [email protected]

  • BADI ME_PROCESS_PO_CUST - DOES NOT CLEAR OUT ERROR

    In ME21N I want to validate the field Commodity Code - STAWN. I have used the BADI ME_PROCESS_PO_CUST*
    . Have used get_foreign_trade() in the PROCESS_ITEM method . I am able to throw an error . It is doing it but*
    after throwing error then when we give a valid Commoditycode too it is still showing the error and not clearing the error  .*
    As suggested by Dean Q I used   INCLUDE mm_messages_mac,
    tried im_item->set_foreign_trade( ls_mepo_eipo)  still when a valid Commodity code is entered after an invalid one  it does not clear out the error. In fact on checking using break-point I found that the second time it does not enter into the method  PROCESS_ITEM.    Any help is welcome
    Nivedita

    Hi,
    In SE18 give ME_PROCESS_PO_CUST as the enhancement spot and display. At the left side of the screen you can see the badi definition ME_PROCESS_PO_CUST. Expand the tree and double click on implementations. You can see the enhance implementations created. Double click on the enhancement implementation and in that screen there is a check box 'Implementation is active' and field 'Effect in current client'.
    If you know the enhancement implementation name(not the badi implementation name), you can check it directly from se19.
    Regards,
    Poornima

  • PROCESS_HEADER not fired in BADI ME_PROCESS_PO_CUST

    Dear experts,
    I face the problem, that the method PROCESS_HEADER of BADI ME_PROCESS_PO_CUST is not fired, when I am changing po header text. My requirement is to set a customer po header field, whenever a po header text is existent.
    Does anybody know, if this is the standard behaviour and how I can work around it?
    Thanxs

    Hi Aparna,
    actually I tried this, too.
    In the methods Check and Post (which both are fired normally) I coded my requirements, but in this methods I faced the problem that I was not able to save my programatic header field changes. (Even with the trick to cast the IM_HEADER to CL_PO_HEADER_HANDLE_MM to allow changes of internal attributes, used in method set_data(), any changes of po header fields were not saved.) But maybe I am wrong with my implementation? You may have a look:
      DATA: lv_val_id TYPE thead-tdid.
      DATA: lv_val_name TYPE thead-tdname.
      DATA: lv_val_object TYPE thead-tdobject.
      DATA: p_mepo_header TYPE MEPOHEADER.
      DATA: it_tline TYPE TABLE OF TLINE.
      DATA: lv_cl_po_header_handle_mm TYPE REF TO CL_PO_HEADER_HANDLE_MM.
    check existents of po header text
      lv_val_id = 'F09'.
      p_mepo_header = im_header->get_Data( ).
      lv_val_name = p_mepo_header-ebeln.
      lv_val_object = 'EKKO'.
      CALL FUNCTION 'READ_TEXT'
      EXPORTING
          client = sy-mandt
          id = lv_val_id
          language = sy-langu
          name = lv_val_name
          object = lv_val_object
        TABLES
          lines = it_tline
        EXCEPTIONS
          ID = 1
          LANGUAGE = 2
          NAME = 3
          NOT_FOUND = 4
          OBJECT = 5
          REFERENCE_CHECK = 6
          WRONG_ACCESS_TO_ARCHIVE = 7.
    any text there, then update customer po header field
      IF sy-subrc = 0.
        p_mepo_header-zzfield = 'X'.
      else.
        p_mepo_header-zzfield = ' '.
      endif.
    QD
      lv_cl_po_header_handle_mm ?= im_header.
      lv_cl_po_header_handle_mm->my_cust_firewall_on = 'X'.
      im_header->set_Data( p_mepo_header ).
      im_header->set_changed( ).
    po is still same as before and field zzfield was not updated.

Maybe you are looking for

  • Configuration issue with SP 2013 and SSRS 2012

    Hi I have installed sql server 2013, SP 2013 and PS 2013 in same server. Getting error when i try to configure Reporting services Integration and path is Central admin -> General application settings --> Reporting services Integration -->  provided u

  • Lenovo thinkpad 8 not entering sleep mode when lid closed

    RECENTLY I BOUGHT THINKPAD 8. I HAVE A PROBLEM. IT CAN'T ENTER SLEEP MODE. I CLOSE THE LID AND THE SCREEN IS ON. AT POWER OPTION IT IS SELECTED WHEN I CLOSE THE LID TO GO TO SLEEP , ON BATTERY AND WHEN PLUGED IN. THANKS FOR ANY HELP. Solved! Go to So

  • Daily Show Multipass broken AGAIN! 3rd October 2011 -same issue as last week!

    As happened last week, multipass is broken again! Episode available to buy, but not to download as part of multipass. Only received last weeks episodes on Friday in one go due to problems at Apple. Looks like they haven't fixed the underlying problem

  • PL/SQL Introspection - USER_IDENTIFIERS in Oracle 10g

    USER_IDENTIFIERS is a new view as of 11g that will show profile info about stored PL/SQL. For more info, see Tom Kyte's article here: http://www.oracle.com/technology/oramag/oracle/07-nov/o67asktom.html I need to replicate part of that functionality

  • Interface Crystal Report Server with Lotus Notes

    Hi, Does "Crystal Server 2011" or "Crystal Report Server 2008" provides an interface with Lotus Server so that user can schedue and deliver report to end user through Lotus Domino? (ie: user can receive reports in an email through Lotus Notes) Thanks