09-06-2007 5:22 AM
hi experts,
what are the item lines in va01 transaction how to transfer the item lines data from flat file to database .
thanks in advance
radhakrishna.
09-06-2007 5:24 AM
HI ,
you can use BDC for this purpose.
<b>Reward Points if helpful,</b>
Regards,
jinesh.
09-06-2007 5:27 AM
Create a report program which does following:
1. Selection screen with File Name & File path
2. Program Uploads the file using GUI_UPLOAD Function Module
3. The internal table will have all the data from file.
4. do a BDC recording using SHDB or SM35 transaction
5. Place that recording in your report program
6. Loop over the line item recording to pass your line item data from internal table
7. Call transaction VA01 using the bdcdata internal table
09-06-2007 5:29 AM
Hi,
VA01 is used to create sales order... this is an electronic document and have two parts, header and item lines..
Header data contains, the sold to and ship to party customers, reference document and other characteristics..
The Item lines contain the data like material number, desc, qty, price etc etc..,
you can write a BDC program for VA01 to create Sales orders using ur flat file..
Thanks and Best Regards,
Vikas Bittera.
09-06-2007 5:34 AM
Hi RadhaKrishna,
You can use the recording method SHDB in BDc, it will simpliify ur work for the item lines. Please find the sample coding for it also.
<b>Sample Program</b>
report yma_ki
no standard page heading line-size 255.
*PARAMETERS: P_DSN LIKE RLGRAP-FILENAME DEFAULT 'D:/D1112.TXT'.
data: begin of itab occurs 0,
auart like vbak-auart,
bstkd like vbkd-bstkd,
bstdk(10) type c,
kunnr like kuagv-kunnr,
kprgbz like rv45a-kprgbz,
mabnr like rv45a-mabnr,
posnr like vbap-posnr,
kwmeng(9) type c,
vrkme like vbap-vrkme,
route like vbap-route,
end of itab.
data: begin of i_error occurs 0,
auart like vbak-auart,
bstkd like vbkd-bstkd,
bstdk(10) type c,
kunnr like kuagv-kunnr,
kprgbz like rv45a-kprgbz,
mabnr like rv45a-mabnr,
posnr like vbap-posnr,
kwmeng(9) type c,
vrkme like vbap-vrkme,
route like vbap-route,
msg(100) type c,
end of i_error.
data : i_msgcall like bdcmsgcoll occurs 0 with header line.
data: m_string(200) type c.
include bdcrecx1.
----
START-OF-SELECTION
----
start-of-selection.
call function 'GUI_UPLOAD'
exporting
filename = 'C:\MAA.TXT'
filetype = 'ASC'
has_field_separator = 'X'
tables
data_tab = itab.
*perform open_group.
loop at itab.
perform bdc_dynpro1 using 'SAPMV45A' '0101'.
perform bdc_field1 using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field1 using 'BDC_OKCODE'
'/00'.
perform bdc_field1 using 'VBAK-AUART'
itab-auart.
perform bdc_dynpro1 using 'SAPMV45A' '4001'.
perform bdc_field1 using 'BDC_OKCODE'
'SICH'.
perform bdc_field1 using 'VBKD-BSTKD'
itab-bstkd.
perform bdc_field1 using 'VBKD-BSTDK'
itab-bstdk.
perform bdc_field1 using 'KUAGV-KUNNR'
itab-kunnr.
perform bdc_field1 using 'RV45A-KETDAT'
'01/05/2007'.
perform bdc_field1 using 'RV45A-KPRGBZ'
itab-kprgbz.
perform bdc_field1 using 'BDC_CURSOR'
'VBAP-VRKME(01)'.
perform bdc_field1 using 'RV45A-MABNR(01)'
itab-mabnr.
perform bdc_field1 using 'VBAP-POSNR(01)'
itab-posnr.
perform bdc_field1 using 'RV45A-KWMENG(01)'
itab-kwmeng.
perform bdc_field1 using 'VBAP-VRKME(01)'
itab-vrkme.
perform bdc_field1 using 'VBAP-ROUTE(01)'
itab-route.
perform bdc_dynpro1 using 'SAPLSPO2' '0101'.
perform bdc_field1 using 'BDC_OKCODE'
'=OPT1'.
perform bdc_transaction using 'VA01'.
perform process_err_rec.
perform print_errors.
endloop.
*perform close_group.
----
Start new screen *
----
form bdc_dynpro1 using program dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
endform.
----
Insert field *
----
form bdc_field1 using fnam fval.
IF FVAL <> NODATA.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
ENDIF.
endform.
&----
*& Form process_err_rec
&----
form process_err_rec .
loop at i_msgcall.
call function 'FORMAT_MESSAGE'
exporting
id = i_msgcall-msgid
lang = 'EN'
no = i_msgcall-msgnr
v1 = i_msgcall-msgv1
v2 = i_msgcall-msgv2
v3 = i_msgcall-msgv3
v4 = i_msgcall-msgv4
importing
msg = m_string
exceptions
not_found = 1
others = 2.
endloop.
endform. " process_err_rec
----
Form get_err_records
----
form get_err_records using p_lw_mstring.
move-corresponding itab to i_error.
move p_lw_mstring to i_error-msg.
append i_error.
clear i_error.
endform. " GET_ERR_RECORDS
----
Form print_errors
----
form print_errors .
Printing the error records
write 😕 text-e01 color 6.
loop at i_error.
skip.
write:/2 i_error-auart,
8 i_error-bstkd,
21 i_error-kunnr,
26 i_error-mabnr,
30 i_error-posnr,
36 i_error-vrkme,
40 i_error-msg.
endloop.
endform.
<b>
All the Best</b>
<b>Reward Points if Useful</b>
Regards
Gokul
09-06-2007 5:37 AM
report YSPBDC_VA01
no standard page heading line-size 255.
include bdcrecx1.
tables : vbak,
kna1,
vbap,
vbkd.
data: begin of record occurs 0,
slno type i, "Slno.
auart like vbak-auart,
vkorg like vbak-vkorg,
vtweg like vbak-vtweg,
spart like vbak-spart,
kunag like vbak-kunnr, "sold to
kunnr like vbak-kunnr, "ship to
bstkd like vbkd-bstkd,
ketdat like vbak-audat,
posnr like vbap-posnr,
matnr like vbap-matnr,
kwmeng(17) type c,
werks like vbap-werks,
ocsr like kna1-kunnr, "order CSR
fse like kna1-kunnr, "fse
end of record.
data: filename(128) value 'C:\balaji\va01.txt'.
start-of-selection.
perform upload_file.
perform load_data.
form upload_file.
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = FILENAME
FILETYPE = 'DAT'
TABLES
DATA_TAB = RECORD
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7
.
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.
form load_data.
perform open_group.
loop at record.
at new slno.
read table record index sy-tabix.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-SPART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
record-auart.
perform bdc_field using 'VBAK-VKORG'
record-vkorg.
perform bdc_field using 'VBAK-VTWEG'
record-vtweg.
perform bdc_field using 'VBAK-SPART'
record-spart.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=POAN'.
perform bdc_field using 'VBKD-BSTKD'
record-bstkd.
perform bdc_field using 'KUAGV-KUNNR'
record-kunag.
perform bdc_field using 'KUWEV-KUNNR'
record-kunnr.
shift record-ketdat by 4 PLACES circular.
perform bdc_field using 'RV45A-KETDAT'
record-ketdat.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(01)'.
perform bdc_field using 'RV45A-MABNR(01)'
record-matnr.
perform bdc_field using 'RV45A-KWMENG(01)'
record-kwmeng.
perform bdc_field using 'VBAP-WERKS(01)'
record-werks.
continue.
endat.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=POAN'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(02)'.
perform bdc_field using 'RV45A-MABNR(02)'
record-matnr.
perform bdc_field using 'RV45A-KWMENG(02)'
record-kwmeng.
perform bdc_field using 'VBAP-WERKS(02)'
record-werks.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=POAN'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(02)'.
perform bdc_field using 'RV45A-MABNR(02)'
'800221'.
perform bdc_field using 'RV45A-KWMENG(02)'
' 1'.
perform bdc_field using 'VBAP-WERKS(02)'
'wmnb'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(02)'.
at end of slno.
read table record index sy-tabix.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_transaction using 'VA01'.
endat.
endloop.
perform close_group.
endform.
Please give me reward points...
Thanks
Murali Poli
09-06-2007 5:55 AM
09-06-2007 5:56 AM
Hi Radhakrishnan,
I would address the second part of your query. <b>Note that the number of line items would vary with each Sales Order .</b>
You should make a recording using SHDB of VA01 in which you <b>fill in at least one line item row .</b>
When you are to make a BDC of this , this logic of entering one row's data is to replicated for as many line items available in your flat file by <b>using a loop</b>.
You can use your own logic to find out the end of line items for a single sales order <b>eg . 'X'</b> in the first column of the flat file or excel sheet.
Hope this lead helps you . You may get back for more details.
Regards,
Shweta