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

Report

Former Member
0 Likes
496

I want to develop a y-report in which i have to upload data from notepad and then that data should go into a ytable.

In the notepad i have 4 fields and suppose 4 to 5 records. I have created a y-table having the same 4 fields. Now when i execute this program , all the data records from the notepad should go into the y-table.

Please provide the code for the same.

I tried wiritng this code.

But dont know why isnt it working.

REPORT YSCADA.

DATA : SCADA TYPE STRING.

DATA : BEGIN OF ITAB OCCURS 0,

WERKS LIKE YSCADA-WERKS,

ARBPL LIKE YSCADA-ARBPL,

TIME LIKE YSCADA-TIME,

UNIT LIKE YSCADA-UNIT,

END OF ITAB.

DATA : ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE.

PARAMETERS: PAR LIKE RLGRAP-FILENAME OBLIGATORY.

AT SELECTION-SCREEN.

SCADA = PAR.

PERFORM UPLOAD_FILE TABLES ITAB USING SCADA .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR PAR.

PERFORM ASSIGN_FILENAME USING PAR.

START-OF-SELECTION.

ITAB1-WERKS = ITAB-WERKS.

ITAB1-ARBPL = ITAB-ARBPL.

ITAB1-TIME = ITAB1-TIME.

ITAB1-UNIT = ITAB-UNIT.

LOOP AT ITAB1.

WRITE /: SY-ULINE,

ITAB1-WERKS ,

ITAB1-ARBPL ,

ITAB1-TIME ,

ITAB1-UNIT ,

SY-ULINE.

ENDLOOP .

                      • ASSIGN FILENAME*************

FORM ASSIGN_FILENAME USING P_FILE.

CLEAR P_FILE.

CALL FUNCTION 'F4_FILENAME'

IMPORTING

FILE_NAME = P_FILE

EXCEPTIONS

OTHERS = 1.

ENDFORM.

FORM UPLOAD_FILE TABLES P_TAB

USING P_FILE_NAME.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = P_FILE_NAME

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = P_TAB

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

OTHERS = 17

.

ENDFORM.

5 REPLIES 5
Read only

hymavathi_oruganti
Active Contributor
0 Likes
470

USE THE FUNCTION MODULE <b>GUI_UPLOAD</b>

Read only

Former Member
0 Likes
470

Hi,

GUI_DOWNLOAD is used for sap to excel

GUI_UPLOAD is used for excel to sap.

below is a sample programme for downloading and uploading from excel to sap or sap to excel.

This program once created will allow you to download or upload table

  • data from any SAP table. It has the functionality to allow you to

  • select whether data should be appended or original data cleaed before

  • inserting new data.

  • This is very useful when attempting to transfer data from one client

  • to another

*----


REPORT ytest5 LINE-SIZE 80

LINE-COUNT 65

NO STANDARD PAGE HEADING.

TABLES: dd02l, dd03l.

  • selection screen

SELECTION-SCREEN BEGIN OF BLOCK b00 WITH FRAME TITLE text-b00.

*

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.

PARAMETERS: tabname LIKE dd02l-tabname OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b01.

*

SELECTION-SCREEN BEGIN OF BLOCK b03 WITH FRAME TITLE text-b03.

PARAMETERS: path(30) TYPE c DEFAULT 'C:\SAPWorkdir'.

SELECTION-SCREEN END OF BLOCK b03.

*

SELECTION-SCREEN BEGIN OF BLOCK b04 WITH FRAME TITLE text-b04.

PARAMETERS: p_exp RADIOBUTTON GROUP radi,

p_imp RADIOBUTTON GROUP radi,

p_clear AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK b04.

SELECTION-SCREEN END OF BLOCK b00.

  • data

DATA: q_return LIKE syst-subrc,

err_flag(1) TYPE c,

answer(1) TYPE c,

w_text1(62) TYPE c,

w_text2(40) TYPE c,

winfile(128) TYPE c,

w_system(40) TYPE c,

winsys(7) TYPE c,

zname(8) TYPE c,

w_line(80) TYPE c.

  • internal tables

