&---------------------------------------------------------------------
*& Report
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT
DATA GT_VBAP TYPE STANDARD TABLE OF VBAP.
DATA GT_VBAP_UP TYPE STANDARD TABLE OF VBAP.
DATA GS_VBELN TYPE VBAP-VBELN.
DATA:
VG_FILENAME TYPE STRING,
VG_PATH TYPE STRING,
VG_FULLPATH TYPE STRING.
DATA:
VG_STRING TYPE XSTRING,
TBL_FILETABLE TYPE FILETABLE,
WG_FILETABLE TYPE FILE_TABLE,
VG_RC TYPE I.
CONSTANTS
CNS_M01 TYPE CHAR3 VALUE ‘M01’.
CONSTANTS
CNS_M02 TYPE CHAR3 VALUE ‘M02’.
SELECT-OPTIONS:
S_VBELN FOR GS_VBELN.
PARAMETERS:
P_RA1 TYPE C RADIOBUTTON GROUP R1 DEFAULT ‘X’,
P_PATH TYPE STRING MODIF ID M01.
PARAMETERS:
P_RA2 TYPE C RADIOBUTTON GROUP R1,
P_UP TYPE STRING MODIF ID M02.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CASE SCREEN-GROUP1.
WHEN CNS_M01.
IF P_RA1 IS INITIAL.
SCREEN-INPUT = 0.
CLEAR: P_PATH.
ENDIF.
WHEN CNS_M02.
IF P_RA2 IS INITIAL.
SCREEN-INPUT = 0.
CLEAR : P_UP.
ENDIF.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
- EXPORTING
- WINDOW_TITLE =
- DEFAULT_EXTENSION =
- DEFAULT_FILE_NAME =
- WITH_ENCODING =
- FILE_FILTER =
- INITIAL_DIRECTORY =
- PROMPT_ON_OVERWRITE = ‘X’
CHANGING
FILENAME = VG_FILENAME
PATH = VG_PATH
FULLPATH = VG_FULLPATH - USER_ACTION =
- FILE_ENCODING =
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
INVALID_DEFAULT_FILE_NAME = 4
OTHERS = 5
.
IF SY-SUBRC = 0.
P_PATH = VG_FULLPATH.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_UP.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
- EXPORTING
-
WINDOW_TITLE =
-
DEFAULT_EXTENSION =
-
DEFAULT_FILENAME =
-
FILE_FILTER =
-
WITH_ENCODING =
-
INITIAL_DIRECTORY =
-
CHANGINGMULTISELECTION =
FILE_TABLE = TBL_FILETABLE
RC = VG_RC -
USER_ACTION =
-
EXCEPTIONSFILE_ENCODING =
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
others = 5
.
IF SY-SUBRC = 0.
READ TABLE TBL_FILETABLE INTO WG_FILETABLE INDEX 1.
P_UP = WG_FILETABLE-FILENAME.
ENDIF.
START-OF-SELECTION.
IF P_PATH IS NOT INITIAL.
SELECT *
FROM VBAP "
INTO TABLE GT_VBAP
WHERE VBELN IN S_VBELN.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
-
BIN_FILESIZE = FILENAME = P_PATH
-
FILETYPE = 'ASC'
-
APPEND = ' '
WRITE_FIELD_SEPARATOR = ‘X’
-
HEADER = '00'
-
TRUNC_TRAILING_BLANKS = ' '
-
WRITE_LF = 'X'
-
COL_SELECT = ' '
-
COL_SELECT_MASK = ' '
-
DAT_MODE = ' '
-
CONFIRM_OVERWRITE = ' '
-
NO_AUTH_CHECK = ' ' CODEPAGE = '8404'
-
IGNORE_CERR = ABAP_TRUE
-
REPLACEMENT = '#'
-
WRITE_BOM = ' '
-
TRUNC_TRAILING_BLANKS_EOL = 'X'
-
WK1_N_FORMAT = ' '
-
WK1_N_SIZE = ' '
-
WK1_T_FORMAT = ' '
-
WK1_T_SIZE = ' '
-
WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
-
SHOW_TRANSFER_STATUS = ABAP_TRUE
-
VIRUS_SCAN_PROFILE = '/SCET/GUI_DOWNLOAD'
-
IMPORTING
-
FILELENGTH = TABLES DATA_TAB = GT_VBAP
-
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC = 19. -
Implement suitable error handling here
ENDIF.ELSE.
CALL FUNCTION ‘GUI_UPLOAD’
EXPORTING
FILENAME = P_UP -
FILETYPE = 'ASC' HAS_FIELD_SEPARATOR = 'X'
-
HEADER_LENGTH = 0
-
READ_BY_LINE = 'X'
-
DAT_MODE = ' '
-
CODEPAGE = ' '
-
IGNORE_CERR = ABAP_TRUE
-
REPLACEMENT = '#'
-
CHECK_BOM = ' '
-
VIRUS_SCAN_PROFILE =
-
NO_AUTH_CHECK = ' '
-
IMPORTING
-
FILELENGTH =
-
HEADER = TABLES DATA_TAB = GT_VBAP_UP
-
CHANGING
-
ISSCANPERFORMED = ' '
-
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 <> 0.
-
Implement suitable error handling here
ENDIF.ENDIF.