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 reading from Application server

former_member577909
Participant
0 Likes
460

1) can any one tell how to read the multiple records from a file in application server, please send the complete code...

[ basically split command is not spliting at '#'....plz explain in detail.

2) can you please send the code how to use split command

3) can you please tell how to use the function module "upload_files" with example.

4 REPLIES 4
Read only

Former Member
0 Likes
407

Hi Basker,

The below program which creates a session and reades multiple files from an application server...

REPORT ZBDC_BATCHINPUT.

            • TABLE DECLARATION********

TABLES : ZCLASS,

ZSEAT.

******STRUCTURE AND VARIABLE DECLARATION**************

DATA : BEGIN OF IT_CLASS,

CLASSID(2) TYPE C,

CLASSTYPE(12) TYPE C,

END OF IT_CLASS.

DATA : BEGIN OF IT_SEAT,

TOTALSEATS(3) TYPE C,

END OF IT_SEAT.

DATA : IT_BDC LIKE TABLE OF BDCDATA WITH HEADER LINE.

DATA : FILENAME1 TYPE STRING,

FILENAME2 TYPE STRING.

******END OF STRUCTURE AND VARIABLE DECLARATION**************

            • ASSIGNING FILE NAME*****************

<b>FILENAME1 = 'Give your application server file path here'</b>.

<b>FILENAME2 = 'Give your application server file path here'.</b>

*****END OF ASSIGNING FILE NAME****************

OPEN DATASET FILENAME1 FOR INPUT IN TEXT MODE ENCODING DEFAULT.

OPEN DATASET FILENAME2 FOR INPUT IN TEXT MODE ENCODING DEFAULT.

PERFORM OPEN_GROUP.

******************READING THE FIRST FILE****************

DO.

READ DATASET FILENAME1 INTO IT_CLASS.

IF SY-SUBRC = 0.

PERFORM BDC_HEADER USING 'ZBDC_BATCHINPUT' 9001.

PERFORM BDC_FIELDS USING 'BDC_OKCODE' 'SAVE'.

PERFORM BDC_FIELDS USING 'ZCLASS-CLASSID' IT_CLASS-CLASSID.

PERFORM BDC_FIELDS USING 'ZCLASS-CLASSTYPE' IT_CLASS-CLASSTYPE.

ELSE.

EXIT.

ENDIF.

ENDDO.

CLOSE DATASET FILENAME1.

******************END OF READING THE FIRST FILE****************

******************READING THE SECOND FILE****************

DO.

READ DATASET FILENAME2 INTO IT_SEAT.

IF SY-SUBRC = 0.

PERFORM BDC_HEADER USING 'ZBDC_BATCHINPUT' 9002.

PERFORM BDC_FIELDS USING 'BDC_OKCODE' 'SAVE'.

PERFORM BDC_FIELDS USING 'ZSEAT-TOTALSEATS' IT_SEAT-TOTALSEATS.

ELSE.

EXIT.

ENDIF.

ENDDO.

CLOSE DATASET FILENAME2.

******************END OF READING THE SECOND FILE****************

PERFORM BDC_TRANS USING 'ZTCODES'.

PERFORM CLOSE_GROUP.

CALL TRANSACTION 'SM35'.

****Subroutine BDC Header**************

FORM BDC_HEADER USING PROGRAMNAME SCREENNO.

CLEAR IT_BDC.

IT_BDC-PROGRAM = PROGRAMNAME.

IT_BDC-DYNPRO = SCREENNO.

IT_BDC-DYNBEGIN = 'X'.

APPEND IT_BDC.

ENDFORM.

****End of Subroutine BDC Header**************

****Subroutine BDC Fields**************

FORM BDC_FIELDS USING FNAME FVALUE.

CLEAR IT_BDC.

IT_BDC-FNAM = FNAME.

IT_BDC-FVAL = FVALUE.

APPEND IT_BDC.

ENDFORM.

****End of Subroutine BDC Fields**************

            • Subroutine BDC_OPEN_GROUP ***************

FORM OPEN_GROUP.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = 'BATCHX'

HOLDDATE = SY-DATUM

KEEP = 'X'

USER = SY-UNAME.

ENDFORM.

            • End of Subroutine BDC_OPEN_GROUP ***************

***********Subroutine BDC TRANSACTION ******************