DATA : BEGIN OF textpool_tab OCCURS 0.

INCLUDE STRUCTURE textpool.

DATA : END OF textpool_tab.

  • table for subroutine pool

DATA : itab(80) OCCURS 0.

  • events

INITIALIZATION.

PERFORM check_system.

*

AT SELECTION-SCREEN ON tabname.

PERFORM check_table_exists.

*

START-OF-SELECTION.

PERFORM init_report_texts.

PERFORM request_confirmation.

*

END-OF-SELECTION.

IF answer = 'J'.

PERFORM execute_program_function.

ENDIF.

*

TOP-OF-PAGE.

PERFORM process_top_of_page.

  • forms

----


  • FORM CHECK_TABLE_EXISTS *

----


FORM check_table_exists.

SELECT SINGLE * FROM dd02l

INTO CORRESPONDING FIELDS OF dd02l

WHERE tabname = tabname.

CHECK syst-subrc NE 0.

MESSAGE e402(mo) WITH tabname.

ENDFORM.

----


  • FORM INIT_REPORT_TEXTS *

----


FORM init_report_texts.

READ TEXTPOOL syst-repid

INTO textpool_tab LANGUAGE syst-langu.

LOOP AT textpool_tab

WHERE id EQ 'R' OR id EQ 'T'.

REPLACE '&1............................'

WITH tabname INTO textpool_tab-entry.

MODIFY textpool_tab.

ENDLOOP.

ENDFORM.

----


  • FORM REQUEST_CONFIRMATION *

----


FORM request_confirmation.

  • import selected, confirm action

IF p_imp = 'X'.

  • build message text for popup

CONCATENATE 'Data for table'

tabname

'will be imported' INTO w_text1 SEPARATED BY space.

  • check if delete existing selected, and change message text

IF p_clear = ' '.

w_text2 = 'and appended to the end of existing data'.

ELSE.

w_text2 = 'Existing Data will be deleted'.

ENDIF.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

EXPORTING

defaultoption = 'N'

textline1 = w_text1

textline2 = w_text2

titel = 'Confirm Import of Data'

cancel_display = ' '

IMPORTING

answer = answer

EXCEPTIONS

OTHERS = 1.

ELSE.

  • export selected, set answer to yes so export can continue

answer = 'J'.

ENDIF.

ENDFORM.

----


  • FORM EXECUTE_PROGRAM_FUNCTION *

----


FORM execute_program_function.

PERFORM build_file_name.

CLEAR: q_return,err_flag.

IF p_imp = 'X'.

PERFORM check_file_exists.

CHECK err_flag = ' '.

PERFORM func_import.

ELSE.

PERFORM func_export.

ENDIF.

ENDFORM.

----


  • FORM BUILD_FILE_NAME *

----


FORM build_file_name.

MOVE path TO winfile.

WRITE '\' TO winfile+30.

WRITE tabname TO winfile+31.

WRITE '.TAB' TO winfile+61(4).

CONDENSE winfile NO-GAPS.

ENDFORM.

----


  • FORM CHECK_FILE_EXISTS *

----


FORM check_file_exists.

CALL FUNCTION 'WS_QUERY'

EXPORTING

filename = winfile

query = 'FE'

IMPORTING

return = q_return

EXCEPTIONS

OTHERS = 1.

IF syst-subrc NE 0 OR q_return NE 1.

err_flag = 'X'.

ENDIF.

ENDFORM.

----


  • FORM func_export *

----


FORM func_export.

CLEAR itab. REFRESH itab.

APPEND 'PROGRAM SUBPOOL.' TO itab.

APPEND 'FORM DOWNLOAD.' TO itab.

APPEND 'DATA: BEGIN OF IT_TAB OCCURS 0.' TO itab.

CONCATENATE 'INCLUDE STRUCTURE'

tabname

'.' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'DATA: END OF IT_TAB.' TO itab.

CONCATENATE 'SELECT * FROM'

tabname

'INTO TABLE IT_TAB.' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'CALL FUNCTION ''WS_DOWNLOAD''' TO itab.

