Application Development 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: 

Help for download local file

Former Member
0 Kudos
220

Hi!!!

This is my first post. Thanks to all the people here before all.

I have a big problem trying to download a local file to an internal table. I have lines with more than 8000 positions, and i've tried to use WS_UPLOAD, GUI_UPLOAD and SO_OBJECT_UPLOAD, but all of them show me this messages:

- Unable to satisfy send request: 8001 bytes.

¿Do you know any function module (i think it could be OO) that allows me to load this file?

Thanks for all. Bye!

4 REPLIES 4

Former Member
0 Kudos
130

Could you send your code?

Former Member
0 Kudos
130

Yeah thanks, i've tried this options:

First option:

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = file

filetype = 'ASC'

TABLES

data_tab = itab

EXCEPTIONS

conversion_error = 1

file_open_error = 2

file_read_error = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10.

Second option:

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = v_filename_string

filetype = 'ASC'

has_field_separator = '

dat_mode = ''

TABLES

data_tab = i_text_data

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.

I've tried to SO_OBJECT_UPLOAD from se37, but i gives me a short dump

Sorry if the things i write aren't right, i haven't i high level of english language XD

Thanks!

Former Member
0 Kudos
130

Hi

REPORT ZDOWN_UP_LOAD

NO STANDARD PAGE HEADING

LINE-SIZE 255.

*----


  • Declare Database Objects

*----


tables:

DOKIL,

TRDIR.

*----


  • Constants

CONSTANTS:

MC_TRDIR_IDENTIFIER(72) TYPE C VALUE '%&%& RDIR',

MC_REPORT_IDENTIFIER(72) TYPE C VALUE '%&%& REPO',

MC_TEXT_IDENTIFIER(72) TYPE C VALUE '%&%& TEXP',

MC_THEAD_IDENTIFIER(72) TYPE C VALUE '%&%& HEAD',

MC_DOC_IDENTIFIER(72) TYPE C VALUE '%&%& DOKL',

MC_TRDIR_SHORT(4) TYPE C VALUE 'RDIR',

MC_REPORT_SHORT(4) TYPE C VALUE 'REPO',

MC_TEXT_SHORT(4) TYPE C VALUE 'TEXP',

MC_THEAD_SHORT(4) TYPE C VALUE 'HEAD',

MC_DOC_SHORT(4) TYPE C VALUE 'DOKP'.

*----


*----


  • Declare Module level data structures

*----


DATA: BEGIN OF MTAB_PROGRAM_SOURCE OCCURS 0,

LINE(72) TYPE C,

END OF MTAB_PROGRAM_SOURCE.

DATA: MTAB_PROGRAM_TRDIR LIKE TRDIR OCCURS 0 WITH HEADER LINE.

DATA: MTAB_PROGRAM_TEXTS LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.

DATA: MSTR_THEAD LIKE THEAD.

DATA: BEGIN OF MTAB_PROGRAM_FILE OCCURS 0,

LINE(275) TYPE C,

END OF MTAB_PROGRAM_FILE.

DATA: BEGIN OF MTAB_DIRECTORY OCCURS 0,

NAME LIKE TRDIR-NAME,

DESC(72) TYPE C,

SAVENAME LIKE RLGRAP-FILENAME,

END OF MTAB_DIRECTORY.

DATA: BEGIN OF MTAB_PROGRAM_DOCUMENTATION OCCURS 0,

LINE(255) TYPE C,

END OF MTAB_PROGRAM_DOCUMENTATION.

*----


  • Selection Screen

*----


*-- Options for upload/download of programs

SELECTION-SCREEN BEGIN OF BLOCK FRM_OPTIONS WITH FRAME TITLE TEXT-UDL.

PARAMETERS:

RB_DOWN RADIOBUTTON GROUP UDL DEFAULT 'X'. " Download reports

SELECTION-SCREEN BEGIN OF BLOCK FRM_TRDIR WITH FRAME TITLE TEXT-DIR.

SELECT-OPTIONS:

S_NAME FOR TRDIR-NAME, " Program Name

S_SUBC FOR TRDIR-SUBC " Program Type

DEFAULT 'F' OPTION EQ SIGN E," Exclude Functions by default

S_CNAM FOR TRDIR-CNAM " Created by

DEFAULT SY-UNAME,

S_UNAM FOR TRDIR-UNAM, " Last Changed by

S_CDAT FOR TRDIR-CDAT, " Creation date

S_UDAT FOR TRDIR-UDAT. " Last update date

SELECTION-SCREEN END OF BLOCK FRM_TRDIR.

*-- Options for uploading programs

PARAMETERS:

RB_UP RADIOBUTTON GROUP UDL. " Upload reports

SELECTION-SCREEN BEGIN OF BLOCK FRM_UPLOAD WITH FRAME TITLE TEXT-UPL.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(29) TEXT-SNG.

PARAMETERS:

RB_FILE RADIOBUTTON GROUP HOW DEFAULT 'X'.

SELECTION-SCREEN COMMENT 33(42) TEXT-FNA.

SELECTION-SCREEN END OF LINE.

PARAMETERS:

RB_LIST RADIOBUTTON GROUP HOW.

SELECTION-SCREEN END OF BLOCK FRM_UPLOAD.

SELECTION-SCREEN END OF BLOCK FRM_OPTIONS.

*-- Options for up/downloading programs

SELECTION-SCREEN BEGIN OF BLOCK FRM_FILEN WITH FRAME TITLE TEXT-FIL.

PARAMETERS:

RB_DOS RADIOBUTTON GROUP FIL DEFAULT 'X', " Save to local

RB_UNIX RADIOBUTTON GROUP FIL, " Save to UNIX

P_PATH LIKE RLGRAP-FILENAME " Path to save files to

DEFAULT 'c:\abap\'.

SELECTION-SCREEN END OF BLOCK FRM_FILEN.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-LOW.

CALL FUNCTION 'F4_PROGRAM'

EXPORTING

OBJECT = S_NAME-LOW

SUPPRESS_SELECTION = 'X'

IMPORTING

RESULT = S_NAME-LOW

EXCEPTIONS

OTHERS = 1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-HIGH.

CALL FUNCTION 'F4_PROGRAM'

EXPORTING

OBJECT = S_NAME-HIGH

SUPPRESS_SELECTION = 'X'

IMPORTING

RESULT = S_NAME-HIGH

EXCEPTIONS

