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

Data set Writing Problem

Former Member
0 Likes
587

Dear all,

I have created a program to which read data from application server, which is seprated by tab. But anable to append the data into internal table itab and write it.

I have include to code for your reference.

With Regards,

Baskaran

DATA: X_INPUT_REC,

REC_TYPE(4) TYPE C.

DATA: BEGIN OF ITAB OCCURS 0,

LEN(2),

WED(2),

hei(2),

END OF ITAB.

DATA: BEGIN OF ITAB1 OCCURS 0,

STR(200),

END OF ITAB1.

DATA: G_INREC(80) .

data str(255).

*data: FILEN TYPE i default ' '.

DATA: L_EOF(50) VALUE 'C_FALSE'.

*DATA: L_EOF1(50) VALUE 'C_TRUE'.

PARAMETERS: FILENAME(80) DEFAUlt '
192.168.100.33\sapmnt\ids\sys\global\sample.txt' .

*CONCATENATE FILEN INTO FILENAME NO-GAP.

OPEN DATASET FILENAME FOR INPUT IN TEXT MODE ENCODING DEFAULT." MESSAGE L_MSG.

WHILE L_EOF NE 'C_TRUE'.

READ DATASET FILENAME INTO G_INREC.

  • CONCATENATE G_INREC INTO g_inrec NO-GAP.

IF SY-SUBRC = 0.

MOVE G_INREC TO ITAB1.

  • ENDCASE.

*append itab.

LOOP AT ITAB1.

SPLIT ITAB1-STR AT 'X' INTO ITab-len ITab-wed ITab-hei.

APPEND ITab.

ENDLOOP.

ELSE.

L_EOF = 'C_TRUE'.

CONTINUE.

ENDIF.

ENDWHILE.

loop at itab.

write: itab-len.

endloop.

1 ACCEPTED SOLUTION
Read only

_IvanFemia_
Active Contributor
0 Likes
549

Hi,

try something like this

OPEN DATASET FILENAME FOR INPUT IN TEXT MODE ENCODING DEFAULT." MESSAGE L_MSG.
" check if sy-subrc is 0 (file exist on FS?)
IF sy-subrc = 8. 
" I/O Error
ENDIF.
DO. 
  READ DATASET FILENAME INTO G_INREC. 
  IF sy-subrc = 0. 
" Your logic with G_INREC
    CLEAR ITAB.
    SPLIT G_INREC AT 'X' INTO ITab-len ITab-wed ITab-hei.
    APPEND ITab.
  ELSE. 
    EXIT. 
  ENDIF. 
ENDDO.

Regards,

Ivan

4 REPLIES 4
Read only

_IvanFemia_
Active Contributor
0 Likes
550

Hi,

try something like this

OPEN DATASET FILENAME FOR INPUT IN TEXT MODE ENCODING DEFAULT." MESSAGE L_MSG.
" check if sy-subrc is 0 (file exist on FS?)
IF sy-subrc = 8. 
" I/O Error
ENDIF.
DO. 
  READ DATASET FILENAME INTO G_INREC. 
  IF sy-subrc = 0. 
" Your logic with G_INREC
    CLEAR ITAB.
    SPLIT G_INREC AT 'X' INTO ITab-len ITab-wed ITab-hei.
    APPEND ITab.
  ELSE. 
    EXIT. 
  ENDIF. 
ENDDO.

Regards,

Ivan

Read only

Former Member
0 Likes
549

Hi, Have a look at the previous solution. You have an internal table ITAB. To fill this table use the APPEND statement and not the MOVE. Probably your table stays empty. Succes

Read only

Former Member
0 Likes
549

Hi,

Try this way,



constants: con_tab  type c value cl_abap_char_utilities=>HORIZONTAL_TAB.


DATA: X_INPUT_REC,
REC_TYPE(4) TYPE C.

DATA: BEGIN OF ITAB OCCURS 0,
LEN(2),
WED(2),
hei(2),
END OF ITAB.

DATA: wa_itab TYPE itab.

DATA: G_INREC(255) .
data str(255).
*data: FILEN TYPE i default ' '.

DATA: L_EOF(50) VALUE 'C_FALSE'.
*DATA: L_EOF1(50) VALUE 'C_TRUE'.


PARAMETERS: FILENAME(80) DEFAUlt '\\192.168.100.33\sapmnt\ids\sys\global\sample.txt' .

*CONCATENATE FILEN INTO FILENAME NO-GAP.
OPEN DATASET FILENAME FOR INPUT IN TEXT MODE ENCODING DEFAULT." MESSAGE L_MSG.

WHILE L_EOF NE 'C_TRUE'.

READ DATASET FILENAME INTO G_INREC.

if sy-subrc = 0.

SPLIT  G_INREC AT con_tab INTO wa_itab-len wa_itab-wed wa_itab-hei.

MOVE-CORRESPONDING wa_uploadtxt TO wa_upload.
 APPEND wa_itab TO itab.

ELSE.
L_EOF = 'C_TRUE'.
CONTINUE.
ENDIF.
ENDWHILE.

loop at itab.
write: itab-len.
endloop.

Regards,

Vik

Read only

Former Member
0 Likes
549

aaa