APPEND 'EXPORTING' TO itab.

CONCATENATE 'filename = ' ''''

winfile '''' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'filetype = ''DAT''' TO itab.

APPEND 'TABLES' TO itab.

APPEND 'DATA_TAB = IT_TAB.' TO itab.

APPEND 'DESCRIBE TABLE IT_TAB LINES sy-index.' TO itab.

APPEND 'FORMAT COLOR COL_NORMAL INTENSIFIED OFF.' TO itab.

APPEND 'WRITE: /1 syst-vline,' TO itab.

APPEND '''EXPORT'',' TO itab.

APPEND '15 ''data line(s) have been exported'',' TO itab.

APPEND '68 syst-index,' TO itab.

APPEND '80 syst-vline.' TO itab.

APPEND 'ULINE.' TO itab.

APPEND 'ENDFORM.' TO itab.

GENERATE SUBROUTINE POOL itab NAME zname.

PERFORM download IN PROGRAM (zname).

ENDFORM.

----


  • FORM func_import *

----


FORM func_import.

CLEAR itab. REFRESH itab.

APPEND 'PROGRAM SUBPOOL.' TO itab.

APPEND 'FORM UPLOAD.' TO itab.

APPEND 'DATA: BEGIN OF IT_TAB OCCURS 0.' TO itab.

CONCATENATE 'INCLUDE STRUCTURE'

tabname

'.' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'DATA: END OF IT_TAB.' TO itab.

APPEND 'DATA: BEGIN OF IT_TAB2 OCCURS 0.' TO itab.

CONCATENATE 'INCLUDE STRUCTURE'

tabname

'.' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'DATA: END OF IT_TAB2.' TO itab.

APPEND 'CALL FUNCTION ''WS_UPLOAD''' TO itab.

APPEND 'EXPORTING' TO itab.

CONCATENATE 'filename = ' ''''

winfile '''' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'filetype = ''DAT''' TO itab.

APPEND 'TABLES' TO itab.

APPEND 'DATA_TAB = IT_TAB.' TO itab.

IF p_clear = 'X'.

CONCATENATE 'SELECT * FROM'

tabname

'INTO TABLE IT_TAB2.' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'LOOP AT IT_TAB2.' TO itab.

CONCATENATE 'DELETE'

tabname

'FROM IT_TAB2.' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'ENDLOOP.' TO itab.

APPEND 'COMMIT WORK.' TO itab.

ENDIF.

APPEND 'LOOP AT IT_TAB.' TO itab.

CONCATENATE 'MODIFY'

tabname

'FROM IT_TAB.' INTO w_line SEPARATED BY space.

APPEND w_line TO itab.

APPEND 'ENDLOOP.' TO itab.

APPEND 'DESCRIBE TABLE IT_TAB LINES sy-index.' TO itab.

APPEND 'FORMAT COLOR COL_NORMAL INTENSIFIED OFF.' TO itab.

APPEND 'WRITE: /1 syst-vline,' TO itab.

APPEND '''IMPORT'',' TO itab.

APPEND '15 ''data line(s) have been imported'',' TO itab.

APPEND '68 syst-index,' TO itab.

APPEND '80 syst-vline.' TO itab.

APPEND 'ULINE.' TO itab.

APPEND 'ENDFORM.' TO itab.

GENERATE SUBROUTINE POOL itab NAME zname.

PERFORM upload IN PROGRAM (zname).

ENDFORM.

----


  • Form CHECK_SYSTEM

  • Check users workstation is running

  • WINDOWS 95, or WINDOWS NT.

  • OS/2 uses 8.3 file names which are no good for

  • this application as filenames created are 30 char

  • same as table name.

  • You could change the logic to only use the first 8 chars

  • of the table name for the filename, but you could possibly

  • get problems if users had exported already with a table

  • with the same first 8 chars.

  • As an alternate method you could request the user to input

  • the full path including filename and remove the logic to

  • build the path using the table name.

----


FORM check_system.

CALL FUNCTION 'WS_QUERY'

EXPORTING

