Purchase Order Header enhancement - ME_GUI_PO_CUST and ME_PROCESS_PO_CUST

I have enhanced CI_EKKODB in EKKO to add 12 new fields. I've created a custom subscreen in SE80 with those fields.
I've implemented ME_GUI_PO_CUST (ME_PROCESS_PO_CUST was already implemented previously) and put the appropriate code in SUBSCRIBE and MAP_DYNPRO_FIELDS methods. I also put code, which I thought was appropriate in the other methods in the Interface.
I have copied function group MEPOBADIEX into ZMEPOBADIEX and changed the Function Modules to use the Z versions.
When I run ME21N / ME22N / ME23N, I do see my new tab and the fields. I can enter data and switch back and forth through the tabs and my data stays.  However, when I try to SAVE, I get the No Data Changed popup.
I have put breakpoints in each of the methods. The breakpoints are only stopping in SUBSCRIBE, MAP_DYNPRO_FIELDS and EXECUTE.
Methods: TRANSPORT_FROM_MODEL, TRANSPORT_TO_DYNP,  TRANSPORT_FROM_DYNP, and TRANSPORT_TO_MODEL aren't getting called.
And, by not getting called, it seem my data isn't being transferred back properly.
What's going on? I see this issue over and over online, but no solutions.
thanks,
robert.