OTHERS = 1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-LOW.

PERFORM GET_NAME USING 'S_UNAM-LOW'

CHANGING S_UNAM-LOW.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-HIGH.

PERFORM GET_NAME USING 'S_UNAM-HIGH'

CHANGING S_UNAM-HIGH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-LOW.

PERFORM GET_NAME USING 'S_CNAM-LOW'

CHANGING S_CNAM-LOW.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-HIGH.

PERFORM GET_NAME USING 'S_CNAM-HIGH'

CHANGING S_CNAM-HIGH.

TOP-OF-PAGE.

IF RB_LIST = 'X'.

FORMAT COLOR COL_HEADING.

NEW-LINE.

WRITE: AT 3 TEXT-H01,

AT 15 TEXT-H03.

FORMAT COLOR OFF.

ENDIF.

AT LINE-SELECTION.

CHECK RB_LIST = 'X'. " only do in list mode

READ LINE SY-CUROW FIELD VALUE MTAB_DIRECTORY-SAVENAME.

*-- Read file into an internal table

PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE

USING MTAB_DIRECTORY-SAVENAME.

*-- Split table into TADIR entry, report lines, and report text

PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE

MTAB_PROGRAM_SOURCE

MTAB_PROGRAM_TEXTS

MTAB_PROGRAM_DOCUMENTATION

CHANGING TRDIR

MSTR_THEAD.

*-- Save all of the data

PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE

MTAB_PROGRAM_TEXTS

MTAB_PROGRAM_DOCUMENTATION

USING TRDIR

MSTR_THEAD.

*----


  • Start of processing

*----


START-OF-SELECTION.

FORMAT COLOR COL_NORMAL.

IF RB_DOWN = 'X'.

PERFORM DOWNLOAD_REPORTS.

ELSEIF RB_UP = 'X'.

PERFORM UPLOAD_REPORTS.

ENDIF.

END-OF-SELECTION.

IF RB_DOWN = 'X'.

CONCATENATE P_PATH

'directory.txt'

INTO P_PATH.

PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_DIRECTORY

USING P_PATH.

ENDIF.

----


  • FORM UPLOAD_REPORTS *

----


FORM UPLOAD_REPORTS.

*-- Can upload a reports entered in selection criteria or

*-- select from a list. List can be from index.txt in same directory

*-- (created by the download) or by reading the first line of each file

*-- in the directory.

IF RB_FILE = 'X'. " Upload single program from a file

*-- Read file into an internal table

PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE

USING P_PATH.

*-- Split table into TADIR entry, report lines, and report text

PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE

MTAB_PROGRAM_SOURCE

MTAB_PROGRAM_TEXTS

MTAB_PROGRAM_DOCUMENTATION

CHANGING TRDIR

MSTR_THEAD.

*-- Save all of the data

PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE

MTAB_PROGRAM_TEXTS

MTAB_PROGRAM_DOCUMENTATION

USING TRDIR

MSTR_THEAD.

ELSEIF RB_LIST = 'X'. " Show list for user to choose from

*-- get list of report names/descriptions from directory text

CONCATENATE P_PATH

'directory.txt'

INTO P_PATH.

PERFORM READ_REPORT_FROM_DISK TABLES MTAB_DIRECTORY

USING P_PATH.

SORT MTAB_DIRECTORY.

*-- Write out list of report names/descriptions

LOOP AT MTAB_DIRECTORY.

WRITE:

/ MTAB_DIRECTORY-NAME UNDER TEXT-H01,

MTAB_DIRECTORY-DESC UNDER TEXT-H03,

MTAB_DIRECTORY-SAVENAME.

ENDLOOP.

*-- Process user selections for reports to upload.

ENDIF.

ENDFORM. " upload_reports

----


  • FORM DOWNLOAD_REPORTS *

----


  • From the user selections, get all programs that meet the *

  • criteria, and save them in ftab_program_directory. *

  • Also save the report to disk. *

----


FORM DOWNLOAD_REPORTS.

DATA:

LC_FULL_FILENAME LIKE RLGRAP-FILENAME.

*-- The table is put into an internal table because the program will

*-- abend if multiple transfers to a dataset occur within a SELECT/

*-- ENDSELCT (tested on 3.1H)

SELECT * FROM TRDIR

INTO TABLE MTAB_PROGRAM_TRDIR

WHERE NAME IN S_NAME

AND SUBC IN S_SUBC

AND CNAM IN S_CNAM

AND UNAM IN S_UNAM

AND CDAT IN S_CDAT

AND UDAT IN S_UDAT.

LOOP AT MTAB_PROGRAM_TRDIR.

*-- Clear out text and source code tables

CLEAR:

MTAB_PROGRAM_FILE,

MTAB_PROGRAM_SOURCE,

MTAB_PROGRAM_TEXTS,

MTAB_PROGRAM_DOCUMENTATION.

REFRESH:

MTAB_PROGRAM_FILE,

MTAB_PROGRAM_SOURCE,

MTAB_PROGRAM_TEXTS,

MTAB_PROGRAM_DOCUMENTATION.

*-- Get the report

READ REPORT MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_SOURCE.

*-- Get the text for the report

READ TEXTPOOL MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_TEXTS.

*-- Get the documentation for the report

CLEAR DOKIL.

SELECT * UP TO 1 ROWS FROM DOKIL

WHERE ID = 'RE'

AND OBJECT = MTAB_PROGRAM_TRDIR-NAME

AND LANGU = SY-LANGU

AND TYP = 'E'

ORDER BY VERSION DESCENDING.

ENDSELECT.

*-- Documentation exists for this object

IF SY-SUBRC = 0.

CALL FUNCTION 'DOCU_READ'

EXPORTING

ID = DOKIL-ID

LANGU = DOKIL-LANGU

OBJECT = DOKIL-OBJECT

TYP = DOKIL-TYP

VERSION = DOKIL-VERSION

IMPORTING

HEAD = MSTR_THEAD

TABLES

LINE = MTAB_PROGRAM_DOCUMENTATION

EXCEPTIONS

OTHERS = 1.

ENDIF.

*-- Put the report code and texts into a single file

*-- Put the identifier line in so that the start of the TRDIR line

*-- is marked

CONCATENATE MC_TRDIR_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

*-- Add the TRDIR line

MTAB_PROGRAM_FILE-LINE = MTAB_PROGRAM_TRDIR.

APPEND MTAB_PROGRAM_FILE.

