Table control in sales order screen(VA01)
Hi Guys,
I am trying to do table control i.e shifting columns as desired in the sales order, but not able to do it. can any one help me the process of shifting columns in sales order screen.
Example: Shifting customer rial matenumber column to Item cat column.
Thanks in advance,
Regards,
Vamsi.
Hi Vamsi,
After changing the columns save it as a variant on the Item Detail screen on the right hand side you can see small barred icon above the vertical scroll bar click the same and save it as as variant in there and just keep that as a default screen variant. The same will be displayed all the time.
Reward points if it helps.
Regards,
Sreekanth
Similar Messages
-
Controlling in Sales Order screen
Hi Gurus,
I want to control the fields in the sales order screen. How do i do it??? For example, i want to make the delivery plant field in the header as mandatory. where do i do the controlling??
Thanks & Regards
KaushikDear Friend,
Go to the transaction SHDO variant creation.
there create a variant with respect to transaction Va01 and enter the feilds WERKS as mandatory in the variant specification.
GO to SE93 transaction and assign this variant to the T-code Program.
regards,
Amlan Sarkar
Edited by: EXPLORING MULTIDIMENSIONAL SAP on Aug 9, 2008 12:47 PM -
Add a new field in the item table control of sales order
Hi Experts,
We have created a new custom field in Material master table. Now, they want to add the custom field from material master to the last field of item control of sales order.
Please, let me know the steps to do it.
Regards,
M.SaravananHi,
take program: SAPMV45A
take screen 8459 and add the new field.
Also add the validation in the flow logic.
Refer
https://forums.sdn.sap.com/click.jspa?searchID=10547810&messageID=3132651
Regards
Kiran -
Read table-control of sales order items in VA01 / VA02
Hi.
I need to redetermine the plant in a sales order in USEREXIT_MOVE_FIELD_TO_VBAP. To do this, I need to read the content of all the items, but internal table XVBAP is not filled with all the items information at this point of code. Do you know how can I read the content of the table control of the items from this user exit? Do you know any other alternative solution?
The table-control is in screen 4900, and its name is TCTRL_U_ERF_AUFTRAG.
Thanks in advance.You have probably two options:
1. use CHECK_VBAP: CHECK_VBAP triggers more often than the MOVE_VBAP. This should cover the scenarios when you add the new item and because of that the Plant would be redetermined for the items which are not changed. You need to take care of the UPDKZ, if use the CHECK_VBAP.
2. Determine the plant in the SAVE_DOCUMENT_PREPARE. You can call certain subroutines over the XVBAP Loop and update the required field in VBAP. This is suggested by some OSS Note but I don't recall the note #.
LOOP AT xvbap.
ivbap-tabix = sy-tabix.
svbap-tabix = sy-tabix.
PERFORM vbap_bearbeiten_vorbereiten(sapfv45p).
PERFORM vbap_fuellen(sapfv45p).
"YOUR LOGIC
vbap-werks = '1111'.
PERFORM vbap_bearbeiten(sapfv45p).
PERFORM vbap_bearbeiten_ende(sapfv45p).
ENDLOOP.
Regards,
Naimesh Patel -
Hi,
I am using BDC to ceate salesorder.I am able to create sales order for one item. But when I try it for multiple items, it is still creating a new sales order for each item. I am trying to loop the items but still it is creating a new sales order.I am also attaching my code. Can somebody look into it and tell me what should be done to loop the items.
DATA: BEGIN OF ITAB OCCURS 0,
KUNNR1 LIKE KUAGV-KUNNR,
KUNNR2 LIKE KUWEV-KUNNR,
KETDAT LIKE RV45A-KETDAT,
DWERK LIKE RV45A-DWERK,
ZTERM LIKE VBKD-ZTERM,
INCO1 LIKE VBKD-INCO1,
INCO2 LIKE VBKD-INCO2,
AUDAT LIKE RV45A-KETDAT,
VKBUR LIKE VBAK-VKBUR,
BZIRK LIKE VBKD-BZIRK,
IHREZ LIKE VBKD-IHREZ,
MABNR LIKE RV45A-MABNR,
KWMENG LIKE RV45A-KWMENG,
END OF ITAB.
include bdcrecx1.
PARAMETERS: PATH(128) DEFAULT 'C:\sales.txt'.
start-of-selection.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = path
FILETYPE = 'DAT'
TABLES
DATA_TAB = ITAB
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
perform open_group.
loop at itab.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
'ZOR'.
perform bdc_field using 'VBAK-VKORG'
'1000'.
perform bdc_field using 'VBAK-VTWEG'
'10'.
perform bdc_field using 'VBAK-SPART'
'10'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'KKAU'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\05'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-BZIRK'.
perform bdc_field using 'VBAK-AUDAT'
ITAB-AUDAT.
perform bdc_field using 'VBAK-VKBUR'
ITAB-VKBUR.
perform bdc_field using 'VBAK-WAERK'
'USD'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-BZIRK'
ITAB-BZIRK.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\08'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-ZLSCH'.
perform bdc_field using 'VBKD-KTGRD'
'01'.
perform bdc_field using 'VBKD-ZLSCH'
'C'.
perform bdc_field using 'VBAK-ZUONR'
'Open Sales order'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\10'.
perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(05)'.
perform bdc_field using 'GV_FILTER'
'PARALL'.
perform bdc_field using 'GVS_TC_DATA-REC-PARTNER(05)'
'3838'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\13'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-BSARK'.
perform bdc_field using 'VBKD-BSARK'
'CU01'.
perform bdc_field using 'VBKD-IHREZ'
ITAB-IHREZ.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-ZZLEAT'.
perform bdc_field using 'VBAK-ZZWARR'
'12346C'.
perform bdc_field using 'VBAK-ZZFABW'
'F14689'.
perform bdc_field using 'VBAK-ZZWARX'
'12012005'.
perform bdc_field using 'VBAK-ZZLEAT'
'CGUYFIU'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PKO1'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'RV45A-CCODE(01)'.
perform bdc_field using 'RV45A-MABNR(01)'
ITAB-MABNR.
perform bdc_field using 'RV45A-KWMENG(01)'
'1'.
perform bdc_field using 'VBAP-WERKS(01)'
itab-dwerk.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PKO1'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(01)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(01)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '5003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
Loop.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PKO1'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'RV45A-CCODE(02)'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(02)'.
perform bdc_field using 'RV45A-MABNR(02)'
ITAB-MABNR.
perform bdc_field using 'RV45A-KWMENG(02)'
'1'.
perform bdc_field using 'VBAP-WERKS(02)'
itab-dwerk.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PKO1'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(01)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(01)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '5003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
endloop.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
ITAB-KETDAT.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
ITAB-ZTERM.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(02)'.
perform bdc_transaction using 'VA01'.
endloop.
Perform close_group.Hi,
Check the below code its excatly same code which u want.
REPORT Z90VR_UPLOAD_SALESORDERS
NO STANDARD PAGE HEADING
LINE-COUNT 65(2)
LINE-SIZE 160.
TABLES
Tables : knb1, "Customer Master (Company Code)
mara, "General Material Data
knvv, "Customer Master Sales Data
pa0003. "HR Master Record: Infotype 0003
INTERNAL TABLES
Internal table to store flat file records
Data : Begin of it_file occurs 0,
record(600) type c,
end of it_file.
Internal table to store upload records
Data : begin of it_sales occurs 0,
vbeln like vbak-vbeln,
auart like vbak-auart,
vkorg like vbak-vkorg,
vtweg like vbak-vtweg,
spart like vbak-spart,
kunnr like kna1-kunnr,
kunnr_old like kna1-kunnr,
Ship like kna1-kunnr,
ship_old like kna1-kunnr,
bstnk like vbak-bstnk,
bstdk like vbak-bstdk,
matnr like mara-matnr,
kwmeng(20) type C,
fdate like vbak-audat,
vstel like vbap-vstel,
route like vbap-route,
Qty(20) type c,
lgort like vbap-lgort,
zzshipto like vbak-zzshipto,
custext(132) type c,
shptext(132) type c,
flag(1) type c,
zzretdat like vbak-zzretdat,
augru like vbak-augru,
emp(10) type c,
end of it_sales.
Internal table to hold BDC data
Data begin of it_bdcdata occurs 0.
include structure bdcdata.
data end of it_bdcdata.
Internal table to store error messages
Data : it_bdcmsg like bdcmsgcoll occurs 0 with header line.
Internal table to store error records.
Data : begin of it_error occurs 0,
vbeln like vbak-vbeln,
kunnr like kna1-kunnr,
ship like kna1-kunnr,
matnr like mara-matnr,
pernr like pa0003-pernr,
msg(75) type c,
end of it_error.
DATA
Data : wk_auart like vbak-auart, "Sales document type
wk_vkorg like vbak-vkorg, "Sales organization
wk_vtweg like vbak-vtweg, "Distribution channel
wk_spart like vbak-spart, "Division
wk_kunnr like kna1-kunnr, "Customer number(sold to party)
wk_kunnr_old like kna1-kunnr, "OldCustomer no.(sold to party)
wk_Ship like kna1-kunnr, "Customer number(ship to party)
wk_ship_old like kna1-kunnr, "OldCustomer no.(ship to party)
wk_bstnk like vbak-bstnk, "Customer purchase order number
wk_vbeln like vbak-vbeln, "Old sales Document Number
wk_bstdk like vbak-bstdk, "Customer purchase order date
wk_matnr like mara-matnr, "Material number
wk_kwmeng(17) type c, "Order quantity
wk_fdate like vbak-audat, "First Date
wk_vstel like vbap-vstel, "Shipping point/receiving point
wk_route like vbap-route, "Route
wk_Qty(17) type c, "Stock quantity
wk_lgort like vbap-lgort, "Storage location
wk_zzshipto like vbak-zzshipto, "RBJP-T: Ship-to-party code
wk_Custext(132) type c, "Comment for customer
wk_shptext(132) type c, "Comment for warehouse
wk_flag(1) type c, "Order ombnation flag
wk_zzretdat like vbak-zzretdat, "RBJP-T Stock Return Deadline
wk_augru like vbak-augru, "Order reason
wk_emp(10) type c. "sales Employee
*--- Variable to store customer comment text & Shipping Instruction text
Data : W_shptext(132) type c, "To store customer comment text
w_custext(132) type c, "To store Shipping Instruction text
wk_error_rec like sy-tabix, "To store no of error records
wk_Success_rec like sy-tabix. "To store of Success records
Constants *
Data : c_mode(1) type c value 'N'.
SELECTION-SCREEN LAYOUT
selection-screen : skip 2.
selection-screen begin of block blk1 with frame title text-001.
selection-screen : skip 1.
parameter : p_file like rlgrap-filename default 'C:\SalesBackorder.csv'
obligatory,
p_spt(1) type c default ',' obligatory.
selection-screen end of block blk1.
At Selection Screen
*--- Provide F4 help for the File Path
at selection-screen on value-request for p_file.
call function 'KD_GET_FILENAME_ON_F4'
EXPORTING
mask = ',.csv'
static = 'X'
CHANGING
file_name = p_file.
Start of Selection
START-OF-SELECTION.
*--- Clearing internal tables & Variables used
perform clear_tables.
*--- Upload the file into internal table.
perform upload_input_file.
*--- Split the records upladed from the file.
perform split_records.
*--- Check the record values are valid
perform check_records.
*--- Check for the valid customer data sales data
perform valid_customer_data.
*--- Populating the BDC Table
perform populate_bdcdata.
End of Selection
END-OF-SELECTION.
clear wk_error_rec.
Describe table it_error lines wk_error_rec.
*--- Display error report list
perform display_error_list.
TOP-OF-PAGE *
TOP-OF-PAGE.
*--- Printing Column headings
perform column_headings.
*& Form upload_input_file
Uploading the file into internal table
FORM upload_input_file.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = p_file
FILETYPE = 'ASC'
TABLES
DATA_TAB = it_file
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10.
IF SY-SUBRC <> 0.
message i000(z1) with 'Error while Uploading the file'.
ENDIF.
ENDFORM. " upload_input_file
*& Form split_records
Spliting the upload records from file records at ',' or ';' into
respective filed values
FORM split_records.
data : wk_file(500) type c. " Variable to store record
If not it_file[] is initial.
loop at it_file from 2.
clear wk_file.
WK_file = it_file-record.
split the records at ','
split WK_file at p_spt into wk_auart
wk_vkorg
wk_vtweg
wk_spart
wk_kunnr
wk_kunnr_old
wk_Ship
wk_ship_old
wk_bstnk
wk_vbeln
wk_bstdk
wk_matnr
wk_kwmeng
wk_fdate
wk_vstel
wk_route
wk_Qty
wk_lgort
wk_zzshipto
wk_Custext
wk_shptext
wk_flag
wk_zzretdat
wk_augru
wk_emp.
move the records into internal table
move : wk_auart to it_sales-auart,
wk_vkorg to it_sales-vkorg,
wk_vtweg to it_sales-vtweg,
wk_spart to it_sales-spart,
wk_kunnr to it_sales-kunnr,
wk_kunnr_old to it_sales-kunnr_old,
wk_Ship to it_sales-ship,
wk_ship_old to it_sales-ship_old,
wk_bstnk to it_sales-bstnk,
wk_vbeln to it_sales-vbeln,
wk_bstdk to it_sales-bstdk,
wk_matnr to it_sales-matnr,
wk_kwmeng to it_sales-kwmeng,
wk_fdate to it_sales-fdate,
wk_vstel to it_sales-vstel,
wk_route to it_sales-route,
wk_Qty to it_sales-qty,
wk_lgort to it_sales-lgort,
wk_zzshipto to it_sales-zzshipto,
wk_Custext to it_sales-custext,
wk_shptext to it_sales-shptext,
wk_flag to it_sales-flag,
wk_zzretdat to it_sales-zzretdat,
wk_augru to it_sales-augru,
wk_emp to it_sales-emp.
append it_sales.
clear it_sales.
endloop. "loop at it_file from 2.
endif. "If not it_file[] is initial
ENDFORM. " split_records
*& Form check_records
Check the values exist in check table if not delete the records
and append into internal error table records
FORM check_records.
If not it_sales[] is initial.
*--Sorting the internal table on old sales document number uploaded
sort it_sales by vbeln.
loop at it_sales.
*--- Check the old sold to party exist & if exist then get the new sold
*--- to party Number
if not it_sales-kunnr_old is initial.
clear knb1-kunnr.
select single kunnr
from knb1
into knb1-kunnr
where altkn = it_sales-kunnr_old.
if sy-subrc = 0.
it_sales-kunnr = knb1-kunnr.
else.
it_error-vbeln = it_sales-vbeln.
it_error-kunnr = it_sales-kunnr_old.
it_error-msg = text-010.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif. "if sy-subrc = 0.
endif. "if not it_sales-kunnr_old is initial.
*--- Check the old ship to party exist & if exist then get the new ship
*--- to party Number
if not it_sales-ship_old is initial.
clear knb1-kunnr.
select single kunnr
from knb1
into knb1-kunnr
where altkn = it_sales-ship_old.
if sy-subrc = 0.
it_sales-ship = knb1-kunnr.
else.
it_error-vbeln = it_sales-vbeln.
it_error-ship = it_sales-ship_old.
it_error-msg = text-011.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif. "if sy-subrc = 0.
endif. "if not it_sales-ship_old is initial.
*--- Check the old matnr exist & if exist then get the new material
*--- number
if not it_sales-matnr is initial.
clear mara-matnr.
select single matnr
from mara
into mara-matnr
where bismt = it_sales-matnr.
if sy-subrc = 0.
it_sales-matnr = mara-matnr.
else.
it_error-vbeln = it_sales-vbeln.
it_error-matnr = it_sales-matnr.
it_error-msg = text-012.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif. "if sy-subrc = 0.
endif. "if not it_sales-matnr is initial.
*---- Check the Sales Employee Number exist in master table PA0003
if not it_sales-emp is initial.
clear pa0003-pernr.
select single pernr
from pa0003
into pa0003-pernr
where pernr = it_sales-emp.
if sy-subrc ne 0.
it_error-vbeln = it_sales-vbeln.
it_error-pernr = it_sales-emp.
it_error-msg = text-013.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif. "if sy-subrc = 0.
endif. "if not it_sales-emp is initial.
modify it_sales index sy-tabix.
clear it_sales.
endloop.
endif. "If not it_sales[] is initial.
ENDFORM. " check_records
*& Form populate_bdcdata
Populating BDCDATA Table & passing the data by calling
transaction 'VA01' to create Sales Orders
FORM populate_bdcdata.
Data : flag_item(1) type C. "Flag for populating Item details
*--- Sorting the internal table by old sales document number.
sort it_sales by vbeln.
If not it_sales[] is initial.
loop at it_sales.
clear : flag_item,
W_shptext,
w_custext.
W_shptext = it_sales-shptext.
w_custext = it_sales-custext.
*--- At new sales document number(old document number from file)
*--- populate the header data & first item details.
at new vbeln.
clear it_bdcdata.
refresh it_bdcdata.
read table it_sales index sy-tabix.
perform append_bdcdata using : 'X' 'SAPMV45A' '0101',
' ' 'VBAK-AUART' it_sales-auart,
' ' 'VBAK-VKORG' it_sales-vkorg,
' ' 'VBAK-VTWEG' it_sales-vtweg,
' ' 'VBAK-SPART' it_sales-spart,
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMV45A' '4001',
' ' 'KUAGV-KUNNR' it_sales-kunnr.
if not it_sales-ship is initial.
perform append_bdcdata using ' ' 'KUWEV-KUNNR' it_sales-ship.
endif.
perform append_bdcdata using : ' ' 'VBKD-BSTKD' it_sales-bstnk,
' ' 'VBKD-BSTDK' it_sales-bstdk,
' ' 'VBAK-AUGRU' it_sales-augru,
' ' 'BDC_OKCODE' '=KZKU',
new logic.
'X' 'SAPMSSY0' '0120',
' ' 'BDC_CURSOR' '04/06',
' ' 'BDC_OKCODE' '=CHOO',
end of logic
'X' 'SAPMV45A' '4002'.
*--- Depending upon the sales document type (AUART) passing the RBJP-T
*--- Stock Return Deadline (ZZRETDAT) if Auart is 'ZRLB' or 'ZRKB' the
*--- passing the Stock Return Deadline Date.
if it_sales-auart = 'ZRLB' or
it_sales-auart = 'ZRKB'.
perform append_bdcdata using : ' ' 'VBAK-ZZRETDAT' it_sales-zzretdat.
endif.
perform append_bdcdata using : ' ' 'VBAK-ZZSHIPTO' it_sales-zzshipto,
' ' 'BDC_OKCODE' '=T\07',
'X' 'SAPMV45A' '4002',
' ' 'GVS_TC_DATA-REC-PARVW(06)' 'AF',
' ' 'GVS_TC_DATA-REC-PARTNER(06)'
it_sales-emp,
' ' 'BDC_OKCODE' '/EBACK'.
*---First Items details
perform append_bdcdata using :
'X' 'SAPMV45A' '4001',
' ' 'RV45A-ETDAT(01)' it_sales-fdate,
' ' 'RV45A-KWMENG(01)' it_sales-kwmeng,
' ' 'RV45A-MABNR(01)' it_sales-matnr,
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMV45A' '4001',
' ' 'RV45A-VBAP_SELKZ(01)' 'X',
' ' 'BDC_OKCODE' '=PDE2',
'X' 'SAPMV45A' '4003',
' ' 'VBAP-LGORT' it_sales-lgort,
' ' 'VBAP-VSTEL' it_sales-vstel,
' ' 'VBAP-ROUTE' it_sales-route.
*--- If Order combination flag is 'X' then check box is made click else
*--- not click
If it_sales-flag = 'X'.
perform append_bdcdata using :
' ' 'VBKD-KZAZU' 'X'.
else.
perform append_bdcdata using :
' ' 'VBKD-KZAZU' ' '.
endif.
perform append_bdcdata using :
' ' 'BDC_OKCODE' '/EBACK',
'X' 'SAPMV45A' '4001'.
flag_item = 'X'.
endat.
*---- From 2 items.
if flag_item = ' '.
perform append_bdcdata using :
' ' 'BDC_OKCODE' 'POAN',
'X' 'SAPMV45A' '4001',
' ' 'RV45A-ETDAT(02)' it_sales-fdate,
' ' 'RV45A-KWMENG(02)' it_sales-kwmeng,
' ' 'RV45A-MABNR(02)' it_sales-matnr,
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMV45A' '4001',
' ' 'RV45A-VBAP_SELKZ(02)' 'X',
' ' 'BDC_OKCODE' '=PDE2',
'X' 'SAPMV45A' '4003',
' ' 'VBAP-LGORT' it_sales-lgort,
' ' 'VBAP-VSTEL' it_sales-vstel,
' ' 'VBAP-ROUTE' it_sales-route.
If it_sales-flag = 'X'.
perform append_bdcdata using :
' ' 'VBKD-KZAZU' 'X'.
else.
perform append_bdcdata using :
' ' 'VBKD-KZAZU' ' '.
endif.
perform append_bdcdata using :
' ' 'BDC_OKCODE' '/EBACK',
'X' 'SAPMV45A' '4001',
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMV45A' '4001'.
endif. "if flag = ' '.
*--- At end of the sales document saving the records
at end of vbeln.
read table it_sales index sy-tabix.
perform append_bdcdata using :
' ' 'BDC_OKCODE' '=SICH'.
*--- calling transaction 'VA01'
perform call_transaction.
endat.
endloop. "loop at it_sales.
endif. "If not it_sales[] is initial.
ENDFORM. " populate_bdcdata
*& Form append_bdcdata
Populating the BDC table for using in Call Transaction
Form append_bdcdata using dynbegin fld1 fld2.
*---Identifying as new screen
IF DYNBEGIN = 'X' .
MOVE: DYNBEGIN TO IT_BDCDATA-DYNBEGIN,
FLD1 TO IT_BDCDATA-PROGRAM,
FLD2 TO IT_BDCDATA-DYNPRO.
ELSE.
*---Identifying a field name and field value
MOVE: FLD1 TO IT_BDCDATA-FNAM,
FLD2 TO IT_BDCDATA-FVAL.
ENDIF.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
ENDFORM. " append_bdcdata
*& Form call_transaction
text
FORM call_transaction.
*--- Data declaration for Local variables
Data : l_mess_lines type i, "variable for no of msg lines
l_msg_text(100) type c, "For capturing format message
l_newvbeln like vbak-vbeln, "For holding new sales Doc No
flag_text(1) type C value 'X'. "Flag for getting header text
*--- Internal Table to store header text & header structure
Data : it_tline like tline occurs 100 with header line,
it_tline1 like tline occurs 100 with header line,
t_thead like thead.
*--- Call transaction method
call transaction 'VA01'
using it_bdcdata
mode c_mode
UPDATE 'S'
messages into it_bdcmsg.
*--- If success then Populating the header text for Comment for
*--- Customer & Shipping Instruction
if sy-subrc eq 0 and
sy-msgty ne 'A' and
sy-msgty ne 'E' .
Incrementing the counter for success record
wk_success_rec = wk_success_rec + 1.
clear l_mess_lines.
describe table it_bdcmsg lines l_mess_lines.
read table it_bdcmsg index l_mess_lines.
*--- Formatting the Success message using Call Function 'FORMAT_MESSAGE'
perform format_message using l_msg_text.
clear l_newvbeln.
move it_bdcmsg-msgv2 to l_newvbeln.
*--- Padding with zeros for the new sales Ducument number created
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = l_newvbeln
IMPORTING
OUTPUT = l_newvbeln.
*--- The below logic is added because we can't update the Header Text
through Batch Input so we need to first create new sales documnet
number then get that sales document no & by using function module
SAVE_TEXT update the Header Text.
*--- Populating the header text for Comment for Customer & Shipping
*--- Instruction
clear it_tline.
refresh it_tline.
*--- Populating the header text for Comment for customer
it_tline-tdformat = '*'.
it_tline-tdline = w_custext.
append it_tline.
clear it_tline.
*--- Populating the header text for Shipping Instruction
it_tline-tdformat = '*'.
it_tline-tdline = w_shptext.
append it_tline.
clear it_tline.
loop at it_tline.
refresh it_tline1.
read table it_tline index sy-tabix.
it_tline1-tdformat = it_tline-tdformat.
it_tline1-tdline = it_tline-tdline.
append it_tline1.
clear it_tline1.
*--- for Comment for Customer ID
if flag_text = 'X'.
clear t_thead.
t_thead-tdobject = 'VBBK'.
t_thead-tdname = l_newvbeln.
t_thead-tdid = '0003'.
t_thead-tdspras = sy-langu.
endif. "if flag_text = 'X'.
*--- for Shipping Instruction ID
if flag_text = ' '.
clear t_thead.
t_thead-tdobject = 'VBBK'.
t_thead-tdname = l_newvbeln.
t_thead-tdid = '0012'.
t_thead-tdspras = sy-langu.
endif. "if flag_text = ' '.
*--- Save the text using Functional Module 'SAVE_TEXT'
perform save_text tables it_tline1
using t_thead.
clear flag_text.
endloop. "loop at it_tline.
else.
*--- If error then get the error message
clear l_mess_lines.
describe table it_bdcmsg lines l_mess_lines.
read table it_bdcmsg index l_mess_lines.
*--- Formatting the Error message using Call Function 'FORMAT_MESSAGE'
clear l_msg_text.
perform format_message using l_msg_text.
it_error-vbeln = it_sales-vbeln.
it_error-msg = l_msg_text.
append it_error.
clear it_error.
endif. "if sy-subrc eq 0 and
"sy-msgty ne 'A' and
clear it_bdcmsg.
refresh it_bdcmsg.
ENDFORM. " call_transaction
*& Form FORMAT_MESSAGE
Formating the system message
FORM FORMAT_MESSAGE USING P_DL_MSG_TEXT.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = SY-LANGU
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = P_DL_MSG_TEXT
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
CONDENSE P_DL_MSG_TEXT.
ENDFORM. " FORMAT_MESSAGE
*& Form save_text
text
FORM save_text tables it_tline structure tline
using t_thead.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = t_thead
SAVEMODE_DIRECT = 'X'
TABLES
LINES = it_tline
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 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.
ENDFORM. " save_text
*& Form display_error_list
writing error list
FORM display_error_list.
If not it_error[] is initial.
sort it_error by vbeln.
loop at it_error.
write: /00 it_error-vbeln,
12 it_error-kunnr,
35 it_error-ship,
58 it_error-matnr,
88 it_error-msg.
if not it_error-pernr is initial.
write : 78 it_error-pernr.
endif.
endloop.
endif.
ENDFORM. " display_error_list
*& Form column_headings
writing Column Headings for errror records
FORM column_headings.
write : /00 text-002,
45 wk_success_rec.
write : /00 text-003,
45 wk_error_rec.
uline.
format color col_heading intensified.
write: /00 text-004,
12 text-005,
35 text-006,
58 text-007,
78 text-008,
88 text-009,
160 space.
format color col_heading intensified off.
uline.
ENDFORM. " column_headings
*& Form valid_customer_data
Check the combination of Customer number ,sales organisation,
Distribution channel & Division exist in Customer Master Sales
Data(KNVV) if not delete the old document number from internal
table
FORM valid_customer_data.
data : l_customer_text(50) type c.
if not it_sales[] is initial.
loop at it_sales.
*--- Check the combination of Customer number ,sales organisation,
*--- Distribution channel & Division exist in Customer Master Sales
*--- Data(KNVV)
clear : KNVV,
l_customer_text.
select single *
from knvv
into knvv
where Kunnr = It_sales-kunnr
and vkorg = it_sales-vkorg
and vtweg = it_sales-vtweg
and spart = it_sales-spart.
if sy-subrc ne 0.
it_error-vbeln = it_sales-vbeln.
concatenate text-014
it_sales-vkorg
it_sales-vtweg
it_sales-spart
text-015 into
l_customer_text separated by space.
it_error-msg = l_customer_text.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif.
endloop.
endif. "if not it_sales[] is initial.
ENDFORM. " valid_customer_data
*& Form clear_tables
Clearing Internal table & variables
FORM clear_tables.
clear : it_file,
it_sales,
it_bdcdata,
it_bdcmsg,
it_error,
wk_success_rec,
wk_error_rec.
refresh : it_file,
it_sales,
it_bdcdata,
it_bdcmsg,
it_error.
ENDFORM. " clear_tables -
Adding Custom Fields to the Sales Order Screens - VA01, VA02 & VA03
Hi,
I have a requirement to add custom fields in the Sales Order Standard Screen. Could anyone please tell me is there any screen exit available to add a tab screen or is there any possibility without modifying the standard code.
Please let me know with the details.
Thanks & Regards,
Goutham.Hi Narendran,
Thanks for prompt reply, it was very useful.
Could you please let me know the procedure you have followed in coming to this conclusion of what screens to be used.
I understand that the program is SAPMV45A.
Thanks & Regards,
Goutham. -
New Input fields for Sales Order Screen
Hi all
I have to modify the existing Sales Order Screen for transactions VA01, VA02 and VA03 using user exits. I have to add two input fields (of order quantity for tow different sales units CS and BT) in existing table control of Sales order and later I want to convert these UOMs to basic UOMs.
As its a screen exit part, I had done some R&D for the same. I had never faced such requirement in past.According to my knowledge "User exits are only to put additional information in existing SAP programs and not to modify main screens."
BADI is new to me but I still tried to search BADI for the same but didn't able to find it.
Basically I am not able to find Screen Exit for this.
Can anybody help me in this regard?
If you are suggesting BADI then please try to explain in detial.
Thanks in advance
AmolHi Amol,
VA01, VA02 are fine. Since VA03 is display, you cannot edit the fields you add.
To add fields to this display you need to edit the following screens :
Program : SAPMV45A
Screen : 8309
It is the Additional Data B tab provided by SAP to add custom fields .
You may need an access key to edit this screen.
Putting your fields there and running VA01/02 will solve half your problem.
The second half is how to capture the data entered in those fields to the database.
In order to capture the data from these custom fields you can use
the user exit
MV45AFZZ
USEREXIT_SAVE_DOCUMENT_PREPARE
USEREXIT_SAVE_DOCUMENT depening on what you want to do.
Hope this helps. -
How to implement screen enhancements with table control in sales document
I want to add a table control in sales document head and items, is there a good solution for this, thanks
Hi Zhang Jie,
There are some reserved screen for you in sales order.
screen enhancement: for header is SAPMV45A 8309 and 8310.
for item is SAPMV45A 8459 and 8460.
you can add your table control in those screen.
regards,
Archer -
Additional field in the sales order screen
I need some additional field in the sales order screen. There is
also no screen exit available for VA01. Can I use this
additional data B tab in header details by creating additional
field in it. Please tell me how to use this tab or how to get
different field in the sales order (header or item level).Hi,
Yes. You can use this screen. For this either can modify the table VBAP with additional fields and put them on this screen.
You have to code your logic to save these values in the include MV45AFZZ. The subscreens you have to use for this are 4462 or 8459.
refer Screen exits - Urgent.
with regards,
Vamsi -
Missing item category & material description in sales order screen
Hi all,
We have upgraded SAP from 4.6C to ECC 6.0 version. In the sales order screen (create, change & display mode) the item category & the material description cannot be seen at the item level in the ECC 6.0 version. The same appears in the 4.6C version. I have done the following checks:-
1. There are no screen variants/ transaction variants/layout settings in both the versions
2. The config settings for item category are intact in both the versions.
3. In the item detail view i am able to see the item category.
4. There is no change in the functionalty as i am able to save the order & complete the Sales cycle upto billing in the ECC 6.0 version
Any ideas as to what could be the problem & how to fix it. Pl suggest as it needs to be fixed urgently.
Regards,
Ramesh IyerHi,
Have you checked the table control setting,which is avialable in the sales order screen at extream right.In this check in administrator button if Those fields must are marked as invisible.
Reward points if useful
Regards,
Amrish Purohit -
Dynpro Table Control Column's Order
Hi everyone,
I am facing a strange issue in a Dynpro Table Control with the order of the columns.
I had to add a new key filed in a standard view. When I am running the Table Maintenance Generator in SE11, the Dynpro Table Control is generated correctly and the new column appears at the right place with the other key fields. But when I display the view data with either in SE11 or using the Customizing link in SPRO, the new key field appears at the complete right end of the Dynpro in between two normal fields.
I tried to delete the screen and to generate it again, I tried to use the same screen number and also a new screen number but the result is always the same. The column's order is not correctly displayed when executing the Dynpro.
The only way the columns are correctly displayed it's if I created a new screen in a new Z program but this solution cannot be consider since we are talking about standard Dynpro / Table / Function Pool. Using a Z program would not permit to use the standard SPRO link no more.
I know that sometimes the Table Maintenance Generator does not work properly but I never saw this kind of behavior before. Can someone help me?
Thank you in advance for your answers,
Sylvainhi,
r u making through wizard?
it is good practice.
Otherwise first take I/O field, give name and than u can take text field for column heading.
Reward if useful. -
In which table chenges in sales orders are getting saved
Hi Experts,
I have a query
<b>in which table chenges in sales orders are getting saved</b>
Thanks & Regards
Prashant GuptaHi
goto SE16/se16n and enter the table name as CDHDR for header changes
here enter the transaction code in the selection screen as VA02 so that it will give the details of all sales order which have changed.
You can get the change doc object or document number in cdhdr enter the same in
CDPOS in SE16n if you want to know the changes done at item level or you also have the option of entering TABLE name in CDPOS in SE16N selection screen if you want to know changes done in a particular table
regards -
Customer Visible in Sales Order Screen.But not visible in the customer Web form in R12
Hi all,
I have created a customer of organization type using the customer API.I have also created a location and a customer account and account site as well
The created values are loaded into the HZ tables and are visible in the tables such as hz_parties, hz_party_sites, hz_party_sits and so on.
But the issue is that I cannot find the customer in the customer web form in the receivables.but at the same time it is visible in the sales order screen in the order management.
so please, someone help me resolve this issue.
Thanks and Regards,
Bhaskar.Hi Kate,
Could you please share your form with me ([email protected]) so that I can investigate and correct this problem? Instructions on sharing can be found here:
http://forums.adobe.com/docs/DOC-2462
Thanks,
Brian -
New field in sales order screen at item level
Hi Friends,
I need to insert a new field at the item level in the sales order screen (additional data tab). Please let me know how to do the same.
Regards,
VivekHi,
you can add fields of self-defined tables on the "Additional Data B" tab
. Those fields should be added onto the respective screen and the flow
Logic should be adjusted. Additional item data is on screen SAPMV45A 0459. This screen contains
Include SAPMV45A 8459 as user exits.
This should involve not only appending a structure containing customer-
Specific fields within the table VBAP but also using the
userexit coding:
a)MV45AOZZ for PBO (i.e. module zzmodify_uas_pbo output);
b)MV45AIZZ for PAI (i.e. module zzmodify_uas_pai input);
c)MV45AFZZ (sub-routine USEREXIT_MOVE_FIELD_TO_VBAP) for defaulting the
values from the customer master and further processing.
Best regards,
Joerg -
Hi SD gurus.
I have to make changes in Sale order Screens i.e. additional tabs & details there.
Can you give me the t-code for this screen config or any documents to my mail i.d.
[email protected]
Same requirement is there for delivery & billing too.
Regards
Sreekanthhi,
To make optional / mandatory you can use in IMG - S&D-> Basic > Functions-> Log of incomplete Procedures => select the fields > from the tables and the system will check for them (OVA2/VUA2)
To make a filed entry enabled or grey (non-entry allowed):
User exits in the program MV45AFZZ-USEREXIT_FIELD_MODIFICATION
This user exit can be used to modify the attributes of the screen fields.
To do this, the screen fields are allocated to so-called modification groups 1 - 4 and can be edited together during a modification in ABAP.
If a field has no field name, it cannot be allocated to a group. The usage of the field groups (modification group 1-4) is as follows:
Modification group 1: Automatic modification with transaction MFAW
Modification group 2: It contains 'LOO' for step loop fields
Modification group 3: For modifications which depend on check tables or on other fixed information
Modification group 4: is not used
The FORM routine is called up for every field of a screen. If you require changes to be made, you must make them in this user exit. This FORM routine is called up by the module FELDAUSWAHL.
Actually suppressing fielding sales orders userwise is quite easy. We are doing it in our company. For this we use userexit FORM USEREXIT_FIELD_MODIFICATION in MV45AFZZ.
Below is the sample code
IF SCREEN-NAME = 'VBKD-ABSSC'.
AUTHORITY-CHECK OBJECT 'ZMV45AFZZ' ID 'SCRFNAME' FIELD SCREEN-NAME.
IF sy-subrc = 0.
SCREEN-INPUT = 1.
else.
SCREEN-INPUT = 0.
ENDIF.
endif.
You place the authority check object in authorization profile in the role of the users, who should have access to the field (in this case it is VBKD-ABSSC), and there assign the corresponding fields that are to be accessed via this userexit.
pls reward points if the answer is helpful
Regards,
Murali
Maybe you are looking for
-
BT email not working. Cannot send emails from btconnect SMTP after iOS upgrade. This is the only difference I am aware of. Apple iPad 3. Can anyone help me please.
-
Which trigger to use for error logging output ?
hello, is there a trigger which is executed every time an error occurs in report generation ? so that i can write the error-message via "TEXT_IO" to an external file every time the trigger fires ? any suggestions greetings thorsten lorenz
-
Help in installing Sql Developer
Hello gdmrng to all am very much interested in oracle and now going to take ocp.i want to install Oracle Sql developer 3.0 on my windows 7. i download it from OTN.But i dont how to make a new connection on it. In new connection i give these details C
-
Can I use this for Kindle?
Hi, I'm considering getting a Kindle and was wondering if it would connect to my intel 20" iMac with system 10.6. 2 through an airport express. I don't own either (Kindle OR airport express) but would buy both if that would work. I don't think where
-
Insert File Path into Text Field
I am trying to create a text filed at the bottom of a form document that will automatically input the file path (e.g.. C\:Folder\File) of the document itself after the document is saved. I've looked at a few Scripts but nothing seems to be working.