query = 'WS'

IMPORTING

return = winsys.

IF winsys NE 'WN32_95'.

WRITE: 'Windows NT or Windows 95/98 is required'.

EXIT.

ENDIF.

ENDFORM. " CHECK_SYSTEM

----


  • FORM PROCESS_TOP_OF_PAGE *

----


FORM process_top_of_page.

FORMAT COLOR COL_HEADING INTENSIFIED ON.

ULINE.

CONCATENATE syst-sysid

syst-saprl

syst-host INTO w_system SEPARATED BY space.

WRITE : AT /1(syst-linsz) w_system CENTERED.

WRITE : AT 1 syst-vline, syst-uname.

syst-linsz = syst-linsz - 11.

WRITE : AT syst-linsz syst-repid(008).

syst-linsz = syst-linsz + 11.

WRITE : AT syst-linsz syst-vline.

LOOP AT textpool_tab WHERE id EQ 'R'.

WRITE : AT /1(syst-linsz) textpool_tab-entry CENTERED.

ENDLOOP.

WRITE : AT 1 syst-vline, syst-datum.

syst-linsz = syst-linsz - 11.

WRITE : AT syst-linsz syst-tcode(004).

syst-linsz = syst-linsz + 11.

WRITE : AT syst-linsz syst-vline.

LOOP AT textpool_tab WHERE id EQ 'T'.

WRITE : AT /1(syst-linsz) textpool_tab-entry CENTERED.

ENDLOOP.

WRITE : AT 1 syst-vline, syst-uzeit.

syst-linsz = syst-linsz - 11.

WRITE : AT syst-linsz 'Page', syst-pagno.

syst-linsz = syst-linsz + 11.

WRITE : AT syst-linsz syst-vline.

ULINE.

FORMAT COLOR COL_HEADING INTENSIFIED OFF.

LOOP AT textpool_tab WHERE id EQ 'H'.

WRITE : AT /1(syst-linsz) textpool_tab-entry.

ENDLOOP.

ULINE.

ENDFORM.

Read only

former_member189629
Active Contributor
0 Likes
470

Priti,

use UPDATE dbtab FROM TABLE itab. after ur itab is populated.

Reward if helpful,

Karthik

Read only

Former Member
0 Likes
470

Hi

<b>Upload Tab delimited file from PC into internal table</b>

ABAP code for uploading a TAB delimited file into an internal table. See code below for structures. The

code is base on uploading a simple txt file.

&----


*& Report ZUPLOADTAB *

*& *

&----


*& Example of Uploading tab delimited file *

*& *

&----


REPORT zuploadtab .

PARAMETERS: p_infile LIKE rlgrap-filename

OBLIGATORY DEFAULT '/usr/sap/'..

*DATA: ld_file LIKE rlgrap-filename.

DATA: gd_file type string.

*Internal tabe to store upload data

TYPES: BEGIN OF t_record,

name1 LIKE pa0002-vorna,

name2 LIKE pa0002-name2,

age TYPE i,

END OF t_record.

DATA: it_record TYPE STANDARD TABLE OF t_record INITIAL SIZE 0,

wa_record TYPE t_record.

*Internal table to upload data into

DATA: BEGIN OF it_datatab OCCURS 0,

row(500) TYPE c,

END OF it_datatab.

*Text version of data table

TYPES: BEGIN OF t_uploadtxt,

name1(10) TYPE c,

name2(15) TYPE c,

age(5) TYPE c,

END OF t_uploadtxt.

DATA: wa_uploadtxt TYPE t_uploadtxt.

*String value to data in initially.

DATA: wa_string(255) TYPE c.

CONSTANTS: con_tab TYPE x VALUE '09'.

*If you have Unicode check active in program attributes then you will

*need to declare constants as follows:

*class cl_abap_char_utilities definition load.

*constants:

  • con_tab type c value cl_abap_char_utilities=>HORIZONTAL_TAB.

************************************************************************

*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_INFILE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_infile.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

def_filename = p_infile

mask = ',*.txt.'

mode = 'O'