Hi Robert,
I think it is better you can debug the code and see where it went wrong.Check the fm and mapping the fields.There is a wiki available with a [Me22n Custom fields|http://wiki.sdn.sap.com/wiki/display/ABAP/DetailedexplanationaboutBADIandthewaystofindtheBADIwithanexample%28ME23n+transaction%29] from Kiran,Still if there is any issue please paste your code then it will be easy .
Regards,
Madhu.

Similar Messages

  • BAdI or USEREXIT for changing data of purchase order header - ME21N

    hello all,
    I would like to ask you any way to change the field "reason for change" of the Purchase Order  header.
    I tried implementing the method PROCESS_HEADER of IF_EX_ME_PROCESS_PO_CUST
    or changing reason_code of structure ekko in user exits EXIT_SAPMM06E_006 and EXIT_SAPMM06E_006
    but it seems not to work.
    How can i do?..
    sap. v. ecc 6.0

    >
    Shiva Kumar wrote:
    > Use the user exit : EXIT_SAPMM06E_012: This is triggered on saving of a PO...and user can add validations etc in the exit...
    > Cheers
    It doesn't work...
    >
    Martin Voros wrote:
    > you get reference to object IM_HEADER in method PROCESS_HEADER of BADI ME_PROCESS_PO_CUST. On this object you can call two methods - GET_DATA and SET_DATA. GET_DATA returns structure with type MEPOHEADER. You can change your field here and then call method SET_DATA with your modified structure. This should work.
    > Cheers
    ..same thing for this solution...
    the field that i want to change is RSCOD inside structure EREVGRID...it seems to have also get_data and set_data methods ( IF_REVISION_ITEM_DCM ),
    but I don't know which BAdI to implement that has a object type ref to EREVGRID...
    Edited by: E_M on May 13, 2008 11:08 AM

  • BADI-User exit required for updating Purchase order header field -IHREZ

    Hello All,
    We have requirement in our business to update the purchase order header field "our reference" EKKO-IHREZ with some text field. We need a BADI/user exit that can be used for updating this field . We have checked the BADI ME_PROCESS_PO_CUST and unfortunately we are not able to use this BADI as it getting triggered in enjoy SAP transactions ME21N , ME22N etc. We are not creating the purchase order manually and we are using ME59N for creating Purchase order . Hence we are looking for some user exit/BADI that can be used in ME59N for updating the purchase order header field IHREZ.
    Thanks in advance for your immediate response .
    With regards,
    Joseph Anand B

    TRY using the exist u2022     EXIT_SAPLME59_001
    You can also later on add this field by BAPI_PO_CHANGE

  • Add customer fields to purchase order header

    Hi ,
    I need to add two additional fields to the purchase order header.
    In std program SAPMM06E screen number 101 i have seen a code
    CALL CUSTOMER-SUBSCREEN CUSTSCR1 INCLUDING 'SAPLXM06' '0101'
    how to make use of this..and add my fields..wht all steps need to be done for this..
    do i hve to append fields to ekko..pls give me details
    ansari

    You have to use [Enhancement|http://help.sap.com/erp2005_ehp_04/helpdata/EN/bf/ec079f5db911d295ae0000e82de14a/frameset.htm] MM06E005, read the enhancement documentation for more information.
    - Look at enhancement via transaction [SMOD|https://www.sdn.sap.com/irj/scn/advancedsearch?query=smod&cat=sdn_all]
    - Implement via transaction [CMOD|https://www.sdn.sap.com/irj/scn/advancedsearch?cat=sdn_all&query=cmod&adv=false&sortby=cm_rnd_rankvalue]
    Look at [Enhancements|http://help.sap.com/erp2005_ehp_04/helpdata/EN/bf/ec079f5db911d295ae0000e82de14a/frameset.htm] and [Customer Exits|http://help.sap.com/erp2005_ehp_04/helpdata/EN/c8/1975cc43b111d1896f0000e8322d00/frameset.htm] or the old [Changing the SAP Standard (BC)|http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCDWBCEX/BCDWBCEX.pdf]
    Another source of information begins at OSS [Note 496083 - FAQ: Customer enhancements (User Exits) in purchasing|https://service.sap.com/sap/support/notes/496083]
    Regards

  • Added custom screen in PO using BADI ME_GUI_PO_CUST and ME_PROCESS_PO_CUST

    Hi All,
    I have added custom screen with two z fields at item level using BADI ME_GUI_PO_CUST and ME_PROCESS_PO_CUST i can see my screen in tcodes ME21N , ME22N , ME23N but I am not able to save data.
    and also screen is coming in change mode even in ME23N .
    thanks.

    Hi,
    I have added two xfields at item level.
    This is the code i have added in zimplementation ZME_GUI_PO_CUST .
    IN Zimplementation ME_PROCESS_PO_CUST I have added code only in method FIELDSELECTION_ITEM . after doing this I can see only screens in ME21N, ME22N, ME23N but when enter data in zfields and trying to save it is giving me message no data has changed.
    method IF_EX_ME_GUI_PO_CUST~SUBSCRIBE.
    DATA: ls_subscriber LIKE LINE OF re_subscribers.
    we want to add a customer subscreen on the item detail tab
      CHECK im_application = 'PO'.
      CHECK im_element     = 'ITEM'.
    each line in re_subscribers generates a subscreen. We add one subscreen in this example
      CLEAR re_subscribers[].
    the name is a unique identifier for the subscreen and defined in this class definition
      ls_subscriber-name = subscreen1.
    the dynpro number to use
      ls_subscriber-dynpro = '0001'.
    the program where the dynpro can be found
      ls_subscriber-program = 'SAPLYMEPOBADIEX'.
    each subscreen needs his own DDIC-Structure
      ls_subscriber-struct_name = 'MEPO_BADI_STRUCT'.
    a label can be defined
      ls_subscriber-label = text-001.
    the position within the tabstrib can be defined
      ls_subscriber-position = 4.
    the height of the screen can be defined here. Currently we suport two screen sizes:
    value <= 7 a sevel line subscreen
    value > 7  a 16 line subscreen
      ls_subscriber-height = 7.
      APPEND ls_subscriber TO re_subscribers.
      ENDIF.
    method IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_MODEL.
      DATA: l_item       TYPE REF TO if_purchase_order_item_mm,
            ls_mepoitem  TYPE mepoitem,
            ls_customer  TYPE mepo_badi_exampl.
    system asks to transport data from the business logic into the view
      CASE im_name.
        WHEN subscreen1.
    is it an item? im_model can be header or item.
          mmpur_dynamic_cast l_item im_model.
          CHECK NOT l_item IS INITIAL.
    transport standard fields
          ls_mepoitem = l_item->get_data( ).
    transport customer fields
          CALL FUNCTION 'YMEPOBADIEX_GET_DATA'
            EXPORTING
              im_ebeln = ls_mepoitem-ebeln
              im_ebelp = ls_mepoitem-ebelp
            IMPORTING
              ex_data  = ls_customer.
    store info for later use
          MOVE-CORRESPONDING ls_mepoitem TO dynp_data_pbo.
          MOVE ls_customer-badi_bsgru TO dynp_data_pbo-badi_bsgru.
          MOVE ls_customer-badi_afnam TO dynp_data_pbo-badi_afnam.
        WHEN OTHERS.
      ENDCASE.
    endif.
    method IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_DYNP.
      CASE im_name.
        WHEN subscreen1.
          CALL FUNCTION 'YMEPOBADIEX_PUSH'
            EXPORTING
              im_dynp_data = dynp_data_pbo.
        WHEN OTHERS.
      ENDCASE.
    ENDIF.
    endmethod.
    method IF_EX_ME_GUI_PO_CUST~TRANSPORT_FROM_DYNP.
      CASE im_name.
        WHEN subscreen1.
          CALL FUNCTION 'YMEPOBADIEX_POP'
            IMPORTING
              ex_dynp_data = dynp_data_pai.
          IF dynp_data_pai NE dynp_data_pbo.
    something has changed therefor we have to notify the framework
    to transport data to the model
            re_changed = mmpur_yes.
          ENDIF.
        WHEN OTHERS.
      ENDCASE.
    ENDIF.
    endmethod.
    method IF_EX_ME_GUI_PO_CUST~TRANSPORT_TO_MODEL.
    DATA: l_item       TYPE REF TO if_purchase_order_item_mm,
            ls_mepoitem  TYPE mepoitem,
            ls_customer  TYPE mepo_badi_exampl.
    data have to be transported to business logic
      CASE im_name.
        WHEN subscreen1.
    is it an item? im_model can be header or item.
          mmpur_dynamic_cast l_item im_model.
          CHECK NOT l_item IS INITIAL.
          ls_mepoitem = l_item->get_data( ).
    standard fields changed?
         IF dynp_data_pbo-matkl NE dynp_data_pai-matkl OR
            dynp_data_pbo-plifz NE dynp_data_pai-plifz OR
            dynp_data_pbo-webaz NE dynp_data_pai-webaz.
    update standard fields
           ls_mepoitem-matkl = dynp_data_pai-matkl.
           ls_mepoitem-plifz = dynp_data_pai-plifz.
           ls_mepoitem-webaz = dynp_data_pai-webaz.
            CALL METHOD l_item->set_data( ls_mepoitem ).
         ENDIF.
            CALL FUNCTION 'YMEPOBADIEX_GET_DATA'
              EXPORTING
                im_ebeln = ls_mepoitem-ebeln
                im_ebelp = ls_mepoitem-ebelp
              IMPORTING
                ex_data  = ls_customer.
            ls_customer-badi_bsgru = dynp_data_pai-badi_bsgru.
            ls_customer-badi_afnam = dynp_data_pai-badi_afnam.
            CALL FUNCTION 'YMEPOBADIEX_SET_DATA'
              EXPORTING
                im_data = ls_customer.
         ENDIF.
        WHEN OTHERS.
      ENDCASE.
    ENDIF.
    method IF_EX_ME_PROCESS_PO_CUST~FIELDSELECTION_ITEM.
    DATA: l_persistent TYPE mmpur_bool.
    CONSTANTS:
    FIELD-SYMBOLS: <fs> LIKE LINE OF ch_fieldselection.
    l_persistent = im_item->is_persistent( ).
    *IF l_persistent EQ mmpur_yes.
    READ TABLE ch_fieldselection ASSIGNING <fs> WITH TABLE KEY
                         metafield = MMMFD_YYMAN_NUM."fd_cust_01.
    IF sy-subrc IS INITIAL.
    <fs>-fieldstatus = '*'. " Display <-- this one was as per the sample code given.
    <fs>-fieldstatus = '+'. " Input <-- this i added to make the field mandatory.
    ENDIF.
    READ TABLE ch_fieldselection ASSIGNING <fs> WITH TABLE KEY
                         metafield = MMMFD_YYMAN_DES."fd_cust_01.
    IF sy-subrc IS INITIAL.
    <fs>-fieldstatus = '*'. " Display <-- this one was as per the sample code given.
    <fs>-fieldstatus = '+'. " Input <-- this i added to make the field mandatory.
    ENDIF.
    *ENDIF.
    ENDIF.
    endmethod.

  • Status of Purchase Order Header

    Hello Community,
    in the purchase order header you find a tab status. This has values like Not Delivered, Partially Delivered and Full Delivered. I wonder how this status is set. Is it determined all the time you enter the transaction or is it stored in a database table.
    Basically I would need the table where the actual status of the header is stored. I looked through all tables like EKKO, EKET etc. but could not found it. Do somebody of you has any idea?
    Thanks
    Berthold

    Hi Berthold,
    I did a lot of research on the same topic, but finally came to the conclusion that these values don't get stored in any table but get updated as we enter the transaction's. Also, since being header level data it sums up all the item's in the PO and shows the status i.e. if there are 2 items in the PO the status will add up the ordered, delivered and invoiced quantities of both the items and show the values.
    Thanx,
    Pravin

  • Is there a way we can default the Requisition header description to Purchase Order header description in iProcurement?

    We would want to default the Requisition Header description to get imported onto the Purchase Order Header description. After the Requisition approval the Purchase Order gets created but the Header description is empty and I expect this to be defaulted. Please suggest available alternatives.

    Try with t.code AUT10 -Audit trail using which you can see the change histories.
    Regards,

  • How to extend Project Task in the Purchase Order header?

    Hi everybody,
    I am facing a problem I am sure is not so hard, but I cannot find my way through it.
    So, my objective is to extend the Purchase Order Header with the Project Task ID.
    I created the extension field first, as below:
    But I just cannot find how to populate it automatically from the data in the Project Task field.
    I tried a Relation in a BO extension going through the AccountingBlockAssignement, but it seems to not be functional.
    I also tried to make a Reference to the extension field and created an Event After Modify like:
    this.projecttaskpo = this.ExtensionForPO.content
    The Project Task PO is my reference to the extension field created in the Cloud Solution.
    And the ExtensionForPO is my relation to the TaskID:
    import AP.Common.GDT;
    import AP.Purchasing.Global as Purchasing;
    import AP.ProjectManagement.Global as ProjectManagement;
    import AP.IS.CodingBlock.Global as Coding;
    [Extension] businessobject AP.Purchasing.Global:PurchaseOrder {
      [Relation(Coding:AccountingCodingBlockDistribution.AccountingCodingBlockAssignment.ProjectTaskKey.TaskID)]
      [Label("Project ID")] element ExtensionForPO : TaskID;
        node Item {
    I am pretty sure this is not so hard, but I can't figure how to do it.
    The Task ID is in the Line Item so I do not understand why it could be so hard to add it in the Purchase Order Header.
    Moreover, when I try to make the path directly from the PurchaseOrder, like:
    PurchaseOrder.Item.ItemAccountingCodingBlockDistribution.AccountingCodingBlockAssignment.ProjectTaskKey.TaskID
    It returns to me that the association between Item and ItemAccountingCodingBlockDistribution is not a node. I know that, but it would be perfect if I could directly go from the Purchase Order BO to the Project Reference and the Project Tasks. But I cannot do that.
    Any help on this would be greatly appreciated as it is quite a recurring request from customers.
    I could have a misunderstanding in the process of doing it, or even in the code as I am a pure development newbie, so I m open to all propositions.
    Thank you all.
    Have a nice day.
    Jacques-Antoine

    Jacques-Antoine,
    You can't directly translate a repeating node or element (such as an Item or a Project Task from the Accounting Coding Block of an Item) to a singular node or element.
    The reason is that, though your use case may have the elements assumed to be the same for all items, this isn't necessarily the case, so ByDesign won't assume that you can use that kind of logic.
    The simplest approach would be to do an On-Save at the Root node of the Purchase Order along the following lines:
    this.projecttaskpo = this.Item.GetLast().ItemAccountingCodingBlockDistribution.AccountingCodingBlockAssignment.ProjectTaskKey.TaskID;
    i wouldn't actually recommend this code.
    You'd need validations for IsInitial, IsSet, and those kinds of functions.
    i'd at least use some foreach loop to check that all the accounting coding blocks were for the same task, raise warnings if they weren't, etc.

  • Adding TAB to purchase order header

    I need to add a tab with additional fields to a purchase order header.
    I know that I need to use a BAdI to do it but i do not know the procedure I need to follow.
    Hope you can help me

    sorry, I'm talking about the screen painter where you have changed SAPMV45A screen 4002.
    Actually, I have had a look at screen 4002 and see that the tabstrip alrady exists so the wizard is no use to you here.
    The error you are getting is because TAXI_TABSTRIP_CAPTIONS is a dictionary declared structure which has 32 fields. You cannot use a 'data' declaration of something which already exists. I don't know why you are trying to add the 33rd one but it doesn't look right to me to be trying.
    If you really do have a need to change it then you will have to change the TAXI_TABSTRIP_CAPTIONS structure in the dictionary itself via SE11.

  • Purchase reqisition header note not copying to Purchase order header Note

    Hi
    can you help me any body  regarding this issue
    "purchase reqisition HEADER NOTE  not copying to Purchase order HEADER NOTE " .
    it is very urgent issue for me please.
    Thanks
    Madhu.

    hi madhu
    ans1.)  in ECC 6 it is not possible to copy PR text to PO text , becouse the only way to convert PR into PO is document flow and document flow will show you only line items.
    ans 2 )  PR text is used for maintaining text related to PR genration information , like which MRP run is giving this PR or other information which user wants to maintain .
    ans3.) if user have done same thing earliar then it may possible that he was using 4.7 or ECC 5  .
    let me konw what user is saying .
    regards
    ravikant dewangan

  • Use Word Editor for purchase order header text

    Dear community!
    Currently in our system when we create purchase order header text we are using the standard sap text editor.
    I saw another system where they are using some kind of microsoft word editor plug in to create purchase order header texts and purchase order item texts.
    I would like to figure out how I can activate this editor in the system.
    Any help is appreciated - full points will be rewarded
    Thanks & regards
    Alex

    Hi,
    I tried to do that....
    but we are on SAP_BASIS 701 / 0008 / SAPKB70108
    when i start the report I get the message:
    MS Word is a default editor now.  Please read SAP Note 742662.
    hints???

  • Report to Purchase Orders with Good Receipt and pending for Invioce Receipt

    Hello,
    I'm looking a report bring me Purchase Orders with Goods Receipt and waiting for Invioce Verificacion (MIRO).
    I appreciate any help.
    Regards,
    Hector

    Hi,
    ME2N - In selection screen, enter Selection parameters as
    WE102 i.e. Goods receipt exists and in output screen put a filter on "Still to be invoiced (qty)" and "Still to be invoiced (val.)" as not equal to zero OR greater than Zero.
    OR use RECHNUNG i.e. Open invoices and execute the report
    OR Use MB5S - GR/IR Balances

  • Purchase Order released date field and table name

    Hi,
    Please tell me the  Purchase Order released date field and table name.
    Regards
    Deepak

    Hi,
    Table : EKKO.
    Fields : FRGKE,FRGZU.
    You can get release date of PO from CDHDR  table.
    give object value as your po number and check.dont forget to give leading zeros.
    The udate will be date field and transaction will be me29n for relaesed po.

  • Unit price validation in Purchase Order, Goods Receipt PO and A/R Invoice

    Hello!
    I want to have validation of the Unit Price field in Purchase Order, Goods Receipt PO and A/R Invoice documents.
    This means that user has to get some kind of message if she/he do not enter the Unit price in above mentioned documents.
    I can not use the price lists for this, to get the field populated automatically, because I do not have all the prices...
    I am no longer newbie when it come to SAP, but this really puzzles me
    Thanks,
    Dejan

    Hello guys,
    I have tried to add this code to check if the field Unit Price was empty in the Purchase Order form (Object ID 22)
    But it gives me an error message - Error converting data type varchar to numeric (CINF)
    I am getting the same error message even if I have some value in the Unit Price field...
    I am really confused - what is wrong with it???
    Here is the code from the Transaction notification
    IF (@object_type = N'22' AND @transaction_type in (N'A', N'U') )
         BEGIN
              IF EXISTS (SELECT T1.DocEntry FROM OPOR T0 inner join POR1 T1 on T0.DocEntry = T1.DocEntry
              WHERE (T1.PriceBefDi IS NULL OR T1.PriceBefDi = ' ') AND T0.DocEntry = @list_of_cols_val_tab_del)
                   BEGIN
                        Set @error =1
                        set @error_message = 'Unit Price cannot be blank'
                   END
         END
    Thanks,
    Dejan

  • Purchase Order - Header (How to change language - Urgent)

    Dear All,
    In purchase order header, communication data tab i find a field called Language, which is basically defaulted from the vendor master when the PO is created. I would like to know how i can change the value in this field after the PO has been created. I need to change this for a few PO's for a specific reason, but notice that the field is greyed.
    I tried MEMASSPO, but it is not having any effect on the PO.
    Hope my problem is clear, await inputs.
    Regards,
    Vivek

    Hi Subha,
    Thanks for your posting, but i guess you dint read my initial question completely, the field is greyed, meaning i cant make any modifications using ME22n.
    I checked in customizing for the screen layout, but not much help either.
    If anyone has faced this issue earlier & managed to resolve, please share your views.
    I want to know if there is any alternative other than deleting the PO & creating a new one.
    Vivek

Maybe you are looking for

  • Delete mail from server when removed from inbox

    I have a POP e-mail account set up. Under the mail account advanced settings there is an option to delete mail from the server when I delete it from the iPad inbox. I assume this is a valid option for the account since it is shown, and it is what I w

  • Help with app update but already updated

    Hi, I have an app called HulloMail installed, and it has already been updated. However, the app store says it needs to be updated, and shows this in the Updates tab. It's already updated though. Is there any way I can remove this notification? I've t

  • Pages Per Sheet Not Working.

    In previous versions of Mac OS X this was never a problem for me, but I can't get the "pages per sheet" feature listed in the Layout menu of the print dialogue to work.  I've created documents in TextEdit, Microsoft Word, and a few other applications

  • Read RPM from Quadrature Encoder

    Hi Everyone, I wish to measure the RPM of a shaft using a quadrature encoder and a PCI-6259 card. I've seen a few examples on reading position, which i have managed to get working, but Im not sure on how to get RPM. Any tips or code examples would be

  • FM which will display a select option in a pop up

    Hi All, I am looking for a FM which will display a select option in a pop up and prompt me to enter some value into it. I tried FM POPUP_GET_VALUES_USER_BUTTONS, &  POPUP_GET_VALUES  which allows me to enter only single parameter values and not a sel