ABAP 導入Excel形成內表

在這里插入圖片描述

文章目錄

  • 創建導入模板
  • 程序實現
  • 代碼
  • 代碼解析
  • 運行結果

創建導入模板

在這里插入圖片描述

程序實現

在這里插入圖片描述

代碼

*&---------------------------------------------------------------------*
*& Report Z_EXCEL_UPLOAD_LHY
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_EXCEL_UPLOAD_LHY.
TABLES SSCRFIELDS.DATA: LS_FUNCTXT TYPE SMP_DYNTXT.
CONSTANTS:COS_TEMPLATE TYPE W3OBJID VALUE 'ZFI001',COS_FILENAME TYPE STRING VALUE '財務導入模板.xlsx'.
TYPES: BEGIN OF T_MARC,MATNR TYPE MARC-MATNR, "物料編號WERKS TYPE MARC-WERKS, "工廠MAKTX TYPE MAKT-MAKTX,  "物料描述MATKL TYPE MARA-MATKL,  "物料組END   OF T_MARC.
DATA GT_DATA TYPE TABLE OF T_MARC.SELECTION-SCREEN BEGIN OF BLOCK BK1.PARAMETERS P_FILE TYPE RLGRAP-FILENAME  MODIF ID M1.
SELECTION-SCREEN END OF BLOCK BK1.
**--按鈕定義
SELECTION-SCREEN FUNCTION KEY 1.AT SELECTION-SCREEN ON VALUE-REQUEST FOR  P_FILE. "按選擇幫助<F4>鍵時觸發該事件PERFORM FRM_GET_FILE_NAME CHANGING P_FILE.INITIALIZATION.
**--按鈕定義-初始化CLEAR LS_FUNCTXT.LS_FUNCTXT-ICON_ID   = ICON_IMPORT. "圖標,可以通過ICON查找LS_FUNCTXT-ICON_TEXT = '下載文件'."描述SSCRFIELDS-FUNCTXT_01 = LS_FUNCTXT.AT SELECTION-SCREEN.
**--按鈕響應CASE SSCRFIELDS-UCOMM.WHEN 'FC01'.PERFORM FRM_DOWNLOAD_TEMPLATE USING COS_TEMPLATE COS_FILENAME.WHEN OTHERS.ENDCASE.START-OF-SELECTION."解析Excel文件到內表PERFORM FILE_DATA_INPUT.**&---------------------------------------------------------------------*
**& Module STATUS_9000 OUTPUT
**&---------------------------------------------------------------------*
**&
**&---------------------------------------------------------------------*
*MODULE STATUS_9000 OUTPUT.
*  SET PF-STATUS 'STANDARD'.
** SET TITLEBAR 'xxx'.
*ENDMODULE.
*&---------------------------------------------------------------------*
*& Form frm_get_file_name
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- P_FILE
*&---------------------------------------------------------------------*
FORM FRM_GET_FILE_NAME  CHANGING CV_FILE.DATA: LT_FILETABLE TYPE FILETABLE,  "表類型LS_FILETABLE TYPE FILE_TABLE, "結構類型LV_RC        TYPE I.FREE LT_FILETABLE.CLEAR: LV_RC.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOGEXPORTING
*     window_title            =DEFAULT_EXTENSION       = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
*     default_filename        =FILE_FILTER             = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
*     with_encoding           =
*     initial_directory       =
*     multiselection          =CHANGINGFILE_TABLE              = LT_FILETABLERC                      = LV_RC
*     user_action             =
*     file_encoding           =EXCEPTIONSFILE_OPEN_DIALOG_FAILED = 1CNTL_ERROR              = 2ERROR_NO_GUI            = 3NOT_SUPPORTED_BY_GUI    = 4OTHERS                  = 5.READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1.IF SY-SUBRC <> 0.
*     Implement suitable error handling hereENDIF.IF SY-SUBRC EQ 0.CV_FILE = LS_FILETABLE-FILENAME.ENDIF.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> COS_TEMPLATE
*&      --> COS_FILENAME
*&---------------------------------------------------------------------*
FORM FRM_DOWNLOAD_TEMPLATE  USING   U_OBJID TYPE W3OBJIDU_FILE_NAME TYPE STRING.DATA: LS_KEY      TYPE WWWDATATAB,LV_FILENAME TYPE STRING,LV_PATH     TYPE STRING,LV_FULLPATH TYPE STRING."判斷模板是否存在SELECT SINGLE * FROM WWWDATAWHERE RELID EQ 'MI'AND OBJID EQ @U_OBJIDINTO CORRESPONDING FIELDS OF @LS_KEY.IF SY-SUBRC NE 0.
*   模板&1不存在MESSAGE 'ZFI001下載模板不存在' TYPE 'E'."ZFI001RETURN.ENDIF.
*   調用函數打開文件選擇框CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOGEXPORTING
*     window_title              =DEFAULT_EXTENSION         = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCELDEFAULT_FILE_NAME         = U_FILE_NAME
*     with_encoding             =
*     file_filter               =
*     initial_directory         =
*     prompt_on_overwrite       = 'X'CHANGINGFILENAME                  = LV_FILENAMEPATH                      = LV_PATHFULLPATH                  = LV_FULLPATH
*     user_action               =
*     file_encoding             =EXCEPTIONSCNTL_ERROR                = 1ERROR_NO_GUI              = 2NOT_SUPPORTED_BY_GUI      = 3INVALID_DEFAULT_FILE_NAME = 4OTHERS                    = 5.IF SY-SUBRC <> 0.
*   Implement suitable error handling hereENDIF.CHECK LV_FULLPATH NE ''.
*   下載SMW0模版CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGKEY         = LS_KEYDESTINATION = CONV LOCALFILE( LV_FULLPATH ).ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILE_DATA_INPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FILE_DATA_INPUT .CLEAR GT_DATA. "清空內表DATA: LT_INTERN TYPE STANDARD TABLE OF ALSMEX_TABLINE.DATA: ERROR_STR TYPE STRING.FREE: LT_INTERN.CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGFILENAME                = P_FILEI_BEGIN_COL             = 1I_BEGIN_ROW             = 2I_END_COL               = 99I_END_ROW               = 65536TABLESINTERN                  = LT_INTERNEXCEPTIONSINCONSISTENT_PARAMETERS = 1UPLOAD_OLE              = 2OTHERS                  = 3.IF SY-SUBRC NE 0.ENDIF.SORT LT_INTERN BY ROW COL.LOOP AT LT_INTERN INTO DATA(LS_INTERN).AT NEW ROW. "如果字段ROWROW的左側全部字段的數據,與上一行數據不一致,則執行代碼。APPEND INITIAL LINE TO GT_DATA ASSIGNING FIELD-SYMBOL(<FS_DATA>).ENDAT."按照現在的LS_INTERNCOL的值,分配結構<FS_DATA>的對應下標的地址給指針<FS_VAL>ASSIGN COMPONENT LS_INTERN-COL OF STRUCTURE <FS_DATA> TO FIELD-SYMBOL(<FS_VAL>).<FS_VAL> = LS_INTERN-VALUE.CLEAR LS_INTERN.ENDLOOP.CL_DEMO_OUTPUT=>DISPLAY( GT_DATA ).
ENDFORM.

