Application Development and Automation 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: 
Read only

Problem in upload

Former Member
0 Likes
1,497

Hi all,

i am stucked at one point while uploading file from desktop to application server.

I have uploaded multiple files but not able to save them with different names. when i upload files i have to save them dynamically with their names.for ex:

if i have uploaded 3 files together..abc.txt,,abc1.txt,,abc2.txt...

then they should save at server with their names...but

the logic that i have built is appending all the data in one file..

the logic of my code is::;

DATA: BEGIN OF t_itab OCCURS 0,

file(1000) type c,

END OF t_itab.

select-options l_file for rlgrap-filename no intervals.

loop at l_file.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

CODEPAGE = ' '

FILENAME = l_file-low

FILETYPE = 'ASC'

HEADLEN = ' '

LINE_EXIT = ' '

TRUNCLEN = ' '

USER_FORM = ' '

USER_PROG = ' '

DAT_D_FORMAT = ' '

TABLES

data_tab = t_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.

open dataset in_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

LOOP AT t_itab.

TRANSFER t_itab TO in_file .

ENDLOOP.

if sy-subrc eq 0.

write:/ 'success'.

endif.

CLOSE DATASET in_file.

endloop.

this is the logic that i have built. its working good but appending the data into one file...

plz can anyone should suggest the corrections for that..means to say the logic..

thanks in advance

1 ACCEPTED SOLUTION
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
1,467

Everytime thru the loop you will need to set the file name.



Loop at l_file.
....
in_file  =  'the file path/name'.

open dataset <b>in_file</b> FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.


....

Endloop.


Regards,

Rich Heilman

14 REPLIES 14
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
1,468

Everytime thru the loop you will need to set the file name.



Loop at l_file.
....
in_file  =  'the file path/name'.

open dataset <b>in_file</b> FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.


....

Endloop.


Regards,

Rich Heilman

Read only

0 Likes
1,467

Check this out.......




report zrich_0002
       no standard page heading.

tables: rlgrap.

data: begin of t_itab occurs 0,
      file(1000) type c,
      end of t_itab.

data: in_file type localfile value  '/usr/sap/TST/SYS/'.
data: stripped type rlgrap-filename.
data: file_path type rlgrap-filename.

select-options l_file for rlgrap-filename no intervals.

loop at l_file.

  call function 'WS_UPLOAD'
       exporting
            codepage     = ' '
            filename     = l_file-low
            filetype     = 'ASC'
            headlen      = ' '
            line_exit    = ' '
            trunclen     = ' '
            user_form    = ' '
            user_prog    = ' '
            dat_d_format = ' '
       tables
            data_tab     = t_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.


* Here get the file name from the file path/name
  call function 'SO_SPLIT_FILE_AND_PATH'
       exporting
            full_name     = l_file-low
       importing
            stripped_name = stripped
            file_path     = file_path.

* Use the file name as your file name on the app server
* I am assuming that in_File already has the file path to
* the app server here,  just take the file path of app
* server and the file name from presentation and
* put them together.
  concatenate in_file stripped into in_file.

  open dataset in_file for output in text mode.
  loop at t_itab.

    transfer t_itab to in_file .
  endloop.
  if sy-subrc eq 0.
    write:/ 'success'.
  endif.

  close dataset in_file.
endloop.

I updated the code a bit

Regards,

Rich Heilman

Message was edited by: Rich Heilman

Read only

0 Likes
1,467

hello rich

i have tried the logic that u have forwared it working but i am still facing problem while upload...

Problem that facing now is::

if i am uploading single file its working good.

but if i am uploading 2 or 3 files together then all the file names are conactenating together and that data is coming in one file..

i have to write the each upload file independently...

can you please help in this...

it will be great help...

as its my urgent requierment

Read only

0 Likes
1,467

Oh yes, sorry.......




report zrich_0002
       no standard page heading.
 
tables: rlgrap.
 
data: begin of t_itab occurs 0,
      file(1000) type c,
      end of t_itab.
 
data: in_file type localfile value  '/usr/sap/TST/SYS/'.
data: stripped type rlgrap-filename.
data: file_path type rlgrap-filename.
<b>data: new_file_name type rlgrap-filename.</b>
 
select-options l_file for rlgrap-filename no intervals.
 
loop at l_file.
 
  call function 'WS_UPLOAD'
       exporting
            codepage     = ' '
            filename     = l_file-low
            filetype     = 'ASC'
            headlen      = ' '
            line_exit    = ' '
            trunclen     = ' '
            user_form    = ' '
            user_prog    = ' '
            dat_d_format = ' '
       tables
            data_tab     = t_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.
 
 
* Here get the file name from the file path/name
  call function 'SO_SPLIT_FILE_AND_PATH'
       exporting
            full_name     = l_file-low
       importing
            stripped_name = stripped
            file_path     = file_path.
 