FORM BDC_TRANS USING zTCODEs.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = zTCODEs

TABLES

DYNPROTAB = IT_BDC.

ENDFORM.

***********End of Subroutine BDC TRANSACTION ******************

            • Subroutine BDC_CLOSE_GROUP **********************

FORM CLOSE_GROUP.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

ENDFORM.

            • End of Subroutine BDC_CLOSE_GROUP ***************

&----


*& Module USER_COMMAND_9001 INPUT

&----


  • text

----


MODULE USER_COMMAND_9001 INPUT.

CASE SY-UCOMM.

WHEN 'SAVE'.

INSERT ZCLASS.

WHEN 'NEXTSCREEN'.

CALL SCREEN 9002.

ENDCASE.

ENDMODULE. " USER_COMMAND_9001 INPUT

&----


*& Module USER_COMMAND_9002 INPUT

&----


  • text

----


MODULE USER_COMMAND_9002 INPUT.

CASE SY-UCOMM.

WHEN 'SAVE'.

INSERT ZSEAT.

WHEN 'EXIT'.

LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " USER_COMMAND_9002 INPUT

Read only

Clemenss
Active Contributor
0 Likes
407

Hi Bhaskar,

1) It depends: If it is a text file, you can OPEN DATASET xyz IN TEXT MODE ENCODING NON-UNICODE.

If it is a binary file or a text file without linefeed and/or carriage return characters but with fixed line length, you can read it into target structure of this line length.

You can always open in BINARY mode and read into string or xstring.

To split a character string into two or more smaller strings, use the SPLIT statement as follows:

SPLIT c AT del INTO c1 ... cn.

You can also split a string into the individual lines of an internal table as follows:

SPLIT c AT del INTO TABLE itab.

The system adds a new line to the internal table itab for each part of the string.

Please note that '#' is the SAP representation of non-displayable characters. '#' is a wildcard for any kind of control characters.

If you see '#' on screen or in debugger, you should find out what i really is. In debugger, you can switch to HEX representation.

It is recommended to use class CL_ABAP_CHAR_UTILITIES attributes to determine special characters.

SPLIT <line> AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB INTO

<component_1> <component_2> ... <component_n>.

will split a tab-delimited line into it's components.

SPLIT <string> AT CL_ABAP_CHAR_UTILITIES=>CR_LF

into table <itab>.

can be used if you read the whole file into one string to build an interbal table of the records.

Regards,

Clemens

Read only

Former Member
0 Likes
407

hi,

try this code

DATA : i_tab1 LIKE STANDARD TABLE OF zvh4479s WITH HEADER LINE.

DATA : i_tab2 LIKE STANDARD TABLE OF zvh4479 WITH HEADER LINE.

DATA : i_tab3 LIKE STANDARD TABLE OF zvh4479s WITH HEADER LINE.

*----


*VARIABLES

*----


DATA : ds1 TYPE string VALUE 'SEQ1.DAT'.

*----


*START-OF-SELECTION

*----


SELECT *

INTO TABLE I_TAB2

FROM ZVH4479.

loop at i_tab2.

move-corresponding i_tab2 to i_tab1.

append i_tab1.

endloop.

IF sy-subrc NE 0.

MESSAGE 'NO HEADER DATA' TYPE 'E'.

ENDIF.

*----


*DATASET OPERATIONS

*----


OPEN DATASET ds1

FOR OUTPUT

IN TEXT MODE ENCODING NON-UNICODE.

IF sy-subrc EQ 0.

LOOP AT i_tab1.

TRANSFER i_tab1 TO ds1.

ENDLOOP.

ELSE.

MESSAGE 'DATASET COULD NOT BE OPENED 1' TYPE 'E'.

ENDIF.

CLOSE DATASET ds1.

OPEN DATASET ds1

FOR INPUT

IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc EQ 0.

DO.

READ DATASET ds1 INTO i_tab3.

IF sy-subrc EQ 4.

EXIT.

ENDIF.

APPEND i_tab3.

CLEAR i_tab3.

ENDDO.

ELSE.

MESSAGE 'DATASET COULD NOT BE OPENED 2' TYPE 'E'.

ENDIF.

CLOSE DATASET ds1.

Read only

Former Member
0 Likes
407

Hi,

chk this example for gui_upload

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = 'C:\ABCD.TXT'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

tables

data_tab = I_HTAB

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.