代碼解析

在這里插入圖片描述

運行結果

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82288.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

特殊配合力(SCA)作為全基因組關聯分析(GWAS)的表型,其生物學意義和應用價值

生物學意義 解析非加性遺傳效應 特殊配合力(SCA)主要反映特定親本組合的雜交優勢,由非加性遺傳效應(如顯性、超顯性、上位性)驅動。顯性效應涉及等位基因間的顯性互作,上位性效應則涉及不同位點間的基因互作。通過SCA-GWAS,可以定位調控這些非加性效應的關鍵基因組區域…

應急響應基礎模擬靶機-security1

PS:杰克創建在流量包(result.pcap)在根目錄下&#xff0c;請根據已有信息進行分析 1、攻擊者使用的端口掃描工具是? 2、通過流量及日志審計&#xff0c;攻擊者上傳shell的時訪問web使用IP地址是多少? 3、審計流量日志&#xff0c;攻擊者反彈shell的地址及端口? 4、攻擊者…

uniapp-商城-47-后臺 分類數據的生成(通過數據)

在第46章節中&#xff0c;我們為后臺數據創建了分類的數據表結構schema&#xff0c;使得可以通過后臺添加數據并保存&#xff0c;同時使用云函數進行數據庫數據的讀取。文章詳細介紹了如何通過前端代碼實現分類管理功能&#xff0c;包括獲取數據、添加、更新和刪除分類。主要代…

