データファイルのアップロードとダウンロード
■ サーバファイル
① データファイルの保存先を取得(論理バス(T-cd:file) → 物理パス)
CALL FUNCTION 'FILE_GET_NAME_USING_PATH'
EXPORTING
LOGICAL_PATH = LOGIC_FILEPATH " 論理バス
FILE_NAME = LOGIC_FILENAME " ファイル名
IMPORTING
FILE_NAME_WITH_PATH = PHYS_FILEPNAME " 物理パス+ファイル名
EXCEPTIONS
PATH_NOT_FOUND = 1
MISSING_PARAMETER = 2
OPERATING_SYSTEM_NOT_FOUND = 3
FILE_SYSTEM_NOT_FOUND = 4
OTHERS = 5.
※必要があれば、汎用モジュール「SPLIT_FILENAME」を利用して、完全パスからパスとファイル名を分離可能です。
② ファイルダウンロード場合、排他ロック処理
CALL FUNCTION 'ENQUEUE_E_TABLE'
EXPORTING
MODE_RSTABLE = 'X'
TABNAME =
VARKEY = "ファイル名
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
③ ファイルのアップロードとダウンロード
・ファイルオープン
OPEN DATASET PHYS_FILEPNAME
FOR INPUT(ダウンロード)/ FOR OUTPUT(アップロード)
IN BINARY/TEXT MODE.
・データの読込と転送
READ DATASET PHYS_FILEPNAME INTO itab. (ダウンロード)
TRANSFER itab TO PHYS_FILEPNAME (アップロード)
※一般的、内部テーブル:itabの項目タイプはC(length:レコードの最大文字数)である。
ですので、内部テーブル:itab ⇔ 業務内部テーブルに変更しなければならない。
・ダウンロードの場合、(READ DATASET後) 内部テーブル:itab ⇒ 業務内部テーブル
SPLIT命令を利用して、内部テーブル:itabの区切り符号
(例えば:TABコード(CL_ABAP_CHAR_UTILITIES=>horizontal_tab))に従い、
内部テーブル:itab の内容が分割 されます
DESCRIBE FIELD stru2(業務構造) LENGTH ilen IN CHARACTER MODE.
LOOP AT itab INTO stru1.
stru2 = stru1-char2000(ilen).
APPEND stru2 TO itab2(業務内部テーブル).
ENDLOOP.
・ アップロードの場合、(TRANSFER前) 業務内部テーブル ⇒ 内部テーブル:itab
CONCATENATE命令(SEPARATED BY 区切り符号)を利用して、
業務内部テーブルの各項目が連結されます
・ファイルクローズ
CLOSE DATASET PHYS_FILEPNAME
④ ファイルダウンロード場合、排他ロック解除処理
CALL FUNCTION 'DEQUEUE_E_TABLE'
EXPORTING
MODE_RSTABLE = 'X'
TABNAME =
VARKEY =
■ ローカルファイル
① ファイルを保存ダイアログを表示
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
CHANGING
FILENAME = FILENAME
PATH = PATH
FULLPATH = FULLPATH
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4
.
② ファイルのアップロードとダウンロード
* アップロード
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = FULLPATH
FILETYPE = 'DAT'
CHANGING
DATA_TAB = itab
.
* ダウンロード
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
FILENAME = FULLPATH
FILETYPE = 'DAT'
CHANGING
DATA_TAB = itab
.
最新文章
- AnimeGANv2 实现动漫风格迁移,简单操作
- 使用MQTT.fx(mqttfx软件)接入阿里云
- web.xml详细介绍
- libghttp 编译及封装使用实例
- BZOJ4810:[YNOI2017]由乃的玉米田(莫队,bitset)
- MySQL如何安装离线_mysql8.0.2离线安装配置方法图文教程
- hive 导出json格式 文件_Magicodes.IE在.NET Core中通过请求头导出多种格式文件
- 【滤波器】基于matlab GUI分数延迟滤波器设计【含Matlab源码 1347期】
- 使用requests爬取携程网飞机票价格实例
- TiDB 在中国电信翼支付的大规模深度实践
- Oracle数据库操作:将有顿号的一条数据拆分为多行
- 系统学习机器学习之维度归约(完整篇)
- word中出现“由于文件许可权错误,word无法完成保存操作”的解决办法
- 华为服务器系统日志,系统日志服务器
- 边界元与有限元方法相比较的优缺点
- 线程池shutdown和shutdownNow原理和区别
- 安装软件出错--The requested URL returned error: 404
- 回顾|Acala TC5 万圣糖果节历程总结
- 论文 Through Fog High Resolution Imaging Using Millimeter Wave Radar 复现
- c语言求最大公因数和最小公倍数
热门文章
- 数学之美:常用的微分,求导和积分公式大总结
- 各大高权重搜索引擎博客矩阵链轮?
- switch判断语句用法
- JS中数组迭代方法(JavaScript从入门到疯癫)
- 美元兑人民币汇率对黄金价格的预测
- (FortiGate)飞塔防火墙IPS(***防御)解决方案
- linux检查新增文件,linux查看文件内容
- 计算机改考408的学校,2020考研 河北工业大学计算机改考408
- lwip连续发数据卡死_用lwip发送大量数据时,遇到的问题解答记录 | 求索阁
- 中国电信无线网服务器,如何使用路由器共享电信天翼无线网络?