下载请求号:
*======================================================================*
* Initial idea and first release by Igor Yaskevitch (IBS), 2003 *
* Enhancements by Sergey Korolev, 2005 (Added F4 value *
* requests, authority checks, TMS function usage) *
*----------------------------------------------------------------------*
* Function : This is a utility tool for downloading binary *
* files of transport request to a Client PC *
*======================================================================*
REPORT YRS_DOWNLOAD_TRANSPORT_REQUEST.
PARAMETERS:
P_REQEST TYPE TRKORR OBLIGATORY,
P_FOLDER(255) TYPE C LOWER CASE, P_SEPR OBLIGATORY.
DATA:
FOLDER TYPE STRING,
RETVAL LIKE TABLE OF DDSHRETVAL WITH HEADER LINE,
FLDVALUE LIKE HELP_INFO-FLDVALUE,
TRANSDIR TYPE TEXT255,
FILENAME(255),
TRFILE(20) TYPE C,
* datatab TYPE TABLE OF text8192 WITH HEADER LINE,
BEGIN OF DATATAB OCCURS 0,
TEXT(8192) TYPE X,
END OF DATATAB,
LEN TYPE I,
FLEN TYPE I.
TYPE-POOLS: SABC, STMS, TRWBO.
INITIALIZATION.
CONCATENATE SY-SYSID 'K*' INTO P_REQEST.
IF SY-OPSYS = 'Windows NT'.
P_SEPR = '\'.
ELSE.
P_SEPR = '/'.
ENDIF.
* CALL FUNCTION 'WSAF_BUILD_SEPARATOR'
* IMPORTING
* separator = p_sepr
* EXCEPTIONS
* separator_not_maintained = 1
* wrong_call = 2
* wsaf_config_not_maintained = 3
* OTHERS = 4.
*
* IF sy-subrc NE 0.
* MESSAGE s001(00)
* WITH
* 'Unable to find out the separator symbol for the system.'(011).
* ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_REQEST.
DATA:
TT_SYSTEM TYPE TABLE OF TMSCSYS WITH HEADER LINE,
ES_SELECTED_REQUEST TYPE TRWBO_REQUEST_HEADER,
ES_SELECTED_TASK TYPE TRWBO_REQUEST_HEADER,
IV_ORGANIZER_TYPE TYPE TRWBO_CALLING_ORGANIZER,
IS_SELECTION TYPE TRWBO_SELECTION.
IV_ORGANIZER_TYPE = 'W'. IS_SELECTION-REQSTATUS = 'R'.
CALL FUNCTION 'TR_PRESENT_REQUESTS_SEL_POPUP'
EXPORTING
IV_ORGANIZER_TYPE = IV_ORGANIZER_TYPE
IS_SELECTION = IS_SELECTION
IMPORTING
ES_SELECTED_REQUEST = ES_SELECTED_REQUEST
ES_SELECTED_TASK = ES_SELECTED_TASK.
P_REQEST = ES_SELECTED_REQUEST-TRKORR.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FOLDER.
DATA: TITLE TYPE STRING.
TITLE = 'Select target folder'(005).
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE
EXPORTING
WINDOW_TITLE = TITLE
CHANGING
SELECTED_FOLDER = FOLDER
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
OTHERS = 3.
CALL FUNCTION 'CONTROL_FLUSH'
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2
OTHERS = 3.
P_FOLDER = FOLDER.
AT SELECTION-SCREEN ON P_REQEST.
DATA: REQUEST_INFO TYPE STMS_WBO_REQUEST,
REQUEST_INFOS TYPE STMS_WBO_REQUESTS.
REFRESH REQUEST_INFOS.
CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_REQUEST'
EXPORTING
IV_REQUEST = P_REQEST
IV_HEADER_ONLY = 'X'
IMPORTING
ET_REQUEST_INFOS = REQUEST_INFOS
EXCEPTIONS
READ_CONFIG_FAILED = 1
TABLE_OF_REQUESTS_IS_EMPTY = 2
SYSTEM_NOT_AVAILABLE = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR REQUEST_INFO.
READ TABLE REQUEST_INFOS INTO REQUEST_INFO INDEX 1.
IF SY-SUBRC NE 0
OR REQUEST_INFO-E070-TRKORR IS INITIAL.
MESSAGE E398(00) WITH 'Request'(006) P_REQEST 'not found'(007).
ELSEIF REQUEST_INFO-E070-TRSTATUS NE 'R'.
MESSAGE E398(00)
WITH 'You must release request'(008)
REQUEST_INFO-E070-TRKORR
'before downloading'(009).
ENDIF.
START-OF-SELECTION.
FOLDER = P_FOLDER.
CONCATENATE P_REQEST+3(7) '.' P_REQEST(3) INTO TRFILE.
CALL FUNCTION 'RSPO_R_SAPGPARAM'
EXPORTING
NAME = 'DIR_TRANS'
IMPORTING
VALUE = TRANSDIR
EXCEPTIONS
ERROR = 0
THERS = 0.
PERFORM. COPY_FILE USING 'cofiles' TRFILE.
TRFILE(1) = 'R'.
PERFORM. COPY_FILE USING 'data' TRFILE.
TRFILE(1) = 'D'.
PERFORM. COPY_FILE USING 'data' TRFILE.
*---------------------------------------------------------------------*
* FORM. copy_file *
*---------------------------------------------------------------------*
* --> SUBDIR * * --> FNAME *
*---------------------------------------------------------------------*
FORM. COPY_FILE USING SUBDIR FNAME.
DATA:
AUTH_FILENAME TYPE AUTHB-FILENAME,
GUI_FILENAME TYPE STRING.
CONCATENATE TRANSDIR SUBDIR FNAME
INTO FILENAME
SEPARATED BY P_SEPR.
REFRESH DATATAB.
CLEAR FLEN.
AUTH_FILENAME = FILENAME.
CALL FUNCTION 'AUTHORITY_CHECK_DATASET'
EXPORTING
ACTIVITY = SABC_ACT_READ
FILENAME = AUTH_FILENAME
EXCEPTIONS
NO_AUTHORITY = 1
ACTIVITY_UNKNOWN = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
FORMAT COLOR COL_NEGATIVE.
WRITE: / 'Read access denied. File'(001),
FILENAME.
FORMAT COLOR OFF. EXIT.
ENDIF.
OPEN DATASET FILENAME FOR INPUT IN BINARY MODE.
IF SY-SUBRC NE 0.
FORMAT COLOR COL_TOTAL.
WRITE: / 'File open error'(010), FILENAME.
FORMAT COLOR OFF. EXIT.
ENDIF.
CLEAR FLEN.
DATA: MLEN TYPE I.
MLEN = 8192.
DO.
CLEAR LEN.
READ DATASET FILENAME INTO DATATAB MAXIMUM LENGTH MLEN LENGTH LEN.
FLEN = FLEN + LEN.
IF LEN > 0. APPEND DATATAB. ENDIF.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET FILENAME.
CONCATENATE P_FOLDER '\' FNAME INTO GUI_FILENAME.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
BIN_FILESIZE = FLEN
FILENAME = GUI_FILENAME
FILETYPE = 'BIN'
CHANGING
DATA_TAB = DATATAB[]
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 = 24.
IF SY-SUBRC = 0.
WRITE: / 'File'(002), FILENAME, 'downloaded. Length'(003), FLEN.
ELSE.
FORMAT COLOR COL_NEGATIVE.
WRITE: / 'File download error. Filename:'(004), FILENAME.
FORMAT COLOR OFF.
ENDIF.
ENDFORM. "copy_file
上传传输号:
*======================================================================*
* Initial idea and first release by Igor Yaskevitch (IBS), 2003 *
* Enhancements by Sergei Korolev, 2005 (added import queue *
* manipulations, authority checking, minor interface improvements) *
*----------------------------------------------------------------------*
* Function : This is a utility tool for uploading binary *
* files of a transport request from a Client PC, *
* adding to an import queue and importing into the *
* system. *
*======================================================================*
REPORT YRS_UPLOAD_TRANSPORT_REQUEST.
TYPE-POOLS: ABAP, SABC, STMS.
CONSTANTS: GC_TP_FILLCLIENT LIKE STPA-COMMAND VALUE 'FILLCLIENT'.
DATA:
LT_REQUEST TYPE STMS_TR_REQUESTS,
LT_TP_MAINTAIN TYPE STMS_TP_MAINTAINS.
DATA:
SL TYPE I,
L_DATAFILE(255) TYPE C,
DATAFILES TYPE I,
RET TYPE I,
ANS TYPE C.
DATA:
ET_REQUEST_INFOS TYPE STMS_WBO_REQUESTS,
REQUEST_INFO TYPE STMS_WBO_REQUEST,
SYSTEM TYPE TMSCSYS-SYSNAM,
REQUEST LIKE E070-TRKORR.
DATA:
FOLDER TYPE STRING,
RETVAL LIKE TABLE OF DDSHRETVAL WITH HEADER LINE,
FLDVALUE LIKE HELP_INFO-FLDVALUE,
TRANSDIR TYPE TEXT255,
FILENAME LIKE AUTHB-FILENAME,
TRFILE(20) TYPE C.
DATA:
BEGIN OF DATATAB OCCURS 0,
BUF(8192) TYPE X,
END OF DATATAB.
DATA: LEN TYPE I,
FLEN TYPE I.
SELECTION-SCREEN COMMENT /1(79) COMM_SEL.
PARAMETERS:
P_COFILE(255) TYPE C LOWER CASE OBLIGATORY.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME. TITLE BL_TITLE.
PARAMETERS:
P_ADDQUE AS CHECKBOX DEFAULT 'X',
P_TARCLI LIKE TMSBUFFER-TARCLI
DEFAULT SY-MANDT
MATCHCODE OBJECT H_T000,
P_SEPR OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B01.
INITIALIZATION.
BL_TITLE = '导入队列参数'(B01).
COMM_SEL = '请选择co-file. 文件名必须以字母''K''开始.'(001).
IF SY-OPSYS = 'Windows NT'.
P_SEPR = '\'.
ELSE.
P_SEPR = '/'.
ENDIF.
** CALL FUNCTION 'WSAF_BUILD_SEPARATOR'
** IMPORTING
** separator = p_sepr
** EXCEPTIONS
** separator_not_maintained = 1
** wrong_call = 2
** wsaf_config_not_maintained = 3
** OTHERS = 4.
* IF sy-subrc NE 0.
* MESSAGE s001(00) WITH 'Unable to find out the separator symbol for the system.'(008).
* ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_COFILE.
DATA:
FILE TYPE FILE_TABLE,
RC TYPE I,
TITLE TYPE STRING,
FILE_TABLE TYPE FILETABLE,
FILE_FILTER TYPE STRING VALUE 'CO-files (K*.*)|K*.*||'.
TITLE = 'Select CO-file'(006).
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = TITLE
FILE_FILTER = FILE_FILTER
CHANGING
FILE_TABLE = FILE_TABLE
RC = RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE FILE_TABLE INTO FILE INDEX 1.
P_COFILE = FILE.
AT SELECTION-SCREEN.
DATA:
FILE TYPE STRING.
SL = STRLEN( P_COFILE ).
IF SL < 11.
MESSAGE E001(00)
WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
ENDIF.
SL = SL - 11.
IF P_COFILE+SL(1) NE 'K'.
MESSAGE E001(00)
WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
ENDIF.
SL = SL + 1.
IF NOT P_COFILE+SL(6) CO '0123456789'.
MESSAGE E001(00)
WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
ENDIF.
SL = SL + 6.
IF P_COFILE+SL(1) NE '.'.
MESSAGE E001(00)
WITH 'Invalid co-file name format. File name format must be KNNNNNNN.SSS'(009).
ENDIF.
SL = SL - 7.
CLEAR DATAFILES.
L_DATAFILE = P_COFILE.
L_DATAFILE+SL(1) = 'R'.
FILE = L_DATAFILE.
IF CL_GUI_FRONTEND_SERVICES=>FILE_EXIST( FILE = FILE ) = 'X'.
ADD 1 TO DATAFILES.
ENDIF.
L_DATAFILE+SL(1) = 'D'.
FILE = L_DATAFILE.
IF CL_GUI_FRONTEND_SERVICES=>FILE_EXIST( FILE = FILE ) = 'X'.
ADD 1 TO DATAFILES.
ENDIF.
SL = SL + 8.
REQUEST = P_COFILE+SL(3).
SL = SL - 8.
CONCATENATE REQUEST P_COFILE+SL(7) INTO REQUEST.
TRANSLATE REQUEST TO UPPER CASE.
IF DATAFILES = 0.
MESSAGE E398(00)
WITH 'Corresponding data-files of transport request'(010)
REQUEST
'not found.'(011).
ELSE.
MESSAGE S398(00)
WITH DATAFILES
'data-files have been found for transport request'(012)
REQUEST.
ENDIF.
START-OF-SELECTION.
DATA:
PARAMETER TYPE SPAR,
PARAMETERS TYPE TABLE OF SPAR.
CALL FUNCTION 'RSPO_R_SAPGPARAM'
EXPORTING
NAME = 'DIR_TRANS'
IMPORTING
VALUE = TRANSDIR
EXCEPTIONS
ERROR = 1
THERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FILENAME = P_COFILE+SL(11).
TRANSLATE FILENAME TO UPPER CASE.
CONCATENATE TRANSDIR 'cofiles' FILENAME
INTO FILENAME
SEPARATED BY P_SEPR.
OPEN DATASET FILENAME FOR INPUT IN BINARY MODE.
RET = SY-SUBRC.
CLOSE DATASET FILENAME.
IF NOT RET = 0.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = 'Copy all files?'(A03)
IMPORTING
ANSWER = ANS
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
ELSE.
PARAMETER-PARAM = 'FILE'.
PARAMETER-VALUE = FILENAME.
APPEND PARAMETER TO PARAMETERS.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TEXT_QUESTION = 'File ''&FILE&'' already exists. Rewrite?'(A04)
IMPORTING
ANSWER = ANS
TABLES
PARAMETER = PARAMETERS
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
ENDIF.
CHECK ANS = '1'.
TRFILE = P_COFILE+SL(11).
TRANSLATE TRFILE TO UPPER CASE.
PERFORM. COPY_FILE USING 'cofiles' TRFILE P_COFILE.
TRFILE(1) = 'R'.
L_DATAFILE+SL(1) = 'R'.
PERFORM. COPY_FILE USING 'data' TRFILE L_DATAFILE.
IF DATAFILES > 1.
TRFILE(1) = 'D'.
L_DATAFILE+SL(1) = 'D'.
PERFORM. COPY_FILE USING 'data' TRFILE L_DATAFILE.
ENDIF.
IF P_ADDQUE = 'X'.
SYSTEM = SY-SYSID.
DO 1 TIMES.
* Check authority to add request to the import queue
CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN'
EXPORTING
IV_ADMINFUNCTION = 'TADD'
EXCEPTIONS
E_NO_AUTHORITY = 1
E_INVALID_USER = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
CALL FUNCTION 'TMS_UI_APPEND_TR_REQUEST'
EXPORTING
IV_SYSTEM = SYSTEM
IV_REQUEST = REQUEST
IV_EXPERT_MODE = 'X'
IV_CTC_ACTIVE = 'X'
EXCEPTIONS
CANCELLED_BY_USER = 1
APPEND_REQUEST_FAILED = 2
OTHERS = 3.
CHECK SY-SUBRC = 0.
CALL FUNCTION 'TMS_MGR_READ_TRANSPORT_REQUEST'
EXPORTING
IV_REQUEST = REQUEST
IV_TARGET_SYSTEM = SYSTEM
IMPORTING
ET_REQUEST_INFOS = ET_REQUEST_INFOS
EXCEPTIONS
READ_CONFIG_FAILED = 1
TABLE_OF_REQUESTS_IS_EMPTY = 2
SYSTEM_NOT_AVAILABLE = 3
OTHERS = 4.
CLEAR REQUEST_INFO.
READ TABLE ET_REQUEST_INFOS INTO REQUEST_INFO INDEX 1.
IF REQUEST_INFO-E070-KORRDEV = 'CUST'
AND NOT P_TARCLI IS INITIAL.
CALL FUNCTION 'TMS_MGR_MAINTAIN_TR_QUEUE'
EXPORTING
IV_COMMAND = GC_TP_FILLCLIENT
IV_SYSTEM = SYSTEM
IV_REQUEST = REQUEST
IV_TARCLI = P_TARCLI
IV_MONITOR = 'X'
IV_VERBOSE = 'X'
IMPORTING
ET_TP_MAINTAINS = LT_TP_MAINTAIN
EXCEPTIONS
READ_CONFIG_FAILED = 1
TABLE_OF_REQUESTS_IS_EMPTY = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
ENDIF.
* Check authority to start request import
CALL FUNCTION 'TR_AUTHORITY_CHECK_ADMIN'
EXPORTING
IV_ADMINFUNCTION = 'IMPS'
EXCEPTIONS
E_NO_AUTHORITY = 1
E_INVALID_USER = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
CALL FUNCTION 'TMS_UI_IMPORT_TR_REQUEST'
EXPORTING
IV_SYSTEM = SYSTEM
IV_REQUEST = REQUEST
IV_TARCLI = P_TARCLI
IV_SOME_ACTIVE = SPACE
EXCEPTIONS
CANCELLED_BY_USER = 1
IMPORT_REQUEST_DENIED = 2
IMPORT_REQUEST_FAILED = 3
OTHERS = 4.
ENDDO.
ENDIF.
*&--------------------------------------------------------------------*
*& Form. copy_file
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->SUBDIR text
* -->FNAME text
* -->SOURCE_FILEtext
*---------------------------------------------------------------------*
FORM. COPY_FILE USING SUBDIR FNAME SOURCE_FILE.
DATA: L_FILENAME TYPE STRING.
L_FILENAME = SOURCE_FILE.
CONCATENATE TRANSDIR SUBDIR FNAME
INTO FILENAME
SEPARATED BY P_SEPR.
REFRESH DATATAB.
CLEAR FLEN.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = L_FILENAME
FILETYPE = 'BIN'
IMPORTING
FILELENGTH = FLEN
CHANGING
DATA_TAB = DATATAB[]
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
NOT_SUPPORTED_BY_GUI = 17
ERROR_NO_GUI = 18
OTHERS = 19.
IF SY-SUBRC NE 0.
WRITE: / 'Error uploading file'(003), L_FILENAME.
EXIT.
ENDIF.
CALL FUNCTION 'AUTHORITY_CHECK_DATASET'
EXPORTING
ACTIVITY = SABC_ACT_WRITE
FILENAME = FILENAME
EXCEPTIONS
NO_AUTHORITY = 1
ACTIVITY_UNKNOWN = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
FORMAT COLOR COL_NEGATIVE.
WRITE: / 'Write access denied. File'(013), FILENAME.
FORMAT COLOR OFF.
EXIT.
ENDIF.
OPEN DATASET FILENAME FOR OUTPUT IN BINARY MODE.
IF SY-SUBRC NE 0.
WRITE: / 'File open error'(004), TRFILE.
EXIT.
ENDIF.
LOOP AT DATATAB.
IF FLEN <= 8192.
LEN = FLEN.
ELSE.
LEN = 8192.
ENDIF.
TRANSFER DATATAB-BUF TO FILENAME LENGTH LEN.
FLEN = FLEN - LEN.
ENDLOOP.
CLOSE DATASET FILENAME.
WRITE: / 'File'(005), TRFILE, 'uploaded'(007).
ENDFORM. "copy_file
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10339719/viewspace-622404/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10339719/viewspace-622404/