VBKD update

Hi Experts,
Could you please conform me when the VBKD table is update.I can see all the sales doc in this table with 000 line item and some with line item as 10 so can any one guid me why is it so?
Thansk in advance .
Thanks & Regards
Sanujeet

Hi Sanujeet
VBKD table is the business data table and the same is updated as soon as VBAK is populated. When the order is first created VBKD has only one entry. The other entries that you see with the same sales document is related to any item level changes that may have been carried out after the sales order was saved. So suppose while first creating the order at the item level the PO number at header level is given, the same PO is captured at the item level. While saving this order VBAK and VBKD are both updated with one record. Now after saving the order if you change the PO number at the item level for one of the items, the business data related to the order (namely PO number) changes and as a result VBKD gets updated with item details. Hope this clarifies the issue. So whenever there is a difference in business data at header and item level VBKD gets updated with item level data.
Regards
Indranil

Similar Messages

  • Table VBKD update

    Hi Experts,
    I am useing VBKD-INCO1 - Incoterms (part 1)
                       VBKD-INCO2 - Incoterms (part 2)
                        VBKD-ZTERM - Terms of payment key
    for some of my report.In VBAP there are suppose 4 line item but in VBKD there is only one entry with line item no 000000 .
    so I am not able to utilize this above mentioned fields.
    can anyone guid me why there is no entry in VBKD and is there any other table from where I can take this above metioned field?
    Thanks in advance
    Thanks
    Sanujeet

    Hi
    The record with item 0 means header data:
    The data stored in VBKD are valid for all items of sales document, so the system inserts one record only with the item equal to 0.
    Only if the user changes some data of VBKD for a certain item, the system'll insert a new record for VBKD with item equal to the item where the modification was done.
    So if you need to extract data from VBKD u should run the select twice:
    DATA: POSNR TYPE VBAP-POSNR.
    DATA: VBKD_H TYPE VBKD.
    DATA: VBKD_P TYPE VBKD.
    SELECT * FROM VBAP WHERE VBELN = .......
       IF VBKD_H IS INITIAL.
          SELECT SINGLE * FROM VBKD INTO VBKD_H
                WHERE VBELN = VBAP-VBELN
                     AND POSNR = '000000'.
       ENDIF.
       SELECT SINGLE * FROM VBKD INTO VBKD_P
             WHERE VBELN = VBAP-VBELN
                  AND POSNR = VBAP-POSNR.
      IF SY-SUBRC <> 0.
        VBKD_P = VBKD_H.
      ENDIF.
    ENDSELECT.
    Anyway just as I said, the Sales Document: Business Data are generally the same for all items, so I think it''s rare u can find another record there except the header one.
    Max

  • Updating VBKD at item level in User_exit_move_field_to_vbkd.

    Dear All,
    I saw several posts on the table VBKD and understand that business data is stored at header level normally with
    posnr = 00000  , until unless atleast once a change is made at item level in atleast one of its field.
    So Can we use Form User_exit_move_field_to_vbkd to update a field say shipping type (VSART) at item level ?
    As far as I've seen we don't get the item no in XVBKD and once i was  trying to update one such field at item level, it updated VBKD table but then I started getting weird messages when I used to open Sales order that Business header & Item Data not match.
    Please suggest, if this is a appropriate user exit if i want to update shipping type (VSART) at SO item level .
    Thanks in advance for help,
    Manu Parihar

    Use userexit save_document_prepare in MV45AFZZ .
    <REMOVED BY MODERATOR>
    Edited by: Alvaro Tejada Galindo on Jun 12, 2008 6:51 PM

  • Updating Purchase Order data in VBKD table

    Hello,
    We are trying to update Purchase order data in VBKD table for Sales Order at Item level. When sales Order is created, VBKD has a default record with VBELN = 'sales order number' and Item = '00000'. We want to update BSTKD_E field with Purchase order number for VBELN= 'sales order number' and Item = '00010'.
    We wrote our logic in USEREXIT_SAVE_DOCUMENT_PREPARE and USEREXIT_MOVE_FIELDS_TO_VBKD in MV50AFZZ to append new entries in XVBKD with VBELN= 'sales order number' and Item = '00010'. But in this case Sales order is not created with UPDATE TERMINATED message. We are not sure if we can append a new record in XVBKD.
            wa_xvbkd = xvbkd.
            wa_xvbkd-posnr = wa_xvbap-posnr.  "00010
            wa_xvbkd-bstkd_e = vbkd-bstkd.   "PO no
            wa_xvbkd-posex_e = wa_xvbap-posnr. "Purch. order item no
            wa_xvbkd-updkz = C_I.
            APPEND wa_xvbkd TO xvbkd.
            CLEAR wa_xvbkd.
    Please advice the suitable way to have a Purchase Order item level data in Sales Order.
    Thanks
    Rohit

    Hi,
    You can try these FM to update info record.
    ME_DB_UPDATE_INFORECORDS
    ME_UPDATE_INFORECORD
    ME_UPDATE_INFORECORD_COND
    ME_UPDATE_INFORECORD_PD
    Check the sample code on BAPI_PO_CHANGE
    http://www.sap-img.com/abap/sample-abap-code-on-bapi-po-change.htm
    Regards,
    Shiva Kumar

  • UPDATE TABLE VBKD

    hello.
    The table VBKD is  not updated in quality, the table with the same data is however updated in devlopment.
    The item with billing plan is updated in teh VBKD table. The rest of the items with "TAN" item categories are not updated in the table in quality server.
    Please advice me on the same.

    Hello,
    The logic of entries in VBKD is as follows:
    The header entry of the business data (VBKD) is valid for all
    items until a change on item level is done to the business data.
    Then the item receives a separate entry on the database.
    For example an order with 3 line items is created. The business data
    is the same for header and all items. Therefore only 1 entry
    in table VBKD (for the header) is necessary and all items
    use this business data.
    If now a change to the first items business data is done (e.g.
    different incoterms are entered) the item receives its own
    entry in VBKD. The other items still refer to the header.
    This is the general logic, which also has exceptions, but should
    hopefully explain the system behaviour. It is correct that some
    orders do only have entries for the header and some also for
    items, this does not affect the system behaviour.
    Best regards,
    Ian Kehoe

  • Incoming Order IDOC - updating VBKD-IHREZ_E at item level

    Hi all,
    I am trying to update field VBKD-IHREZ_E at item level from an incoming Idoc with no success yet.
    Here is first exit to store requested data from the idoc ZXVEDU03
    IF segment-segnam =  'E1EDP19'.
        xvbap = dxvbap.
        MOVE segment-sdata TO lo_e1edp19 .
        IF lo_e1edp19-qualf = '001'.
          xvbap-ihrez_e = lo_e1edp19-idtnr.
          dxvbap = xvbap.
        ENDIF.
    ENDIF.
    Here is second exit to update the sales order field ZXVEDU04:
    CASE dlast_dynpro.
      WHEN '4002'.
    WHEN '4003'.
        READ TABLE dxbdcdata WITH KEY fnam = 'VBKD-IHREZ_E'.
        IF sy-subrc NE 0.
         DATA wa_tabix TYPE syst-tabix.
          MOVE sy-tabix TO wa_tabix.
         DATA wa_dxbdcdata TYPE bdcdata.
          MOVE 'VBKD-IHREZ_E' TO wa_dxbdcdata-fnam.
          MOVE zzxvbap-ihrez_e TO wa_dxbdcdata-fval.
          INSERT wa_dxbdcdata INTO dxbdcdata INDEX wa_tabix.
        ENDIF.
      ENDIF.
    ENDCASE.
    Field is not updated in sales order. I tried to put the same logic at header lever (dynpro 4002) and it does work (though all items have the same value)
    If a good soul could help, it would be very much appreciated.
    regards,
    Bruno
    Edited by: Bruno Monconduit on Mar 8, 2011 1:08 PM

    Hi all,
    actually I had to add some extra logic in the exit to go update IHREZ_E in another dynpro 5003.
    Hereafter code implemented (works fine)
    Regards,
    Bruno
    WHEN '5003'.
            DATA: lt_vbap LIKE xvbap.
            lt_vbap = dxvbap.
    changing screen to update field
            PERFORM dynpro_setzen IN PROGRAM saplveda
            USING 'BDC_OKCODE' '=T\11'.
           PERFORM dynpro_new(saplveda) USING programm_auftrag
           '4003' CHANGING dlast_dynpro.
            PERFORM dynpro_setzen IN PROGRAM saplveda
            USING 'BDC_OKCODE' '=/00'.
            PERFORM dynpro_setzen(saplveda) USING 'VBKD-IHREZ_E'
            lt_vbap-ihrez_e.
            PERFORM dynpro_setzen IN PROGRAM saplveda
            USING 'BDC_OKCODE' '=T\06'.
    back to screen 5003
            PERFORM dynpro_new IN PROGRAM saplveda
                               USING 'SAPMV45A'
                                        '5003'
                               CHANGING last_dynpro.
           PERFORM dynpro_setzen IN PROGRAM saplveda
           USING 'BDC_OKCODE' '/EBABA'.
    Edited by: Bruno Monconduit on May 25, 2011 6:32 PM

  • Update VBKD table using open sql

    HI
    when i use BAPI_SALESORDER_CREATEFROMDAT2 to create SO!
    but some field i can't fill in BAPI_SALESORDER_CREATEFROMDAT2 of parameter. so i want update it using open SQL.
    so i want to use BAPI_SALESORDER_CREATEFROMDAT2 first. and next using
    open sql to update VBKD of field! VBKD-TRATY(Means-of-Transport Type)
    abap code:
       CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
          EXPORTING
      SALESDOCUMENTIN               =
            ORDER_HEADER_IN               = header
            ORDER_HEADER_INX              = headerx
      SENDER                        =
      BINARY_RELATIONSHIPTYPE       =
      INT_NUMBER_ASSIGNMENT         =
      BEHAVE_WHEN_ERROR             =
      LOGIC_SWITCH                  =
      TESTRUN                       =
      CONVERT                       = ' '
         IMPORTING
           SALESDOCUMENT                 = saledocument
          TABLES
           RETURN                        = return
           ORDER_ITEMS_IN                = item
           ORDER_ITEMS_INX               = itemx
            ORDER_PARTNERS                = partner
      ORDER_SCHEDULES_IN            =
      ORDER_SCHEDULES_INX           =
           ORDER_CONDITIONS_IN           = condition
           ORDER_CONDITIONS_INX          = conditionx
      ORDER_CFGS_REF                =
      ORDER_CFGS_INST               =
      ORDER_CFGS_PART_OF            =
      ORDER_CFGS_VALUE              =
      ORDER_CFGS_BLOB               =
      ORDER_CFGS_VK                 =
      ORDER_CFGS_REFINST            =
      ORDER_CCARD                   =
      ORDER_TEXT                    =
      ORDER_KEYS                    =
      EXTENSIONIN                   =
      PARTNERADDRESSES              =
    if sy-subrc = 0.
    update vbkd
    set TRATY = in_data-TRATY
    where vbeln = saledocument.
    if sy-subrc = 0.
      commit work.
    endif.
    endif.
    but i don't what affect if i use open sql to update sap VBKD table.
    who can help me to explain it!
    thank you!

    Hi,
       Try like thais
    *&      Form  SUB_READ_UPDATE_BSEG
          text
    FORM sub_read_update_bseg.
      IF NOT it_final[] IS INITIAL.
        LOOP AT it_final INTO wa_final.
          UPDATE bseg SET zuonr = wa_final-ccnum
                      WHERE bukrs EQ wa_final-bukrs
                      AND   belnr EQ wa_final-vbeln
                      AND   rfzei EQ wa_final-rfzei
                      AND   saknr NE ' '.
        ENDLOOP.
    *--Message data updated successfully
        MESSAGE i888 WITH text-002.
        LEAVE LIST-PROCESSING.
      ELSE.
    *--Message No data found
        MESSAGE i888 WITH text-003.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM.                    " SUB_READ_UPDATE_BSEG
    Regards,
    Prashant

  • How to get custom field value in vbkd table using "SD_SALESDOCUMENT_CREATE" bapi

    Hi Experts,
    Need your help . In one program Iam using SD_SALESDOCUMENT_CREATE bapi .
    i/p for my report is am excel.
    excel is having  below formatt.
    To create salesdoc we are using SD_SALESDOC_CREATE bapi.
    but After execution of the program we are unable to find the ZZFV_SBCNT (which is custom  field) in VBKD w.r.t salesdocument.
    Need your help what we need to do to reflect the value in vbkd table.
    Here temp will contains the data from excel
    1)
    FORM f_move_header_data .
       wg_header-doc_type            = wg_temp-auart .                   "Order type
       wg_header-sales_org           = wg_temp-vkorg .                   "Sales Organization
       wg_header-distr_chan          = wg_temp-vtweg .                   "Distribution Channel
       wg_header-division            = wg_temp-spart.                    "Division
       wg_header-sales_off           = wg_temp-vkbur .                   "Sales Office
       wg_header-sales_grp           = wg_temp-vkgrp .                   "Sales Group
       wg_header-purch_no_c          = wg_temp-bstnk .                   "Customer purchase order number
       wg_header-pymt_meth           = wg_temp-zlsch  .                  "Payment Method
       wg_header-zzychan_role        = wg_temp-zzychan_role_i.           "Channel Role
       wg_header-zzysub_role         = wg_temp-zzysub_role  .            "Submitter Role
       wg_header-zzy_inv_for_opt     = wg_temp-zzinv_format  .           "Invoice Format Optio
       wg_header-ord_reason          = wg_temp-augru  .                  "Order Reason Code
       wg_header-bill_block          = wg_temp-faksp.                    "Billing Block
       wg_headerx-doc_type            = c_set .                   "Order type
       wg_headerx-sales_org           = c_set .                   "Sales Organization
       wg_headerx-distr_chan          = c_set .                   "Distribution Channel
       wg_headerx-division            = c_set.                    "Division
       wg_headerx-sales_off           = c_set .                   "Sales Office
       wg_headerx-sales_grp           = c_set .                   "Sales Group
       wg_headerx-purch_no_c          = c_set .                   "Customer purchase order number
       wg_headerx-pymt_meth           = c_set  .                  "Payment Method
       wg_headerx-zzychan_role        = c_set.                    "Channel Role
       wg_headerx-zzysub_role         = c_set .                   "Submitter Role
       wg_headerx-zzy_inv_for_opt     = c_set .                   "Invoice Format Option
       wg_headerx-ord_reason          = c_set .                   "Order Reason Code
       wg_headerx-bill_block           = c_set.                    "Billing Block
    ENDFORM.                    " F_MOVE_HEADER_DATA
    2)
    FORM f_move_item_data .
       wg_item-itm_number          =   g_itmnumber.                              "Item number
       wg_item-material            =   wg_process-matnr .                        "Material
       wg_item-target_qty          =   wg_process-target_qty.                    "Targeted Qty
       wg_item-item_categ          =   wg_process-pstyv.                         "Sales document item category
       wg_item-zzylegal_i          =   wg_process-zzlegal.                       "Legal Contract
    **********Added this line for vbkd-ZZFV_SBCNT****************************
       wg_item-zzfv_sbcnt          = wg_process-zzfv_sbcnt.      
    APPEND wg_item TO i_item.
    wg_itemx-material            =   c_set .                        "Material
       wg_itemx-target_qty          =   c_set.                         "Targeted Qty
       wg_itemx-item_categ          =   c_set.                         "Sales document item category
       wg_itemx-zzylegal_i          =   c_set.                         "Legal Contract
       wg_itemx-zzsteady_date       =   c_set .                        "Amortization Start Date
       wg_itemx-zzsteady_end_dat    =   c_set.                         "Amortization Stop Date
    **********Added this line for vbkd-ZZFV_SBCNT****************************
       wg_itemx-ZZFV_SBCNt     =   c_set.   "
       APPEND wg_itemx TO i_itemx.
       CLEAR : wg_itemx. 
    endform. 
    3)           
    FORM f_move_head_ext
    wg_extension-structure   = c_ext_vbak.
       wg_ext_vbak-zzinv_format = wg_temp-zzinv_format.
    wg_ext_vbak-zzychan_role = wg_temp-zzychan_role_i.
       wg_ext_vbak-zzysub_role  = wg_temp-zzysub_role.
       wg_extension+30 = wg_ext_vbak.
    APPEND wg_extension to i_extension.
    CLEAR wg_extension.
       wg_extensionx-structure =  c_ext_vbakx.
       wg_ext_vbakx-zzinv_format = c_set.
      wg_ext_vbakx-zzlegal      = c_set.
       wg_ext_vbakx-zzychan_role = c_set.
       wg_ext_vbakx-zzysub_role  = c_set.
       wg_extensionx+30 = wg_ext_vbakx.
       APPEND wg_extensionx TO i_extensionx.
       CLEAR wg_extensionx.
    ENDFORM.                    " F_MOVE_HEAD_EXT
    *&      Form  F_MOVE_ITEM_EXT
    *       Item Extension
    4)
    FORM f_move_item_ext .
    * Structure for BAPI parameter Extension
       wg_extension-structure = c_ext_vbap.
       wg_ext_vbap-posnr      = g_itmnumber.
       wg_ext_vbap-zzsteady_date       =   wg_process-zzsteady_date .                 "Amortization Start Date
       wg_ext_vbap-zzsteady_end_dat    =   wg_process-zzsteady_end_dat.               "Amortization Stop Date
       wg_ext_vbap-zzlegal             =   wg_process-zzlegal.                        "Legal Contract
       wg_extension+30 = wg_ext_vbap.
    APPEND wg_extension to i_extension.
    * Structure for BAPI parameter Extension - Update Indicator Fields
       wg_extensionx-structure =  c_ext_vbapx.
       wg_ext_vbapx-posnr = g_itmnumber.
       wg_ext_vbapx-zzsteady_date       =   c_set .
       wg_ext_vbapx-zzsteady_end_dat    =   c_set.
    *  wg_ext_vbapx-zzlegal             =   c_set.
    *wg_process-zzfv_sbcnt = c_set.
       wg_extensionx+30 = wg_ext_vbapx.
       APPEND wg_extensionx TO i_extensionx.
       CLEAR wg_extensionx.
    and bapi calling is like below.
    CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
         EXPORTING
           sales_header_in       = wg_header
           sales_header_inx      = wg_headerx
           logic_switch          = wg_logic_switch
           business_object       = fp_bus_obj
           status_buffer_refresh = 'X'
         IMPORTING
           salesdocument_ex      = g_sorder
         TABLES
          return                = i_return
           sales_items_in        = i_item
           sales_items_inx       = i_itemx
           sales_partners        = i_partner
           sales_conditions_in   = i_cond
           sales_conditions_inx  = i_condx
           sales_text            = i_text
           extensionin           = i_extension
         extensionex           = i_extensionx.
    still we are not getting ZZFV_SBCNT value in VBKD table w.r.t created salesdoc(g_sorder)
    Please help me from this issue.
    Thank You..

    Hi,
    Please let me know how to add custom fields in the characteristic list, My clients wants department and profit center grouping.
    Please tell me how to solve it..
    Thanks & Regards,
    Reena..

  • Update terminated error while saving in VA22

    Hi,
    I am trying to change the quotation in va22 transaction.
    What I am doin is  I am selecting all the items in incompletion log and filling to make the document complete.All the items have ben update with out error but there is field your reference (vbkd-ihrez) while entering data and saving it is showing document is complete but when you again check the incompletion log it is giving the following error.
    Update was terminated
    System ID....   PRO
    Client.......   401
    User.....   SAPUSER
    Transaction..   VA22
    Update key...   4BBE3BCBE2C1216BE1000000C0A80118
    Generated....   09.04.2010, 17:53:04
    Completed....   09.04.2010, 17:53:06
    Error Info...   Application area: /SMB40/SSFCOMPOSER  , message no.: 002, no entry found in T100
    Please help regaring this.
    Thanks.

    hello ikshaik 
    there might be problem in smart form of quotation remove the output message type and the try to save it
    Thanks
    Nilesh Gaikwad
    Edited by: Nilesh  Gaikwad on Apr 10, 2010 12:13 PM

  • Update Purchase order number in Sales order item level from inbound ORDCHG iDoc

    Hi Gurus,
    I want to update purchase order number from the iDoc 'ORDCHG' to sales order item level (sold to party purchase order number) i.e, VBAK-BSTKD.
    Which exit I need to use?  where to update?  Can you please help.
    Thank you in advance.
    Regards,
    San

    Finally Resolved the problem by writing 2 exits.
    one exit 'EXIT_SAPLVEDB_007'  for identify correct item in the sales order by updating the customer purchase order item number i.e., VBAP-POSEX.  if we update the POSEX field then it wont create new item instead, it will update the item which it is referring to .
    2nd exit for updating the purchase order number. 
    I have tried to pass the program name, screen number, field name, field value etc to bdcdata in the exit 'EXIT_SAPLVEDB_002'. but I observed that it is not going to that screen in the debugging.
    when I try E1EDP02 with QUALF '044' it will update ship-to party's purchase order number.  so to update ship-to party's purchase order number it is going to that screen. 
    so I have used that thing to update purchase order number in sold-to party's purchase order number.
    so when it is going that screen iam changing the field name 'VBKD-BSTKD_E' to 'VBKD-BSTKD' in bdcdata.  Then it is worked.
    This is the solution I found in my time.
    Any way it is solved.  Hope it will be helpful for others who will get this problem.

  • Quantity update into sales order using BAPI_SALESORDER_CREATEFROMDAT2

    Hi All,
    I am able to create a sales order using the BAPI "BAPI_SALESORDER_CREATEFROMDAT2".
    But even after assinging the Target_quntity and the Target_quantity_units, the values are not getting updated into the Sales order, but the sales order gets created .
    Did anyone of you had a similare problem, how was it solved.
    cold some one please help me out on this.
    Regards

    Hi
    I had used below code (using <b>BAPI_SALESORDER_CREATEFROMDAT1</b>)..but never faced any problem.. you can try the same...
    Regards,
    Raj
    REPORT  z_sd_salesorder_create
            NO STANDARD PAGE HEADING
            LINE-SIZE 150
            MESSAGE-ID zz.
                  S T R U C T U R E  D E C L A R A T I O N S             *
    TYPES: BEGIN OF x_ppl,
            ppl_order(18),   " ppl Orderno
            auart(4),         " Sales Doc Type
            vkorg(4),         " Sales Organization
            vtweg(2),         " Distribution Channel
            spart(2),         " Division
            div(3),           " Division
            kunnr(10),        " Sold-to Party
            date(10),         " Doc Dt
            matnr(18),        " Item Matnr#
            uom(3),           " UOM
            qty(15),          " Qty
           kschl(4),         " Pricing condiiton type
           kbetr(11),        " Rate
           END OF x_ppl.
    TYPES: BEGIN OF x_file,
            loc(30),          " Location
            div(3),           " Division
            ppl_order(18),   " ppl Orderno
            kunnr(10),        " Sold-to Party
            date(10),         " Doc Dt
            matnr(20),        " Item Matnr#
            qty(15),          " Qty
            uom(3),           " UOM
           kbetr(11),        " Rate
           discount(5),      " Discount
           END OF x_file.
    TYPES: BEGIN OF x_output,
            ppl_order(18),       " ppl Orderno
            mesg(130),            " Mesg Success/Error
           END OF x_output.
    TYPES: BEGIN OF x_werks,
            name2(30),                " Location
            werks TYPE werks_ext,     " Plant
           END OF x_werks.
    TYPES: BEGIN OF x_info,
            vkorg TYPE vkorg ,   " Sales org
            vtweg TYPE vtweg,    " Dist channel
            werks TYPE werks_ext," Plant
            spart TYPE spart,    " Storage Loc
           END OF x_info.
    TYPES: BEGIN OF x_material,
            ppl_prdid(20),      " ppl Prd id
            matnr TYPE matnr,    " Material (SAP)
           END OF x_material.
           I N T E R N A L    T A B L E    D E C L A R A T I O N S       *
    DATA: it_file  TYPE STANDARD TABLE OF x_file  WITH HEADER LINE." File Data
    DATA: it_data  TYPE STANDARD TABLE OF x_ppl  WITH HEADER LINE." ppl File
    DATA: it_out TYPE STANDARD TABLE OF x_output WITH HEADER LINE. " Outcome
    DATA: it_werks TYPE STANDARD TABLE OF x_werks WITH HEADER LINE.    " Plant
    DATA: it_info TYPE STANDARD TABLE OF x_info WITH HEADER LINE.      " Othr Info
    DATA: it_matnr TYPE STANDARD TABLE OF x_material WITH HEADER LINE. " Material Info
    DATA: it_item TYPE STANDARD TABLE OF bapiitemin WITH HEADER LINE.  "Order Itm data
    DATA: it_partner TYPE STANDARD TABLE OF bapipartnr WITH HEADER LINE. "Order Partner data
               V A R I A B L E S      D E C L A R A T I O N S            *
    DATA  : v_correct  TYPE i,
            v_error    TYPE i,
            v_total    TYPE i,
            v_return   LIKE bapireturn1,
            v_index    LIKE sy-tabix.
    *- Return values
    DATA: it_orderh TYPE bapisdhead, "Order Hdr data
          order TYPE bapivbeln-vbeln,
          soldto TYPE bapisoldto,
          shipto TYPE bapishipto,
          return TYPE bapireturn1.
    DATA: hdate   TYPE sy-datum.
                    U S E R   I N P U T S   S C R E E N                  *
    SELECTION-SCREEN: BEGIN OF BLOCK blk01 WITH FRAME TITLE text-t01.
    PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY. " File name
    SELECTION-SCREEN END OF BLOCK blk01.
                      S E L E C T I O N    S C R E E N                   *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      PERFORM get_file.
                    S t a r t    o f    S e l e c t i o n                *
    START-OF-SELECTION.
      PERFORM get_upload.
      PERFORM validate_data.        " Validate the data
      PERFORM data_swap.            " Prepare the data for processing
      IF NOT it_data[] IS INITIAL.
        PERFORM get_update.           " Create SalesOrders
      ELSE.
        MESSAGE i001(zz) WITH text-001.
        STOP.
      ENDIF.
                    E n d    o f    S e l e c t i o n                    *
    END-OF-SELECTION.
      IF NOT it_data[] IS INITIAL.
        PERFORM get_write.
      ENDIF.
    *&      Form  get_file
          Get File name
    FORM get_file .
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          program_name  = syst-repid
          mask          = '*'
        CHANGING
          file_name     = p_file
        EXCEPTIONS
          mask_too_long = 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.
    ENDFORM.                    " get_file
    *&      Form  get_upload
          to upload the file
    FORM get_upload .
      DATA l_file TYPE string.
      CLEAR: it_file, it_file[].
      l_file = p_file.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = l_file
          filetype                = 'ASC'
          has_field_separator     = 'X'
        TABLES
          data_tab                = it_file
        EXCEPTIONS
          file_open_error         = 1
          file_read_error         = 2
          no_batch                = 3
          gui_refuse_filetransfer = 4
          invalid_type            = 5
          no_authority            = 6
          unknown_error           = 7
          bad_data_format         = 8
          header_not_allowed      = 9
          separator_not_allowed   = 10
          header_too_long         = 11
          unknown_dp_error        = 12
          access_denied           = 13
          dp_out_of_memory        = 14
          disk_full               = 15
          dp_timeout              = 16
          OTHERS                  = 17.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ELSEIF sy-subrc = 0.
        SORT it_file BY loc ppl_order.
      ENDIF.
    ENDFORM.                    " get_upload
    *&      Form  get_update
          Creating mapping Data in Z table
    FORM get_update .
      DATA: l_itemno(2) TYPE n,
            l_partner TYPE parvw,
            l_kunnr TYPE kunnr,
            l_matnr TYPE matnr,
            l_mesg TYPE string,
            l_kbetr TYPE p DECIMALS 2.
      DATA: l_in_qty LIKE vbap-zmeng,
            l_meins LIKE mara-meins,
            l_qty   LIKE vbap-zmeng.
      CLEAR: v_correct, v_error, v_total.
      SORT it_data BY ppl_order.
      LOOP AT it_data.
        CLEAR v_index.
        v_index = sy-tabix.
    *- New SalesOrder
        AT NEW ppl_order.
          READ TABLE it_data INDEX v_index.
          CLEAR: it_orderh, it_item, it_partner,
                 order, soldto, shipto, return,
                 it_item[], it_partner[].
          v_total = v_total + 1.  "Increment Total SalesOrders counter
          CLEAR l_itemno.
          l_itemno = '10'.
    *- Covert date fields into Internal format
          CALL FUNCTION 'CONVERT_DATE_TO_INTERN_FORMAT'
            EXPORTING
              datum = it_data-date
              dtype = 'DATS'
            IMPORTING
              idate = it_data-date.
    *- Populate SalesOrder header data.
          CALL FUNCTION 'CONVERSION_EXIT_AUART_INPUT'
            EXPORTING
              input  = it_data-auart
            IMPORTING
              output = it_data-auart.
          it_orderh-doc_type   = it_data-auart.
          it_orderh-sales_org  = it_data-vkorg.
          it_orderh-distr_chan = it_data-vtweg.
          it_orderh-division   = it_data-spart.
          it_orderh-purch_no   = 'DEPOT'.
          it_orderh-price_date = it_data-date.      "Doc Dt
          it_orderh-req_date_h = it_data-date.      "Del.Dt
          it_orderh-purch_no_s = it_data-ppl_order.
    *- Partner data
          CLEAR: l_partner, l_kunnr.
    *- Convert Partner type into internal format
          l_partner = 'SP'.  "SoldTo Party
          CALL FUNCTION 'CONVERSION_EXIT_PARVW_INPUT'
            EXPORTING
              input  = l_partner
            IMPORTING
              output = l_partner.
    *- Convert Customer into internal format
          l_kunnr = it_data-kunnr.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
            EXPORTING
              input  = l_kunnr
            IMPORTING
              output = l_kunnr.
          it_partner-partn_role = l_partner.
          it_partner-partn_numb = l_kunnr.
          APPEND it_partner.
          CLEAR it_partner.
        ENDAT.
    *- Item data
        it_item-itm_number = l_itemno.
    *- Convert material number into internal format
        CLEAR l_matnr.
        l_matnr = it_data-matnr.
        CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
          EXPORTING
            input        = l_matnr
          IMPORTING
            output       = l_matnr
          EXCEPTIONS
            length_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.
        it_item-material  = l_matnr.
    *- Call FM to get new qty based on SAP UOM
        CLEAR: l_meins, l_qty, l_in_qty.
        l_in_qty = it_data-qty.
        CALL FUNCTION 'Z_GET_QTY_FROM_UOM'
          EXPORTING
            matnr     = it_item-material
            in_meins  = it_data-uom
            in_qty    = l_in_qty
          IMPORTING
            out_meins = l_meins
            quantity  = l_qty.
        IF sy-subrc = 0.
          it_data-qty = l_qty.
          it_data-uom = l_meins.
        ENDIF.
        it_data-qty = it_data-qty * 1000.
        it_item-req_qty = it_data-qty.
        it_item-sales_unit = it_data-uom.
        it_item-req_date   = it_data-date.
    *- Pricing data
       it_item-cond_type = it_data-kschl.  "Pricing condition
       CLEAR l_kbetr.
       l_kbetr = it_data-kbetr / 10. "Price (Rate)
       it_item-cond_value = l_kbetr.
        APPEND it_item.
        CLEAR  it_item.
    *- Increment Item counter.
        l_itemno = l_itemno + 10.
    *- At end of SalesOrder
        AT END OF ppl_order.
          READ TABLE it_data INDEX v_index.
    *- Call the BAPI for SalesOrder creation
          CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT1'
            EXPORTING
              order_header_in = it_orderh
            IMPORTING
              salesdocument   = order
              sold_to_party   = soldto
              ship_to_party   = shipto
              return          = return
            TABLES
              order_items_in  = it_item
              order_partners  = it_partner.
          IF sy-subrc = 0.
            COMMIT WORK.
          ENDIF.
          v_return = return+0(1).
          IF v_return = 'E'.
            v_error = v_error + 1.
            CLEAR l_mesg.
            l_mesg = return.
            CONDENSE l_mesg.
          ELSE.
            v_correct = v_correct + 1.
            CLEAR l_mesg.
            CONCATENATE 'Salesorder'(007) order 'successfully created.'(008)
            INTO l_mesg SEPARATED BY space.
            CONDENSE l_mesg.
          ENDIF.
    *- Populate the output table
          CLEAR it_out.
          it_out-ppl_order = it_data-ppl_order.
          it_out-mesg = l_mesg.
          APPEND it_out.
          CLEAR it_out.
        ENDAT.
      ENDLOOP.
    ENDFORM.                    " get_update
    *&      Form  get_write
          Write the results
    FORM get_write .
      WRITE:/ 'Total Number of Records :'(002), v_total COLOR 1.
      WRITE:/ 'Total Correct Records   :'(003), v_correct COLOR 3.
      WRITE:/ 'Total Error Records     :'(004), v_error COLOR 6.
      SKIP 3.
      IF NOT it_out[] IS INITIAL.
        WRITE:/5 'ppl Order #'(005),
              28 'Message'(006).
      ENDIF.
      SKIP 1.
      LOOP AT it_out.
        WRITE:/5  it_out-ppl_order,
               28 it_out-mesg.
      ENDLOOP.
    ENDFORM.                    " get_write
    *&      Form  validate_data
          Validate the data
    FORM validate_data .
      DATA: l_bstkde TYPE bstkd_e.
      LOOP AT it_file.
        SELECT bstkd_e INTO l_bstkde
         UP TO 1 ROWS
         FROM vbkd
         WHERE bstkd_e = it_file-ppl_order.
        ENDSELECT.
        IF sy-subrc = 0.  " This ppl Order is already been created in SAP, so delete record
          DELETE it_file.
        ENDIF.
      ENDLOOP.
      SORT it_file BY ppl_order.
    ENDFORM.                    " validate_data
    *&      Form  data_swap
          Prepare the data for processing
    FORM data_swap .
      CLEAR: it_werks, it_info, it_matnr, it_data,
             it_werks[], it_info[], it_matnr[], it_data[].
      IF NOT it_file[] IS INITIAL.
    *- Get the plant from location
        SELECT name2
               werks
          INTO CORRESPONDING FIELDS OF TABLE it_werks
        FROM t001w FOR ALL ENTRIES IN it_file
        WHERE name2 = it_file-loc.
        IF sy-subrc = 0.
          SORT it_werks BY name2 werks.
    *- Get the Sales Org, Division and Distribution Channel
          IF NOT it_werks[] IS INITIAL.
            SELECT vkorg
                   vtweg
                   werks
            INTO CORRESPONDING FIELDS OF TABLE it_info
            FROM tvkwz FOR ALL ENTRIES IN it_werks
            WHERE werks = it_werks-werks.
            IF sy-subrc =  0.
              LOOP AT it_info.
                it_info-spart = '99'.
                MODIFY it_info INDEX sy-tabix.
              ENDLOOP.
              SORT it_info BY vkorg vtweg werks.
            ENDIF.
          ENDIF.
        ENDIF.
    *- Get material from ppl material
        SELECT ppl_prdid
               matnr
          FROM zppl_master
          INTO TABLE it_matnr FOR ALL ENTRIES IN it_file
          WHERE ppl_prdid = it_file-matnr.
        IF sy-subrc = 0.
          SORT it_matnr BY ppl_prdid matnr.
        ENDIF.
      ENDIF.
    *- Update the data in it_data
      LOOP AT it_file.
        CLEAR it_data.
       it_data-auart = 'OR'.
        it_data-auart = 'OR'.  " CHANGED BY Jo ON 3103005
        READ TABLE it_werks WITH KEY name2 = it_file-loc BINARY SEARCH.
        IF sy-subrc = 0.
          READ TABLE it_info WITH KEY werks = it_werks-werks BINARY SEARCH.
          IF sy-subrc = 0.
            it_data-vkorg = it_info-vkorg.
            it_data-vtweg = it_info-vtweg.
          ENDIF.
        ENDIF.
    *- Material
        READ TABLE it_matnr WITH KEY ppl_prdid = it_file-matnr BINARY SEARCH.
        IF sy-subrc = 0.
          it_data-matnr = it_matnr-matnr.
        ENDIF.
        it_data-ppl_order = it_file-ppl_order.
        it_data-date  = it_file-date.
        CONCATENATE it_file-kunnr it_file-loc+1(2) INTO it_data-kunnr.
        it_data-qty   = it_file-qty.
        it_data-uom   = it_file-uom.
       it_data-kbetr = it_file-kbetr.
    *- Pricing condition
       it_data-kschl = 'PR00'.
        CASE it_file-div.
          WHEN 'BRN'.
            it_data-div = '04'.
          WHEN 'GEN'.
            it_data-div = '03'.
          WHEN 'IVF'.
            it_data-div = '02'.
          WHEN 'OPH'.
            it_data-div = '01'.
        ENDCASE.
        it_data-spart = it_data-div.
        APPEND it_data.
        CLEAR  it_data.
      ENDLOOP.
    ENDFORM.                    " data_swap

  • Change in Z-field of LO Extractor no updating to delta que

    DS 2LIS_11_VAHDR is enhanced for field Customer purchase order(VBKD-BSTKD) as zzbstkd. While creating order this fiels is updating in to BW correctly but if some one changes the any order for this field in R/3 transaction VA02, its not creating any entry in extraction que or delta que. Hence the change is not updated in to BW..
    What do we need to do to update changes in enhanced field to BW.
    Thank you in advance

    I am not sure if you can really achieve that for an enhanced field...but atleast if you use the field from 2lis_11_vaitm it should work...
    and as far as the enhancement on the vahdr...unless there is a change on the other field that are already in the structure the change to the enhanced field wouldnt carry over..
    I remember from one of Roberto Negro's blog...he mentioned some exits that can be used to achieve your requirement....I personally never tried that...but it would be interesting if it works...
    You can try coding your enhancement there and see if it works...
    Will send you the link once I get a chance to search...In the meantime you can search for Roberto Negro and if my memory is right then it should be in one of his blogs...
    Hope it helps

  • Update the change history for line items in CDHDR/CDPOS

    Hi,
    I have a problem in updating the sales order and line items in CDHDR/CDPOS when there is change in header level custom field..
    Actually i have a custom field in VBAK which added in additional data A in the header level of sales order.When we have change in that field only some line items only updating in the change history tables(CDHDR/CDPOS),but we need to capture all the line items when the custom field in the header level is changed.
    i have added change document flag in the data element of the custom field.
    Please advice me how to get all  the line items will reflect in CDHDR/CDPOS when the header level custom field has change .
    Thanks & Regards
    Kiran

    The purpose of CHANGE DOCUMENT tables is to flag the changes with Old and New values. So when Header data is changed only Header details will be tracked and same for Item tables too.
    If you need anything addtional from this then that would customizing.
    I am not sure what is your requirement but to make it simple and achive requirement add same field with same setting to line item tables VBAP, VBKD.. (as required, if that's doesnt impact your Order. These fields no need to be on screen). While changing your Custom field of Header level change the item level field too. Then CHANGE DOCUMENT will generate automatically for all the line item including header.

  • Error Message " Update was Terminated "

    Hi,
    While changing a sales order using Transaction VA02.
    I need to change the pricing order at item level.
    After changing the pricing date and recheking the order iam getting the following message " Update was Terminated".
    When i double click the message iam getting the following details.
    System ID....   KLD
    Client.......   400
    User.....   BU3821
    Transaction..   VA02
    Update key...   4B5DE5695CF91768E10000009B7DA705
    Generated....   01.02.2010, 07:57:04
    Completed....   01.02.2010, 07:57:04
    Error Info...   Error during update of Table VBKD (RC= 4, Key= 141018903)
    Finally the Pricing Date is not getting updated.
    What needs to be done to update the pricing date
    Regards,
    Bhaskar R.

    Hi
    A dump has occured while saving the data in table VBKD in a background process.
    U can see the dump by the following transaction:
    SM13
    SM21
    ST22
    Max

  • Update Purchase Order number.(Link GL to PO)

    Hi all,
    Currently i am using the below query for one of our report(R12). However there is a need to update Purchase Order Number .Could anyone please help on how to link GL to PO and provide the updated query.The query is as follows.
    SELECT gjl.je_line_num,
        gjl.code_combination_id,
        SUM(NVL(GJL.accounted_dr, 0))                                     AS Accounted_DR,
        SUM(NVL(GJL.accounted_cr, 0))                                     AS Accounted_CR,
        ( SUM(NVL(GJL.accounted_dr, 0)) - SUM(NVL(GJL.accounted_cr, 0)) ) AS Accounted_Balance,
        gjb.actual_flag,
        NULL     AS "Check Number",
        gjb.name AS "Batch Name",
        TO_CHAR(gjh.currency_conversion_date, 'DD-Mon-YYYY') currency_conversion_date,
        ROUND(gjh.CURRENCY_CONVERSION_RATE,4) CURRENCY_CONVERSION_RATE,
        gjh.currency_conversion_type,
        NULL                                                          AS Document_Number,
        SUM(NVL(GJL.entered_dr, 0))                                   AS Entered_DR,
        SUM(NVL(GJL.entered_cr, 0))                                   AS Entered_CR,
        ( SUM(NVL(GJL.entered_dr, 0)) - SUM(NVL(GJL.entered_cr, 0)) ) AS Entered_Balance,
        gcc.segment1
        || '.'
        || gcc.segment2
        || '.'
        || gcc.segment3
        || '.'
        || gcc.segment4
        || '.'
        ||gcc.segment5
        || '.'
        || gcc.segment6
        || '.'
        || gcc.segment7
        || '.'
        || gcc.segment8 "Account Code",
        gl.currency_code AS "Ledger Currency",
        gjh.name         AS "Header Name",
        gjl.description  AS "Journal Line Description",
        NULL             AS party_name,
        NULL             AS party_id,
        GJH.period_name,
        TO_CHAR(gjh.POSTED_DATE, 'DD-Mon-YYYY') POSTED_DATE,
        NULL AS "Purchase Invoice Number",
        NULL AS "AP Invoice Line Description",
        NULL AS "Sales Invoice Number",
        gcc.segment1 Company ,
        gcc.segment2 Account,
        DECODE(gcc.segment2,NULL,'',apps.gl_flexfields_pkg.get_description_sql(gcc.chart_of_accounts_id,2,gcc.segment2)) AS "Seg2 Desc",
        gcc.segment3 AS "Business Model",
        gcc.segment4 Region,
        gcc.segment5 AS "Cost Profit Center",
        gcc.segment6 AS "Product Group",
        gcc.segment7 AS "Related Company",
        gcc.segment8 AS "Reserve",
        gjl.status   AS "Journal Line Status",
        GL.name      AS "LEDGER NAME",
        GJH.currency_code,
        GJH.je_category je_cat_f,
        GJCT.user_je_category_name je_category,
        GJH.je_source,
        NULL AS "Sales_order" ,
        NULL AS "Purchase Order Number"
      FROM APPS.gl_je_headers gjh,
        APPS.gl_je_batches gjb,
        APPS.gl_ledgers gl,
        APPS.gl_je_lines gjl,
        APPS.gl_code_combinations gcc,
        (SELECT je_category_name,
          user_je_category_name
        FROM APPS.GL_JE_CATEGORIES_TL
        WHERE language='E'
        ) GJCT
      WHERE gjh.je_from_sla_flag IS NULL
      --AND gjh.EXTERNAL_REFERENCE IS NULL
      AND gjb.je_batch_id         = gjh.je_batch_id
      AND gjh.ledger_id           = gl.ledger_id
      AND gjh.je_header_id        = gjl.je_header_id
      AND gcc.code_combination_id = gjl.code_combination_id
      AND GJH.JE_CATEGORY         = GJCT.je_category_name(+)
      AND GL.name NOT IN('NL ABX RepCorp USD (EUR)')
      GROUP BY gjl.je_line_num,
        gjl.code_combination_id,
        gjb.actual_flag,
        gjb.name,
        gjh.currency_conversion_date,
        ROUND(gjh.CURRENCY_CONVERSION_RATE,4),
        gjh.currency_conversion_type,
        gcc.segment1
        || '.'
        || gcc.segment2
        || '.'
        || gcc.segment3
        || '.'
        || gcc.segment4
        || '.'
        ||gcc.segment5
        || '.'
        || gcc.segment6
        || '.'
        || gcc.segment7
        || '.'
        || gcc.segment8,
        gl.currency_code,
        gjh.name,
        gjl.description,
        gjb.je_batch_id,
        gjb.status,
        gjb.posted_date,
        gjb.description,
        gl.name,
        gjh.name,
        GJH.period_name,
        gjh.posted_date,
        gcc.segment1,
        gcc.segment2,
        gcc.segment3,
        gcc.segment4,
        gcc.segment5,
        gcc.segment6,
        gcc.segment7,
        gcc.segment8,
        GL.name,
        gjl.status,
        GJH.je_category,
        GJCT.user_je_category_name,
        GJH.je_source,
        GJH.currency_code,
        DECODE(gcc.segment2,NULL,'',apps.gl_flexfields_pkg.get_description_sql(gcc.chart_of_accounts_id,2,gcc.segment2))

    Finally Resolved the problem by writing 2 exits.
    one exit 'EXIT_SAPLVEDB_007'  for identify correct item in the sales order by updating the customer purchase order item number i.e., VBAP-POSEX.  if we update the POSEX field then it wont create new item instead, it will update the item which it is referring to .
    2nd exit for updating the purchase order number. 
    I have tried to pass the program name, screen number, field name, field value etc to bdcdata in the exit 'EXIT_SAPLVEDB_002'. but I observed that it is not going to that screen in the debugging.
    when I try E1EDP02 with QUALF '044' it will update ship-to party's purchase order number.  so to update ship-to party's purchase order number it is going to that screen. 
    so I have used that thing to update purchase order number in sold-to party's purchase order number.
    so when it is going that screen iam changing the field name 'VBKD-BSTKD_E' to 'VBKD-BSTKD' in bdcdata.  Then it is worked.
    This is the solution I found in my time.
    Any way it is solved.  Hope it will be helpful for others who will get this problem.

Maybe you are looking for

  • Copy and Paste Large (more than 999 rows) Spreadsheet

    I have a large spreadsheet that has a number of hidden columns.  It is about 1,135 rows long.  I have no trouble copying and pasting the spreadsheet into Pages (both are IWork '09) as long as I only try to copy and past 999 or fewer rows.  But when I

  • Problem with Delegated Administrator

    Dear All I am having probelm to get the JES2005/Q4 get working on my server, installation goes okay with no error and installation log and events looks okay, after installation and configuration of Delegated administrator i can not login to DA with a

  • Account annoyingly redirecting me to chinese skype...

    Hello. I've had my skype account for some years now. I have always recharged it in the US and I created my account in the US. I've been trying unsuccessfully for some time now to add credit to my account but it redirects me no matter what I do to sky

  • Ipad 2 mic not working

    what to do, and what happened, how can I get a replacment, I live in bahrain.

  • Create BP and BP Relationship?

    Hi, Which FM's or BAPI's do I have to use to create BP and BP Relationship ? I have an excel with all the information about this BP and BP Relationship.. Tnx. Adibo.