*-- Put the identifier line in so that the start of the report code

*-- is marked

CONCATENATE MC_REPORT_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

*-- Add the report code

LOOP AT MTAB_PROGRAM_SOURCE.

MTAB_PROGRAM_FILE = MTAB_PROGRAM_SOURCE.

APPEND MTAB_PROGRAM_FILE.

ENDLOOP.

*-- Put the identifier line in so that the start of the report text

*-- is marked

CONCATENATE MC_TEXT_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

*-- Add the report texts

LOOP AT MTAB_PROGRAM_TEXTS.

MTAB_PROGRAM_FILE = MTAB_PROGRAM_TEXTS.

APPEND MTAB_PROGRAM_FILE.

ENDLOOP.

*-- Put the identifier line in so that the start of the THEAD record

*-- is marked

CONCATENATE MC_THEAD_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

MTAB_PROGRAM_FILE = MSTR_THEAD.

APPEND MTAB_PROGRAM_FILE.

*-- Put the identifier line in so that the start of the report

*-- documentation is marked

CONCATENATE MC_DOC_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

*-- Add the report documentation

LOOP AT MTAB_PROGRAM_DOCUMENTATION.

MTAB_PROGRAM_FILE = MTAB_PROGRAM_DOCUMENTATION.

APPEND MTAB_PROGRAM_FILE.

ENDLOOP.

*-- Make the fully pathed filename that report will be saved to

CONCATENATE P_PATH

MTAB_PROGRAM_TRDIR-NAME

'.txt'

INTO LC_FULL_FILENAME.

PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_PROGRAM_FILE

USING LC_FULL_FILENAME.

*-- Write out message with Program Name/Description

READ TABLE MTAB_PROGRAM_TEXTS WITH KEY ID = 'R'.

IF SY-SUBRC = 0.

MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.

MTAB_DIRECTORY-DESC = MTAB_PROGRAM_TEXTS-ENTRY.

MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.

APPEND MTAB_DIRECTORY.

WRITE: / MTAB_PROGRAM_TRDIR-NAME,

MTAB_PROGRAM_TEXTS-ENTRY(65) COLOR COL_HEADING.

ELSE.

MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.

MTAB_DIRECTORY-DESC = 'No description available'.

MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.

APPEND MTAB_DIRECTORY.

WRITE: / MTAB_PROGRAM_TRDIR-NAME.

ENDIF.

ENDLOOP.

ENDFORM. " BUILD_PROGRAM_DIRECTORY

----


  • FORM SAVE_TABLE_TO_FILE *

----


  • ........ *

----


  • --> FTAB_TABLE *

  • --> F_FILENAME *

----


FORM SAVE_TABLE_TO_FILE TABLES FTAB_TABLE

USING F_FILENAME.

IF RB_DOS = 'X'. " Save file to presentation server

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = F_FILENAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = FTAB_TABLE

EXCEPTIONS

OTHERS = 4.

IF SY-SUBRC NE 0.

WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,

F_FILENAME COLOR COL_NEGATIVE.

ENDIF.

ELSE. " Save file to application serve

OPEN DATASET F_FILENAME FOR OUTPUT IN TEXT MODE.

IF SY-SUBRC = 0.

LOOP AT FTAB_TABLE.

TRANSFER FTAB_TABLE TO F_FILENAME.

IF SY-SUBRC NE 0.

WRITE: / 'Error writing record to file;' COLOR COL_NEGATIVE,

F_FILENAME COLOR COL_NEGATIVE.

ENDIF.

ENDLOOP.

ELSE.

WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,

F_FILENAME COLOR COL_NEGATIVE.

ENDIF.

ENDIF. " End RB_DOS

ENDFORM. " SAVE_PROGRAM

----


  • FORM READ_REPORT_FROM_DISK *

----


  • Read report into internal table. Can read from local or *

  • remote computer *

----


FORM READ_REPORT_FROM_DISK TABLES FTAB_TABLE

USING F_FILENAME.

DATA:

LC_MESSAGE(128) TYPE C.

CLEAR FTAB_TABLE.

REFRESH FTAB_TABLE.

IF RB_DOS = 'X'.

TRANSLATE F_FILENAME USING '/\'. " correct slash for Dos PC file

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = F_FILENAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = FTAB_TABLE

EXCEPTIONS

CONVERSION_ERROR = 1

FILE_OPEN_ERROR = 2

FILE_READ_ERROR = 3

INVALID_TABLE_WIDTH = 4

INVALID_TYPE = 5

NO_BATCH = 6

UNKNOWN_ERROR = 7

OTHERS = 8.

IF SY-SUBRC >< 0.

WRITE: / 'Error reading file from local PC' COLOR COL_NEGATIVE.

ENDIF.

ELSEIF RB_UNIX = 'X'.

TRANSLATE F_FILENAME USING '\/'. " correct slash for unix

OPEN DATASET F_FILENAME FOR INPUT MESSAGE LC_MESSAGE IN TEXT MODE.

IF SY-SUBRC = 0.

DO.

READ DATASET F_FILENAME INTO FTAB_TABLE.

IF SY-SUBRC = 0.

APPEND FTAB_TABLE.

ELSE.

EXIT.

ENDIF.

ENDDO.

CLOSE DATASET F_FILENAME.

ELSE.

WRITE: / 'Error reading file from remote computer'

COLOR COL_NEGATIVE,

/ LC_MESSAGE,

/ F_FILENAME.

SY-SUBRC = 4.

ENDIF.

ENDIF.

ENDFORM. " READ_REPORT_FROM_DISK

----


  • FORM SPLIT_INCOMING_FILE *

----


  • ........ *

