‎2007 May 07 9:08 AM
hi all,
i am developing bdc program to upload multiple line items for ml10.
i am uploading folling fields
spec_no
astyp
txz01,
sort1,
waers,
matkl,
ekorg,
srvpos ' service number
menge. 'quantity
service number and quantity are multiple line items.
i have developed a code which is taking single record only, it is not working for multiple service no and quantity.
include bdcrecx1.
parameters: filename like rlgrap-filename.
data: begin of record,
SPEC_NO(10),
ASTYP(4),
TXZ01(40),
SORT1(20),
WAERS(5),
MATKL(9),
EKORG(4),
NEW_ROW(10),
SRVPOS(18),
MENGE(13),
end of record.
data: itab_program like record occurs 0 with header line.
***
****************************************************
At Selection Screen
****************************************************
at selection-screen on value-request for filename.
perform query_filename changing filename.
****************************************************
*START-OF-SELECTION
*****************************************************
start-of-selection.
*-- Upload flat data to ITAB.
perform upload_to_itab.
*{ chg001 -- modified as per requirement
perform open_group.
loop at itab_program.
perform upload_programs.
endloop.
perform close_group.
----
FORM UPLOAD_TO_ITAB *
----
........ *
----
form upload_to_itab.
call function 'WS_UPLOAD'
exporting
CODEPAGE = ' '
filename = filename
filetype = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
tables
data_tab = itab_program
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 ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
write : 'File opening error.'.
endif.
endform.
----
FORM QUERY_FILENAME *
----
........ *
----
--> P_FILENAME *
----
form query_filename changing p_filename.
data : tmp_filename like filename.
call function 'WS_FILENAME_GET'
exporting
def_filename = filename
mask = ',.txt,.txt.'
mode = 'O'
title = 'Select the file to Upload'
importing
filename = tmp_filename
exceptions
inv_winsys = 01
no_batch = 02
selection_cancel = 03
selection_error = 04.
if sy-subrc = 0.
filename = tmp_filename.
endif.
endform.
*******************************************
*perform open_group.
&----
*& Form UPLOAD_programs
&----
text
----
--> p1 text
<-- p2 text
----
form upload_programs.
perform bdc_dynpro using 'SAPLMLSM' '0100'.
perform bdc_field using 'BDC_CURSOR'
'TEMP_SPEC-ASTYP'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'TMP_SPEC-SPEC_NO'
ITAB_PROGRAM-SPEC_NO.
perform bdc_field using 'TMP_SPEC-ASTYP'
ITAB_PROGRAM-ASTYP.
*****************************************************************SCREEN1
perform bdc_dynpro using 'SAPLMLSM' '0200'.
perform bdc_field using 'BDC_CURSOR'
'TMP_SPEC-EKORG'.
perform bdc_field using 'BDC_OKCODE'
'=SRV'.
perform bdc_field using 'TMP_SPEC-TXZ01'
ITAB_PROGRAM-TXZ01.
perform bdc_field using 'TMP_SPEC-SORT1'
ITAB_PROGRAM-SORT1.
perform bdc_field using 'TMP_SPEC-WAERS'
ITAB_PROGRAM-WAERS.
perform bdc_field using 'TMP_SPEC-MATKL'
ITAB_PROGRAM-MATKL.
perform bdc_field using 'TMP_SPEC-EKORG'
ITAB_PROGRAM-EKORG.
*****************************************************************END OF SCREEN2
perform bdc_dynpro using 'SAPLMLSP' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=BZE'.
*perform bdc_field using 'RM11P-HEADTEXT'
ITAB_PROGRAM-TXZ01.
perform bdc_field using 'BDC_SUBSCR'
'SAPLMLSP'.
perform bdc_dynpro using 'SAPLMLSP' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=BZE'.
perform bdc_field using 'BDC_CURSOR'
'ESLL-MENGE(01)'.
perform bdc_field using 'ESLL-SRVPOS(01)'
ITAB_PROGRAM-SRVPOS.
perform bdc_field using 'ESLL-MENGE(01)'
ITAB_PROGRAM-MENGE.
perform bdc_dynpro using 'SAPLMLSP' '0201'.
perform bdc_field using 'BDC_OKCODE'
'=SAV'.
perform bdc_field using 'BDC_SUBSCR'
'SAPLMLSP'.
perform bdc_transaction using 'ML10'.
endform. " UPLOAD_programs
can any body help me in this regard.
thanks in advance
siva
‎2007 May 07 9:15 AM
Hi Shiva,....
Try to loop the internal table while recording...
I think that is the reason why it is taking single record...
Regards,
Jayant
‎2007 May 07 9:17 AM
Loop at itab_program.
< Here will be your BDC Program>
call transaction..... .
endloop.
and all the records in you internal table itab_program will get updated...
Regards.
Jayant
<b>Please award if helpful</b>
‎2007 May 07 9:21 AM
hi,
Loop at the internal table and in between the loop write the BDC code..
Reward points if it is helpful.
Regards,
Sangeetha.A