ClickHouse的基本操作說明

說明 文章內容包括數據庫管理、表操作及查詢等核心功能 創建數據庫 -- 默認引擎&#xff08;Atomic&#xff09; CREATE DATABASE IF NOT EXISTS test_db; -- MySQL引擎&#xff08;映射外部MySQL數據庫&#xff09; CREATE DATABASE mysql_db ENGINE MySQL(host:port, m…

Nacos源碼—7.Nacos升級gRPC分析四

大綱 5.服務變動時如何通知訂閱的客戶端 6.微服務實例信息如何同步集群節點 6.微服務實例信息如何同步集群節點 (1)服務端處理服務注冊時會發布一個ClientChangedEvent事件 (2)ClientChangedEvent事件的處理源碼 (3)集群節點處理數據同步請求的源碼 (1)服務端處理服務注冊…

《Overlapping Experiment Infrastructure: More, Better, Faster》論文閱讀筆記

文章目錄 1 背景2 三個核心概念3 Launch層&#xff1a;特性發布的專用機制4 流量分發策略和條件篩選4.1 四種流量分發類型4.2 條件篩選機制 5 工具鏈與監控體系6 實驗設計原則7 培訓參考與推薦 1 背景 谷歌&#xff08;Google&#xff09;以數據驅動著稱&#xff0c;幾乎所有可…

國芯思辰| 醫療AED可使用2通道24位模擬前端SC2946(ADS1292)

生物電信號監測技術在醫療健康行業中發展迅速&#xff0c;成為評估人體生理健康狀況的關鍵手段。心電&#xff08;ECG&#xff09;、腦電&#xff08;EEG&#xff09;和肌電&#xff08;EMG&#xff09;等信號&#xff0c;通過精密模擬前端芯片捕捉和處理&#xff0c;對醫療診斷…

數據結構【二叉搜索樹(BST)】

二叉搜索樹 1. 二叉搜索樹的概念2. 二叉搜索樹的性能分析3.二叉搜索樹的插入4. 二叉搜索樹的查找5. 二叉搜索樹的刪除6.二叉搜索樹的實現代碼7. 二叉搜索樹key和key/value使用場景7.1 key搜索場景&#xff1a;7.2 key/value搜索場景&#xff1a; 1. 二叉搜索樹的概念 二叉搜索…

RDMA高性能網絡通信實踐

RDMA高性能網絡通信實踐 一、背景介紹二、方法設計A.實現方案B.關鍵技術點 三、代碼及注釋四、注意事項 一、背景介紹 遠程直接內存訪問&#xff08;RDMA&#xff09;技術通過繞過操作系統內核和CPU直接訪問遠程內存&#xff0c;實現了超低延遲、高吞吐量的網絡通信。該技術廣…

ndarray數組掩碼操作,True和False獲取數據

#數組掩碼的表示方法 def testht05():a np.arange(1,10)mask [True,False,True,True,False,True,False,True,True]print(a[mask]) 另外的用法&#xff1a; #掩碼操作獲取子集 def testht06():a np.arange(1,100)print(a[a%3 0 & (a%7 0)] )b np.array([A,"B&qu…

索引工具explain