----


  • --> FTAB_PROGRAM_FILE *

  • --> FTAB_PROGRAM_SOURCE *

  • --> ` *

  • --> FTAB_PROGRAM_TEXTS *

----


FORM SPLIT_INCOMING_FILE TABLES FTAB_PROGRAM_FILE

STRUCTURE MTAB_PROGRAM_FILE

FTAB_PROGRAM_SOURCE

STRUCTURE MTAB_PROGRAM_SOURCE

FTAB_PROGRAM_TEXTS

STRUCTURE MTAB_PROGRAM_TEXTS

FTAB_PROGRAM_DOCUMENTATION

STRUCTURE MTAB_PROGRAM_DOCUMENTATION

CHANGING FSTR_TRDIR

FSTR_THEAD.

DATA:

LC_DATATYPE(4) TYPE C, " Type of data, REPO, TEXP, RDIR

LC_PROGRAM_FILE LIKE MTAB_PROGRAM_FILE.

LOOP AT FTAB_PROGRAM_FILE.

LC_PROGRAM_FILE = FTAB_PROGRAM_FILE.

CASE LC_PROGRAM_FILE(9).

WHEN MC_TRDIR_IDENTIFIER.

LC_DATATYPE = MC_TRDIR_SHORT.

WHEN MC_REPORT_IDENTIFIER.

LC_DATATYPE = MC_REPORT_SHORT.

WHEN MC_TEXT_IDENTIFIER.

LC_DATATYPE = MC_TEXT_SHORT.

WHEN MC_DOC_IDENTIFIER.

LC_DATATYPE = MC_DOC_SHORT.

WHEN MC_THEAD_IDENTIFIER.

LC_DATATYPE = MC_THEAD_SHORT.

WHEN OTHERS. " Actual contents of report, trdir, or text

CASE LC_DATATYPE.

WHEN MC_TRDIR_SHORT.

FSTR_TRDIR = FTAB_PROGRAM_FILE.

WHEN MC_REPORT_SHORT.

FTAB_PROGRAM_SOURCE = FTAB_PROGRAM_FILE.

APPEND FTAB_PROGRAM_SOURCE.

WHEN MC_TEXT_SHORT.

FTAB_PROGRAM_TEXTS = FTAB_PROGRAM_FILE.

APPEND FTAB_PROGRAM_TEXTS.

WHEN MC_THEAD_SHORT.

FSTR_THEAD = FTAB_PROGRAM_FILE.

WHEN MC_DOC_SHORT.

FTAB_PROGRAM_DOCUMENTATION = FTAB_PROGRAM_FILE.

APPEND FTAB_PROGRAM_DOCUMENTATION.

ENDCASE.

ENDCASE.

ENDLOOP.

ENDFORM. " SPLIT_INCOMING_FILE

----


  • FORM INSERT_NEW_REPORT *

----


  • ........ *

----


  • --> FTAB_PROGRAM_SOURCE *

  • --> FTAB_PROGRAM_TEXTS *

  • --> F_TRDIR *

----


FORM INSERT_NEW_REPORT TABLES FTAB_PROGRAM_SOURCE

STRUCTURE MTAB_PROGRAM_SOURCE

FTAB_PROGRAM_TEXTS

STRUCTURE MTAB_PROGRAM_TEXTS

FTAB_PROGRAM_DOCUMENTATION

STRUCTURE MTAB_PROGRAM_DOCUMENTATION

USING FSTR_TRDIR LIKE TRDIR

FSTR_THEAD LIKE MSTR_THEAD.

DATA:

LC_OBJ_NAME LIKE E071-OBJ_NAME,

LC_LINE2(40) TYPE C,

LC_ANSWER(1) TYPE C.

*-- read trdir to see if the report already exists, if it does, prompt

*-- user to overwrite or abort.

SELECT SINGLE * FROM TRDIR WHERE NAME = FSTR_TRDIR-NAME.

IF SY-SUBRC = 0. " Already exists

CONCATENATE 'want to overwrite report'

FSTR_TRDIR-NAME

INTO LC_LINE2 SEPARATED BY SPACE.

CONCATENATE LC_LINE2

'?'

INTO LC_LINE2.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

EXPORTING

DEFAULTOPTION = 'N'

TEXTLINE1 = 'The selected report already exists, do you'

TEXTLINE2 = LC_LINE2

TITEL = 'Report already exists'

CANCEL_DISPLAY = SPACE

IMPORTING

ANSWER = LC_ANSWER

EXCEPTIONS

OTHERS = 1.

ELSE.

LC_ANSWER = 'J'.

ENDIF.

IF LC_ANSWER = 'J'.

*-- Create the TADIR entry. (TRDIR entry created by INSERT REPORT)

LC_OBJ_NAME = TRDIR-NAME.

CALL FUNCTION 'TR_TADIR_POPUP_ENTRY_E071'

EXPORTING

WI_E071_PGMID = 'R3TR'

WI_E071_OBJECT = 'PROG'

WI_E071_OBJ_NAME = LC_OBJ_NAME

WI_TADIR_DEVCLASS = '$TMP'

EXCEPTIONS

EXIT = 3

OTHERS = 4.

IF SY-SUBRC = 0.

*-- Create Report

INSERT REPORT FSTR_TRDIR-NAME FROM FTAB_PROGRAM_SOURCE.

*-- Create Texts

INSERT TEXTPOOL FSTR_TRDIR-NAME FROM FTAB_PROGRAM_TEXTS

LANGUAGE SY-LANGU.

*-- Save Documentation

CALL FUNCTION 'DOCU_UPDATE'

EXPORTING

HEAD = FSTR_THEAD

STATE = 'A'

TYP = 'E'

VERSION = '1'

TABLES

LINE = FTAB_PROGRAM_DOCUMENTATION

EXCEPTIONS

OTHERS = 1.

ELSE.

WRITE: / 'Error updating the TADIR entry' COLOR COL_NEGATIVE,

'Program' COLOR COL_NEGATIVE INTENSIFIED OFF,

FSTR_TRDIR-NAME, 'was not loaded into SAP.'

COLOR COL_NEGATIVE INTENSIFIED OFF.

ENDIF.

ELSE.

WRITE: / FSTR_TRDIR-NAME COLOR COL_NEGATIVE,

'was not uploaded into SAP. Action cancelled by user'

COLOR COL_NEGATIVE INTENSIFIED OFF.

ENDIF.

ENDFORM. " INSERT_NEW_REPORT

----


  • FORM GET_NAME *

----


  • ........ *

----


  • --> VALUE(F_FIELD) *

  • --> F_NAME *

----


FORM GET_NAME USING VALUE(F_FIELD)

CHANGING F_NAME.

DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,

LC_PROG LIKE D020S-PROG,

LC_DNUM LIKE D020S-DNUM.

TRANSLATE F_FIELD TO UPPER CASE.

refresh ltab_fields.

LTAB_FIELDS-FIELDNAME = F_FIELD.

append ltab_fields.

LC_PROG = SY-REPID .

LC_DNUM = SY-DYNNR .

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = LC_PROG

DYNUMB = LC_DNUM

TABLES

dynpfields = ltab_fields

EXCEPTIONS

OTHERS = 01.

read table ltab_fields index 1.

IF SY-SUBRC EQ 0.

F_NAME = LTAB_FIELDS-FIELDVALUE.

refresh ltab_fields.

ENDIF.

CALL FUNCTION 'F4_USER'

EXPORTING

OBJECT = F_NAME

IMPORTING

RESULT = F_NAME.

ENDFORM. " GET_NAME

This is the entire program.hope it helops you.

Reward if useful

Regards

divya

Former Member
0 Kudos
130

Hi

REPORT ZDOWN_UP_LOAD

NO STANDARD PAGE HEADING

LINE-SIZE 255.

*----


  • Declare Database Objects

*----


tables:

DOKIL,

TRDIR.

*----


  • Constants

CONSTANTS:

MC_TRDIR_IDENTIFIER(72) TYPE C VALUE '%&%& RDIR',

MC_REPORT_IDENTIFIER(72) TYPE C VALUE '%&%& REPO',

MC_TEXT_IDENTIFIER(72) TYPE C VALUE '%&%& TEXP',

MC_THEAD_IDENTIFIER(72) TYPE C VALUE '%&%& HEAD',

MC_DOC_IDENTIFIER(72) TYPE C VALUE '%&%& DOKL',

MC_TRDIR_SHORT(4) TYPE C VALUE 'RDIR',

MC_REPORT_SHORT(4) TYPE C VALUE 'REPO',

MC_TEXT_SHORT(4) TYPE C VALUE 'TEXP',

MC_THEAD_SHORT(4) TYPE C VALUE 'HEAD',

MC_DOC_SHORT(4) TYPE C VALUE 'DOKP'.

*----


*----


  • Declare Module level data structures

*----


DATA: BEGIN OF MTAB_PROGRAM_SOURCE OCCURS 0,

LINE(72) TYPE C,

END OF MTAB_PROGRAM_SOURCE.

DATA: MTAB_PROGRAM_TRDIR LIKE TRDIR OCCURS 0 WITH HEADER LINE.

DATA: MTAB_PROGRAM_TEXTS LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.

DATA: MSTR_THEAD LIKE THEAD.

DATA: BEGIN OF MTAB_PROGRAM_FILE OCCURS 0,

LINE(275) TYPE C,

END OF MTAB_PROGRAM_FILE.

DATA: BEGIN OF MTAB_DIRECTORY OCCURS 0,

NAME LIKE TRDIR-NAME,

DESC(72) TYPE C,

SAVENAME LIKE RLGRAP-FILENAME,

END OF MTAB_DIRECTORY.

DATA: BEGIN OF MTAB_PROGRAM_DOCUMENTATION OCCURS 0,

LINE(255) TYPE C,

END OF MTAB_PROGRAM_DOCUMENTATION.

*----


  • Selection Screen

*----


*-- Options for upload/download of programs

SELECTION-SCREEN BEGIN OF BLOCK FRM_OPTIONS WITH FRAME TITLE TEXT-UDL.

PARAMETERS:

RB_DOWN RADIOBUTTON GROUP UDL DEFAULT 'X'. " Download reports

SELECTION-SCREEN BEGIN OF BLOCK FRM_TRDIR WITH FRAME TITLE TEXT-DIR.

SELECT-OPTIONS:

S_NAME FOR TRDIR-NAME, " Program Name

S_SUBC FOR TRDIR-SUBC " Program Type

DEFAULT 'F' OPTION EQ SIGN E," Exclude Functions by default

S_CNAM FOR TRDIR-CNAM " Created by

DEFAULT SY-UNAME,

S_UNAM FOR TRDIR-UNAM, " Last Changed by

S_CDAT FOR TRDIR-CDAT, " Creation date

S_UDAT FOR TRDIR-UDAT. " Last update date

SELECTION-SCREEN END OF BLOCK FRM_TRDIR.

*-- Options for uploading programs

PARAMETERS:

RB_UP RADIOBUTTON GROUP UDL. " Upload reports

SELECTION-SCREEN BEGIN OF BLOCK FRM_UPLOAD WITH FRAME TITLE TEXT-UPL.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(29) TEXT-SNG.

PARAMETERS:

RB_FILE RADIOBUTTON GROUP HOW DEFAULT 'X'.

SELECTION-SCREEN COMMENT 33(42) TEXT-FNA.

SELECTION-SCREEN END OF LINE.

PARAMETERS:

RB_LIST RADIOBUTTON GROUP HOW.

SELECTION-SCREEN END OF BLOCK FRM_UPLOAD.

SELECTION-SCREEN END OF BLOCK FRM_OPTIONS.

*-- Options for up/downloading programs

SELECTION-SCREEN BEGIN OF BLOCK FRM_FILEN WITH FRAME TITLE TEXT-FIL.

PARAMETERS:

RB_DOS RADIOBUTTON GROUP FIL DEFAULT 'X', " Save to local

RB_UNIX RADIOBUTTON GROUP FIL, " Save to UNIX

P_PATH LIKE RLGRAP-FILENAME " Path to save files to

DEFAULT 'c:\abap\'.

SELECTION-SCREEN END OF BLOCK FRM_FILEN.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-LOW.

CALL FUNCTION 'F4_PROGRAM'

EXPORTING

OBJECT = S_NAME-LOW

SUPPRESS_SELECTION = 'X'

IMPORTING

RESULT = S_NAME-LOW

EXCEPTIONS

OTHERS = 1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-HIGH.

CALL FUNCTION 'F4_PROGRAM'

EXPORTING

OBJECT = S_NAME-HIGH

SUPPRESS_SELECTION = 'X'

IMPORTING

RESULT = S_NAME-HIGH

EXCEPTIONS

OTHERS = 1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-LOW.

PERFORM GET_NAME USING 'S_UNAM-LOW'

CHANGING S_UNAM-LOW.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-HIGH.

PERFORM GET_NAME USING 'S_UNAM-HIGH'

CHANGING S_UNAM-HIGH.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-LOW.

PERFORM GET_NAME USING 'S_CNAM-LOW'

CHANGING S_CNAM-LOW.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-HIGH.

PERFORM GET_NAME USING 'S_CNAM-HIGH'

CHANGING S_CNAM-HIGH.

TOP-OF-PAGE.

IF RB_LIST = 'X'.

FORMAT COLOR COL_HEADING.

NEW-LINE.

WRITE: AT 3 TEXT-H01,

AT 15 TEXT-H03.

FORMAT COLOR OFF.

ENDIF.

AT LINE-SELECTION.

CHECK RB_LIST = 'X'. " only do in list mode

READ LINE SY-CUROW FIELD VALUE MTAB_DIRECTORY-SAVENAME.

*-- Read file into an internal table

PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE

USING MTAB_DIRECTORY-SAVENAME.

*-- Split table into TADIR entry, report lines, and report text

PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE

MTAB_PROGRAM_SOURCE

MTAB_PROGRAM_TEXTS

MTAB_PROGRAM_DOCUMENTATION

CHANGING TRDIR

MSTR_THEAD.

*-- Save all of the data

PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE

MTAB_PROGRAM_TEXTS

MTAB_PROGRAM_DOCUMENTATION

USING TRDIR

MSTR_THEAD.

*----


  • Start of processing

*----


START-OF-SELECTION.

FORMAT COLOR COL_NORMAL.

IF RB_DOWN = 'X'.

PERFORM DOWNLOAD_REPORTS.

ELSEIF RB_UP = 'X'.

PERFORM UPLOAD_REPORTS.

ENDIF.

END-OF-SELECTION.

IF RB_DOWN = 'X'.

CONCATENATE P_PATH

'directory.txt'

INTO P_PATH.

PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_DIRECTORY

USING P_PATH.

ENDIF.

----


  • FORM UPLOAD_REPORTS *

----


FORM UPLOAD_REPORTS.

*-- Can upload a reports entered in selection criteria or

*-- select from a list. List can be from index.txt in same directory

*-- (created by the download) or by reading the first line of each file

*-- in the directory.

IF RB_FILE = 'X'. " Upload single program from a file

*-- Read file into an internal table

PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE

USING P_PATH.

*-- Split table into TADIR entry, report lines, and report text

PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE

MTAB_PROGRAM_SOURCE

MTAB_PROGRAM_TEXTS

MTAB_PROGRAM_DOCUMENTATION

CHANGING TRDIR

MSTR_THEAD.

*-- Save all of the data

PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE

MTAB_PROGRAM_TEXTS

MTAB_PROGRAM_DOCUMENTATION

USING TRDIR

MSTR_THEAD.

ELSEIF RB_LIST = 'X'. " Show list for user to choose from

*-- get list of report names/descriptions from directory text

CONCATENATE P_PATH

'directory.txt'

INTO P_PATH.

PERFORM READ_REPORT_FROM_DISK TABLES MTAB_DIRECTORY

USING P_PATH.

SORT MTAB_DIRECTORY.

*-- Write out list of report names/descriptions

LOOP AT MTAB_DIRECTORY.

WRITE:

/ MTAB_DIRECTORY-NAME UNDER TEXT-H01,

MTAB_DIRECTORY-DESC UNDER TEXT-H03,

MTAB_DIRECTORY-SAVENAME.

ENDLOOP.

*-- Process user selections for reports to upload.

ENDIF.

ENDFORM. " upload_reports

----


  • FORM DOWNLOAD_REPORTS *

----


  • From the user selections, get all programs that meet the *

  • criteria, and save them in ftab_program_directory. *

  • Also save the report to disk. *

----


FORM DOWNLOAD_REPORTS.

DATA:

LC_FULL_FILENAME LIKE RLGRAP-FILENAME.

*-- The table is put into an internal table because the program will

*-- abend if multiple transfers to a dataset occur within a SELECT/

*-- ENDSELCT (tested on 3.1H)

SELECT * FROM TRDIR

INTO TABLE MTAB_PROGRAM_TRDIR

WHERE NAME IN S_NAME

AND SUBC IN S_SUBC

AND CNAM IN S_CNAM

AND UNAM IN S_UNAM

AND CDAT IN S_CDAT

AND UDAT IN S_UDAT.

LOOP AT MTAB_PROGRAM_TRDIR.

*-- Clear out text and source code tables

CLEAR:

MTAB_PROGRAM_FILE,

MTAB_PROGRAM_SOURCE,

MTAB_PROGRAM_TEXTS,

MTAB_PROGRAM_DOCUMENTATION.

REFRESH:

MTAB_PROGRAM_FILE,

MTAB_PROGRAM_SOURCE,

MTAB_PROGRAM_TEXTS,

MTAB_PROGRAM_DOCUMENTATION.

*-- Get the report

READ REPORT MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_SOURCE.

*-- Get the text for the report

READ TEXTPOOL MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_TEXTS.

*-- Get the documentation for the report

CLEAR DOKIL.

SELECT * UP TO 1 ROWS FROM DOKIL

WHERE ID = 'RE'

AND OBJECT = MTAB_PROGRAM_TRDIR-NAME

AND LANGU = SY-LANGU

AND TYP = 'E'

ORDER BY VERSION DESCENDING.

ENDSELECT.

*-- Documentation exists for this object

IF SY-SUBRC = 0.

CALL FUNCTION 'DOCU_READ'

EXPORTING

ID = DOKIL-ID

LANGU = DOKIL-LANGU

OBJECT = DOKIL-OBJECT

TYP = DOKIL-TYP

VERSION = DOKIL-VERSION

IMPORTING

HEAD = MSTR_THEAD

TABLES

LINE = MTAB_PROGRAM_DOCUMENTATION

EXCEPTIONS

OTHERS = 1.

ENDIF.

*-- Put the report code and texts into a single file

*-- Put the identifier line in so that the start of the TRDIR line

*-- is marked

CONCATENATE MC_TRDIR_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

*-- Add the TRDIR line

MTAB_PROGRAM_FILE-LINE = MTAB_PROGRAM_TRDIR.

APPEND MTAB_PROGRAM_FILE.

*-- Put the identifier line in so that the start of the report code

*-- is marked

CONCATENATE MC_REPORT_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

*-- Add the report code

LOOP AT MTAB_PROGRAM_SOURCE.

MTAB_PROGRAM_FILE = MTAB_PROGRAM_SOURCE.

APPEND MTAB_PROGRAM_FILE.

ENDLOOP.

*-- Put the identifier line in so that the start of the report text

*-- is marked

CONCATENATE MC_TEXT_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

*-- Add the report texts

LOOP AT MTAB_PROGRAM_TEXTS.

MTAB_PROGRAM_FILE = MTAB_PROGRAM_TEXTS.

APPEND MTAB_PROGRAM_FILE.

ENDLOOP.

*-- Put the identifier line in so that the start of the THEAD record

*-- is marked

CONCATENATE MC_THEAD_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

MTAB_PROGRAM_FILE = MSTR_THEAD.

APPEND MTAB_PROGRAM_FILE.

*-- Put the identifier line in so that the start of the report

*-- documentation is marked

CONCATENATE MC_DOC_IDENTIFIER

MTAB_PROGRAM_TRDIR-NAME

INTO MTAB_PROGRAM_FILE-LINE.

APPEND MTAB_PROGRAM_FILE.

*-- Add the report documentation

LOOP AT MTAB_PROGRAM_DOCUMENTATION.

MTAB_PROGRAM_FILE = MTAB_PROGRAM_DOCUMENTATION.

APPEND MTAB_PROGRAM_FILE.

ENDLOOP.

*-- Make the fully pathed filename that report will be saved to

CONCATENATE P_PATH

MTAB_PROGRAM_TRDIR-NAME

'.txt'

INTO LC_FULL_FILENAME.

PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_PROGRAM_FILE

USING LC_FULL_FILENAME.

*-- Write out message with Program Name/Description

READ TABLE MTAB_PROGRAM_TEXTS WITH KEY ID = 'R'.

IF SY-SUBRC = 0.

MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.

MTAB_DIRECTORY-DESC = MTAB_PROGRAM_TEXTS-ENTRY.

MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.

APPEND MTAB_DIRECTORY.

WRITE: / MTAB_PROGRAM_TRDIR-NAME,

MTAB_PROGRAM_TEXTS-ENTRY(65) COLOR COL_HEADING.

ELSE.

MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.

MTAB_DIRECTORY-DESC = 'No description available'.

MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.

APPEND MTAB_DIRECTORY.

WRITE: / MTAB_PROGRAM_TRDIR-NAME.

ENDIF.

ENDLOOP.

ENDFORM. " BUILD_PROGRAM_DIRECTORY

----


  • FORM SAVE_TABLE_TO_FILE *

----


  • ........ *

----


  • --> FTAB_TABLE *

  • --> F_FILENAME *

----


FORM SAVE_TABLE_TO_FILE TABLES FTAB_TABLE

USING F_FILENAME.

IF RB_DOS = 'X'. " Save file to presentation server

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = F_FILENAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = FTAB_TABLE

EXCEPTIONS

OTHERS = 4.

IF SY-SUBRC NE 0.

WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,

F_FILENAME COLOR COL_NEGATIVE.

ENDIF.

ELSE. " Save file to application serve

OPEN DATASET F_FILENAME FOR OUTPUT IN TEXT MODE.

IF SY-SUBRC = 0.

LOOP AT FTAB_TABLE.

TRANSFER FTAB_TABLE TO F_FILENAME.

IF SY-SUBRC NE 0.

WRITE: / 'Error writing record to file;' COLOR COL_NEGATIVE,

F_FILENAME COLOR COL_NEGATIVE.

ENDIF.

ENDLOOP.

ELSE.

WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,

F_FILENAME COLOR COL_NEGATIVE.

ENDIF.

ENDIF. " End RB_DOS

ENDFORM. " SAVE_PROGRAM

----


  • FORM READ_REPORT_FROM_DISK *

----


  • Read report into internal table. Can read from local or *

  • remote computer *

----


FORM READ_REPORT_FROM_DISK TABLES FTAB_TABLE

USING F_FILENAME.

DATA:

LC_MESSAGE(128) TYPE C.

CLEAR FTAB_TABLE.

REFRESH FTAB_TABLE.

IF RB_DOS = 'X'.

TRANSLATE F_FILENAME USING '/\'. " correct slash for Dos PC file

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = F_FILENAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = FTAB_TABLE

EXCEPTIONS

CONVERSION_ERROR = 1

FILE_OPEN_ERROR = 2

FILE_READ_ERROR = 3

INVALID_TABLE_WIDTH = 4

INVALID_TYPE = 5

NO_BATCH = 6

UNKNOWN_ERROR = 7

OTHERS = 8.

IF SY-SUBRC >< 0.

WRITE: / 'Error reading file from local PC' COLOR COL_NEGATIVE.

ENDIF.

ELSEIF RB_UNIX = 'X'.

TRANSLATE F_FILENAME USING '\/'. " correct slash for unix

OPEN DATASET F_FILENAME FOR INPUT MESSAGE LC_MESSAGE IN TEXT MODE.

IF SY-SUBRC = 0.

DO.

READ DATASET F_FILENAME INTO FTAB_TABLE.

IF SY-SUBRC = 0.

APPEND FTAB_TABLE.

ELSE.

EXIT.

ENDIF.

ENDDO.

CLOSE DATASET F_FILENAME.

ELSE.

WRITE: / 'Error reading file from remote computer'

COLOR COL_NEGATIVE,

/ LC_MESSAGE,

/ F_FILENAME.

SY-SUBRC = 4.

ENDIF.

ENDIF.

ENDFORM. " READ_REPORT_FROM_DISK

----


  • FORM SPLIT_INCOMING_FILE *

----


  • ........ *

----


  • --> FTAB_PROGRAM_FILE *

  • --> FTAB_PROGRAM_SOURCE *

  • --> ` *

  • --> FTAB_PROGRAM_TEXTS *

