*&---------------------------------------------------------------------*
*& Program ID : ZGCMI010002
*& Program Text : Common Include for File IO
*& Overview : Set the common function for file upload and download
*& Created by : J4783/ITE T.Kawashima
*& Creation Date : 2012/03/15
*& Copied from :
*&---------------------------------------------------------------------*
*& Changing Mng No :
*& Updated by : xxxxx/xx xxxx
*& Update Date : YYYY/MM/DD
*& Changed Item Description :
*&---------------------------------------------------------------------*
*& Program ID : ZGCMI010002
*& Program Text : Common Include for File IO
*& Overview : Set the common function for file upload and download
*& Created by : J4783/ITE T.Kawashima
*& Creation Date : 2012/03/15
*& Copied from :
*&---------------------------------------------------------------------*
*& Changing Mng No :
*& Updated by : xxxxx/xx xxxx
*& Update Date : YYYY/MM/DD
*& Changed Item Description :
*&---------------------------------------------------------------------*
************************************************************************
* CONSTANTS
************************************************************************
CONSTANTS:
I_CON_CP_ON(1) TYPE C VALUE 'X', "Over write flag
I_CON_UP_LOC(8) TYPE C VALUE 'P_UP_LOC', "Upload field name
I_CON_UP_SER(8) TYPE C VALUE 'P_UP_SER', "Upload field name
I_CON_CODEPAGE_UTF16LE TYPE ABAP_ENCOD VALUE '4103'. "Codepage UTF-16LE
* CONSTANTS
************************************************************************
CONSTANTS:
I_CON_CP_ON(1) TYPE C VALUE 'X', "Over write flag
I_CON_UP_LOC(8) TYPE C VALUE 'P_UP_LOC', "Upload field name
I_CON_UP_SER(8) TYPE C VALUE 'P_UP_SER', "Upload field name
I_CON_CODEPAGE_UTF16LE TYPE ABAP_ENCOD VALUE '4103'. "Codepage UTF-16LE
*----------------------------------------------------------------------*
* File path definition for upload
* Set TEXT-I02 'File' in each program.
*----------------------------------------------------------------------*
DEFINE FI_UPLOAD_FILE_SELECTION.
* File
SELECTION-SCREEN BEGIN OF BLOCK BK_FILE WITH FRAME. TITLE TEXT-I02.
* Select Server File
PARAMETERS R_UP_SER TYPE ZEG_SVRFLG RADIOBUTTON GROUP GP1 DEFAULT 'X'.
PARAMETERS P_UP_SER TYPE FILENAME-FILEINTERN.
* Select Local File
PARAMETERS R_UP_LOC TYPE ZEG_LCLFLG RADIOBUTTON GROUP GP1.
PARAMETERS P_UP_LOC TYPE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BK_FILE.
* File path definition for upload
* Set TEXT-I02 'File' in each program.
*----------------------------------------------------------------------*
DEFINE FI_UPLOAD_FILE_SELECTION.
* File
SELECTION-SCREEN BEGIN OF BLOCK BK_FILE WITH FRAME. TITLE TEXT-I02.
* Select Server File
PARAMETERS R_UP_SER TYPE ZEG_SVRFLG RADIOBUTTON GROUP GP1 DEFAULT 'X'.
PARAMETERS P_UP_SER TYPE FILENAME-FILEINTERN.
* Select Local File
PARAMETERS R_UP_LOC TYPE ZEG_LCLFLG RADIOBUTTON GROUP GP1.
PARAMETERS P_UP_LOC TYPE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BK_FILE.
END-OF-DEFINITION.
*----------------------------------------------------------------------*
* Set upload local path F4 help
*----------------------------------------------------------------------*
DEFINE FI_UPLOAD_LOCAL_PATH_HELP.
*----------------------------------------------------------------------*
* Set upload local path F4 help
*----------------------------------------------------------------------*
DEFINE FI_UPLOAD_LOCAL_PATH_HELP.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_UP_LOC.
* Set file path help
DATA L_WRK_UP_LOC TYPE STRING.
PERFORM. FI_F4_FILENAME_OPEN CHANGING L_WRK_UP_LOC.
P_UP_LOC = L_WRK_UP_LOC.
* Set file path help
DATA L_WRK_UP_LOC TYPE STRING.
PERFORM. FI_F4_FILENAME_OPEN CHANGING L_WRK_UP_LOC.
P_UP_LOC = L_WRK_UP_LOC.
END-OF-DEFINITION.
************************************************************************
* FORMS *
************************************************************************
*&---------------------------------------------------------------------*
*& Form FI_FILE_PATH_CHECK
*&---------------------------------------------------------------------*
* Upload file path input check
*----------------------------------------------------------------------*
* --> UP_FLAG : Local file path flag
* --> UP_PATH : Path to check
* * *----------------------------------------------------------------------*
FORM. FI_FILE_PATH_CHECK USING VALUE(UP_WRK_FLAG) TYPE C
VALUE(UP_WRK_PATH) TYPE ANY
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
************************************************************************
* FORMS *
************************************************************************
*&---------------------------------------------------------------------*
*& Form FI_FILE_PATH_CHECK
*&---------------------------------------------------------------------*
* Upload file path input check
*----------------------------------------------------------------------*
* --> UP_FLAG : Local file path flag
* --> UP_PATH : Path to check
* * *----------------------------------------------------------------------*
FORM. FI_FILE_PATH_CHECK USING VALUE(UP_WRK_FLAG) TYPE C
VALUE(UP_WRK_PATH) TYPE ANY
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_WRK_PATH TYPE STRING, "file path
L_WRK_EX TYPE C, "result for path check
L_FLG_EMGC(1) TYPE C, "EMERGENCY_FLAG
L_WRK_PHYSICAL(255) TYPE C. "Physical File Name
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
L_WRK_PATH TYPE STRING, "file path
L_WRK_EX TYPE C, "result for path check
L_FLG_EMGC(1) TYPE C, "EMERGENCY_FLAG
L_WRK_PHYSICAL(255) TYPE C. "Physical File Name
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
IF UP_WRK_FLAG = 'X'.
IF UP_WRK_PATH IS INITIAL.
SET CURSOR FIELD I_CON_UP_LOC.
* Set return error flag
CP_WRK_ERR = 'X'.
* Please enter File Path(Local).
MESSAGE E013(ZGCM01) WITH SPACE INTO CP_REC_MSG-MSGV1.
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'013'
''
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ELSE.
L_WRK_PATH = UP_WRK_PATH.
* Check File Exist
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE = L_WRK_PATH
RECEIVING
RESULT = L_WRK_EX
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF L_WRK_EX <> 'X'.
SET CURSOR FIELD I_CON_UP_LOC.
* Set return error flag
CP_WRK_ERR = 'X'.
* File was not found(local).
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'014'
''
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
ENDIF.
ELSEIF UP_WRK_FLAG = SPACE.
IF UP_WRK_PATH IS INITIAL.
SET CURSOR FIELD I_CON_UP_SER.
* Set return error flag
CP_WRK_ERR = 'X'.
* Please enter File Path(Sever).
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'015'
''
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ELSE.
* Assign the Physical File Name Using a Logical File Name
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
CLIENT = SY-MANDT
LOGICAL_FILENAME = UP_WRK_PATH
IMPORTING
EMERGENCY_FLAG = L_FLG_EMGC
FILE_NAME = L_WRK_PHYSICAL
EXCEPTIONS
FILE_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0
AND L_FLG_EMGC IS INITIAL.
* OPEN FILE TO READ
OPEN DATASET L_WRK_PHYSICAL FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC = 0.
* CLOSE FILE
CLOSE DATASET L_WRK_PHYSICAL.
ELSE.
SET CURSOR FIELD I_CON_UP_SER.
* Set return error flag
CP_WRK_ERR = 'X'.
* File was not found(sever).
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'016'
''
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
ELSE.
* Set return error flag
CP_WRK_ERR = 'X'.
* &1 does not exist
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'026'
UP_WRK_PATH
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ENDIF.
ENDIF.
IF UP_WRK_PATH IS INITIAL.
SET CURSOR FIELD I_CON_UP_LOC.
* Set return error flag
CP_WRK_ERR = 'X'.
* Please enter File Path(Local).
MESSAGE E013(ZGCM01) WITH SPACE INTO CP_REC_MSG-MSGV1.
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'013'
''
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ELSE.
L_WRK_PATH = UP_WRK_PATH.
* Check File Exist
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE = L_WRK_PATH
RECEIVING
RESULT = L_WRK_EX
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF L_WRK_EX <> 'X'.
SET CURSOR FIELD I_CON_UP_LOC.
* Set return error flag
CP_WRK_ERR = 'X'.
* File was not found(local).
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'014'
''
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
ENDIF.
ELSEIF UP_WRK_FLAG = SPACE.
IF UP_WRK_PATH IS INITIAL.
SET CURSOR FIELD I_CON_UP_SER.
* Set return error flag
CP_WRK_ERR = 'X'.
* Please enter File Path(Sever).
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'015'
''
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ELSE.
* Assign the Physical File Name Using a Logical File Name
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
CLIENT = SY-MANDT
LOGICAL_FILENAME = UP_WRK_PATH
IMPORTING
EMERGENCY_FLAG = L_FLG_EMGC
FILE_NAME = L_WRK_PHYSICAL
EXCEPTIONS
FILE_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0
AND L_FLG_EMGC IS INITIAL.
* OPEN FILE TO READ
OPEN DATASET L_WRK_PHYSICAL FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC = 0.
* CLOSE FILE
CLOSE DATASET L_WRK_PHYSICAL.
ELSE.
SET CURSOR FIELD I_CON_UP_SER.
* Set return error flag
CP_WRK_ERR = 'X'.
* File was not found(sever).
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'016'
''
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
ELSE.
* Set return error flag
CP_WRK_ERR = 'X'.
* &1 does not exist
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'026'
UP_WRK_PATH
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "FI_FILE_PATH_CHECK
*&---------------------------------------------------------------------*
*& Form FI_UPLOAD_LOCAL_FILE
*&---------------------------------------------------------------------*
* Upload file from local
*----------------------------------------------------------------------*
* --> UP_PATH : Local file path
* --> UP_TYPE : File Type (ASC or BIN)
* --> UP_CODEPAGE : Codepage
* --> UP_SEPARATE : Columns Separated by Tabs in Case of ASCII Upload
* * * *----------------------------------------------------------------------*
FORM. FI_UPLOAD_LOCAL_FILE TABLES TP_DATA
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_TYPE) TYPE CHAR10
VALUE(UP_WRK_CODEPAGE) TYPE CHAR20
VALUE(UP_WRK_SEPARATE) TYPE C
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
*&---------------------------------------------------------------------*
*& Form FI_UPLOAD_LOCAL_FILE
*&---------------------------------------------------------------------*
* Upload file from local
*----------------------------------------------------------------------*
* --> UP_PATH : Local file path
* --> UP_TYPE : File Type (ASC or BIN)
* --> UP_CODEPAGE : Codepage
* --> UP_SEPARATE : Columns Separated by Tabs in Case of ASCII Upload
* * * *----------------------------------------------------------------------*
FORM. FI_UPLOAD_LOCAL_FILE TABLES TP_DATA
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_TYPE) TYPE CHAR10
VALUE(UP_WRK_CODEPAGE) TYPE CHAR20
VALUE(UP_WRK_SEPARATE) TYPE C
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_WRK_PATH TYPE STRING. "file path
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
REFRESH:
TP_DATA.
L_WRK_PATH TYPE STRING. "file path
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
REFRESH:
TP_DATA.
L_WRK_PATH = UP_WRK_PATH.
* Upload for Data Provider
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_WRK_PATH
FILETYPE = UP_WRK_TYPE
CODEPAGE = UP_WRK_CODEPAGE
HAS_FIELD_SEPARATOR = UP_WRK_SEPARATE
TABLES
DATA_TAB = TP_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.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File upload failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'027'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_WRK_PATH
FILETYPE = UP_WRK_TYPE
CODEPAGE = UP_WRK_CODEPAGE
HAS_FIELD_SEPARATOR = UP_WRK_SEPARATE
TABLES
DATA_TAB = TP_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.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File upload failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'027'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ENDFORM. "FI_UPLOAD_LOCAL_FILE
*&---------------------------------------------------------------------*
*& Form FI_UPLOAD_SERVER_FILE
*&---------------------------------------------------------------------*
* Upload file from server
*----------------------------------------------------------------------*
* --> UP_PATH : Server physical file path
* --> UP_UNICODE : Unicode flag
* --> UP_CODEPAGE : Codepage
* * * *----------------------------------------------------------------------*
FORM. FI_UPLOAD_SERVER_FILE TABLES TP_DATA
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_UNICODE) TYPE C
VALUE(UP_WRK_CODEPAGE) TYPE C
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
*&---------------------------------------------------------------------*
*& Form FI_UPLOAD_SERVER_FILE
*&---------------------------------------------------------------------*
* Upload file from server
*----------------------------------------------------------------------*
* --> UP_PATH : Server physical file path
* --> UP_UNICODE : Unicode flag
* --> UP_CODEPAGE : Codepage
* * * *----------------------------------------------------------------------*
FORM. FI_UPLOAD_SERVER_FILE TABLES TP_DATA
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_UNICODE) TYPE C
VALUE(UP_WRK_CODEPAGE) TYPE C
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_REC_DATA TYPE STRING. "file data
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
REFRESH:
TP_DATA.
L_REC_DATA TYPE STRING. "file data
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
REFRESH:
TP_DATA.
CATCH SYSTEM-EXCEPTIONS CONVERSION_ERRORS = 1
THERS = 2.
THERS = 2.
* Open sever file for read
IF UP_WRK_UNICODE = 'X'.
OPEN DATASET UP_WRK_PATH FOR INPUT IN TEXT MODE ENCODING UTF-8 SKIPPING BYTE-ORDER MARK.
ELSE.
* NON-UNICODE
IF UP_WRK_CODEPAGE = SPACE.
OPEN DATASET UP_WRK_PATH FOR INPUT IN TEXT MODE ENCODING NON-UNICODE .
ELSE.
OPEN DATASET UP_WRK_PATH FOR INPUT IN LEGACY TEXT MODE CODE PAGE UP_WRK_CODEPAGE.
ENDIF.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File upload failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'027'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
IF UP_WRK_UNICODE = 'X'.
OPEN DATASET UP_WRK_PATH FOR INPUT IN TEXT MODE ENCODING UTF-8 SKIPPING BYTE-ORDER MARK.
ELSE.
* NON-UNICODE
IF UP_WRK_CODEPAGE = SPACE.
OPEN DATASET UP_WRK_PATH FOR INPUT IN TEXT MODE ENCODING NON-UNICODE .
ELSE.
OPEN DATASET UP_WRK_PATH FOR INPUT IN LEGACY TEXT MODE CODE PAGE UP_WRK_CODEPAGE.
ENDIF.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File upload failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'027'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
DO.
CLEAR: L_REC_DATA.
* Read sever file
READ DATASET UP_WRK_PATH INTO L_REC_DATA.
IF SY-SUBRC <> 0.
EXIT.
ELSE.
APPEND L_REC_DATA TO TP_DATA.
ENDIF.
ENDDO.
CLEAR: L_REC_DATA.
* Read sever file
READ DATASET UP_WRK_PATH INTO L_REC_DATA.
IF SY-SUBRC <> 0.
EXIT.
ELSE.
APPEND L_REC_DATA TO TP_DATA.
ENDIF.
ENDDO.
ENDCATCH.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File upload failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'027'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File upload failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'027'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
* Close sever file
CLOSE DATASET UP_WRK_PATH.
CLOSE DATASET UP_WRK_PATH.
ENDFORM. "FI_UPLOAD_SERVER_FILE
*&---------------------------------------------------------------------*
*& Form FI_GET_PHYS_PATH
*&---------------------------------------------------------------------*
* GET PHYSICAL FILE PATH
*----------------------------------------------------------------------*
* --> UP_LOGICAL : Logical path
* * * *----------------------------------------------------------------------*
FORM. FI_GET_PHYS_PATH USING VALUE(UP_WRK_LOGICAL) TYPE FILENAME-FILEINTERN
CHANGING VALUE(CP_WRK_PHYSICAL) TYPE C
VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
*&---------------------------------------------------------------------*
*& Form FI_GET_PHYS_PATH
*&---------------------------------------------------------------------*
* GET PHYSICAL FILE PATH
*----------------------------------------------------------------------*
* --> UP_LOGICAL : Logical path
* * * *----------------------------------------------------------------------*
FORM. FI_GET_PHYS_PATH USING VALUE(UP_WRK_LOGICAL) TYPE FILENAME-FILEINTERN
CHANGING VALUE(CP_WRK_PHYSICAL) TYPE C
VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_FLG_EMGC(1) TYPE C.
CLEAR:
CP_WRK_PHYSICAL,
CP_WRK_ERR,
CP_REC_MSG.
L_FLG_EMGC(1) TYPE C.
CLEAR:
CP_WRK_PHYSICAL,
CP_WRK_ERR,
CP_REC_MSG.
* Assign the Physical File Name Using a Logical File Name
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
CLIENT = SY-MANDT
LOGICAL_FILENAME = UP_WRK_LOGICAL
IMPORTING
EMERGENCY_FLAG = L_FLG_EMGC
FILE_NAME = CP_WRK_PHYSICAL
EXCEPTIONS
FILE_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0 OR L_FLG_EMGC IS NOT INITIAL.
* Set error flag
CP_WRK_ERR = 'X'.
* &1 does not exist
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'026'
UP_WRK_LOGICAL
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
CLIENT = SY-MANDT
LOGICAL_FILENAME = UP_WRK_LOGICAL
IMPORTING
EMERGENCY_FLAG = L_FLG_EMGC
FILE_NAME = CP_WRK_PHYSICAL
EXCEPTIONS
FILE_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0 OR L_FLG_EMGC IS NOT INITIAL.
* Set error flag
CP_WRK_ERR = 'X'.
* &1 does not exist
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'026'
UP_WRK_LOGICAL
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ENDFORM. "FI_GET_PHYS_PATH
*&---------------------------------------------------------------------*
*& Form FI_DOWNLOAD_LOCAL_FILE
*&---------------------------------------------------------------------*
* LOCAL FILE DOWNLOAD
*----------------------------------------------------------------------*
* --> UP_PATH : Local file path
* --> UP_TYPE : File Type
* --> UP_APPEND : APPEND
* --> UP_SEPARATE : WRITE_FIELD_SEPARATOR
* --> UP_CODEPAGE : CODEPAGE
* * * *----------------------------------------------------------------------*
FORM. FI_DOWNLOAD_LOCAL_FILE TABLES TP_DWTAB
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_TYPE) TYPE CHAR10
VALUE(UP_WRK_APPEND) TYPE C
VALUE(UP_WRK_SEPARATE) TYPE C
VALUE(UP_WRK_CODEPAGE) TYPE CPCODEPAGE
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
*&---------------------------------------------------------------------*
*& Form FI_DOWNLOAD_LOCAL_FILE
*&---------------------------------------------------------------------*
* LOCAL FILE DOWNLOAD
*----------------------------------------------------------------------*
* --> UP_PATH : Local file path
* --> UP_TYPE : File Type
* --> UP_APPEND : APPEND
* --> UP_SEPARATE : WRITE_FIELD_SEPARATOR
* --> UP_CODEPAGE : CODEPAGE
* * * *----------------------------------------------------------------------*
FORM. FI_DOWNLOAD_LOCAL_FILE TABLES TP_DWTAB
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_TYPE) TYPE CHAR10
VALUE(UP_WRK_APPEND) TYPE C
VALUE(UP_WRK_SEPARATE) TYPE C
VALUE(UP_WRK_CODEPAGE) TYPE CPCODEPAGE
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_WRK_FILENAME TYPE STRING, "File name
L_WRK_WRITE_BOM TYPE ABAP_BOOL, "Byte Order Mark
L_WRK_CODEPAGE TYPE ABAP_ENCOD. "Codepage
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
L_WRK_FILENAME TYPE STRING, "File name
L_WRK_WRITE_BOM TYPE ABAP_BOOL, "Byte Order Mark
L_WRK_CODEPAGE TYPE ABAP_ENCOD. "Codepage
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
L_WRK_FILENAME = UP_WRK_PATH. "File name
IF UP_WRK_CODEPAGE IS NOT INITIAL.
SELECT SINGLE CPCODEPAGE
INTO L_WRK_CODEPAGE
FROM TCP00
WHERE CPCODEPAGE = UP_WRK_CODEPAGE.
ENDIF.
IF L_WRK_CODEPAGE IS INITIAL.
L_WRK_CODEPAGE = I_CON_CODEPAGE_UTF16LE.
L_WRK_WRITE_BOM = 'X'.
ENDIF.
SELECT SINGLE CPCODEPAGE
INTO L_WRK_CODEPAGE
FROM TCP00
WHERE CPCODEPAGE = UP_WRK_CODEPAGE.
ENDIF.
IF L_WRK_CODEPAGE IS INITIAL.
L_WRK_CODEPAGE = I_CON_CODEPAGE_UTF16LE.
L_WRK_WRITE_BOM = 'X'.
ENDIF.
* Download an Internal Table to the PC
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_WRK_FILENAME
FILETYPE = UP_WRK_TYPE
APPEND = UP_WRK_APPEND
WRITE_FIELD_SEPARATOR = UP_WRK_SEPARATE
TRUNC_TRAILING_BLANKS = 'X'
CODEPAGE = L_WRK_CODEPAGE
WRITE_BOM = L_WRK_WRITE_BOM
TABLES
DATA_TAB = TP_DWTAB
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_WRK_FILENAME
FILETYPE = UP_WRK_TYPE
APPEND = UP_WRK_APPEND
WRITE_FIELD_SEPARATOR = UP_WRK_SEPARATE
TRUNC_TRAILING_BLANKS = 'X'
CODEPAGE = L_WRK_CODEPAGE
WRITE_BOM = L_WRK_WRITE_BOM
TABLES
DATA_TAB = TP_DWTAB
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ENDFORM. " FI_DOWNLOAD_LOCAL_FILE
*&---------------------------------------------------------------------*
*& Form FI_DOWNLOAD_SERVER_FILE
*&---------------------------------------------------------------------*
* SERVER FILE DOWNLOAD
*----------------------------------------------------------------------*
* --> UP_PATH : Server logical file path
* --> UP_UNICODE : Unicode flag
* --> UP_CODEPAGE : Codepage
* * * *----------------------------------------------------------------------*
FORM. FI_DOWNLOAD_SERVER_FILE TABLES TP_DWTAB
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_UNICODE) TYPE C
VALUE(UP_WRK_CODEPAGE) TYPE CPCODEPAGE
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
*& Form FI_DOWNLOAD_SERVER_FILE
*&---------------------------------------------------------------------*
* SERVER FILE DOWNLOAD
*----------------------------------------------------------------------*
* --> UP_PATH : Server logical file path
* --> UP_UNICODE : Unicode flag
* --> UP_CODEPAGE : Codepage
* * * *----------------------------------------------------------------------*
FORM. FI_DOWNLOAD_SERVER_FILE TABLES TP_DWTAB
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_UNICODE) TYPE C
VALUE(UP_WRK_CODEPAGE) TYPE CPCODEPAGE
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_REC_LINE TYPE STRING.
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
L_REC_LINE TYPE STRING.
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
CATCH SYSTEM-EXCEPTIONS CONVERSION_ERRORS = 1
THERS = 2.
THERS = 2.
* Open sever file for read
IF UP_WRK_UNICODE = 'X'.
* UNICODE
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
ELSE.
* NON-UNICODE
IF UP_WRK_CODEPAGE = SPACE.
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE .
ELSE.
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN LEGACY TEXT MODE CODE PAGE UP_WRK_CODEPAGE.
ENDIF.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
IF UP_WRK_UNICODE = 'X'.
* UNICODE
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
ELSE.
* NON-UNICODE
IF UP_WRK_CODEPAGE = SPACE.
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE .
ELSE.
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN LEGACY TEXT MODE CODE PAGE UP_WRK_CODEPAGE.
ENDIF.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
LOOP AT TP_DWTAB INTO L_REC_LINE.
* Transfer sever file
TRANSFER L_REC_LINE TO UP_WRK_PATH.
IF SY-SUBRC <> 0.
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
ENDLOOP.
* Transfer sever file
TRANSFER L_REC_LINE TO UP_WRK_PATH.
IF SY-SUBRC <> 0.
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
ENDLOOP.
ENDCATCH.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
* Close sever file
CLOSE DATASET UP_WRK_PATH.
CLOSE DATASET UP_WRK_PATH.
ENDFORM. " FI_DOWNLOAD_SERVER_FILE
*&---------------------------------------------------------------------*
*& Form FI_DOWNLOAD_SERVER_FILE_FIX
*&---------------------------------------------------------------------*
* SERVER FILE DOWNLOAD (FIX LENGTH)
*----------------------------------------------------------------------*
* --> TP_DATA : Server file content
* --> UP_PATH : Server logical file path
* --> UP_UNICODE : Unicode flag
* --> UP_CODEPAGE : Codepage
* * *----------------------------------------------------------------------*
FORM. FI_DOWNLOAD_SERVER_FILE_FIX TABLES TP_DWTAB
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_UNICODE) TYPE C
VALUE(UP_WRK_CODEPAGE) TYPE CPCODEPAGE
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
*& Form FI_DOWNLOAD_SERVER_FILE_FIX
*&---------------------------------------------------------------------*
* SERVER FILE DOWNLOAD (FIX LENGTH)
*----------------------------------------------------------------------*
* --> TP_DATA : Server file content
* --> UP_PATH : Server logical file path
* --> UP_UNICODE : Unicode flag
* --> UP_CODEPAGE : Codepage
* * *----------------------------------------------------------------------*
FORM. FI_DOWNLOAD_SERVER_FILE_FIX TABLES TP_DWTAB
USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_UNICODE) TYPE C
VALUE(UP_WRK_CODEPAGE) TYPE CPCODEPAGE
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_WRK_LEN TYPE I.
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
L_WRK_LEN TYPE I.
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
CATCH SYSTEM-EXCEPTIONS CONVERSION_ERRORS = 1
THERS = 2.
THERS = 2.
* Open sever file for read
IF UP_WRK_UNICODE = 'X'.
* UNICODE
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
ELSE.
* NON-UNICODE
IF UP_WRK_CODEPAGE = SPACE.
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE .
ELSE.
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN LEGACY TEXT MODE CODE PAGE UP_WRK_CODEPAGE.
ENDIF.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
IF UP_WRK_UNICODE = 'X'.
* UNICODE
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
ELSE.
* NON-UNICODE
IF UP_WRK_CODEPAGE = SPACE.
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE .
ELSE.
OPEN DATASET UP_WRK_PATH FOR OUTPUT IN LEGACY TEXT MODE CODE PAGE UP_WRK_CODEPAGE.
ENDIF.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
LOOP AT TP_DWTAB.
IF L_WRK_LEN IS INITIAL.
DESCRIBE FIELD TP_DWTAB LENGTH L_WRK_LEN IN CHARACTER MODE.
ENDIF.
IF L_WRK_LEN IS INITIAL.
DESCRIBE FIELD TP_DWTAB LENGTH L_WRK_LEN IN CHARACTER MODE.
ENDIF.
* Transfer sever file
TRANSFER TP_DWTAB TO UP_WRK_PATH LENGTH L_WRK_LEN.
IF SY-SUBRC <> 0.
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
ENDLOOP.
TRANSFER TP_DWTAB TO UP_WRK_PATH LENGTH L_WRK_LEN.
IF SY-SUBRC <> 0.
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
ENDLOOP.
ENDCATCH.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
IF SY-SUBRC <> 0.
* Set return error flag
CP_WRK_ERR = 'X'.
* File download failed (Return code = &1)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'028'
SY-SUBRC
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
* Close sever file
CLOSE DATASET UP_WRK_PATH.
CLOSE DATASET UP_WRK_PATH.
ENDFORM. " FI_DOWNLOAD_SERVER_FILE_FIX
*&---------------------------------------------------------------------*
*& Form FI_EDIT_DOUBLE_QUOTE_DATA
*&---------------------------------------------------------------------*
* To edit double quotation which was created by Microsoft Excel
*----------------------------------------------------------------------*
* *----------------------------------------------------------------------*
FORM. FI_EDIT_DOUBLE_QUOTE_DATA TABLES TP_TAB.
*& Form FI_EDIT_DOUBLE_QUOTE_DATA
*&---------------------------------------------------------------------*
* To edit double quotation which was created by Microsoft Excel
*----------------------------------------------------------------------*
* *----------------------------------------------------------------------*
FORM. FI_EDIT_DOUBLE_QUOTE_DATA TABLES TP_TAB.
CONSTANTS:
L_CON_SIGN(1) TYPE C VALUE '"',
L_CON_DOUBLE(2) TYPE C VALUE '""'.
L_CON_SIGN(1) TYPE C VALUE '"',
L_CON_DOUBLE(2) TYPE C VALUE '""'.
DATA:
L_REC_DATA TYPE STRING,
L_FLG_EXIT TYPE C,
L_FLG_TAB TYPE C,
L_WRK_FIELD TYPE STRING,
L_REC_RESULT TYPE STRING,
L_TAB_RESULT TYPE STANDARD TABLE OF STRING.
L_REC_DATA TYPE STRING,
L_FLG_EXIT TYPE C,
L_FLG_TAB TYPE C,
L_WRK_FIELD TYPE STRING,
L_REC_RESULT TYPE STRING,
L_TAB_RESULT TYPE STANDARD TABLE OF STRING.
LOOP AT TP_TAB INTO L_REC_DATA.
CLEAR L_FLG_TAB.
L_REC_RESULT = L_REC_DATA.
IF L_REC_RESULT IS NOT INITIAL.
SHIFT L_REC_RESULT BY 1 PLACES RIGHT CIRCULAR.
IF L_REC_RESULT(1) = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
L_FLG_TAB = 'X'.
ENDIF.
ENDIF.
L_REC_RESULT = L_REC_DATA.
IF L_REC_RESULT IS NOT INITIAL.
SHIFT L_REC_RESULT BY 1 PLACES RIGHT CIRCULAR.
IF L_REC_RESULT(1) = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
L_FLG_TAB = 'X'.
ENDIF.
ENDIF.
CLEAR: L_REC_RESULT, L_FLG_EXIT.
DO.
* Check the exit flag
IF L_FLG_EXIT = 'X'.
EXIT.
ENDIF.
* Check the exit flag
IF L_FLG_EXIT = 'X'.
EXIT.
ENDIF.
* Get one item
SPLIT L_REC_DATA
AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
INTO L_WRK_FIELD L_REC_DATA.
SPLIT L_REC_DATA
AT CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
INTO L_WRK_FIELD L_REC_DATA.
* If the remained data is initial then exit at next loop
IF L_REC_DATA IS INITIAL.
L_FLG_EXIT = 'X'.
ENDIF.
IF L_REC_DATA IS INITIAL.
L_FLG_EXIT = 'X'.
ENDIF.
* If the first character is double quotation
IF L_WRK_FIELD IS NOT INITIAL AND L_WRK_FIELD(1) = L_CON_SIGN.
IF L_WRK_FIELD IS NOT INITIAL AND L_WRK_FIELD(1) = L_CON_SIGN.
* Delete the first and the last double quotation
SHIFT L_WRK_FIELD BY 1 PLACES LEFT.
SHIFT L_WRK_FIELD BY 1 PLACES RIGHT CIRCULAR.
SHIFT L_WRK_FIELD BY 1 PLACES LEFT.
SHIFT L_WRK_FIELD BY 1 PLACES LEFT.
SHIFT L_WRK_FIELD BY 1 PLACES RIGHT CIRCULAR.
SHIFT L_WRK_FIELD BY 1 PLACES LEFT.
* Replace continuous two double qoutations by one double quotation
REPLACE ALL OCCURRENCES OF L_CON_DOUBLE IN L_WRK_FIELD WITH L_CON_SIGN.
CONDENSE L_WRK_FIELD.
ENDIF.
REPLACE ALL OCCURRENCES OF L_CON_DOUBLE IN L_WRK_FIELD WITH L_CON_SIGN.
CONDENSE L_WRK_FIELD.
ENDIF.
* Set the edited data to record
IF SY-INDEX = 1.
L_REC_RESULT = L_WRK_FIELD.
ELSE.
CONCATENATE L_REC_RESULT L_WRK_FIELD
INTO L_REC_RESULT
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
ENDIF.
ENDDO.
IF SY-INDEX = 1.
L_REC_RESULT = L_WRK_FIELD.
ELSE.
CONCATENATE L_REC_RESULT L_WRK_FIELD
INTO L_REC_RESULT
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
ENDIF.
ENDDO.
IF L_FLG_TAB = 'X'.
CLEAR L_WRK_FIELD.
CONCATENATE L_REC_RESULT L_WRK_FIELD
INTO L_REC_RESULT
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
ENDIF.
CLEAR L_WRK_FIELD.
CONCATENATE L_REC_RESULT L_WRK_FIELD
INTO L_REC_RESULT
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
ENDIF.
* Set the edited data to internal table
APPEND L_REC_RESULT TO L_TAB_RESULT.
ENDLOOP.
APPEND L_REC_RESULT TO L_TAB_RESULT.
ENDLOOP.
* Return the result
REFRESH: TP_TAB.
TP_TAB[] = L_TAB_RESULT[].
REFRESH: TP_TAB.
TP_TAB[] = L_TAB_RESULT[].
ENDFORM. "FI_EDIT_DOUBLE_QUOTE_DATA
*----------------------------------------------------------------------*
* Directory path definition for download
*----------------------------------------------------------------------*
* Set TEXT-I02 'File' in each program.
*----------------------------------------------------------------------*
DEFINE FI_DOWNLOAD_DIR_SELECTION.
* File
SELECTION-SCREEN BEGIN OF BLOCK BK_DLPATH WITH FRAME. TITLE TEXT-I02.
* Select Server File
PARAMETERS R_DP_SER TYPE ZEG_SVRFLG RADIOBUTTON GROUP GP2 DEFAULT 'X'.
PARAMETERS P_DP_SER TYPE FILENAME-PATHINTERN.
* Select Local File
PARAMETERS R_DP_LOC TYPE ZEG_LCLFLG RADIOBUTTON GROUP GP2.
PARAMETERS P_DP_LOC TYPE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BK_DLPATH.
* Directory path definition for download
*----------------------------------------------------------------------*
* Set TEXT-I02 'File' in each program.
*----------------------------------------------------------------------*
DEFINE FI_DOWNLOAD_DIR_SELECTION.
* File
SELECTION-SCREEN BEGIN OF BLOCK BK_DLPATH WITH FRAME. TITLE TEXT-I02.
* Select Server File
PARAMETERS R_DP_SER TYPE ZEG_SVRFLG RADIOBUTTON GROUP GP2 DEFAULT 'X'.
PARAMETERS P_DP_SER TYPE FILENAME-PATHINTERN.
* Select Local File
PARAMETERS R_DP_LOC TYPE ZEG_LCLFLG RADIOBUTTON GROUP GP2.
PARAMETERS P_DP_LOC TYPE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BK_DLPATH.
END-OF-DEFINITION.
*&---------------------------------------------------------------------*
*& Form FI_LOCAL_DIR_HELP
*&---------------------------------------------------------------------*
* Set local path help
*----------------------------------------------------------------------*
* *----------------------------------------------------------------------*
FORM. FI_LOCAL_DIR_HELP CHANGING VALUE(CP_PT_LOC) TYPE ANY.
*& Form FI_LOCAL_DIR_HELP
*&---------------------------------------------------------------------*
* Set local path help
*----------------------------------------------------------------------*
* *----------------------------------------------------------------------*
FORM. FI_LOCAL_DIR_HELP CHANGING VALUE(CP_PT_LOC) TYPE ANY.
DATA:
L_WRK_PATH TYPE STRING.
L_WRK_PATH TYPE STRING.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE
CHANGING
SELECTED_FOLDER = L_WRK_PATH.
CHANGING
SELECTED_FOLDER = L_WRK_PATH.
CP_PT_LOC = L_WRK_PATH.
ENDFORM. " FI_LOCAL_DIR_HELP
*&---------------------------------------------------------------------*
*& Form FI_DIRECTORY_PATH_CHECK
*&---------------------------------------------------------------------*
* Directory path input check
*----------------------------------------------------------------------*
* -->UP_FLAG Local path flag
* -->UP_PATH Path to check
* * *----------------------------------------------------------------------*
FORM. FI_DIRECTORY_PATH_CHECK USING VALUE(UP_WRK_FLAG) TYPE C
VALUE(UP_WRK_PATH) TYPE ANY
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
*& Form FI_DIRECTORY_PATH_CHECK
*&---------------------------------------------------------------------*
* Directory path input check
*----------------------------------------------------------------------*
* -->UP_FLAG Local path flag
* -->UP_PATH Path to check
* * *----------------------------------------------------------------------*
FORM. FI_DIRECTORY_PATH_CHECK USING VALUE(UP_WRK_FLAG) TYPE C
VALUE(UP_WRK_PATH) TYPE ANY
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_WRK_RESULT(1) TYPE C,
L_WRK_PATH TYPE STRING.
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
L_WRK_RESULT(1) TYPE C,
L_WRK_PATH TYPE STRING.
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
* If the path is blank, set error message and return as error.
IF UP_WRK_PATH IS INITIAL.
CP_WRK_ERR = 'X'.
IF UP_WRK_PATH IS INITIAL.
CP_WRK_ERR = 'X'.
* Server path
IF UP_WRK_FLAG IS INITIAL.
* Please enter Output Path (Server)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'029'
''
''
''
''
CHANGING CP_REC_MSG.
IF UP_WRK_FLAG IS INITIAL.
* Please enter Output Path (Server)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'029'
''
''
''
''
CHANGING CP_REC_MSG.
* Local path
ELSE.
* Please enter Output Path (Local)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'030'
''
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ELSE.
* Please enter Output Path (Local)
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'030'
''
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
RETURN.
ENDIF.
ENDIF.
* Check server path
IF UP_WRK_FLAG IS INITIAL.
SELECT COUNT(*)
FROM FILEPATH
WHERE PATHINTERN = UP_WRK_PATH.
IF UP_WRK_FLAG IS INITIAL.
SELECT COUNT(*)
FROM FILEPATH
WHERE PATHINTERN = UP_WRK_PATH.
IF SY-SUBRC <> 0.
CP_WRK_ERR = 'X'.
* Output Path (Server) does not exist
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'031'
''
''
''
''
CHANGING CP_REC_MSG.
RETURN.
ENDIF.
CP_WRK_ERR = 'X'.
* Output Path (Server) does not exist
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'031'
''
''
''
''
CHANGING CP_REC_MSG.
RETURN.
ENDIF.
* Check local path
ELSE.
L_WRK_PATH = UP_WRK_PATH.
L_WRK_RESULT = CL_GUI_FRONTEND_SERVICES=>DIRECTORY_EXIST( L_WRK_PATH ).
ELSE.
L_WRK_PATH = UP_WRK_PATH.
L_WRK_RESULT = CL_GUI_FRONTEND_SERVICES=>DIRECTORY_EXIST( L_WRK_PATH ).
IF L_WRK_RESULT <> 'X'.
CP_WRK_ERR = 'X'.
* Output Path (Local) does not exist
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'032'
''
''
''
''
CHANGING CP_REC_MSG.
RETURN.
ENDIF.
CP_WRK_ERR = 'X'.
* Output Path (Local) does not exist
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'032'
''
''
''
''
CHANGING CP_REC_MSG.
RETURN.
ENDIF.
ENDIF.
ENDFORM. "FI_DIRECTORY_PATH_CHECK
*&---------------------------------------------------------------------*
*& Form FI_GET_PHYS_DIR_FILEPATH
*&---------------------------------------------------------------------*
* Get physical file path from logical file path & faile name
*----------------------------------------------------------------------*
* --> UP_LOGICAL : Logical path
* --> UP_FILE : File name
* * * *----------------------------------------------------------------------*
FORM. FI_GET_PHYS_DIR_FILEPATH USING VALUE(UP_WRK_LOGICAL) TYPE FILENAME-PATHINTERN
VALUE(UP_WRK_FILE) TYPE ANY
CHANGING VALUE(CP_WRK_PHYSICAL) TYPE ANY
VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
*& Form FI_GET_PHYS_DIR_FILEPATH
*&---------------------------------------------------------------------*
* Get physical file path from logical file path & faile name
*----------------------------------------------------------------------*
* --> UP_LOGICAL : Logical path
* --> UP_FILE : File name
* * * *----------------------------------------------------------------------*
FORM. FI_GET_PHYS_DIR_FILEPATH USING VALUE(UP_WRK_LOGICAL) TYPE FILENAME-PATHINTERN
VALUE(UP_WRK_FILE) TYPE ANY
CHANGING VALUE(CP_WRK_PHYSICAL) TYPE ANY
VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
* get physical file path from logical file path and file name
CALL FUNCTION 'FILE_GET_NAME_USING_PATH'
EXPORTING
CLIENT = SY-MANDT
LOGICAL_PATH = UP_WRK_LOGICAL
FILE_NAME = UP_WRK_FILE
IMPORTING
FILE_NAME_WITH_PATH = CP_WRK_PHYSICAL
EXCEPTIONS
PATH_NOT_FOUND = 1
MISSING_PARAMETER = 2
OPERATING_SYSTEM_NOT_FOUND = 3
FILE_SYSTEM_NOT_FOUND = 4
OTHERS = 5.
CALL FUNCTION 'FILE_GET_NAME_USING_PATH'
EXPORTING
CLIENT = SY-MANDT
LOGICAL_PATH = UP_WRK_LOGICAL
FILE_NAME = UP_WRK_FILE
IMPORTING
FILE_NAME_WITH_PATH = CP_WRK_PHYSICAL
EXCEPTIONS
PATH_NOT_FOUND = 1
MISSING_PARAMETER = 2
OPERATING_SYSTEM_NOT_FOUND = 3
FILE_SYSTEM_NOT_FOUND = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* Set error flag
CP_WRK_ERR = 'X'.
CP_REC_MSG-MSGTY = SY-MSGTY.
CP_REC_MSG-MSGID = SY-MSGID.
CP_REC_MSG-MSGNO = SY-MSGNO.
CP_REC_MSG-MSGV1 = SY-MSGV1.
CP_REC_MSG-MSGV2 = SY-MSGV2.
CP_REC_MSG-MSGV3 = SY-MSGV3.
CP_REC_MSG-MSGV4 = SY-MSGV4.
ENDIF.
* Set error flag
CP_WRK_ERR = 'X'.
CP_REC_MSG-MSGTY = SY-MSGTY.
CP_REC_MSG-MSGID = SY-MSGID.
CP_REC_MSG-MSGNO = SY-MSGNO.
CP_REC_MSG-MSGV1 = SY-MSGV1.
CP_REC_MSG-MSGV2 = SY-MSGV2.
CP_REC_MSG-MSGV3 = SY-MSGV3.
CP_REC_MSG-MSGV4 = SY-MSGV4.
ENDIF.
ENDFORM. " FI_GET_PHYS_DIR_FILEPATH
*&---------------------------------------------------------------------*
*& Form FI_F4_FILENAME_OPEN
*&---------------------------------------------------------------------*
*& Set local path F4 help ( Open File )
*&---------------------------------------------------------------------*
* *"----------------------------------------------------------------------
FORM. FI_F4_FILENAME_OPEN CHANGING VALUE(CP_WRK_FILE) TYPE STRING.
*& Form FI_F4_FILENAME_OPEN
*&---------------------------------------------------------------------*
*& Set local path F4 help ( Open File )
*&---------------------------------------------------------------------*
* *"----------------------------------------------------------------------
FORM. FI_F4_FILENAME_OPEN CHANGING VALUE(CP_WRK_FILE) TYPE STRING.
DATA: L_TAB_FILE TYPE FILETABLE,
L_REC_FILE TYPE FILE_TABLE,
L_WRK_RC TYPE I,
L_REC_DD04V TYPE DD04V,
L_WRK_TITLE TYPE STRING.
L_REC_FILE TYPE FILE_TABLE,
L_WRK_RC TYPE I,
L_REC_DD04V TYPE DD04V,
L_WRK_TITLE TYPE STRING.
CALL FUNCTION 'Z_GCM_DDIF_DTEL_GET'
EXPORTING
I_NAME = 'ZEG_FILEOPEN'
I_LANGU = SY-LANGU
IMPORTING
E_DD04V_WA = L_REC_DD04V
EXCEPTIONS
ILLEGAL_INPUT = 0
OTHERS = 0.
EXPORTING
I_NAME = 'ZEG_FILEOPEN'
I_LANGU = SY-LANGU
IMPORTING
E_DD04V_WA = L_REC_DD04V
EXCEPTIONS
ILLEGAL_INPUT = 0
OTHERS = 0.
L_WRK_TITLE = L_REC_DD04V-SCRTEXT_L.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = L_WRK_TITLE
DEFAULT_FILENAME = CP_WRK_FILE
CHANGING
FILE_TABLE = L_TAB_FILE
RC = L_WRK_RC.
EXPORTING
WINDOW_TITLE = L_WRK_TITLE
DEFAULT_FILENAME = CP_WRK_FILE
CHANGING
FILE_TABLE = L_TAB_FILE
RC = L_WRK_RC.
IF SY-SUBRC <> 0.
ENDIF.
ENDIF.
READ TABLE L_TAB_FILE INTO L_REC_FILE INDEX 1.
CP_WRK_FILE = L_REC_FILE-FILENAME.
CP_WRK_FILE = L_REC_FILE-FILENAME.
ENDFORM. "FI_F4_FILENAME_OPEN
*&---------------------------------------------------------------------*
*& Form FI_F4_FILENAME_SAVE
*&---------------------------------------------------------------------*
*& Set local path F4 help ( Save File )
*&---------------------------------------------------------------------*
* --> UP_FLG_OVERWRITE Over Write Flag
* *"----------------------------------------------------------------------
FORM. FI_F4_FILENAME_SAVE USING VALUE(UP_FLG_OVERWRITE) TYPE ABAP_BOOL
CHANGING VALUE(CP_WRK_FILE) TYPE STRING.
*& Form FI_F4_FILENAME_SAVE
*&---------------------------------------------------------------------*
*& Set local path F4 help ( Save File )
*&---------------------------------------------------------------------*
* --> UP_FLG_OVERWRITE Over Write Flag
* *"----------------------------------------------------------------------
FORM. FI_F4_FILENAME_SAVE USING VALUE(UP_FLG_OVERWRITE) TYPE ABAP_BOOL
CHANGING VALUE(CP_WRK_FILE) TYPE STRING.
DATA:
L_WRK_FILENAME TYPE STRING,
L_WRK_PATH TYPE STRING,
L_WRK_FULLPATH TYPE STRING.
L_WRK_FILENAME TYPE STRING,
L_WRK_PATH TYPE STRING,
L_WRK_FULLPATH TYPE STRING.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = 'Save File' "#EC NOTEXT
DEFAULT_FILE_NAME = CP_WRK_FILE
PROMPT_ON_OVERWRITE = UP_FLG_OVERWRITE
CHANGING
FILENAME = L_WRK_FILENAME
PATH = L_WRK_PATH
FULLPATH = L_WRK_FULLPATH.
EXPORTING
WINDOW_TITLE = 'Save File' "#EC NOTEXT
DEFAULT_FILE_NAME = CP_WRK_FILE
PROMPT_ON_OVERWRITE = UP_FLG_OVERWRITE
CHANGING
FILENAME = L_WRK_FILENAME
PATH = L_WRK_PATH
FULLPATH = L_WRK_FULLPATH.
IF SY-SUBRC <> 0.
ENDIF.
ENDIF.
CP_WRK_FILE = L_WRK_FULLPATH.
ENDFORM. "FI_F4_FILENAME_SAVE
*&---------------------------------------------------------------------*
*& Form FI_APPLICATION_EXECUTE
*&---------------------------------------------------------------------*
*& Execute application file
*&---------------------------------------------------------------------*
* -->UP_APPLI : Application ('NOTEPAD' / 'EXCEL' etc.)
* -->UP_FILE : File (include file path)
* * *----------------------------------------------------------------------*
FORM. FI_APPLICATION_EXECUTE USING VALUE(UP_WRK_APPLI) TYPE STRING
VALUE(UP_WRK_FILE) TYPE STRING
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
*& Form FI_APPLICATION_EXECUTE
*&---------------------------------------------------------------------*
*& Execute application file
*&---------------------------------------------------------------------*
* -->UP_APPLI : Application ('NOTEPAD' / 'EXCEL' etc.)
* -->UP_FILE : File (include file path)
* * *----------------------------------------------------------------------*
FORM. FI_APPLICATION_EXECUTE USING VALUE(UP_WRK_APPLI) TYPE STRING
VALUE(UP_WRK_FILE) TYPE STRING
CHANGING VALUE(CP_WRK_ERR) TYPE C
CP_REC_MSG TYPE SYMSG.
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
IF UP_WRK_APPLI IS INITIAL.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
EXPORTING
DOCUMENT = UP_WRK_FILE
SYNCHRONOUS = 'X'
OPERATION = 'OPEN'
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
BAD_PARAMETER = 3
FILE_NOT_FOUND = 4
PATH_NOT_FOUND = 5
FILE_EXTENSION_UNKNOWN = 6
ERROR_EXECUTE_FAILED = 7
SYNCHRONOUS_FAILED = 8
NOT_SUPPORTED_BY_GUI = 9
OTHERS = 10.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
EXPORTING
DOCUMENT = UP_WRK_FILE
SYNCHRONOUS = 'X'
OPERATION = 'OPEN'
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
BAD_PARAMETER = 3
FILE_NOT_FOUND = 4
PATH_NOT_FOUND = 5
FILE_EXTENSION_UNKNOWN = 6
ERROR_EXECUTE_FAILED = 7
SYNCHRONOUS_FAILED = 8
NOT_SUPPORTED_BY_GUI = 9
OTHERS = 10.
ELSE.
* Add '"' befor and after of UP_FILE
CONCATENATE '"' UP_WRK_FILE '"' INTO UP_WRK_FILE.
* Add '"' befor and after of UP_FILE
CONCATENATE '"' UP_WRK_FILE '"' INTO UP_WRK_FILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
EXPORTING
APPLICATION = UP_WRK_APPLI
PARAMETER = UP_WRK_FILE
SYNCHRONOUS = 'X'
OPERATION = 'OPEN'
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
BAD_PARAMETER = 3
FILE_NOT_FOUND = 4
PATH_NOT_FOUND = 5
FILE_EXTENSION_UNKNOWN = 6
ERROR_EXECUTE_FAILED = 7
SYNCHRONOUS_FAILED = 8
NOT_SUPPORTED_BY_GUI = 9
OTHERS = 10.
ENDIF.
EXPORTING
APPLICATION = UP_WRK_APPLI
PARAMETER = UP_WRK_FILE
SYNCHRONOUS = 'X'
OPERATION = 'OPEN'
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
BAD_PARAMETER = 3
FILE_NOT_FOUND = 4
PATH_NOT_FOUND = 5
FILE_EXTENSION_UNKNOWN = 6
ERROR_EXECUTE_FAILED = 7
SYNCHRONOUS_FAILED = 8
NOT_SUPPORTED_BY_GUI = 9
OTHERS = 10.
ENDIF.
CP_WRK_ERR = SY-SUBRC.
IF SY-SUBRC <> 0.
* Application execute failed
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'017'
''
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
IF SY-SUBRC <> 0.
* Application execute failed
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'017'
''
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ENDFORM. "FI_APPLICATION_EXECUTE
*&---------------------------------------------------------------------*
*& Form FI_MESSAGE_CREATE_FI
*&---------------------------------------------------------------------*
* Common message processing
*----------------------------------------------------------------------*
* --> UP_MSGTY : Message Type
* --> UP_MSGID : Message Class
* --> UP_MSGNO : Message Number
* --> UP_MSGV1 : Message Variable
* --> UP_MSGV2 : Message Variable
* --> UP_MSGV3 : Message Variable
* --> UP_MSGV4 : Message Variable
* *----------------------------------------------------------------------*
FORM. FI_MESSAGE_CREATE_FI USING VALUE(UP_WRK_MSGTY) TYPE SYMSG-MSGTY
VALUE(UP_WRK_MSGID) TYPE SYMSG-MSGID
VALUE(UP_WRK_MSGNO) TYPE SYMSG-MSGNO
VALUE(UP_WRK_MSGV1) TYPE ANY
VALUE(UP_WRK_MSGV2) TYPE ANY
VALUE(UP_WRK_MSGV3) TYPE ANY
VALUE(UP_WRK_MSGV4) TYPE ANY
CHANGING CP_REC_MSG TYPE SYMSG.
*&---------------------------------------------------------------------*
*& Form FI_MESSAGE_CREATE_FI
*&---------------------------------------------------------------------*
* Common message processing
*----------------------------------------------------------------------*
* --> UP_MSGTY : Message Type
* --> UP_MSGID : Message Class
* --> UP_MSGNO : Message Number
* --> UP_MSGV1 : Message Variable
* --> UP_MSGV2 : Message Variable
* --> UP_MSGV3 : Message Variable
* --> UP_MSGV4 : Message Variable
* *----------------------------------------------------------------------*
FORM. FI_MESSAGE_CREATE_FI USING VALUE(UP_WRK_MSGTY) TYPE SYMSG-MSGTY
VALUE(UP_WRK_MSGID) TYPE SYMSG-MSGID
VALUE(UP_WRK_MSGNO) TYPE SYMSG-MSGNO
VALUE(UP_WRK_MSGV1) TYPE ANY
VALUE(UP_WRK_MSGV2) TYPE ANY
VALUE(UP_WRK_MSGV3) TYPE ANY
VALUE(UP_WRK_MSGV4) TYPE ANY
CHANGING CP_REC_MSG TYPE SYMSG.
DATA:
L_WRK_MSG TYPE STRING.
L_WRK_MSG TYPE STRING.
MESSAGE ID UP_WRK_MSGID
TYPE UP_WRK_MSGTY
NUMBER UP_WRK_MSGNO
WITH UP_WRK_MSGV1
UP_WRK_MSGV2
UP_WRK_MSGV3
UP_WRK_MSGV4
INTO L_WRK_MSG.
TYPE UP_WRK_MSGTY
NUMBER UP_WRK_MSGNO
WITH UP_WRK_MSGV1
UP_WRK_MSGV2
UP_WRK_MSGV3
UP_WRK_MSGV4
INTO L_WRK_MSG.
CP_REC_MSG-MSGTY = SY-MSGTY.
CP_REC_MSG-MSGID = SY-MSGID.
CP_REC_MSG-MSGNO = SY-MSGNO.
CP_REC_MSG-MSGV1 = SY-MSGV1.
CP_REC_MSG-MSGV2 = SY-MSGV2.
CP_REC_MSG-MSGV3 = SY-MSGV3.
CP_REC_MSG-MSGV4 = SY-MSGV4.
CP_REC_MSG-MSGID = SY-MSGID.
CP_REC_MSG-MSGNO = SY-MSGNO.
CP_REC_MSG-MSGV1 = SY-MSGV1.
CP_REC_MSG-MSGV2 = SY-MSGV2.
CP_REC_MSG-MSGV3 = SY-MSGV3.
CP_REC_MSG-MSGV4 = SY-MSGV4.
ENDFORM. " FI_MESSAGE_CREATE_FI
************************************************************************
* FORMS *
************************************************************************
*&---------------------------------------------------------------------*
*& Form FI_DL_FILE_PATH_CHECK
*&---------------------------------------------------------------------*
* Local file path check for download
*----------------------------------------------------------------------*
* --> UP_WRK_PATH : Path to check
* --> UP_WRK_MSG : Popup message
* --> UP_WRK_TBTT1: Button1 text
* --> UP_WRK_TBTT2: Button2 text
* --> UP_FLG_CANCEL: Cancel Button Flag
* * *----------------------------------------------------------------------*
FORM. FI_DL_FILE_PATH_CHECK USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_MSG) TYPE STRING
VALUE(UP_WRK_TBTT1) TYPE STRING
VALUE(UP_WRK_TBTT2) TYPE STRING
VALUE(UP_FLG_CANCEL) TYPE C
CHANGING CP_WRK_ERR TYPE C
CP_REC_MSG TYPE SYMSG.
************************************************************************
* FORMS *
************************************************************************
*&---------------------------------------------------------------------*
*& Form FI_DL_FILE_PATH_CHECK
*&---------------------------------------------------------------------*
* Local file path check for download
*----------------------------------------------------------------------*
* --> UP_WRK_PATH : Path to check
* --> UP_WRK_MSG : Popup message
* --> UP_WRK_TBTT1: Button1 text
* --> UP_WRK_TBTT2: Button2 text
* --> UP_FLG_CANCEL: Cancel Button Flag
* * *----------------------------------------------------------------------*
FORM. FI_DL_FILE_PATH_CHECK USING VALUE(UP_WRK_PATH) TYPE ANY
VALUE(UP_WRK_MSG) TYPE STRING
VALUE(UP_WRK_TBTT1) TYPE STRING
VALUE(UP_WRK_TBTT2) TYPE STRING
VALUE(UP_FLG_CANCEL) TYPE C
CHANGING CP_WRK_ERR TYPE C
CP_REC_MSG TYPE SYMSG.
DATA:
L_WRK_PATH TYPE STRING, "file path
L_WRK_NAME TYPE STRING, "file name
L_WRK_ANSWER TYPE C, "Return value
L_WRK_EX TYPE C, "result for path check
L_FLG_EMGC(1) TYPE C, "EMERGENCY_FLAG
L_WRK_PHYSICAL(255) TYPE C. "Physical File Name
L_WRK_PATH TYPE STRING, "file path
L_WRK_NAME TYPE STRING, "file name
L_WRK_ANSWER TYPE C, "Return value
L_WRK_EX TYPE C, "result for path check
L_FLG_EMGC(1) TYPE C, "EMERGENCY_FLAG
L_WRK_PHYSICAL(255) TYPE C. "Physical File Name
CLEAR:
CP_WRK_ERR,
CP_REC_MSG.
CP_WRK_ERR,
CP_REC_MSG.
* Split file and path
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
FULL_NAME = UP_WRK_PATH
IMPORTING
STRIPPED_NAME = L_WRK_NAME
FILE_PATH = L_WRK_PATH
EXCEPTIONS
X_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
CP_WRK_ERR = I_CON_CP_ON.
* Application execute failed
PERFORM. FI_MESSAGE_CREATE_FI USING SY-MSGTY
SY-MSGID
SY-MSGNO
SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
FULL_NAME = UP_WRK_PATH
IMPORTING
STRIPPED_NAME = L_WRK_NAME
FILE_PATH = L_WRK_PATH
EXCEPTIONS
X_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
CP_WRK_ERR = I_CON_CP_ON.
* Application execute failed
PERFORM. FI_MESSAGE_CREATE_FI USING SY-MSGTY
SY-MSGID
SY-MSGNO
SY-MSGV1
SY-MSGV2
SY-MSGV3
SY-MSGV4
CHANGING CP_REC_MSG.
EXIT.
ENDIF.
* Existence Check on the directory
PERFORM. FI_DIRECTORY_PATH_CHECK USING 'X'
L_WRK_PATH
CHANGING CP_WRK_ERR
CP_REC_MSG.
IF CP_WRK_ERR <> SPACE.
EXIT.
ENDIF.
PERFORM. FI_DIRECTORY_PATH_CHECK USING 'X'
L_WRK_PATH
CHANGING CP_WRK_ERR
CP_REC_MSG.
IF CP_WRK_ERR <> SPACE.
EXIT.
ENDIF.
* Overwrite Check on the filename
PERFORM. FI_FILE_PATH_CHECK USING 'X'
UP_WRK_PATH
CHANGING CP_WRK_ERR
CP_REC_MSG.
IF CP_WRK_ERR = 'X'.
CP_WRK_ERR = SPACE.
CLEAR CP_REC_MSG.
ELSE.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = UP_WRK_MSG
TEXT_BUTTON_1 = UP_WRK_TBTT1
TEXT_BUTTON_2 = UP_WRK_TBTT2
DISPLAY_CANCEL_BUTTON = UP_FLG_CANCEL
IMPORTING
ANSWER = L_WRK_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
PERFORM. FI_FILE_PATH_CHECK USING 'X'
UP_WRK_PATH
CHANGING CP_WRK_ERR
CP_REC_MSG.
IF CP_WRK_ERR = 'X'.
CP_WRK_ERR = SPACE.
CLEAR CP_REC_MSG.
ELSE.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = UP_WRK_MSG
TEXT_BUTTON_1 = UP_WRK_TBTT1
TEXT_BUTTON_2 = UP_WRK_TBTT2
DISPLAY_CANCEL_BUTTON = UP_FLG_CANCEL
IMPORTING
ANSWER = L_WRK_ANSWER
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0 AND
( L_WRK_ANSWER = '2' OR "Next pushbutton
L_WRK_ANSWER = 'A' ). "Cancel
CP_WRK_ERR = I_CON_CP_ON.
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'025'
''
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ENDIF.
ENDFORM. "FI_DL_FILE_PATH_CHECK
( L_WRK_ANSWER = '2' OR "Next pushbutton
L_WRK_ANSWER = 'A' ). "Cancel
CP_WRK_ERR = I_CON_CP_ON.
PERFORM. FI_MESSAGE_CREATE_FI USING 'E'
'ZGCM01'
'025'
''
''
''
''
CHANGING CP_REC_MSG.
ENDIF.
ENDIF.
ENDFORM. "FI_DL_FILE_PATH_CHECK
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25688124/viewspace-760722/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25688124/viewspace-760722/