* Use the file name as your file name on the app server
* I am assuming that in_File already has the file path to
* the app server here,  just take the file path of app
* server and the file name from presentation and
* put them together.
<b>clear new_file_name.
  concatenate in_file stripped into new_file_name.
 
  open dataset new_file_name for output in text mode.</b>
  loop at t_itab.
 
    transfer t_itab to in_file .
  endloop.
  if sy-subrc eq 0.
    write:/ 'success'.
  endif.
 
  close dataset in_file.
endloop.


Regards,

Rich Heilman

Read only

0 Likes
1,467

hi rich

that was really great...thanks for all support...that really solved my query...

if possible just one help more...

if i have to check ..that if file exsits then i have to append date with the file name.

canu help on this also..

it will be great ..

thanks

Read only

0 Likes
1,467

Sure, try something like this.



report zrich_0002
no standard page heading.

tables: rlgrap.

data: begin of t_itab occurs 0,
      file(1000) type c,
      end of t_itab.

data: in_file type localfile value  '/usr/sap/TST/SYS/'.
data: stripped type rlgrap-filename.
data: file_path type rlgrap-filename.
data: new_file_name type rlgrap-filename.

select-options l_file for rlgrap-filename no intervals.

loop at l_file.

  call function 'WS_UPLOAD'
       exporting
            codepage     = ' '
            filename     = l_file-low
            filetype     = 'ASC'
            headlen      = ' '
            line_exit    = ' '
            trunclen     = ' '
            user_form    = ' '
            user_prog    = ' '
            dat_d_format = ' '
       tables
            data_tab     = t_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.


* Here get the file name from the file path/name
  call function 'SO_SPLIT_FILE_AND_PATH'
       exporting
            full_name     = l_file-low
       importing
            stripped_name = stripped
            file_path     = file_path.

* Use the file name as your file name on the app server
* I am assuming that in_File already has the file path to
* the app server here,  just take the file path of app
* server and the file name from presentation and
* put them together.
  clear new_file_name.
  concatenate in_file stripped into new_file_name.


* Here we are checking for the file existance, if it has
* been opened sucessfully, then close it, and add the 
* date to the file name and open that file.

 <b> open dataset new_file_name.
  if sy-subrc = 0.
    close dataset new_file_name.
  endif.
  concatenate new_file_name sy-datum into new_file_name.</b>

  open dataset new_file_name for output in text mode.
  loop at t_itab.

    transfer t_itab to new_file_name .
  endloop.
  if sy-subrc eq 0.
    write:/ 'success'.
  endif.

  close dataset new_file_name.
endloop.


Read only

0 Likes
1,467

hi

thats really great of u...

thanks for all ur support..

thanks ..thanks sir

Read only

0 Likes
1,467

Glad to help, I've never done this before so it was kind of fun.

Regards,

Rich Heilman

Read only

0 Likes
1,467

hi rich

can you please help in this open dataset...

if i have to upload same file name 2 times i am able to do that. But if i have to upload same file name 4 0r 5 times i am not able to built a code for that.

User can upload ame file name 10 or 12 times together. And i have to save the file in application server in this format.._2 _2 _2 _2 for all file name that are having same name...

so plz can u suggest the logic for that...

*check for exsistency of file

open dataset new_file_name for update IN TEXT MODE encoding default.

if sy-subrc = 0.

*if exists then append 2 again with the new filename

concatenate new_file_name '2' into new_file_name

separated by '_'.

  • close dataset new_file_name.

endif.

open dataset new_file_name for output in text mode encoding default.

*looping on Internal table to write all data

loop at t_itab.

transfer t_itab to new_file_name .

endloop.

the above logic is working for two but not for multiples file that have same file name..

so plz can u suggest

Read only

Former Member
0 Likes
1,467

Hi,

You have to change "in_file" also inside the loop every time.

you have to fill "in_file" at the very end with l_file-low for each loop pass..

Sri

Read only

Former Member
0 Likes
1,467

You are missing one line I guess

<u>in_file = i_file-low.</u>

open dataset in_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

Cheers

Read only

Former Member
0 Likes
1,467

Use

CLear In_file .

concatenate in_file stripped into in_file

Read only

0 Likes
1,467

Nop, don't clear IN_FILE. its holding our file path.

Regards,

Rich Heilman

Read only

Former Member
0 Likes
1,467
  • Here get the file name from the file path/name

call function 'SO_SPLIT_FILE_AND_PATH'

exporting

full_name = l_file-low

importing

stripped_name = stripped

file_path = file_path.

  • Use the file name as your file name on the app server

  • I am assuming that in_File already has the file path to

  • the app server here, just take the file path of app

  • server and the file name from presentation and

  • put them together.

<b>clear in_file.</b>

clear new_file_name.

concatenate in_file stripped into new_file_name.

open dataset new_file_name for output in text mode.

loop at t_itab.

transfer t_itab to <b>new_file_name</b> .

endloop.

if sy-subrc eq 0.

write:/ 'success'.

endif.

close dataset in_file.

endloop.