----


FORM SPLIT_INCOMING_FILE TABLES FTAB_PROGRAM_FILE

STRUCTURE MTAB_PROGRAM_FILE

FTAB_PROGRAM_SOURCE

STRUCTURE MTAB_PROGRAM_SOURCE

FTAB_PROGRAM_TEXTS

STRUCTURE MTAB_PROGRAM_TEXTS

FTAB_PROGRAM_DOCUMENTATION

STRUCTURE MTAB_PROGRAM_DOCUMENTATION

CHANGING FSTR_TRDIR

FSTR_THEAD.

DATA:

LC_DATATYPE(4) TYPE C, " Type of data, REPO, TEXP, RDIR

LC_PROGRAM_FILE LIKE MTAB_PROGRAM_FILE.

LOOP AT FTAB_PROGRAM_FILE.

LC_PROGRAM_FILE = FTAB_PROGRAM_FILE.

CASE LC_PROGRAM_FILE(9).

WHEN MC_TRDIR_IDENTIFIER.

LC_DATATYPE = MC_TRDIR_SHORT.

WHEN MC_REPORT_IDENTIFIER.

LC_DATATYPE = MC_REPORT_SHORT.

WHEN MC_TEXT_IDENTIFIER.

LC_DATATYPE = MC_TEXT_SHORT.

