Regarding PO creating with condition record Using Session method

Hi All,
I am facing the following problem during po creation using BDC session method.
   If there is error in any of the record in the PO upload file and if we jump to next record during batch input session, system changes data of previous correct record.
Example u2013 Consider following data
Matl code     Matl Description     Qty     UoM     Price
98652565     Floater08 EPS Insert -with sta     15000     EA     171
60890125     INSERT (PACKAGING) Wellpappe T     14000     EA     52.3
65646353     INSERT CASE PACKAGING, univers     10000     EA     56.9
98725563     Shipper-2nd-NA-Bubble TS.1850     9000     EA     213.4
Consider that record 2 (60890125) contain wrong data. If we skip this record and move to next record 65646353, system executes previous correct record (98652565) and changes net price of that record (here its 171) to 56.9. If record 3 is also wrong, it will capture price from record 4 and will put it for record 1.
If anyone know the solution, Please let me know.
Thanks in Advance.

Hi Prasad,
You may not be clearing some workarea in the program while looping or while sending data to screens, clear workareas when required.
If you still face the same issue, try posting the code here, lets see, whats the problem is.
Rgds,
Sripal

Similar Messages

  • ERROR Message while creating Rebate condition record T code VBO1

    Dear Experts,
    I am getting error message while creating rebate condition record T code-VBO1-Error Msg-862 system cannot read the structure for table,because of this i could not create condition record.
    Please give the solution to create condition record.
    Regards
    siva

    Hi,
    You said you are trying to do this stuff in IDES right.
    If you are using IDES provided by a company and where many people play on IDES, then you can get many such issues...
    This is by our experience.  Today you do something in IDES and tommorow that thing or config is screwed up by others.
    If you have your own IDES, then check the suggestion given by the forum Guru's.
    Regards,
    SB

  • Update SO after creating missing condition record

    Hi Gurus,
    I was getting error message that missing MWST condition in Order, then I investigated and created missing condition record in VK11. Now I would like to update the Sales order and tried update tab on condition but invain.
    Initially the document was created on 17.11.2008 and today condition record was created 18.11.2008.
    Kindly help me in resolving this.
    Thanks
    Bawa

    Dear Bawa,
    While creating Condition Record "MWST" in VK11/ 12;
    What were the Dates maintained in Fields:
    1. Valid From (try with back-date maintenance)
    2. Valid To (Maintain as 31.12.9999)
    Once done, try to Update with "G - Copy pricing elements unchanged and redetermine taxes", in Sales Order.
    Best Regards,
    Amit

  • FM FOR CREATING NEW CONDITION RECORDS FROM INPUT FILE

    Hello vikas,
    I need to develop a interface program FOR CREATING NEW CONDITION RECORDS FROM INPUT FILE.
    Is there ay function module to update or create the condtion records,
    if u have any example interface program to update conditions records please send me.
    regards
    ram.

    This must be your compiler output.
    Basically, it is telling you two things that are wrong - in syntax.
    1. On line number 11 of the file RationalCollection1.java, the compiler expects a type identifier - that would be the object or return type such as int, String, boolean, etc.
    The reason it is doing this is probably due to your not ending a previous statement - like the "expected ';'" error statement. Check your code, make sure that methods (brackets) are closed correctly and there are no open statements (i.e. missing the semi-colen at the end).
    2. On line number 33 of the file RationalCollection1.java, the compiler expected the closing bracket. Thus, you didn't put the bracket where the compiler wants it.
    It appears that you have skipped some lines of code. Those lines are the problem, post them - post lines 30-36 and 9-15 so we can see what is happening around those error lines.

  • How to find who has created the condition records

    hi all,
    in POF1 condition records were created.for material and plant.how to find who has created condition records for the material and plant.
    is there any way to find who has created please help me out.
    thanks
    sunny

    Hi,
    There are two ways of finding the who has created the ondition record.
    01. This is through the sales order-> Item details level-> condtion Tab----> Select the condition type and click on dispaly condition record below in the same creen. Then  Goto tab on the menu and select the overview of the condition record. After do so you will have the details of diffrenr tabs. In this you need to select the Administrative data for the person who had created the condition record.
    02. Goto T. Code VK13 and give your condition type for which you need to find the person created the record. Select the header details tab for the person who had created the record.
    Hope this is fine with you.
    Bye & Enjoy SAP.
    Koganti

  • File to RFC with multiple records using BPM Scenario Error...!!!

    Hello Guru's,
      I have done the File to RFC with multiple records using BPM scenario as per the Materiel available in the sdn.sap. This involves BAPI (BAPI_MATERIEL_AVAILABILITY). I have done exactly the same what is their in the materiel. SXI_CACHE is also giving return value " 0 ". File is getting deleted from the source directory, but no file in target directory. SXMB_MONI is also showing no error (black Flag). BPM is also error free. Checked the interfaces also.
    Can any one tell me what mistake would i have done.
    Thanks in advance.

    Hi,
    There is one similar discussion I found,
    FTP TO RFC using BPM
    Thanks
    Swarup

  • How to find and separate the Erraneous records in Session Method?

    Hi,
    Currently we are working in SAP-HR.Our programs run using Session  method of BDC.We get data from Legacy System through Flat Files which are in text format.First I upload the data for Actions Infotype 0000 and subsequently the other Infotype data.When I run my session if some records go in Error i want to filter out those erraneous records from Actions file and also other Infotype files and then proceed with data upload.Is there any method to do this?
    Also when the Session is in process i want to trace the status of each record i.e. Is it processed or rejected. How can i achieve this ?
    Can anyone help me in this.
    Thanks & Regards
    Ravi

    Hi Sanjay,
    Thanks for your response.
    But my problem is that i want to Automate the whole process with less manual intervention.I want to shedule all the jobs in background and when the Actions Infotype (0000) is uploaded and it gives errors i want to filter those error records in separate file and also filter those records from subsequent infotypes file if they are present.
    Also how to check the status of each record when the session is in progress? This i need because i want to send acknowledgment files to Legacy system saying that these many records are successfully uploaded and so many are in errors.
    How can i automate the whole process?
    Regards,
    Ravindra

  • BDC using session method

    hai
    can anyone post me bdc using session method plz

    Hi,
    ABAP BDC SESSION METHOD SAMPLE CODE
    pool of form routines
    include zmppn001.
    Define BDC Table Structure
    data: begin of itab_bdc_tab occurs 0.
    include structure bdcdata.
    data: end of itab_bdc_tab.
    Input record layout of Leagcy File
    data: begin of itab_xcel occurs 0,
    matnr(18) type c,
    werks(4) type c,
    alnag(2) type c,
    verid(4) type c,
    text1(40) type c,
    bstmi like mkal-bstmi,
    bstma like mkal-bstma,
    adatu(10) type c,
    bdatu(10) type c,
    stlal(2) type c,
    stlan(1) type c,
    serkz(1) type c,
    mdv01(8) type c,
    elpro(4) type c,
    alort(4) type c,
    end of itab_xcel.
    data: begin of lt_pp04_cache occurs 0,
    matnr like itab_xcel-matnr,
    werks like itab_xcel-werks,
    alnag like itab_xcel-alnag,
    plnnr like mapl-plnnr,
    arbpl like crhd-arbpl,
    ktext like crtx-ktext,
    end of lt_pp04_cache.
    data: v_ssnnr(4) type n,
    v_lines_in_xcel like sy-tabix,
    v_ssnname like apqi-groupid,
    v_trans_in_ssn type i,
    wa_xcel LIKE itab_xcel,
    l_tabix like sy-tabix,
    v_matnr like rc27m-matnr,
    v_plnnr like mapl-plnnr,
    v_plnal like mapl-plnal,
    v_tcode like sy-tcode value 'C223',
    v_plnty like plas-plnty value 'R',
    v_objty like crhd-objty value 'A',
    v_plpo_steus like plpo-steus value 'PP04',
    v_verwe like crhd-verwe value '0007'.
    Parameters
    selection-screen: skip 3.
    selection-screen: begin of block 1 with frame.
    parameters: p_name like rlgrap-filename
    default 'C:\My Documents\InputFile.txt'
    obligatory,
    bdc session name prefix
    p_bdcpfx(6) default 'ZPVCRT'
    obligatory,
    number for transction per BDC session
    p_trnssn type i
    default 2000 obligatory,
    retain the BDC session after successfull execution
    p_keep like apqi-qerase
    default 'X',
    user who will be executing BDC session
    p_uname like apqi-userid
    default sy-uname
    obligatory.
    selection-screen: end of block 1.
    possible entry list (F4 dropdown) for input file name
    at selection-screen on value-request for p_name.
    *-SELECT FILE FROM USERS LOCAL PC
    call function 'WS_FILENAME_GET'
    exporting
    DEF_FILENAME = ' '
    def_path = 'C:\Temp\'
    mask = ',.,..'
    mode = 'O'
    title = 'Select File '(007)
    importing
    filename = p_name
    RC =
    exceptions
    inv_winsys = 1
    no_batch = 2
    selection_cancel = 3
    selection_error = 4
    others = 5.
    if sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    endif.
    begin the show
    start-of-selection.
    read data from input file
    perform transfer_xcel_to_itab.
    loop at itab_xcel.
    hang on to xcel line num
    l_tabix = sy-tabix.
    each line in the xcel file marks begining of new prod.version defn
    if num-of-trnas-in-session = 0, create new BDC session
    if v_trans_in_ssn is initial.
    perform bdc_session_open.
    endif.
    begin new bdc script for rtg create trans
    fill in bdc-data for prod.version maintenance screens
    perform bdc_build_script.
    insert the bdc script as a BDC transaction
    perform bdc_submit_transaction.
    keep track of how many BDC transactions were inserted in the BDC
    session
    add 1 to v_trans_in_ssn.
    if the user-specified num of trans in BDC session is reached OR
    if end of input file is reached, close the BDC session
    if v_trans_in_ssn = p_trnssn or
    l_tabix = v_lines_in_xcel.
    perform bdc_session_close.
    clear v_trans_in_ssn.
    endif.
    endloop.
    top-of-page.
    call function 'Z_HEADER'
    EXPORTING
    FLEX_TEXT1 =
    FLEX_TEXT2 =
    FLEX_TEXT3 =
    FORM TRANSFER_XCEL_TO_ITAB *
    Transfer Xcel Spreadsheet to SAP Internal Table *
    form transfer_xcel_to_itab.
    Read the tab-delimited file into itab
    call function 'WS_UPLOAD'
    exporting
    filename = p_name
    filetype = 'DAT'
    IMPORTING
    filelength = flength
    tables
    data_tab = itab_xcel
    exceptions
    conversion_error = 1
    file_open_error = 2
    file_read_error = 3
    invalid_table_width = 4
    invalid_type = 5
    no_batch = 6
    unknown_error = 7
    others = 8.
    if sy-subrc = 0.
    sort the data
    sort itab_xcel by matnr werks.
    clear v_lines_in_xcel.
    if no data in the file - error out
    describe table itab_xcel lines v_lines_in_xcel.
    if v_lines_in_xcel is initial.
    write: / 'No data in input file'.
    stop.
    endif.
    else.
    if file upload failed - error out
    write: / 'Error reading input file'.
    stop.
    endif.
    endform.
    FORM BDC_SESSION_OPEN *
    Open BDC Session *
    form bdc_session_open.
    create bdc session name = prefix-from-selectn-screen + nnnn
    add 1 to v_ssnnr.
    concatenate p_bdcpfx v_ssnnr into v_ssnname.
    open new bdc session
    call function 'BDC_OPEN_GROUP'
    exporting
    client = sy-mandt
    group = v_ssnname
    keep = p_keep
    user = p_uname
    exceptions
    client_invalid = 1
    destination_invalid = 2
    group_invalid = 3
    group_is_locked = 4
    holddate_invalid = 5
    internal_error = 6
    queue_error = 7
    running = 8
    system_lock_error = 9
    user_invalid = 10
    others = 11.
    endform.
    FORM BDC_BUILD_SCRIPT *
    Build BDC *
    form bdc_build_script.
    data: l_arbpl like crhd-arbpl,
    l_text1 like mkal-text1,
    l_mdv01 like mkal-mdv01,
    l_mapl like mapl.
    clear bdc-data itab - begin of new bdc transaction
    clear itab_bdc_tab.
    refresh itab_bdc_tab.
    read material cross reference tables to determine sap part#
    clear : v_matnr, v_plnnr, v_plnal.
    perform read_matnr_cross_ref using itab_xcel-matnr
    itab_xcel-werks
    changing v_matnr.
    determine the version description to use
    if itab_xcel-text1 is initial.
    l_text1 = itab_xcel-verid.
    else.
    l_text1 = itab_xcel-text1.
    endif.
    determine the routing group# and group ctr# to use
    perform read_routing .
    determine the production line to use
    if itab_xcel-mdv01 is initial.
    if not provided in the file then:
    prod line = work ctr on the last PP04 op of the rtg determined above
    perform read_wc_on_last_pp04 using v_plnnr v_plnal
    changing l_mdv01.
    NOTE: when executing the above form\routine, if v_plnnr is initial
    or v_plnal is initial, THEN l_mdv01 will automatically be
    returned blank (ie initial)
    else.
    l_mdv01 = itab_xcel-mdv01.
    endif.
    build bdc script
    perform bdc_build_script_record
    fill in initial screen
    using: 'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=ENTE',
    ' ' 'MKAL-WERKS' itab_xcel-werks,
    ' ' 'MKAL-MATNR' v_matnr,
    ' ' 'MKAL_ADMIN-DISPO' space,
    ' ' 'MKAL-PLNNR' space,
    ' ' 'MKAL_ADMIN-STTAG' space,
    ' ' 'MKAL-PLNNG' space,
    ' ' 'MKAL-MDV01' space,
    ' ' 'MKAL-PLNNM' space,
    click create button on initial screen and go to detail screen
    'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=CREA',
    fill in the detail screen and go back to initial screen
    'X' 'SAPLCMFV' '2000',
    ' ' 'BDC_OKCODE' '=CLOS',
    ' ' 'MKAL_EXPAND-MATNR' v_matnr,
    ' ' 'MKAL_EXPAND-VERID' itab_xcel-verid,
    ' ' 'MKAL_EXPAND-TEXT1' l_text1,
    ' ' 'MKAL_EXPAND-BSTMI' itab_xcel-bstmi,
    ' ' 'MKAL_EXPAND-BSTMA' itab_xcel-bstma,
    ' ' 'MKAL_EXPAND-ADATU' itab_xcel-adatu,
    ' ' 'MKAL_EXPAND-BDATU' itab_xcel-bdatu,
    ' ' 'MKAL_EXPAND-PLTYG' v_plnty,
    ' ' 'MKAL_EXPAND-PLNNG' v_plnnr,
    ' ' 'MKAL_EXPAND-ALNAG' v_plnal,
    ' ' 'MKAL_EXPAND-STLAL' itab_xcel-stlal,
    ' ' 'MKAL_EXPAND-STLAN' itab_xcel-stlan,
    ' ' 'MKAL_EXPAND-SERKZ' itab_xcel-serkz,
    ' ' 'MKAL_EXPAND-MDV01' l_mdv01,
    ' ' 'MKAL_EXPAND-ELPRO' itab_xcel-elpro,
    ' ' 'MKAL_EXPAND-ALORT' itab_xcel-alort,
    save the production version from initial screen
    'X' 'SAPLCMFV' '1000',
    ' ' 'BDC_OKCODE' '=SAVE'.
    endform.
    FORM BDC_SUBMIT_TRANSACTION *
    Submit BDC Session *
    form bdc_submit_transaction.
    Load BDC script as a trqansction in BDC session
    call function 'BDC_INSERT'
    exporting
    tcode = v_tcode
    tables
    dynprotab = itab_bdc_tab
    exceptions
    internal_error = 01
    not_open = 02
    queue_error = 03
    tcode_invalid = 04.
    endform.
    FORM BDC_BUILD_SCRIPT_RECORD *
    form bdc_build_script_record using dynbegin name value.
    clear itab_bdc_tab.
    if dynbegin = 'X'.
    move: name to itab_bdc_tab-program,
    value to itab_bdc_tab-dynpro,
    'X' to itab_bdc_tab-dynbegin.
    else.
    move: name to itab_bdc_tab-fnam,
    value to itab_bdc_tab-fval.
    shift itab_bdc_tab-fval left deleting leading space.
    endif.
    append itab_bdc_tab.
    endform.
    FORM BDC_SESSION_CLOSE *
    Close BDC Session *
    form bdc_session_close.
    close the session
    call function 'BDC_CLOSE_GROUP'
    exceptions
    not_open = 1
    queue_error = 2
    others = 3.
    skip 2.
    if sy-subrc ne 0.
    write: / 'Error Closing BDC Session ' , 'RETURN CODE: ', sy-subrc.
    else.
    write : / 'Session created:', v_ssnname,
    50 '# of transactions:', v_trans_in_ssn.
    endif.
    endform.
    *& Form read_routing_cache
    *FORM read_routing_cache USING pi_matnr
    pi_werks
    pi_alnag
    pi_verid
    pi_mdv01.
    DATA: BEGIN OF lt_plpo OCCURS 0,
    vornr LIKE plpo-vornr,
    objty LIKE crhd-objty,
    objid LIKE crhd-objid,
    arbpl LIKE crhd-arbpl,
    END OF lt_plpo,
    l_mapl_plnnr LIKE mapl-plnnr.
    determine the routing group#
    CLEAR lt_pp04_cache.
    chk if its in the cache first, if not then get it from MAPL table
    and put it in the cache
    READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    IF sy-subrc = 0.
    do nothing - lt_pp04_cache header line has rtg#
    ELSE.
    get the routing group # from MAPL
    SELECT plnnr INTO l_mapl_plnnr
    FROM mapl UP TO 1 ROWS
    WHERE matnr = pi_matnr AND
    werks = pi_werks AND
    plnty = 'R' AND
    plnal = pi_alnag AND
    loekz = space.
    ENDSELECT.
    put it in the cache internal table
    IF NOT l_mapl_plnnr IS INITIAL.
    lt_pp04_cache-matnr = pi_matnr.
    lt_pp04_cache-werks = pi_werks.
    lt_pp04_cache-alnag = pi_alnag.
    lt_pp04_cache-plnnr = l_mapl_plnnr.
    APPEND lt_pp04_cache.
    ENDIF.
    ENDIF.
    if the rtg# was determined AND
    -- the work center was not determined yet AND
    -- work center was really needed for this line in the input file
    then
    -- read the work center from last PP04 operation on the routing
    -- update the cache accordingly
    IF NOT lt_pp04_cache-plnnr IS INITIAL AND
    lt_pp04_cache-arbpl IS INITIAL AND
    ( pi_verid IS INITIAL OR
    pi_mdv01 IS INITIAL ).
    read the last PP04 operation
    CLEAR lt_plpo.
    REFRESH lt_plpo.
    SELECT vornr eobjty eobjid e~arbpl
    INTO CORRESPONDING FIELDS OF TABLE lt_plpo
    FROM plas AS b
    INNER JOIN plpo AS c
    ON bplnty = cplnty AND
    bplnnr = cplnnr AND
    bzaehl = czaehl
    INNER JOIN crhd AS e
    ON carbid = eobjid
    WHERE b~plnty = v_plnty AND
    b~plnnr = lt_pp04_cache-plnnr AND
    b~plnal = lt_pp04_cache-alnag AND
    c~loekz = space AND
    c~steus = v_plpo_steus AND
    e~objty = v_objty AND
    e~werks = lt_pp04_cache-werks AND
    e~verwe = v_verwe.
    SORT lt_plpo BY vornr DESCENDING.
    READ TABLE lt_plpo INDEX 1.
    IF NOT lt_plpo-arbpl IS INITIAL.
    lt_pp04_cache-arbpl = lt_plpo-arbpl.
    read work center description
    SELECT SINGLE ktext INTO lt_pp04_cache-ktext
    FROM crtx WHERE objty = lt_plpo-objty AND
    objid = lt_plpo-objid AND
    spras = sy-langu.
    the following read will get the index of the correct record to be
    updated in the cache
    READ TABLE lt_pp04_cache
    WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    MODIFY lt_pp04_cache
    INDEX sy-tabix
    TRANSPORTING arbpl ktext.
    ENDIF.
    ENDIF.
    *ENDFORM. " read_last_pp04_operation_cache
    *& Form read_routing
    form read_routing.
    data: begin of lt_mapl occurs 0,
    plnnr like mapl-plnnr,
    plnal like mapl-plnal,
    end of lt_mapl,
    l_arbpl like crhd-arbpl.
    get all the rtg# and grp ctr# from MAPL
    select plnnr plnal
    into corresponding fields of table lt_mapl
    from mapl
    where matnr = v_matnr and
    werks = itab_xcel-werks and
    plnty = v_plnty and "Rate Routing
    loekz = space. "with del flag = OFF
    sort lt_mapl by plnal.
    if not itab_xcel-verid is initial.
    if the verid=0001 then use the 1st good rtg-grp# and grp-ctr#
    if itab_xcel-verid = '0001'.
    read table lt_mapl index 1.
    v_plnnr = lt_mapl-plnnr.
    v_plnal = lt_mapl-plnal.
    else.
    if the verid<>0001 then use the rtg-grp# and grp-ctr# of the routing
    whose work center on the last PP04 operation matches the given verid
    loop at lt_mapl.
    clear l_arbpl.
    get the work center from the last PP04 operation
    perform read_wc_on_last_pp04 using lt_mapl-plnnr
    lt_mapl-plnal
    changing l_arbpl.
    if itab_xcel-verid = l_arbpl.
    v_plnnr = lt_mapl-plnnr.
    v_plnal = lt_mapl-plnal.
    exit.
    endif.
    endloop.
    endif.
    else.
    do nothing
    endif.
    For version IDs that are other then '0000' or 'ZWIP' :--
    if itab_xcel-verid NE '0000' and
    itab_xcel-verid NE 'ZWIP'.
    if routing group# or group counter was not determined, make the
    valid-to date 99/99/9999 so that the BDC, on execution, errors out.
    if v_plnnr is initial or
    v_plnal is initial.
    itab_xcel-bdatu = '99/99/9999'.
    endif.
    endif.
    determine the routing group#
    CLEAR lt_pp04_cache.
    chk if its in the cache first, if not then get it from MAPL table
    and put it in the cache
    READ TABLE lt_pp04_cache WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    IF sy-subrc = 0.
    do nothing - lt_pp04_cache header line has rtg#
    ELSE.
    get the routing group # from MAPL
    put it in the cache internal table
    IF NOT l_mapl_plnnr IS INITIAL.
    lt_pp04_cache-matnr = pi_matnr.
    lt_pp04_cache-werks = pi_werks.
    lt_pp04_cache-alnag = pi_alnag.
    lt_pp04_cache-plnnr = l_mapl_plnnr.
    APPEND lt_pp04_cache.
    ENDIF.
    ENDIF.
    if the rtg# was determined AND
    -- the work center was not determined yet AND
    -- work center was really needed for this line in the input file
    then
    -- read the work center from last PP04 operation on the routing
    -- update the cache accordingly
    IF NOT lt_pp04_cache-plnnr IS INITIAL AND
    lt_pp04_cache-arbpl IS INITIAL AND
    ( pi_verid IS INITIAL OR
    pi_mdv01 IS INITIAL ).
    read the last PP04 operation
    CLEAR lt_plpo.
    REFRESH lt_plpo.
    SELECT vornr eobjty eobjid e~arbpl
    INTO CORRESPONDING FIELDS OF TABLE lt_plpo
    FROM plas AS b
    INNER JOIN plpo AS c
    ON bplnty = cplnty AND
    bplnnr = cplnnr AND
    bzaehl = czaehl
    INNER JOIN crhd AS e
    ON carbid = eobjid
    WHERE b~plnty = v_plnty AND
    b~plnnr = lt_pp04_cache-plnnr AND
    b~plnal = lt_pp04_cache-alnag AND
    c~loekz = space AND
    c~steus = v_plpo_steus AND
    e~objty = v_objty AND
    e~werks = lt_pp04_cache-werks AND
    e~verwe = v_verwe.
    SORT lt_plpo BY vornr DESCENDING.
    READ TABLE lt_plpo INDEX 1.
    IF NOT lt_plpo-arbpl IS INITIAL.
    lt_pp04_cache-arbpl = lt_plpo-arbpl.
    read work center description
    SELECT SINGLE ktext INTO lt_pp04_cache-ktext
    FROM crtx WHERE objty = lt_plpo-objty AND
    objid = lt_plpo-objid AND
    spras = sy-langu.
    the following read will get the index of the correct record to be
    updated in the cache
    READ TABLE lt_pp04_cache
    WITH KEY matnr = pi_matnr
    werks = pi_werks
    alnag = pi_alnag.
    MODIFY lt_pp04_cache
    INDEX sy-tabix
    TRANSPORTING arbpl ktext.
    ENDIF.
    ENDIF.
    endform. " read_last_pp04_operation_cache
    *& Form read_wc_on_last_pp04
    form read_wc_on_last_pp04 using pi_plnnr
    pi_plnal
    changing pe_arbpl.
    data: begin of lt_plpo occurs 0,
    vornr like plpo-vornr,
    objty like crhd-objty,
    objid like crhd-objid,
    arbpl like crhd-arbpl,
    end of lt_plpo.
    get all the PP04 operations for the given rtg# & grp-ctr#
    select vornr eobjty eobjid e~arbpl
    into corresponding fields of table lt_plpo
    from plas as b
    inner join plpo as c
    on bplnty = cplnty and
    bplnnr = cplnnr and
    bzaehl = czaehl
    inner join crhd as e
    on carbid = eobjid
    where b~plnty = v_plnty and "Rate Routing
    b~plnnr = pi_plnnr and
    b~plnal = pi_plnal and
    c~loekz = space and "Oper Del Flag = OFF
    c~steus = v_plpo_steus and "PP04
    e~objty = v_objty. "WC Obj Type = 'A'
    read the last operation
    sort lt_plpo by vornr descending.
    read table lt_plpo index 1.
    pe_arbpl = lt_plpo-arbpl.
    endform.
    Reward Points if useful
    Raghunath.S
    9986076729

  • Create Purchase info record using LSMW idoc method

    Hello Friends,
    I am trying to update Purchase Info records using LSMW Standard program RM06IBI0.
    But it is not updating the condition price details and scale Quantity.
    For that the  form  suggessted LSMW IDOC method. with : Message Type         COND_A / COND_A02.
    But i dont know is the info record created earlier to this step or else we can create both using this method
    at a time ?  Does anybody please suggest.
    ( Actually Purchase Info record created using transaction  ME11 ).
    Regards,
    Phaneendra

    you first create the info record and subsequently you load the conditions.
    become familiar with the condition tables and its key first. Check How table A017 and A018 are maintained.
    Intresting is the field VAKEY which is actually the link to your info record.
    This is a combination of vendor, material, purchasing org, plant , and info record indicator.
    data:  begin of ZZVARKEYA,
            ZLIFNR like LFM1-LIFNR,
            ZMATNR like MARc-MATNR,
            ZEKORG like LFM1-EKORG,
            ZWERKS like MARC-WERKS,
            ZINFTYP like EINE-ESOKZ,
            end of zzvarkeyA.

  • Regarding tax code in condition records in SD & MM

    In MM we are maintaining net price in info record and tax code is given there, when it is settle with MRKO its calculating rightly,
    Eg: Info record price for XX material is 100 and tax code maintained AA as 12.5%
    In FI entries after FI settlement its showing right amount as 112.5 with tax
    My issue is the same cost of that material is flowing from material info record to DP90 and in to sales order with the 100rs,here I have maintained two conditions as
    UTXJ  and ZVAT
    For this I have maintained access sequence as
    UTXJ- plant/tax classification customer1/tax classification material 1 as
    ZVAT- plant/sales org/material
    When ever with the condition utxj comes it will take 12.5% tax and for
    zvat I am directly maintaing 20% vat on  few materials.
    In condition records if I maintain tax code here for 12.5% as A1 and A2 as 20
    In MM tax code is maintained and in SD in condition records if tax code is maintained on same cost of that material  what will be the effect in  accounting will be. Please guide me.

    You might be aware of the fact that Tax code used for MM is different from SD.
    As for MM, Tax code are for input tax.
    Whereas, for SD., Tax code are for output tax.
    And you define this in FTXP while creating a Tax code.
    If in SD Pricing, you condition for Tax are:
    Condition
    Value
    Amount
    tax code
    Account Key
    PR00-Base Price
    100.00
    ERL
    UTXJ
    12.5%
    12.50
    A1
    MW1
    ZVAT
    20%
    40
    A2
    MW2
    Total Price after TAX
    152.50
    The accounting doc will generate on the bases of GL account maintain Tcode OB40.
    Where,
    Transaction = Account Key
    There for respective transaction MW1 & MW2, you have to maintain respective relevant GL Accounts.
    Transaction
    MW1
    GL Account
    3210000
    Transaction
    MW2
    GL Account
    3210001
    Whereas, Say, if your transaction or the account key is common for both condition type in pricing, say, MWS.
    Then in that case you need to active rule for tax code.
    With that in MWS tax code column will get active.
    Therefore you can maintain GL accounts as
    Transaction
    MWS
    Tax Code
    GL Account
    A1
    3210000
    A2
    3210001
    Regards
    JP

  • How to create the condition record by ABAP program

    Hi Friends,
    I want to create/change the condition record of PR00 by ABAP program. It seems that there have no such BAPI/standard function can help on this. Can any one of you point out a way to me?? Thanks in addvance.
    Joe GR.

    Joe,
      Check with below FM..
    BAPI_PRICES_CONDITIONS.
    Check this link:
    Re: Sample code for  BAPI_PRICES_CONDITIONS
    examples....
    http://www.4ap.de/abap/bapi_prices_conditions.php
    Two useful threads on Same topic
    Re: Sample code for  BAPI_PRICES_CONDITIONS
    Re: Problem with BAPI_PRICES_CONDITIONS
    BAPI_PRICES_CONDITIONS
    Please check this sample code from other thread.
    wtable1-table_no = '306'.
    wtable1-applicatio = 'V'.
    wtable1-cond_type = 'ZPR0'.
    wtable1-operation = '009'.
    wtable1-varkey = '13001001USD 000000000050068946'.
    wtable1-valid_to = '99991231'.
    wtable1-valid_from = '20051101'.
    wtable1-cond_no = '$000000001'.
    APPEND wtable1 TO table1.
    wtable2-operation = '009'.
    wtable2-cond_no = '$000000001'.
    wtable2-created_by = sy-uname.
    wtable2-creat_date = '20051022'.
    wtable2-cond_usage = 'A'.
    wtable2-table_no = '110'.
    wtable2-applicatio = 'V'.
    wtable2-cond_type = 'ZPR0'.
    wtable2-varkey = '13001001USD 000000000050068946'.
    wtable2-valid_from = '20051101'.
    wtable2-valid_to = '99991231'.
    APPEND wtable2 TO table2.
    wtable3-operation = '009'.
    wtable3-cond_no = '$000000001'.
    wtable3-cond_count = '01'.
    wtable3-applicatio = 'V'.
    wtable3-cond_type = 'ZPR0'.
    wtable3-scaletype = 'A'.
    wtable3-scalebasin = 'C'.
    wtable3-scale_qty = '1'.
    wtable3-cond_p_unt = '1'.
    wtable3-cond_unit = 'EA'.
    wtable3-calctypcon = 'C'.
    wtable3-cond_value = '454'.
    wtable3-condcurr = 'USD'.
    APPEND wtable3 TO table3.
    CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
    EXPORTING
    PI_initialmode = 'X'
    PI_BLOCKNUMBER =
    TABLES
    ti_bapicondct = table1
    ti_bapicondhd = table2
    ti_bapicondit = table3
    ti_bapicondqs = table4
    ti_bapicondvs = table5
    to_bapiret2 = table6
    to_bapiknumhs = table7
    to_mem_initial = table8
    EXCEPTIONS
    update_error = 1
    OTHERS = 2
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    READ TABLE table6 WITH KEY type = 'E' TRANSPORTING NO FIELDS.
    IF sy-subrc = 0.
    loop at table6 into ret.
    write: / ret-type, ret-message, ret-id, RET-LOG_NO, RET-LOG_MSG_NO,
    RET-MESSAGE_V1, RET-MESSAGE_V2, RET-MESSAGE_V3, RET-MESSAGE_V4,
    RET-PARAMETER,RET-ROW,RET-FIELD.
    endloop.
    ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    *EXPORTING
    WAIT =
    IMPORTING
    return = ret
    ENDIF.
    Don't forget to reward if useful....

  • Problems with ECATT recording using SAPGUI Record

    Hello,
    I got a problem with my recording. All the prerequisites are  done. The problem is,  that when the recording is done i don't see the recording in SECATT testcase. Normally when you do a recording you see at the bottom right of the gui a red/white icon active. When i do a recording now, this red/white icon isn't  active.
    For my it's a very strange error. I hope somebody can give me a hint where i can look,
    Thanks in advance.
    Kind regards,
    Maarten.

    Maarten,
    First when you start the recording using SAPGUI, you will get the pop-up whether to record this new session. You need to select Yes before continuing your recording.
    Secondly check the scripting values in the target system whether it is enabled or disabled using the RZ11 transaction. Mostly SAP Basis team have authorization to change these values for us.
    Here is the parameter we need to check in RZ11 - sapgui/user_scripting. It should be TRUE.
    Let me know if this helps.

  • Bapi to create a condition record

    hi,
    is there any standard bapi for creating ,changing and deleting a pricing record using VK11,VK12.
    any other function module will solve the problem.

    Hi Ajith,
       You can use <b>IDOC approach</b> also for doing teh same solution. Yo get Create/Change/ Delete Option as per indicator passed:
    Refer Code below.
    *&      Form  map_idoc_structure
          Map E1KOMG, E1KONH, E1KONP segment fields
    FORM map_idoc_structure
                  USING fp_condition_table TYPE kotabnr
                        fp_rate            TYPE z_cs_cpp_rate
                        fp_condition_type  TYPE kschl
                        fp_rate_type       TYPE z_cs_file_type.
    *-- Local Data Declaration
      DATA: lw_e1komg TYPE e1komg, "Filter seg. with separated condition key
            lw_e1konh TYPE e1konh, "Data from condition header
            lw_e1konp TYPE e1konp, "Conditions Items
            lv_delete TYPE konp-loevm_ko. " Delete Indicator
    *-- IDoc data internal table
      DATA: i_idoc_data TYPE TABLE OF edidd
                        INITIAL SIZE 0
                        WITH HEADER LINE.
      CLEAR: lw_e1komg,
             lw_e1konh,
             lw_e1konp,
             lv_delete,
             v_segnum,
             w_e1komg,
             v_rate_type.
      REFRESH i_idoc_data.
      v_rate_type = fp_rate_type.
      PERFORM conversion_alpha_input
          USING w_crp_data-kunnr CHANGING w_crp_data-kunnr.
      PERFORM conversion_matn1_input
         USING w_crp_data-matnr CHANGING w_crp_data-matnr.
    E1KOMG: Filter segment with separated condition key
      i_idoc_data-segnam  = 'E1KOMG'.
      lw_e1komg-kvewe     =  c_usage_cond_tab.
      lw_e1komg-kotabnr   =  fp_condition_table.
      lw_e1komg-kappl     =  c_cond_type.
      lw_e1komg-kschl     =  fp_condition_type.
    CONCATENATE p_vkorg p_vtweg p_spart p_hienr p_matnr
      CONCATENATE w_crp_data-vkorg w_crp_data-vtweg
                  w_crp_data-kunnr w_crp_data-matnr
                  INTO lw_e1komg-vakey.
      lw_e1komg-vakey_long = lw_e1komg-vakey.
      lw_e1komg-vkorg      = w_crp_data-vkorg.
      lw_e1komg-vtweg      = w_crp_data-vtweg.
      lw_e1komg-spart      = w_crp_data-spart.
      lw_e1komg-kunnr      = w_crp_data-kunnr.
      lw_e1komg-matnr      = w_crp_data-matnr.
      i_idoc_data-sdata = lw_e1komg.
      APPEND i_idoc_data TO i_idoc_data.
    Segment E1KONH - condition header
      i_idoc_data-segnam  = 'E1KONH'.
      lw_e1konh-datab     = w_crp_data-datab.
      lw_e1konh-datbi     = w_crp_data-datbi.
      lw_e1konh-knuma_pi  = v_promotion.
      lw_e1konh-knuma_ag  = v_sales_deal.
      i_idoc_data-sdata = lw_e1konh.
      APPEND i_idoc_data TO i_idoc_data.
      IF fm_process_type EQ c_pt_dep.
        lv_delete = c_x.              " Deletion Indicator
      ENDIF.
    Segment E1KONP - condition items
      i_idoc_data-segnam = 'E1KONP'.
      lw_e1konp-kschl     = fp_condition_type.
      lw_e1konp-kbetr     = fp_rate.
      lw_e1konp-konwa     = w_crp_data-waers.
      lw_e1konp-kpein     = v_cond_pric.
      lw_e1konp-kmein     = v_cond_unit.
      lw_e1konp-knuma_pi  = v_promotion.
      lw_e1konp-knuma_ag  = v_sales_deal.
      lw_e1konp-loevm_ko  = lv_delete.
      i_idoc_data-sdata = lw_e1konp.
      APPEND i_idoc_data TO i_idoc_data.
    *-- Post Idoc for Creating Pricing Condition
      PERFORM post_idoc
             TABLES i_idoc_data.
    ENDFORM.                    " map_idoc_structure
    *&      Form  post_idoc TABLES i_idoc_data.
          Post Idoc for Creating Pricing Condition
    FORM post_idoc
              TABLES i_idoc_data STRUCTURE edidd.
    *-- Local data declaration
      DATA: lv_komg         LIKE komg,         " Condition Structures
            lv_subrc        LIKE sy-subrc,     " Sy-subrc
            lw_messages     TYPE rsuvm_msg,    " Message Description
            lw_idoc_status  TYPE bdidocstat.   " ALE IDoc status
      DATA: idoc_contrl                        " IDoc Control data
                LIKE edidc OCCURS 1 WITH HEADER LINE.
    *-- Initialize Internal Tables
      CLEAR:  t_konh,
              t_konp,
              t_konm,
              t_konw,
              i_idoc_status,
              t_kona.
      REFRESH: t_konh,
               t_konp,
               t_konm,
               t_konw,
               i_idoc_status,
               t_kona,
               i_messages.
    This code is taken from IDOC_INPUT_COND_A
      PERFORM fill_appl_structures(saplvkoi)
                      TABLES i_idoc_data
                             t_konh
                             t_konp
                             t_konm
                             t_konw
                             i_idoc_status
                             t_kona
                       USING lv_komg
                             lv_subrc
                             idoc_contrl-docnum
                             idoc_contrl-mestyp.
      IF lv_subrc = 0.
    This code is taken from IDOC_INPUT_COND_A
        PERFORM idoc_in_datenbank(saplvkoi)
                  TABLES idoc_contrl
                         t_konh
                         t_konp
                         t_konm
                         t_konw
                         i_idoc_status
                         t_kona
                  USING  lv_komg
                         lv_subrc
                         idoc_contrl-docnum.
        IF lv_subrc = 0.
          COMMIT WORK AND WAIT.
        Endif.
    Reward points if this Helps.
    Manish
    Message was edited by: Manish Kumar

  • New Custom field to be created in condition records

    Hi,
    I have a requirement where-in there is a need to create new custom field (30 chars) as there is no standard field in condition record screen which can be used because of lenght limitation.
    This new field needs to be populated from incoming inbound idoc (COND_A04).
    Kindly provide me necessary changes that needs to be made to achieve this.
    Thanks
    Rama

    Dear Rama,
    Add this field in below structure
    If field is for header than add in structure - KOMKAZ
    For for item KOMPAZ
    After add this new field in stcture, That field available in field catelog. Add this field in field catelog and than maintain this field in pricing table.
    Also mapp this new field value in below pricing exit.
    Program : MV45AFZZ
    User exit for header: USEREXIT_PRICING_PREPARE_TKOMK.
    User exit for item : USEREXIT_PRICING_PREPARE_ITEM
    Regards,
    Haresh

  • FM or BAPI for creating/deleting condition records for an output type

    Hi all,
               what is the FM or BAPI for creating and deleting the condition records for a Z(custom) output type.

    You can use trasaction SXDA_TOOLS.....
    object type BUS3003
    program type BINP
    program/method RM06IBI0
    but the fields must be sequentially written in the txt, with every space inclusive....

Maybe you are looking for