データファイルのアップロードとダウンロード

本文介绍了如何使用ABAP进行文件操作,包括获取数据文件的物理路径、文件的上传和下载过程、排他锁处理等关键步骤,并提供了具体的操作方法和代码示例。

■ サーバファイル

 ① データファイルの保存先を取得(論理バス(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
          .

内容概要:本文详细介绍了“考虑N-1故障集的电力系统安全约束经济调度(SCED)”的Matlab代码实现方案,聚焦于电力系统在满足N-1安全准则(即任一元件故障后系统仍能安全运行)条件下的经济性与安全性协同优化问题。资源通过构建精确的数学优化模型,在兼顾发电成本最小化的同时,确保系统在故障前后的运行安全性,涵盖潮流约束、机组出力限制及故障后安全恢复等多重约束条件。文中提供了完整的Matlab仿真代码,并集成YALMIP工具包进行高效求解,支持高水平学术研究的模型复现与结果验证,尤其适用于EI期刊、博士论文等科研场景。此外,资源附带详细的网盘链接,便于获取YALMIP开发包及其他配套材料,极大提升了科研复现效率。; 适合人群:具备电力系统分析、优化建模理论基础,熟悉Matlab编程语言,正在从事电力系统经济调度、安全稳定分析、新能源接入影响研究等相关方向的研究生、高校科研人员及电力行业工程技术开发者。; 使用场景及目标:① 深入学习并复现N-1安全约束下的SCED建模方法;② 掌握基于YALMIP与Matlab的优化问题建模与求解流程;③ 支撑高水平学术论文(如EI、SCI、博士论文)的仿真验证与结果再现;④ 为含高比例新能源接入的现代电力系统安全经济运行研究提供可扩展的技术框架与代码基础。; 阅读建议:建议结合文中提供的百度网盘资源与公众号“荔枝科研社”的配套资料,按照推荐目录顺序系统学习,重点关注模型构建的数学逻辑与代码实现细节,动手调试参数并尝试引入新能源不确定性、多故障场景(N-k)或分布鲁棒优化等前沿方向以拓展研究深度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值