EXPLAIN 是 MySQL 中一個非常有用的工具,用于分析查詢的執行計劃。通過 EXPLAIN,你可以了解 MySQL 是如何執行查詢的,包括它如何使用索引、表的掃描方式等。這有助于優化查詢性能。以下是 EXPLAIN 輸出的各個字段的詳細解釋: 基本用法 EXPLAIN SELECT * FROM table_name …

Git回顧

參考視頻:【GeekHour】一小時Git教程 一句話定義&#xff1a;Git是一個免費開源的分布式版本控制系統。 版本控制系統可以分為兩種&#xff0c;1.集中式&#xff08;SVN&#xff0c;CVS&#xff09;&#xff1b;2.分布式&#xff08;git&#xff09; git的工作區域和文件狀態…

python打卡day20

特征降維------特征組合&#xff08;以SVD為例&#xff09; 知識點回顧&#xff1a; 奇異值的應用&#xff1a; 特征降維&#xff1a;對高維數據減小計算量、可視化數據重構&#xff1a;比如重構信號、重構圖像&#xff08;可以實現有損壓縮&#xff0c;k 越小壓縮率越高&#…

GuPPy-v1.2.0安裝與使用-生信工具52

GuPPy&#xff1a;Python中用于光纖光度數據分析的免費開源工具 01 背景 Basecalling 是將原始測序信號轉換為堿基序列的過程&#xff0c;通俗地說&#xff0c;就是“把堿基識別出來”。這一過程在不同代測序技術中各不相同&#xff1a; 一代測序是通過解析峰圖實現&#xff1…

47. 全排列 II

題目 給定一個可包含重復數字的序列 nums &#xff0c;按任意順序 返回所有不重復的全排列。 示例 1&#xff1a; 輸入&#xff1a;nums [1,1,2] 輸出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]] 示例 2&#xff1a; 輸入&#xff1a;nums [1,2,3] 輸出&#xff1a;[[1,2,3…

ERP系統操作流程,如何快速搭建流程體系

ERP流程圖&#xff0c;如何搭建和建立&#xff0c;ERP系統操作流程&#xff0c;ERP系統操作流程圖&#xff0c;采購流程&#xff0c;銷售流程&#xff0c;倉庫流程&#xff0c;MRP流程&#xff0c;PMC流程&#xff0c;財務流程&#xff0c;應收流程&#xff0c;應付流程&#x…

class path resource [] cannot be resolved to absolute file path

問題情景 java應用程序在IDE運行正常&#xff0c;打成jar包后執行卻發生異常&#xff1a; java.io.FileNotFoundException: class path resource [cert/sync_signer_pri_test.key] cannot be resolved to absolute file path because it does not reside in the file system:…

19、HashTable(哈希)、位圖的實現和布隆過濾器的介紹

一、了解哈希【散列表】 1、哈希的結構 在STL中&#xff0c;HashTable是一個重要的底層數據結構, 無序關聯容器包括unordered_set, unordered_map內部都是基于哈希表實現 哈希表又稱散列表&#xff0c;一種以「key-value」形式存儲數據的數據結構。哈希函數&#xff1a;負責將…

基于 Flask的深度學習模型部署服務端詳解

基于 Flask 的深度學習模型部署服務端詳解 在深度學習領域&#xff0c;訓練出一個高精度的模型只是第一步&#xff0c;將其部署到生產環境中&#xff0c;為實際業務提供服務才是最終目標。本文將詳細解析一個基于 Flask 和 PyTorch 的深度學習模型部署服務端代碼&#xff0c;幫…

Vue3 + Node.js 實現客服實時聊天系統(WebSocket + Socket.IO 詳解)

Node.js 實現客服實時聊天系統&#xff08;WebSocket Socket.IO 詳解&#xff09; 一、為什么選擇 WebSocket&#xff1f; 想象一下淘寶客服的聊天窗口&#xff1a;你發消息&#xff0c;客服立刻就能看到并回復。這種即時通訊效果是如何實現的呢&#xff1f;我們使用 Vue3 作…