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
-
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
SanujeetHi
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 -
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 PariharUse 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
RohitHi,
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 -
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 PMHi 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,
SanFinally 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.
RegardsHi
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 advanceI 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
KiranThe 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
-
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.