CBO TABLE管理文件上传下载
来源:互联网 发布:淘宝海报尺寸一般多大 编辑:程序博客网 时间:2024/05/05 10:04
首先创建2个表,一个HEAD,一个BODY
这是保存表头信息
这是以2进制形式保存文件数据的表
执行如下代码。
TABLES:ZFILEHEAD, ZFILEDATA, SSCRFIELDS.
DATA : GS_FHEAD LIKE ZFILEHEAD,
GT_FDATA LIKE ZFILEDATA OCCURS 0 WITH HEADER LINE.
*attache file
DATA : BEGIN OF GT_UPTAB OCCURS 0,
CONTENT(255) TYPE X,
END OF GT_UPTAB.
DATA : GV_LENGTH TYPE INT4,
GV_FNAME TYPE STRING,
GV_FNAME2 TYPE STRING,
GV_FTYPE TYPE ZFILEHEAD-FILETYPE,
GV_TEMP(120).
DATA: GV_WORK_DIR TYPE STRING VALUE 'C:\Users\Bong\Desktop\',
GV_CMD(128).
PARAMETERS : P_CARRID TYPE S_CARR_ID OBLIGATORY,
P_FNAME TYPE ZFILEHEAD-FILENAME.
SELECTION-SCREEN FUNCTION KEY 1.
INITIALIZATION.
SSCRFIELDS-FUNCTXT_01 = 'Display file'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FNAME.
DATA: L_RC TYPE I VALUE 1,
L_WINDOW_TITLE TYPE STRING,
LT_FILE_TABLE TYPE FILETABLE,
LS_FILE TYPE FILE_TABLE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = 'Select file'
FILE_FILTER = '*.*'
MULTISELECTION = SPACE
CHANGING
FILE_TABLE = LT_FILE_TABLE
RC = L_RC.
IF SY-SUBRC EQ 0.
READ TABLE LT_FILE_TABLE INDEX 1 INTO LS_FILE.
P_FNAME = LS_FILE-FILENAME.
ENDIF.
CLEAR: GT_UPTAB, GT_UPTAB[].
GV_FNAME = P_FNAME.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = GV_FNAME
FILETYPE = 'BIN'
IMPORTING
FILELENGTH = GV_LENGTH
TABLES
DATA_TAB = GT_UPTAB.
START-OF-SELECTION.
*& file name
CLEAR GV_TEMP.
DO.
SPLIT GV_FNAME AT '\' INTO GV_TEMP GV_FNAME.
IF GV_FNAME EQ SPACE.
GV_FNAME = GV_TEMP.
EXIT.
ENDIF.
IF SY-INDEX > 100. EXIT. ENDIF.
ENDDO.
*& file type
CLEAR GV_TEMP.
GV_FNAME2 = GV_FNAME.
DO.
SPLIT GV_FNAME2 AT '.' INTO GV_TEMP GV_FNAME2.
IF GV_FNAME2 EQ SPACE.
GV_FNAME2 = GV_TEMP.
EXIT.
ENDIF.
IF SY-INDEX > 100. EXIT. ENDIF.
ENDDO.
GV_FTYPE = GV_FNAME2+0(3).
TRANSLATE GV_FTYPE TO UPPER CASE.
*& Header
GS_FHEAD-CARRID = P_CARRID.
GS_FHEAD-FILENAME = GV_FNAME.
GS_FHEAD-FILETYPE = GV_FTYPE.
GS_FHEAD-LENGTH = GV_LENGTH.
MODIFY ZFILEHEAD FROM GS_FHEAD.
*& Data.
LOOP AT GT_UPTAB.
GT_FDATA-CARRID = P_CARRID.
GT_FDATA-CONTENT = GT_UPTAB-CONTENT.
GT_FDATA-SEQ = SY-TABIX.
APPEND GT_FDATA.
ENDLOOP.
MODIFY ZFILEDATA FROM TABLE GT_FDATA.
IF SY-SUBRC EQ 0.
MESSAGE 'SUCCESS' TYPE 'S'.
ELSE.
MESSAGE 'ERROR' TYPE 'E'.
ENDIF.
AT SELECTION-SCREEN.
CHECK SSCRFIELDS-UCOMM = 'FC01'.
CLEAR : GS_FHEAD, GT_FDATA, GT_FDATA[].
*& Header
SELECT SINGLE * INTO GS_FHEAD FROM ZFILEHEAD
WHERE CARRID = P_CARRID.
IF SY-SUBRC NE 0.
MESSAGE 'There is no file' TYPE 'E'.
ENDIF.
*& detail
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_FDATA
FROM ZFILEDATA
WHERE CARRID = P_CARRID.
CLEAR: GT_UPTAB, GT_UPTAB[].
SORT GT_FDATA BY SEQ.
LOOP AT GT_FDATA.
GT_UPTAB-CONTENT = GT_FDATA-CONTENT.
APPEND GT_UPTAB.
ENDLOOP.
*& file PATH & name
CONCATENATE GV_WORK_DIR GS_FHEAD-FILENAME INTO GV_FNAME.
*& Download
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = GS_FHEAD-LENGTH
FILENAME = GV_FNAME
FILETYPE = 'BIN'
TABLES
DATA_TAB = GT_UPTAB.
*& file run
GV_CMD = GV_FNAME.
CALL FUNCTION 'GUI_RUN'
EXPORTING
COMMAND = GV_CMD.
选择文件后上传。
当然 这是简单的举例。如有需要,我们可以修改主键,在实际应用中使用.
- CBO TABLE管理文件上传下载
- asp.net文件上传下载管理
- 【操作系统】linux--文件管理-secureCRT上传下载文件
- asp.net(C#)上传下载及文件管理
- asp.net(C#)上传下载及文件管理
- asp.net(C#)上传下载及文件管理
- asp.net(C#)上传下载及文件管理
- CBO之Full Table Scan - FTS算法
- 文件上传下载
- 文件上传下载
- 上传下载文件
- 文件上传下载
- 文件上传下载
- 文件上传下载
- 文件上传下载
- 文件上传下载
- 文件上传下载
- 上传下载文件
- JAVA 学习笔记;
- VS2010 建模 (UML用例图,UML类图)
- 字谜
- pipe
- 阿狸的童话,我的梦:伤感日志分享
- CBO TABLE管理文件上传下载
- make menucofig
- Calendar工具类
- Linux 下各个目录的作用
- linux打包解包
- 让PHP 支持Java
- Construct Binary Tree from Preorder and Inorder Traversal
- mt6575 uboot
- 网页两次提交问题