WHEN MC_DOC_IDENTIFIER.

LC_DATATYPE = MC_DOC_SHORT.

WHEN MC_THEAD_IDENTIFIER.

LC_DATATYPE = MC_THEAD_SHORT.

WHEN OTHERS. " Actual contents of report, trdir, or text

CASE LC_DATATYPE.

WHEN MC_TRDIR_SHORT.

FSTR_TRDIR = FTAB_PROGRAM_FILE.

WHEN MC_REPORT_SHORT.

FTAB_PROGRAM_SOURCE = FTAB_PROGRAM_FILE.

APPEND FTAB_PROGRAM_SOURCE.

WHEN MC_TEXT_SHORT.

FTAB_PROGRAM_TEXTS = FTAB_PROGRAM_FILE.

APPEND FTAB_PROGRAM_TEXTS.

WHEN MC_THEAD_SHORT.

FSTR_THEAD = FTAB_PROGRAM_FILE.

WHEN MC_DOC_SHORT.

FTAB_PROGRAM_DOCUMENTATION = FTAB_PROGRAM_FILE.

APPEND FTAB_PROGRAM_DOCUMENTATION.

ENDCASE.

ENDCASE.

ENDLOOP.

ENDFORM. " SPLIT_INCOMING_FILE

----


  • FORM INSERT_NEW_REPORT *

