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

SPLIT STATEMENT

Former Member
0 Likes
867

Hi,

Can i want to down load a file from application server into an internal table. Can anybody provide me coding using Split statements..

Thanks......

6 REPLIES 6
Read only

Former Member
0 Likes
836

Hi Anil,

U cannot download a file from Application Server to internal table via SPLIT statement.

It is done by OPEN DATASET statement.

eg: OPEN DATASET filepath INTO table_line.

Read only

Former Member
0 Likes
836

1) for one time download u can use upload/download transaction - CG3y n CG3z.

2) use of split -

SPLIT f AT g INTO h1 ... hn.

data: d_char(20) value 'amit tyagi'.

data: d_one(10),

d_two(10).

split d_char at SPACE into d_one d_two.

3) program to download/upload file from/to Application server (reward points if helpfull),make changes to the code as per ur requirement -

&----


*& Report ZGILL_AS *

*& *

&----


*& *

*& *

&----


REPORT ZGILL_AS message-id rp .

tables: pa0001,pa0002.

select-options s_pernr for pa0001-pernr no intervals MODIF ID XYZ.

parameters: p_dwnld AS CHECKBOX ,

p_upld AS CHECKBOX DEFAULT 'X'.

parameters: P_DSNI(75) TYPE C MODIF ID ABG DEFAULT

'/usr/local/sapdata/amit.dat' LOWER CASE.

data: begin of itab occurs 0,

pernr(8),

sp1(1) value ',',

werks(4),

sp2(1) value ',',

persg(1),

sp3(1) value ',',

persk(2),

end of itab.

data: s_eof(3).

start-of-selection.

if p_upld = 'X'.

OPEN DATASET P_DSNI FOR OUTPUT IN LEGACY TEXT MODE.

PERFORM FETCH_DATA.

STOP.

elseif p_dwnld = 'X'.

OPEN DATASET P_DSNI FOR INPUT IN LEGACY TEXT MODE.

IF SY-SUBRC NE 0.

MESSAGE E016 WITH

'Error opening seq. file, RC:' SY-SUBRC.

EXIT.

ENDIF.

CLEAR S_EOF.

DO.

PERFORM FETCH_file.

IF S_EOF EQ 'YES'. stop. ENDIF.

ENDDO.

endif.

END-OF-SELECTION.

if itab[] is not initial.

perform print_file1 tables itab.

else.

write:/ 'No records exists'.

endif.

&----


*& Form FETCH_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_DATA .

SELECT * FROM PA0001 WHERE PERNR IN S_PERNR.

MOVE-CORRESPONDING PA0001 TO ITAB.

TRANSFER ITAB TO P_DSNI.

APPEND ITAB.

ENDSELECT.

CLOSE DATASET P_DSNI.

ENDFORM. " FETCH_DATA

&----


*& Form FETCH_file

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_file .

READ DATASET P_DSNI INTO itab.

append itab.

clear itab.

IF SY-SUBRC NE 0.

S_EOF = 'YES'. EXIT.

ENDIF.

ENDFORM. " FETCH_file

&----


*& Form print_file1

&----


  • text

----


  • -->P_ITAB text

----


FORM print_file1 tables P_ITAB structure itab .

write:/2 'EmpNo',

14 'Personnel Area',

34 'Emp Group',

47 'Emp SubGroup'.

skip 1.

loop at p_itab.

write:2 p_itab-pernr,

14 p_itab-werks,

34 p_itab-persg,

47 p_itab-persk.

skip 1.

endloop.

ENDFORM. " print_file1

Read only

Former Member
0 Likes
836

Hi anil,

i think you mean upload from application Server in an internal table.

OPEN DATASET ... for INPUT.

DO.

READ DATASET '/usr/test.dat' INTO rec.

IF sy-subrc <> 0.

EXIT.

ENDIF.

WRITE: / rec-text, rec-number.

ENDDO.

CLOSE DATASET.

