Verify Line Item fields in ME21N

Hi,
I have a requirment that needs to check that only one Requisitioner is enetered in the Requisitioner field in any of the line items. Example. If I placed "ReqA" in line item 1, and "ReqB" in line item 2, it should generate an error when I press enter or save, Both should have "ReqA" or "ReqB" as Requisitioner.
Kindly Help.
Thanks in Advance.

Hi,
    Try to Implement the BADI ME_PROCESS_PO_CUST in that look at for Method PROCESS_ITEM, do the coding here, Read the BADI documentation and sample codes available along with the BADI.
Regards
Bala Krishna

Similar Messages

  • Creating PO from PR - some line item fields are disabled.

    Hi All,
    I am creating a PO from purchase requisition through ME21N, from the document flow, I am dragging and dropping the PR into PO screen. While doing this, there are some line items which gets disabled. I want to check where this has been done, I checked in the BADI  and also in screen exits:
    SAPMM06E 0101 CUSTSCR1 SAPLXM06 0101 Subscreen: PO header
    SAPMM06E 0111 CUSTSCR1 SAPLXM06 0111 Subscreen: PO item
    SAPMM06E 0201 CUSTSCR1 SAPLXM06 0201 Subscreen: agreement header
    SAPMM06E 0211 CUSTSCR1 SAPLXM06 0211 Subscreen: agreement item
    SAPMM06E 0301 CUSTSCR1 SAPLXM06 0301 Subscreen: RFQ header
    SAPMM06E 0311 CUSTSCR1 SAPLXM06 0311 Subscreen: RFQ item
    But could not find anything, Please help.
    Regards,
    Madhuri

    Dear Guru's,
    we just facing the already discussed issue that a PO within PLANT from PO-item-level should be part of the PO-output determination. Which userexits have to manipulated to get field PLANT into structure KOMKBEA_FILL especially when PO is still not saved (NO EKKO/EKPO information available) but message is already determined with status "NOT PROCESSED"???
    Thanks for an answer.
    Regards,
    Bernd

  • Vendor line item fields

    Hi,
    I am using ECC6.0 version. When I am clicking the vendor open Invoice (document type RE ) in the vendor ledger (fbl1n) ,following Fields are not coming.
    the fields are:
    1. payment terms
    2.base line date
    3.discount base
    Can any one tell why this is happening and how to get those fields? and for that reason I am not able to change the Payment terms.
    Please help me out.
    NOTE:I have checked T.code SU53 for display authorization and it was found Successful.
    <removed_by_moderator>
    with Regards,
    Sudipto

    I think you may need to do some configuration in SPRO to achieve what you are looking for.
    Try the following:
    Go to SPRO
    Look under Financial Accounting (New), Document, Rules for Changing Documents.
    I think you want to then click on "Document Change Rules, Line Item"
    Under AccTy enter a K for vendor, leave your transaction type blank, then add in the "table-field" name you are wanting to either view or allowed to be changed.
    example: Baseline Payment date is:  BSEG-ZFBDT and Payment Method is BSEG-ZLSCH
    Once you finish your configuration you should then be able to drill down in FbL1n and then be able to change those fields.
    Let me know if that works for you!
    Cindy

  • Line Item Field "Assignment" not populating

    I am posting a KR doc. The assignment field in the line item is not populating with the date on the document is being posted in either of the line items, posting key 31 posting to Vendor and posting key 40 posting to an expense G/L account. The assignment field remains empty. I have checked some documents in the other company codes where this field is being populated with the date in the yyyymmdd.
    Please let me know what controls this and how can I make this field populate.

    Th Sory key for the GL for that company code should have the document date as the sort key.... check in FS00

  • How to avoid Line Items(fields) in BAPI mapping.

    Hi
    Does any body help me for mapping between header and line items in BAPI..
    my scenario is filerfcmail(wokflow)!
    File is CSV based :
    (ex: 001150,,1123,JERM,08122006,,,
         ,,,ANN,,01082006,
    If you look at example csv file , there is some fields mixed with header and line items. But in RFC header can be 1 to 1 and line item should be 0 to Unbound.
    Now my problem is if I sent above example csv file as source :
    The payload coming like this(sxmb_moni) :
    </HEADERDATA>
    - <GLACCOUNTDATA>
    - <item>
      <COSTCENTER />
      <PROFIT_CTR />
      </item>
    - <item>
      <GL_ACCOUNT>738100</GL_ACCOUNT>
      <ITEM_AMOUNT>60000</ITEM_AMOUNT>
      <COMP_CODE>001150</COMP_CODE>
      <ITEM_TEXT>*777-8030-861</ITEM_TEXT>
      <COSTCENTER>7320</COSTCENTER>
      <PROFIT_CTR>7320</PROFIT_CTR>
      <ALLOC_NMBR />
      </item>
    - <item>
      <GL_ACCOUNT>738100</GL_ACCOUNT>
      <ITEM_AMOUNT>40000</ITEM_AMOUNT>
      <COMP_CODE>001151</COMP_CODE>
      <ITEM_TEXT>*777-8030-861</ITEM_TEXT>
      <COSTCENTER>6010</COSTCENTER>
      <PROFIT_CTR>6010</PROFIT_CTR>
      <ALLOC_NMBR />
      </item>
      <item />
      </GLACCOUNTDATA>
    You can find there is one more item coming after headerdata with null values. It means map reading first line and one by one , if any field found in rows which belogs to GLAccount(Line item), then it writing one more item after headerdata with that fields only.
    Remainig GLAccount data coming as per map after the item .
    Can you tell me how to avoid extra line items.
    Thanks,
    Sankar

    Yes, It exist..
    I cross checked ..with out givig fileds and giving some fields...its writing another items in after headerdata tag.
    hope you understand , what my problem..
    See: GLACCOUNTDATA under subnode
          item is 0 to unbound in BAPI side, because of this its reading all rows , and if find any field which belongs to GLAccount , then it writing another item tag after headerr data.
    Thnaks,
    Sankar

  • Ship to party PO number line item field updating in ORDERS IDOC

    Hi Experts,
             We are in the process of creating the Sales order by receiving EDI data from customer and converting in to IDOC format and trying to create the sales order. While executing the ORDERS IDOC message type sales order is getting created successfully.
    But our requirement is, we want to store the customer contract details in the sales order. So we identified the "Ship to Party Purchase Order data" in ORDERS Tab in the sales order. While executing, in the Header level the Contract number is getting updated against Ship to party Contract number field.
            But during item level process, system is not updating the contract line item number field even though we maintained the value in E1EDP02-ZEILE for the QUALF 044.
    Note: The similar scenario, we want to capture the Customer Purchase order number & line item number. For this we maintained the value in E1EDP02-ZEILE for the separate QUALF, its working fine.
    Kindly give your valuable feedback on this issue also
    Regards,
    nag

    Hi
    See Note 753153 - FAQ: Customer-functions in IDOC_INPUT_ORDERS. Check if EXIT_SAPLVEDA_001 gives you any possibility to do it.
    I hope this helps you.
    Regards
    Eduardo

  • Line Item fields for output determination?

    Hi Gurus,
    we are having this dilemma. we want to create an output type for Purchas Orders which will be automatically triggered thru condition records. however, the criteria should include PLANT and MATERIAL GROUP which we all know as part of Line Item Details.
    our problem now is that when the output types are created, our output is not created because the PLANT and MATERIAL GROUP criteria is not satisfied. it is empty.
    is there a way to fix this? i'm thinking maybe some abap code or badi to force the value to the kompbea structure can do the trick (as the criteria came from this) but we have tried this and the kompbea field does not get populated.
    any ideas? abap fix and configuration is most welcome. <removed by moderator>
    thanks.
    Edited by: Thomas Zloch on Nov 22, 2010 5:12 PM - please do not offer ..., read rules of engagement

    Dear Guru's,
    we just facing the already discussed issue that a PO within PLANT from PO-item-level should be part of the PO-output determination. Which userexits have to manipulated to get field PLANT into structure KOMKBEA_FILL especially when PO is still not saved (NO EKKO/EKPO information available) but message is already determined with status "NOT PROCESSED"???
    Thanks for an answer.
    Regards,
    Bernd

  • Line Item fields and Open Item fields

    Hi dear SAP firends
    I got the ticket from client that
    The special fields & Standard fields are available in Line Item process( O7Z3)
    but I could not find the special fields in Open Item Process. (O7Z4)
    Now client needs the special fields in Open Item
    So can any body help me to solve this ticket
    Rgds,
    Venkata Raju

    Hi,
    For example if u see FBL3N there is no vendor name and number details. When u add those to the special fields then u can get that display also.
    At the end of month provisional liability has to reverse at that time there is no vendor means when migo is done vendor is not come in picture after miro done vendor come in picture.
    So those purposes.
    Regards,
    Sankar

  • Document Line Items fields

    Hello All:
    We want to prevent users from changing some of the a/c assignment fields on the document line items once they are parked.
    We need this only for specific document types and specific GL accounts.
    Is there any config or exits or something else to ONLY DISPLAY those specific fields.
    Thank you,
    Fred.

    We use FBV1 to create parked documents of different document types (SA, AA, ..., Z*). Some of these parked documents should not get changed until they get posted.
    The users should be able to change any or all of parked document data on SA, AA, .... document types but should not be allowed to change fields like cost center, functional area (KOSTL, FKBER,...) on the  Z* document types, when the GL account is for research (43****)
    Hope this explains it better. Appreciate your time and help.
    Fred.

  • Update Sales Order line item field

    Need to update a field mfrgr of VBAP table with some user defined values on selection screen parameter.
    I have selected all the Sales order line items in an internal table which need to be updated.
    How can I use the update command with set expression to do the same ? If yes how ? if no what is the best way to do the same.

    I am using the following command and it doesnt work as it says cannot use AND command.
              loop at it_vbfa.
                    UPDATE  VBAP
                    WHERE VBELN = it_vbfa-vbeln
                    and   posnr = it_vbfa-vbelv
                    SET MFRGR = P_MFRGR.
                    IF SY-SUBRC = '0'.
                       COMMIT WORK.
                    ENDIF.
              endloop.
    Any pointers ? What am I doing wrong.

  • Add new item field in ME21N

    Hi all,
      I want to add a new field in ME21N transaction, please tell me how to add new field in table control in ME21n tcode. I tried by using variant but according to my requirement invisible fields are not useful. I want to add a new field called MAKE with length 25 and i want to populate some text in that and need to display in related form also.
    Please guide me any enhancement technique.
    Thanks in advance,
    Mahi

    max bianchi ,
      I already seen that BADI definitions but i don't know how to achieve my requirement by using both of that.
    Please guide me the approach.
    Thanks...

  • ME21n Multiple line items

    Hi all,
    I wana pass multiple line items thru bdc me21n....can any1 please help me .if u guys have some code can mail me at [email protected] will be rewarded.
    my code below is not working for passing multiple items.
    report y1_po_test
           no standard page heading line-size 255.
    tables: mara,
            lfa1,
            eina,
            eine,
            eban,
            zdrgsah, zdrgsap,
            zdrgsup,
            t100,
            ekko,
            a004, zprice_grpsal, mvke.
    *Internal Table to get the input Data
    data: begin of i_input occurs 0,
            matnr like ekpo-matnr,
            asqty like ekpo-menge,
            ebeln like ekpo-ebeln,
            posnr(5),
           posnr like zdrgsap-posnr,
            invno like zdrgsap-invno,
            invdt like zdrgsah-invdt,
            netpr like zdrgsap-netpr,
            cntno like zdrgsap-cntno,
            shcnm like zdrgsah-shcnm,
            apcno like zdrgsap-apcno,
            spcno like zdrgsap-spcno,
            werks like ekpo-werks,
            lgort like ekpo-lgort,
            matkl like ekpo-matkl,
            pack(10),
            mvgr2 like mvke-mvgr2,
           dpric type p decimals 6 ,
           gpric type p decimals 6,
            end of i_input.
    data: begin of i_inputxt occurs 0,
            matnr(18) ,
            asqty(13) ,
            ebeln(10) ,
            posnr(6)  ,
            invno(10) ,
            invdt(8)  ,
            netpr(11) ,
            cntno(11) ,
            shcnm(10) ,
            werks(4) ,
            lgort(4) ,
            matkl(9) ,
            pack(10),
            end of i_inputxt.
    data: begin of i_error occurs 0,
            prnum like eban-banfn,
            pritm like eban-bnfpo,
            inmat like mara-matnr,
            prmat like mara-matnr,
            asqty like zdrgsap-asqty,
            prqty like eban-menge,
            remak(100),
           remark(255) type c,
          end of i_error.
    data : begin of i_error1 occurs 0,
            prnum like eban-banfn,
            pritm like eban-bnfpo,
            asqty like zdrgsap-asqty,
            prqty like eban-menge,
            remak(100),
            end of i_error1.
    data : begin of i_zsap occurs 0,
           ebeln like zdrgsap-ebeln,
           posnr(5),
           menge like zdrgsap-menge,
           asqty like zdrgsap-asqty,
           end of i_zsap.
    data : v_ebeln like eket-ebeln.
    data : begin of i_a004 occurs 0,
           matnr like a004-matnr,
           knumh like a004-knumh,
           kbetr like konp-kbetr,
           end of i_a004,
           i_a0041 like i_a004 occurs 0 with header line.
    data : begin of i_konp occurs 0,
           knumh like konp-knumh,
           kbetr like konp-kbetr,
          konwa like konp-konwa,
           end of i_konp.
    data : begin of i_konp1 occurs 0,
           knumh like konp-knumh,
           kbetr like konp-kbetr,
           konwa like konp-konwa,
           end of i_konp1.
    data : begin of i_netpr occurs 0,
           ebeln like eket-ebeln,
           ebelp like eket-ebelp,
           matnr like ekpo-matnr,
           menge like ekpo-menge,
           netpr like ekpo-netpr,
          kbetr like konp-kbetr,
           end of i_netpr.
    data : begin of i_grpsal occurs 0,
           pcode like zprice_grpsal-pcode,
           fact like zprice_grpsal-fact,
           wfact like zprice_grpsal-wfact,
           end of i_grpsal.
    data : begin of i_domsal occurs 0,
           pcode like zprice_grpsal-pcode,
           fact like zprice_grpsal-fact,
           wfact like zprice_grpsal-wfact,
           end of i_domsal.
    data : begin of i_zsap1 occurs 0,
           ebeln like zdrgsap-ebeln,
           posnr(5),
           asqty like zdrgsap-asqty,
           end of i_zsap1.
    data: begin of bdcdata occurs 0.
            include structure bdcdata.       " Batch input: New table field
    data: end of bdcdata.
          messages of call transaction
    data:   messtab like bdcmsgcoll occurs 0 with header line.
    data: i_mara type mara occurs 0 with header line,
          i_eina like eina occurs 0 with header line,
          i_eine like eine occurs 0 with header line.
    data : begin of i_inferr occurs 0,
           matnr like eina-matnr,
           infnr like eina-infnr,
           werks like eine-werks,
           end of i_inferr.
    data : begin of i_inferrc occurs 0,
           matnr like eina-matnr,
           end of i_inferrc.
    *Data declaration.
    data: v_file     type string,           " Variable for uploading file
          v_item(5)  type c,             " Line item number
          v_itno(2)  type n,
          p_wkurs like zdrgkurs-wkurs,
          v_matnr(20)    type c,
          v_menge(20)    type c,
          v_banfn(20)    type c,
          v_bnfpo(20)    type c,
          v_bednr(20)    type c,
          v_werks(20),
          p_lifnr(10) ,
          v_flag,
          p_lifnrtxt(10),
          p_wkurstxt(9),
          p_bsartxt(4),
          v_posnr(5), n type i,
          v_quant(13),
          v_asqty(13),
          v_prqty(13),
          v_apcno(6),
          v_spcno(4),
          v_itm(11),
          v_cnt type i,
          v_cntno(4),
          v_pack(10),
          v_order(15),
          v_lifnr(10),
          v_invdt like sy-datum,
          v_waers like ekko-waers,
          v_podat like ekko-bedat,
          v_docdt1 like sy-datum,
          v_docdt(10),
          v_fnam(132).
    data : begin of i_test occurs 0,
           bnfpo like eban-bnfpo,
           matnr like eban-matnr,
           menge like eban-menge,
           bsmng like eban-bsmng,
           end of i_test.
    data : begin of i_mvke occurs 0,
           matnr like mvke-matnr,
           mvgr2 like mvke-mvgr2,
           end of i_mvke.
    data : begin of i_invno,
           ebeln like ekko-ebeln,
           angnr like ekko-angnr,
           end of i_invno.
    data : i_final like zinvdiff occurs 0 with header line.
    Constants
    constants : c_pd01 like eine-werks value 'PD01'.
    *Selection Screen Declarations
    selection-screen begin of block b1 with frame title text-010.
    parameters: p_invno like zdrgsah-invno obligatory,
                p_bsart like ekko-bsart obligatory.
    selection-screen end of block b1.
    start-of-selection.
    To Upload the data into Internal table.
      perform f_upload_data.
    To Validate the input data.
      perform f_check_data.
    if i_error[] is not initial or i_error1[] is not initial.
    To display the error message
       perform f_display_errors.
    else.
    To create PO
      perform f_process_session.
    endif.
      perform f_check_calc_price.
      perform f_display_data.
    perform f_update_zinvdiff.
    *&      Form  f_get_filename
          text
    form f_get_filename.
    endform.                                 " F_get_filename
    *&      Form  f_upload_data
    form f_upload_data .
      select matwa as matnr asqty ebeln posnr b~invno invdt netpr cntno
        shcnm apcno spcno into table i_input
             from zdrgsah as a join zdrgsap as b on
             a~invno = b~invno
             where b~invno eq p_invno.
      select ebeln
             posnr
             menge
             asqty
             from zdrgsap into table i_zsap
             where invno = p_invno.
      loop at i_zsap.
        concatenate i_zsap-posnr(4) '0' into v_posnr.
        i_zsap1-ebeln = i_zsap-ebeln.
        i_zsap1-posnr = v_posnr.
        i_zsap1-asqty = i_zsap-asqty.
        collect i_zsap1.
        clear i_zsap1.
      endloop.
      delete adjacent duplicates  from i_zsap comparing posnr menge .
    delete adjacent duplicates  from i_input comparing ebeln  posnr.
      loop at i_input.
       p_werks = i_input-werks.
        v_invdt = i_input-invdt.
        call function 'CONVERT_DATE_FORMAT'
          exporting
            i_date      = v_invdt
          importing
            e_calc_date = v_invdt.
        if i_input-apcno is initial.
          v_apcno = '0000'.
        else.
          v_apcno = i_input-apcno.
        endif.
        if i_input-spcno is initial.
          v_spcno = '0000'.
        else.
          v_spcno = i_input-spcno.
        endif.
        if i_input-cntno is initial.
          i_input-cntno = '0000'.
        endif.
        concatenate v_apcno v_spcno into i_input-pack.
       concatenate v_pack v_cntno into v_order separated by '-'.
       i_input-order = v_order.
        clear : v_itm, v_cnt, v_cntno, v_pack, v_apcno, v_spcno, v_order.
        concatenate i_input-posnr(4) '0' into v_posnr.
        select single lifnr into p_lifnr from zdrgsup
       where shcnm = i_input-shcnm.
        v_lifnr = p_lifnr.
        if sy-subrc <> 0.
          message e000(zcnc) with text-002.
        endif.
        select single * from eban
           where banfn eq i_input-ebeln
           and   bnfpo eq v_posnr.
        if sy-subrc eq 0.
          move eban-werks to i_input-werks.
          move eban-lgort to i_input-lgort.
          move eban-matkl to i_input-matkl.
          move eban-bnfpo to i_test-bnfpo.
          move eban-matnr to i_test-matnr.
          move eban-menge to i_test-menge.
          move eban-bsmng to i_test-bsmng.
          modify i_input.
          if not i_input-matnr eq i_test-matnr.
            move i_input-ebeln to i_error-prnum.
            move v_posnr to i_error-pritm.
            move i_input-matnr to i_error-inmat.
            move eban-matnr to i_error-prmat.
            i_error-remak = 'Material does not match'.
            append i_error.
            clear i_error.
          endif.
          v_quant = i_test-menge - i_test-bsmng.
          read table i_zsap1 with key ebeln = i_input-ebeln posnr = v_posnr.
          if not i_zsap1-asqty <= v_quant.
            move i_input-ebeln to i_error1-prnum.
            move i_zsap1-posnr to i_error1-pritm.
            move i_zsap1-asqty to i_error1-asqty.
           move eban-menge to i_error1-prqty.
            move v_quant to i_error1-prqty.
            i_error1-remak = 'Material Quantity does not match'.
            append i_error1.
            clear i_error1.
          endif.
          select single matnr infnr from eina
               into corresponding fields of i_eina
               where matnr eq i_input-matnr
               and lifnr eq p_lifnr.
          if sy-subrc = 0.
            append i_eina.
            check not i_eina[] is initial.
            select single * from eine
                   into  i_eine
                   where infnr eq i_eina-infnr
                   and werks eq eban-werks.
            if sy-subrc <> 0.
              move i_input-matnr to i_inferr-matnr.
              move i_eina-infnr to i_inferr-infnr.
              move eban-werks to i_inferr-werks.
              append i_inferr.
              clear i_inferr.
            endif.
          else.
            move i_input-matnr to i_inferrc-matnr.
            append i_inferrc.
            clear i_inferrc.
          endif.
          clear : i_eina, i_eine.
          clear :  i_zsap, i_zsap1,  i_input,  v_posnr,
                  v_quant, i_test.
        endif.
      endloop.
      delete adjacent duplicates from i_error1 comparing prnum pritm.
      perform chk_info_rec.
    endform.                    " f_upload_data
    *&      Form  f_check_data
    form f_check_data .
      if not i_input[] is initial.
        select * from mara
        into table i_mara
        for all entries in i_input
        where matnr eq i_input-matnr.
      endif.
      loop at i_mara.
        read table i_input with key matnr = i_mara-matnr.
        if sy-subrc <> 0.
          write : 'Following Part Numbers are not found in MARA'.
          write : / i_input-matnr.
        endif.
      endloop.
      if i_mara[] is initial.
        loop at i_input.
          format color col_heading intensified off.
          write : 'Following Part Numbers are not found in MARA'.
          format color col_normal intensified off.
          write : / i_input-matnr.
        endloop.
      endif.
      select single wkurs into p_wkurs from zdrgkurs
        where invno = p_invno.
      if sy-subrc ne 0.
        message e000(zcnc) with text-s11.
      endif.
      call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
        exporting
          input  = p_lifnr
        importing
          output = p_lifnr.
      p_lifnrtxt = p_lifnr.
      p_wkurstxt = p_wkurs.
      p_bsartxt = p_bsart.
      loop at i_input.
        move-corresponding i_input to i_inputxt.
        append i_inputxt.
      endloop.
      select single ebeln
                    angnr from ekko
                    into i_invno
                    where angnr = p_invno.
      if sy-subrc = 0.
        perform display_err.
      endif.
    endform.                    " f_check_data
    *&      Form  f_process_session
          text
    form f_process_session.
      v_docdt1 = sy-datum.
      write v_docdt1 to v_docdt using edit mask '__.__.____'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=MEDOCTYPE'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MEPO_TOPLINE-BSART'.
      perform bdc_field       using 'MEPO_TOPLINE-BSART'
                                     p_bsartxt.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'MEPO_TOPLINE-SUPERFIELD'
                                     p_lifnrtxt.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MEPO1222-BUKRS'.
      perform bdc_field       using 'MEPO1222-EKORG'
                                    'SBAP'.
      perform bdc_field       using 'MEPO1222-EKGRP'
                                    'PG1'.
      perform bdc_field       using 'MEPO1222-BUKRS'
                                    'SBA'.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=TABHDT2'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'MEPO_TOPLINE-BSART'
                                     p_bsartxt.
      perform bdc_field       using 'MEPO_TOPLINE-SUPERFIELD'
                                     p_lifnrtxt.
    ********************conditions***************************************
      perform bdc_field       using 'BDC_CURSOR'
                                    'KOMV-KSCHL(08)'.
      perform bdc_field       using 'KOMV-KSCHL(07)'
                                     'zot1'.
      perform bdc_field       using 'KOMV-KSCHL(08)'
                                    'zinc'.
      perform bdc_field       using 'KOMV-KSCHL(09)'
                                    'ziv1'.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=V69A_KOAN'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'KOMV-KSCHL(01)'.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'KOMV-KSCHL(02)'
                                    'zca1'.
      perform bdc_field       using 'KOMV-KSCHL(03)'
                                    'zfa1'.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=TABHDT7'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'KOMV-KSCHL(09)'.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '/00'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MEPO1229-IHRAN'.
      perform bdc_field       using 'MEPO1229-ANGNR'
                                     p_invno.
      perform bdc_field       using 'MEPO1229-IHRAN'
                                     v_invdt.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=MEV4001BUTTON'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MEPO1229-IHRAN'.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
      perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=MEV4000BUTTON'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'MEPO1229-IHRAN'.
      perform bdc_field       using 'DYN_6000-LIST'
                                  '                                      1'.
    loop at i_inputxt.
       concatenate i_inputxt-posnr(4) '0' into v_posnr.
       concatenate 'MEPO1211-EMATN(' v_itno ')' into v_matnr.
       concatenate 'MEPO1211-MENGE(' v_itno ')' into v_menge.
       concatenate 'MEPO1211-BANFN(' v_itno ')' into v_banfn.
       concatenate 'MEPO1211-BNFPO(' v_itno ')' into v_bnfpo.
       concatenate 'MEPO1211-BEDNR(' v_itno ')' into v_bednr.
       concatenate 'MEPO1211-WERKS(' v_itno ')' into v_werks.
       v_item = v_item + 10.
       endif.
       v_itno = v_itno + 1.
       perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
       perform bdc_field       using 'BDC_OKCODE'
                                     '/00'.
       perform bdc_field       using 'BDC_CURSOR'
                                      v_matnr.
       perform bdc_field       using  v_matnr "'MEPO1211-EMATN(01)'
                                      i_inputxt-matnr.
       perform bdc_field       using  v_menge "'MEPO1211-MENGE(01)'
                                      i_inputxt-asqty.
       perform bdc_field       using  v_banfn "'MEPO1211-BANFN(01)'
                                      i_inputxt-ebeln.
       perform bdc_field       using  v_bnfpo "'MEPO1211-BNFPO(01)'
                                      i_inputxt-posnr.
       perform bdc_field       using 'DYN_6000-LIST'
                                      v_itno.
      loop at i_inputxt .
        v_itno = sy-tabix.
        clear v_fnam.
        concatenate 'MEPO1211-EMATN('  v_itno ')' into v_fnam.
        perform bdc_field       using v_fnam
                                      i_inputxt-matnr.
        clear v_fnam.
        concatenate 'MEPO1211-MENGE('  v_itno ')' into v_fnam.
        perform bdc_field       using v_fnam
                                           i_inputxt-asqty.
        clear v_fnam.
        concatenate 'MEPO1211-BANFN('  v_itno ')' into v_fnam.
        perform bdc_field       using v_fnam
                                           i_inputxt-ebeln.
        clear v_fnam.
        concatenate 'MEPO1211-BNFPO('  v_itno ')' into v_fnam.
        perform bdc_field       using v_fnam
                                           i_inputxt-posnr.
        perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
        perform bdc_field       using 'BDC_OKCODE'
                                          '/00'.
      endloop.
    loop at i_inputxt from 6.
       v_itno = sy-tabix.
       clear v_fnam.
       concatenate 'MEPO1211-EMATN('  v_itno ')' into v_fnam.
       perform bdc_field       using v_fnam
                                     i_inputxt-matnr.
       clear v_fnam.
       concatenate 'MEPO1211-MENGE('  v_itno ')' into v_fnam.
       perform bdc_field       using v_fnam
                                          i_inputxt-asqty.
       clear v_fnam.
       concatenate 'MEPO1211-BANFN('  v_itno ')' into v_fnam.
       perform bdc_field       using v_fnam
                                          i_inputxt-ebeln.
       clear v_fnam.
       concatenate 'MEPO1211-BNFPO('  v_itno ')' into v_fnam.
       perform bdc_field       using v_fnam
                                          i_inputxt-posnr.
       perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
       perform bdc_field       using 'BDC_OKCODE'
                                         '/00'.
    endloop.
    perform bdc_field       using 'BDC_CURSOR'
                                   'MEPO1320-SLFDT(01)'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=TABHDT2'.
    perform bdc_field       using 'DYN_6000-LIST'
                               '                                      2'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=V69A_KOAK'.
    perform bdc_field       using 'BDC_CURSOR'
                                   'KOMV-KBETR(05)'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=MECHECKDOC'.
    perform bdc_field       using 'BDC_CURSOR'
                                   'KOMV-KSCHL(01)'.
    perform bdc_dynpro      using 'SAPMSSY0' '0120'.
    perform bdc_field       using 'BDC_CURSOR'
                                   '04/03'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=&ONT'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=MEV4000BUTTON'.
    perform bdc_field       using 'BDC_CURSOR'
                                   'MEPO_TOPLINE-BSART'.
    perform bdc_field       using 'DYN_6000-LIST'
                               '                                      2'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                   'KOMV-KBETR(08)'.
    perform bdc_field       using 'KOMV-KBETR(03)'
                                   '             .54'.
    perform bdc_field       using 'KOMV-KBETR(08)'
                                   '             .54'.
    perform bdc_dynpro      using 'SAPLMEGUI' '0014'.
    perform bdc_field       using 'BDC_OKCODE'
                                   '=MESAVE'.
    perform bdc_field       using 'BDC_CURSOR'
                                   'MEPO1211-NETPR(01)'.
      perform bdc_transaction using 'ME21N'.
    endform.                    "f_process_session
    *&      Form  bdc_transaction
          text
         -->P_0464   text
    form bdc_transaction  using    tcode.
      data: l_mstring(480).
      data: l_subrc like sy-subrc.
      data: v_mode type c.
      v_mode = 'A'.
      refresh messtab.
      call transaction tcode using bdcdata
                       mode  v_mode
                       update 'S'
                       messages into messtab.
      l_subrc = sy-subrc.
         WRITE: / 'CALL_TRANSACTION',
                  TCODE,
                  'returncode:'(I05),
                  L_SUBRC,
                  'RECORD:',
                  SY-INDEX.
      loop at messtab.
        select single * from t100 where sprsl = messtab-msgspra
                                  and   arbgb = messtab-msgid
                                  and   msgnr = messtab-msgnr.
        if sy-subrc = 0.
          l_mstring = t100-text.
          if l_mstring cs '&1'.
            replace '&1' with messtab-msgv1 into l_mstring.
            replace '&2' with messtab-msgv2 into l_mstring.
            replace '&3' with messtab-msgv3 into l_mstring.
            replace '&4' with messtab-msgv4 into l_mstring.
          else.
            replace '&' with messtab-msgv1 into l_mstring.
            replace '&' with messtab-msgv2 into l_mstring.
            replace '&' with messtab-msgv3 into l_mstring.
            replace '&' with messtab-msgv4 into l_mstring.
          endif.
          condense l_mstring.
          if messtab-msgtyp eq 'E' or messtab-msgtyp eq 'W'.
            write: / messtab-msgtyp, l_mstring(250).
          endif.
          search  l_mstring for 'SEA'.
          if sy-subrc = 0.
            write: / messtab-msgtyp, l_mstring(250).
          endif.
        else.
          write: / messtab.
        endif.
      endloop.
    endform.                    " bdc_transaction
           Start new screen                                              *
    form bdc_dynpro using program dynpro.
      clear bdcdata.
      bdcdata-program  = program.
      bdcdata-dynpro   = dynpro.
      bdcdata-dynbegin = 'X'.
      append bdcdata.
    endform.                    "BDC_DYNPRO
           Insert field                                                  *
    form bdc_field using fnam fval.
      if fval <> space.
        clear bdcdata.
        bdcdata-fnam = fnam.
        bdcdata-fval = fval.
        append bdcdata.
      endif.
    endform.                    "BDC_FIELD
    *&      Form  f_display_errors
    form f_display_errors .
      if i_error[] is not initial.
        format color col_heading intensified off.
        uline .
        write :/ 'PR No     ',
                (10) 'Item No',
                (20) 'PR Part No',
                (30) 'Invoiced Part No',
                (60) 'Remark'.
        uline .
        loop at i_error.
          perform f_display_color.
          write :/ i_error-prnum,
                  (10) i_error-pritm ,
                  (20) i_error-prmat,
                  (30) i_error-inmat,
                  (60) i_error-remak.
          clear i_error.
        endloop.
      endif.
      if i_error1[] is not initial.
        format color col_heading intensified off.
        uline .
        write :/ 'PR No     ',
                (10) 'Item No',
                (20) 'PR Quantity',
                (30) 'Invoiced Quantity',
                (60) 'Remark'.
        uline .
        loop at i_error1.
          perform f_display_color.
          if not i_error1-asqty is initial.
            v_asqty = i_error1-asqty .
            v_prqty = i_error1-prqty.
            write :/ i_error1-prnum,
                (10) i_error1-pritm ,
                (20) v_prqty,
                (30) v_asqty,
                (60) i_error1-remak.
            clear : v_asqty, v_prqty.
          endif.
          clear i_error1.
        endloop.
      endif.
    endform.                    " f_display_errors
    *&      Form  f_display_color
    form f_display_color .
      if v_flag = 0.
        format color col_normal intensified on.
        v_flag = 1.
      elseif v_flag = 1.
        format color col_normal intensified off.
        v_flag = 0.
      endif.
    endform.                    " f_display_color
    *&      Form  display_err
          text
    -->  p1        text
    <--  p2        text
    form display_err .
      format color col_heading intensified off.
    write (120) text-006.
      uline .
      write : 'PR No     ',
              (15) 'Invoice No',
              (30) 'Remark'.
      uline.
      format color col_negative intensified off.
      write :/ i_invno-ebeln,
          (15) p_invno ,
          (30) 'Invoice Already Exists'.
    endform.                    " display_err
    *&      Form  f_check_calc_price
          text
    -->  p1        text
    <--  p2        text
    form f_check_calc_price .
      data : d_pric type p decimals 6 ,
             g_pric type p decimals 6,
             v_exch type p decimals 4 value '0.1049'.
      select single ebeln
                    waers
                    bedat
                    from ekko into  (v_ebeln , v_waers , v_podat)
                    where angnr eq p_invno.
      loop at i_input.
        concatenate i_input-posnr(4) '0' into v_posnr.
        select single p~ebeln
               p~ebelp
               matnr
               p~menge
               netpr
               into  i_netpr
               from eket as t inner join ekpo as p
               on t~ebeln eq p~ebeln
               and t~ebelp eq p~ebelp
               where t~ebeln eq v_ebeln
               and   t~banfn eq i_input-ebeln
               and   t~bnfpo eq v_posnr.
        if v_waers eq 'JPY'.
          i_netpr-netpr = i_netpr-netpr * 100.
        endif.
        if not i_input-netpr eq i_netpr-netpr.
          append i_netpr.
          clear : i_input, i_netpr, v_posnr.
        else.
          clear : i_input, i_netpr, v_posnr.
        endif.
      endloop.
      delete adjacent duplicates from i_netpr comparing ebeln ebelp matnr.
       modify zinvdiff from table i_final.
      if i_netpr[] is not initial.
        select matnr
               knumh
               from a004
               into table i_a004
               for all entries in i_netpr
               where matnr = i_netpr-matnr
               and kschl = 'ZPR0'
               and vkorg = 'SBAP'
               and vtweg = 'DD'
               and ( datab <= sy-datum and  datbi => sy-datum ).
        select  matnr
                knumh
                from a004
                into table i_a0041
                for all entries in i_netpr
                where matnr = i_netpr-matnr
                and kschl = 'ZPR0'
                and vkorg = 'EXPT'
                and vtweg = 'BR'
                and ( datab <= sy-datum and  datbi => sy-datum ).
        select matnr mvgr2 from mvke
               into  corresponding fields of table i_mvke
               for all entries in i_netpr
               where matnr = i_netpr-matnr
               and vkorg = 'SBAP'
               and vtweg = 'DD'.
        if i_a004[] is not initial.
          select  knumh
                  kbetr
                  from konp
                  into table i_konp
                  for all entries in i_a004
                  where knumh =  i_a004-knumh.
          loop at i_a004.
            read table i_konp with key knumh = i_a004-knumh.
            i_konp-kbetr =  i_konp-kbetr / 10.
            move i_konp-kbetr to i_a004-kbetr.
            modify i_a004.
            clear : i_konp, i_a004.
          endloop.
        endif.
        if i_a0041[] is not initial.
          select  knumh
                  kbetr
                  from  konp
                  into table i_konp1
                  for all entries in i_a0041
                  where knumh = i_a0041-knumh.
          loop at i_a0041.
            read table i_konp1 with key knumh = i_a0041-knumh.
            move i_konp1-kbetr to i_a0041-kbetr.
            modify i_a0041.
            clear : i_konp1, i_a0041.
          endloop.
        endif.
        if i_mvke[] is not initial.
          select pcode
                 fact
                 wfact
                 into table i_domsal
                 from zprice_grpsal
                 for all entries in i_mvke
                 where pcode = i_mvke-mvgr2
                 and vkorg = 'SBAP'
                 and vtweg = 'DD'
                 and lifnr = v_lifnr.
          select pcode
                 fact
                 wfact
                 into table i_grpsal
                 from zprice_grpsal
                 for all entries in i_mvke
                 where pcode = i_mvke-mvgr2
                 and vkorg = 'EXPT'
                 and vtweg = 'BR'
                 and lifnr = v_lifnr.
        endif.
        loop at i_input .
          read table i_mvke with key matnr = i_input-matnr.
          if sy-subrc = 0.
            move i_mvke-mvgr2 to i_input-mvgr2.
          endif.
          read table i_domsal with key pcode = i_input-mvgr2.
          if sy-subrc = 0.
            d_pric =  i_domsal-fact / i_domsal-wfact.
            i_input-dpric = i_input-netpr * d_pric * ( 112 / 100 ).
          endif.
          read table i_grpsal with key pcode = i_input-mvgr2.
          if sy-subrc = 0.
            g_pric =  i_grpsal-fact * i_grpsal-wfact.
            i_input-gpric = ( i_input-netpr * ( 112 / 100 ) ) / g_pric .
          endif.
          modify i_input.
          clear i_input.
          clear d_pric.
          clear g_pric.
        endloop.
      endif.
    endform.                    " f_check_price
    *&      Form  f_display_data
          text
    -->  p1        text
    <--  p2        text
    form f_display_data .
      loop at i_netpr.
        move i_netpr-ebeln to i_final-ebeln.
        move i_netpr-ebelp to i_final-ebelp.
        move i_netpr-matnr to i_final-matnr.
        move i_netpr-netpr to i_final-poprc.
        move i_netpr-menge to i_final-asqty.
        move p_invno to i_final-invoice.
        append i_final.
        clear i_final.
      endloop.
      loop at i_final.
        move v_podat to i_final-podat.
        read table i_input with key matnr = i_final-matnr.
        move i_input-netpr to i_final-invpr.
        move i_input-dpric to i_final-dcalclp.

    Dear Santosh,
    I haven't gone through your piece of code.
    But I can suggest a way out, while handling multiple line-items.
    The following code sample elucidate the use of multiple line-items. This is just an example for your understanding.
    FORM BDC_OPERATION .
      DATA:  LV_ARBPL(15)    TYPE  C,
                 LV_ROWNO(2)     TYPE  N.
      LOOP  AT  IT_TABDATA  INTO  WA_TABDATA.
        CLEAR:  LV_ARBPL
        LV_ROWNO  =  SY-TABIX.  
        CONCATENATE  'PLPOD-ARBPL'    '('  LV_ROWNO  ')'  INTO  LV_ARBPL.
        PERFORM  BDC_DYNPRO  USING  'SAPLCPDI'          '1400'.
        PERFORM  BDC_FIELD       USING  'BDC_CURSOR'   LV_ARBPL.
        PERFORM  BDC_FIELD       USING  'BDC_OKCODE'   '=PICK'.
        PERFORM  BDC_FIELD       USING  LV_ARBPL          WA_TABDATA-ARBPL.
      ENDLOOP.
    ENDFORM.                    " BDC_OPERATION
    Regards,
    Abir
    Please don't forget to award points  *

  • Creating Condition Table.. Key fields and line items

    dear all
    I am creating a Condition table and have 6 fields, I want to make 5 of them as key fields and also header line fields.
    I want my 6th field as line item field but I am unable to do that. My last key field is also shoiwing in line item.
    Please help.
    Thank you.
    Madhu.

    Hi,
    Check this thread
    Re: VK11
    Regards,
    Chandra

  • Is it possible to change the values of fields In Me21n tansaction?

    I Have to put in some logic to change the values of already existing Shipping condition field in the SHIPPING subscreen at the Line item level in ME21n transaction.
    I searched for the user exit to do soo. Did not find anything to do this. I would like to know if it is possible through some other way.
    thanks
    shubha

    Hi Shubha!
    You might use BAPI_PO_CHANGE. Even if there would be a user exit / BADI, then execution is not sure.
    You said: 'already existing shipping field' -> exits of a transaction are only executed during maintenance, not afterwards.
    So maybe you have to make your changes completely outside of PO.
    Still have a look at BADI ME_PROCESS_PO_CUST, there are a lot of methods and one might help you.
    Regards,
    Christian

  • Additional Fields In me21n

    hi all,
    My requirement is to add additional fields  in a new tab at header & line item level in ME21N.Ive copied the sample code of SAP in the interface of BADI ME_GUI_PO_CUST.
    but i cant see any new tab when i run the trx ME21N.Can any one suggest as how to resolve this problem.
    thnx & rgds.
    Points will be rewarded.

    Iam on ecc 5.0  i have implemented both the badis :ME_PROCESS_PO_CUST  and ME_GUI_PO_CUST.iam able to see the "TAB" but not the fields.
    any suggestions.
    Actually i ve created a function group ZMEPOBADIEX which includes all the fuction modules ( changed to Z )created and activated. And because of this in BADI ME_GUI_PO_CUST-SUBSCRIBE the program name is changed as shown below....
    the dynpro number to use
    ls_subscriber-dynpro = '0001'.
    the program where the dynpro can be found
    ls_subscriber-program = 'SAPLZMEPOBADIEX'.
    each subscreen needs his own DDIC-Structure
    ls_subscriber-struct_name = 'ZMEPO_BADI_STRUCT'.
    and ZMEPO_BADI_STRUCT is a stucture created which holds  the user  field "ZPAY" & the fields 'MATKL', 'PLIFZ' , 'WEBAZ' ,'BADI_BSGRU', 'BADI_AFNAM'
    .Iam getting 'MATKL', 'PLIFZ' , 'WEBAZ' ,'BADI_BSGRU', 'BADI_AFNAM'
    on the tab but Zpay is not visible & when i take F1 on MAKTL etc i get the structure name MEPO_BADI_STRUCT  not ZMEPO_BADI_STRUCT .
    can ny1 suggest wat to do...this is my first badi implementation...
    points 'll b rewarded.
    rgds

Maybe you are looking for

  • I cannot find an app showing installed on ipad 2

    I've read every forum but can't seem to figure this out! I see the app (LightBoard) as installed in the app store on my device (but it wont open), I can see it in itunes on my computer. It has successfully been added to my other ipads. I have no age

  • Access reject call sms from lock screen?

    So iOS6 introduces this apparently great new feature that allows you to reject a call and send an SMS message response. Is it possible to access that function from the lock screen, which is surely the state that the vast majority of calls are receive

  • Solaris 10 LDAP Clients Intermittently Fail

    I'm working on a rather puzzling issue with some of our Solaris 10 systems authenticating against DSEE 6.3. These clients previously worked without issue but starting last week SSH connections would hang for a few minutes and then start working again

  • Problems with exporting iMovie to iDVD

    i want to export from iMovie 6.03 to iDVD 7.02. iDVD does´nt start. What is the Problem ? <Edited by Moderator>

  • Sol 9 thread scheduling

    I posted this yesterday in the kernel forum because thread scheduling seemed more like a kernel issue than the generally admin type things usually discussed here, but I've not had any takers in kernel, so I'm trying here. Basically, while porting an