----


  • ........ *

----


  • --> FTAB_PROGRAM_SOURCE *

  • --> FTAB_PROGRAM_TEXTS *

  • --> F_TRDIR *

----


FORM INSERT_NEW_REPORT TABLES FTAB_PROGRAM_SOURCE

STRUCTURE MTAB_PROGRAM_SOURCE

FTAB_PROGRAM_TEXTS

STRUCTURE MTAB_PROGRAM_TEXTS

FTAB_PROGRAM_DOCUMENTATION

STRUCTURE MTAB_PROGRAM_DOCUMENTATION

USING FSTR_TRDIR LIKE TRDIR

FSTR_THEAD LIKE MSTR_THEAD.

DATA:

LC_OBJ_NAME LIKE E071-OBJ_NAME,

LC_LINE2(40) TYPE C,

LC_ANSWER(1) TYPE C.

*-- read trdir to see if the report already exists, if it does, prompt

*-- user to overwrite or abort.

SELECT SINGLE * FROM TRDIR WHERE NAME = FSTR_TRDIR-NAME.

IF SY-SUBRC = 0. " Already exists

CONCATENATE 'want to overwrite report'

FSTR_TRDIR-NAME

INTO LC_LINE2 SEPARATED BY SPACE.

CONCATENATE LC_LINE2

