Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

va01

Former Member
0 Kudos

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.

7 REPLIES 7

former_member197281
Active Participant
0 Kudos

HI ,

you can use BDC for this purpose.

<b>Reward Points if helpful,</b>

Regards,

jinesh.

former_member223537
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

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

Former Member
0 Kudos

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

former_member15255
Active Participant
0 Kudos

Hi,

Make use of Bapi "CreateFromDat1" in sales Order

regards

Suresh

Former Member
0 Kudos

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