‎2007 Jan 15 8:55 AM
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......
‎2007 Jan 15 9:03 AM
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.
‎2007 Jan 15 9:05 AM
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
‎2007 Jan 15 9:06 AM
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
‎2007 Jan 15 9:06 AM
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 doesnt 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 doesnt 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
‎2007 Jan 15 9:17 AM
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.
‎2007 Jan 15 9:19 AM
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