Look at the docu of OPEN, READ there you get some examples.

Regards Dieter

Read only

former_member188829
Active Contributor
0 Likes
836

• OPEN DATASET ‘TEST.TXT’ FOR OUTPUT/INPUT /APPENDING IN TEXTMODE/BINARYMODE ENCODING DEFAULT

• O/P- moving data from itab to seq file

• I/p –moving data from seq file to itab

• Appending –this is also move data from itab to seq file but it doesn’t overwrites the existing content file , it adds content at last

• Open dataset- creating seqfile in app layer and open it to accept data

• Textmode- moving data line by line

• Binarymode – movin data char by char generally used in grtaphical

• Encoding default – converting data fornat to default format of seqfile i.e to Unicode or non-unicode format

• Transfer- to move data from itab to seqfile

• Never use sy-subrc after transfer because it doesn’t refer sy-subrc

• Close data set ‘tast.txt’

• Delete datset ‘test.txt’

Program

Open dataset ‘test.txt’ for input in textmode encoding default.

If sy-subrc <> 0

WriteL:’error’

Else do

Read dataset ‘test.txt’ into itab2

If sy-subrc<> 0

Append itab2

Clear itab2

Else exit

Endif

Enddo

Close dataset ‘test.txt’

Message was edited by:

Vishnu Reddy

Read only

former_member480923
Active Contributor
0 Likes
836

Hi Check this Code

WL_LEN_OPEN = STRLEN( W_INFILE ).
*Read Data from target
  DO.
    READ DATASET W_INFILE INTO WA_STRING LENGTH WL_LEN_OPEN.
    IF SY-SUBRC NE 0.
      EXIT.
    ELSE.
      SPLIT WA_STRING AT C_09 INTO
                           WA_DOA-PERNR
                           WA_DOA-SNAME
                           WA_DOA-PLANS
                           WA_DOA-STATUS
                           WA_DOA-ENDDA
                           WA_DOA-SUBTY	
                           WA_DOA-SUB_DES
                           WA_DOA-HILFM
                           WA_DOA-H_TEXT
                           WA_DOA-BUS_DESC.
      WL_LEN    = STRLEN(  WA_DOA-PERNR ).
      WL_START  = 8 - WL_LEN.
      WL_PERNR  = C_PLANS0.
      WL_PERNR+WL_START(WL_LEN) = WA_DOA-PERNR(WL_LEN).
      WA_DOA-PERNR = WL_PERNR.
      APPEND WA_DOA TO T_DOA.
    ENDIF.
  ENDDO.
* Close Dataset Value
  CLOSE DATASET W_INFILE.
  IF SY-SUBRC NE 0.
    MESSAGE E033  WITH TEXT-M09 W_INFILE TEXT-M11.
  ENDIF.

  DELETE T_DOA WHERE PERNR IS INITIAL.

Hope this Helps

Anirban M.

Read only

Former Member
0 Likes
836

Hi,

You can not download a file from application server using SPLIT statement. You have to use OPEN DATASET & READ DATASET statements to read records from application server.

I hope following code will solve your problem. Here, it_itab is an internal table, x_itab is a work area and v_file is a file name along with application server path. If records in the dataset on the application server are separated by ',' then l_seperator = ',' but if they are separated by '#' then the default value of l_separator should be cl_abap_char_utilities=>horizontal_tab.

DATA : l_string TYPE string.

OPEN DATASET v_file FOR INPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc = 0.

DO.

CLEAR : l_string.

READ DATASET v_file INTO l_string.

IF sy-subrc <> 0.

EXIT.

ELSE.

SPLIT l_string AT l_separator INTO x_itab-field1 x_itab-field2.

APPEND x_itab to it_itab.

ENDIF.

ENDDO.

CLOSE DATASET v_file.

ENDIF.

Reward points if the answer is helpful.

Regards,

Mukul

Message was edited by:

Mukul R. Kulkarni