title = 'Upload File'(078)

IMPORTING

filename = p_infile

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS = 5.

************************************************************************

*START-OF-SELECTION

START-OF-SELECTION.

gd_file = p_infile.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = gd_file

has_field_separator = 'X' "file is TAB delimited

TABLES

data_tab = it_record

EXCEPTIONS

file_open_error = 1

file_read_error = 2

no_batch = 3

gui_refuse_filetransfer = 4

invalid_type = 5

no_authority = 6

unknown_error = 7

bad_data_format = 8

header_not_allowed = 9

separator_not_allowed = 10

header_too_long = 11

unknown_dp_error = 12

access_denied = 13

dp_out_of_memory = 14

disk_full = 15

dp_timeout = 16

OTHERS = 17.

IF sy-subrc NE 0.

write: 'Error ', sy-subrc, 'returned from GUI_UPLOAD FM'.

skip.

endif.

  • Alternative method, where by you split fields at each TAB after you

  • have returned the data. No point unless you dont have access to

  • GUI_UPLOAD but just included for information

*

  • CALL FUNCTION 'GUI_UPLOAD'

  • EXPORTING

  • filename = gd_file

  • filetype = 'ASC'

  • TABLES

  • data_tab = it_datatab "ITBL_IN_RECORD[]

  • EXCEPTIONS

  • file_open_error = 1

  • OTHERS = 2.

  • IF sy-subrc NE 0.

  • ELSE.

  • LOOP AT it_datatab.

  • CLEAR: wa_string, wa_uploadtxt.

  • wa_string = it_datatab.

  • SPLIT wa_string AT con_tab INTO wa_uploadtxt-name1

  • wa_uploadtxt-name2

  • wa_uploadtxt-age.

  • MOVE-CORRESPONDING wa_uploadtxt TO wa_record.

  • APPEND wa_record TO it_record.

  • ENDLOOP.

  • ENDIF.

************************************************************************

*END-OF-SELECTION

END-OF-SELECTION.

*!! Text data is now contained within the internal table IT_RECORD

  • Display report data for illustration purposes

LOOP AT it_record INTO wa_record.

WRITE:/ sy-vline,

(10) wa_record-name1, sy-vline,

(10) wa_record-name2, sy-vline,

(10) wa_record-age, sy-vline.

ENDLOOP.

<b>Reward if usefull</b>

Read only

Former Member
0 Likes
470

Hi

check this

REPORT YSCADA.

DATA : SCADA TYPE STRING.

DATA : BEGIN OF ITAB OCCURS 0,

WERKS LIKE YSCADA-WERKS,

ARBPL LIKE YSCADA-ARBPL,

TIME LIKE YSCADA-TIME,

UNIT LIKE YSCADA-UNIT,

END OF ITAB.

DATA : ITAB1 LIKE ITAB OCCURS 0 WITH HEADER LINE.

PARAMETERS: PAR LIKE RLGRAP-FILENAME OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR PAR.

PERFORM ASSIGN_FILENAME USING PAR.

START-OF-SELECTION.

PERFORM UPLOAD_FILE TABLES ITAB USING SCADA .

Ztab-WERKS = ITAB-WERKS.

Ztab-ARBPL = ITAB-ARBPL.

Ztab-TIME = ITAB1-TIME.

Ztab-UNIT = ITAB-UNIT.

modify ZTAB.

LOOP AT ITAB.

WRITE /: SY-ULINE,

ITAB-WERKS ,

ITAB-ARBPL ,

ITAB-TIME ,

ITAB1-UNIT ,

SY-ULINE.

ENDLOOP .

FORM ASSIGN_FILENAME USING P_FILE.

CLEAR P_FILE.

CALL FUNCTION 'F4_FILENAME'

IMPORTING

FILE_NAME = P_FILE

EXCEPTIONS

OTHERS = 1.

ENDFORM.

FORM UPLOAD_FILE TABLES P_TAB

USING P_FILE_NAME.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = P_FILE_NAME

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = ITAB

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

OTHERS = 17

.

ENDFORM.

Regards

Anji