'?'

INTO LC_LINE2.

CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

EXPORTING

DEFAULTOPTION = 'N'

TEXTLINE1 = 'The selected report already exists, do you'

TEXTLINE2 = LC_LINE2

TITEL = 'Report already exists'

CANCEL_DISPLAY = SPACE

IMPORTING

ANSWER = LC_ANSWER

EXCEPTIONS

OTHERS = 1.

ELSE.

LC_ANSWER = 'J'.

ENDIF.

IF LC_ANSWER = 'J'.

*-- Create the TADIR entry. (TRDIR entry created by INSERT REPORT)

LC_OBJ_NAME = TRDIR-NAME.

CALL FUNCTION 'TR_TADIR_POPUP_ENTRY_E071'

EXPORTING

WI_E071_PGMID = 'R3TR'

WI_E071_OBJECT = 'PROG'

WI_E071_OBJ_NAME = LC_OBJ_NAME

WI_TADIR_DEVCLASS = '$TMP'

EXCEPTIONS

EXIT = 3

OTHERS = 4.

IF SY-SUBRC = 0.

*-- Create Report

INSERT REPORT FSTR_TRDIR-NAME FROM FTAB_PROGRAM_SOURCE.

*-- Create Texts

INSERT TEXTPOOL FSTR_TRDIR-NAME FROM FTAB_PROGRAM_TEXTS

LANGUAGE SY-LANGU.

*-- Save Documentation

CALL FUNCTION 'DOCU_UPDATE'

EXPORTING

HEAD = FSTR_THEAD

STATE = 'A'

TYP = 'E'

VERSION = '1'

TABLES

LINE = FTAB_PROGRAM_DOCUMENTATION

EXCEPTIONS

OTHERS = 1.

ELSE.

WRITE: / 'Error updating the TADIR entry' COLOR COL_NEGATIVE,

'Program' COLOR COL_NEGATIVE INTENSIFIED OFF,

FSTR_TRDIR-NAME, 'was not loaded into SAP.'

COLOR COL_NEGATIVE INTENSIFIED OFF.

ENDIF.

ELSE.

WRITE: / FSTR_TRDIR-NAME COLOR COL_NEGATIVE,

'was not uploaded into SAP. Action cancelled by user'

COLOR COL_NEGATIVE INTENSIFIED OFF.

ENDIF.

ENDFORM. " INSERT_NEW_REPORT

----


  • FORM GET_NAME *

----


  • ........ *

----


  • --> VALUE(F_FIELD) *

  • --> F_NAME *

----


FORM GET_NAME USING VALUE(F_FIELD)

CHANGING F_NAME.

DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,

LC_PROG LIKE D020S-PROG,

LC_DNUM LIKE D020S-DNUM.

TRANSLATE F_FIELD TO UPPER CASE.

refresh ltab_fields.

LTAB_FIELDS-FIELDNAME = F_FIELD.

append ltab_fields.

LC_PROG = SY-REPID .

LC_DNUM = SY-DYNNR .

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = LC_PROG

DYNUMB = LC_DNUM

TABLES

dynpfields = ltab_fields

EXCEPTIONS

OTHERS = 01.

read table ltab_fields index 1.

IF SY-SUBRC EQ 0.

F_NAME = LTAB_FIELDS-FIELDVALUE.

refresh ltab_fields.

ENDIF.

CALL FUNCTION 'F4_USER'

EXPORTING

OBJECT = F_NAME

IMPORTING

RESULT = F_NAME.

ENDFORM. " GET_NAME

Regards

Divya