SAP將指定EXCEL工作SHEET的數據上傳到內表

SAP將指定EXCEL工作SHEET的數據上傳到內表

?本文描述了一個SAP ABAP類方法upload_excel_2internaltab,用于將Excel文件數據上傳到內部表。主要功能包括:

  1. 驗證Excel行列范圍有效性,若起始值大于結束值則拋出異常
  2. 檢查文件是否存在,支持直接指定路徑或通過文件對話框選擇
  3. 使用OLE自動化技術操作Excel,包括打開工作簿、選擇工作表、復制指定單元格范圍數據
  4. 通過剪貼板將Excel數據導入ABAP內部表,調用標準函數進行格式轉換
  5. 包含完善的異常處理機制,針對文件不存在、操作失敗等情況拋出定制異常類ZCX_AB_K2_SERVICE的相應錯誤
  6. 最后釋放所有OLE對象以關閉Excel進程

該方法實現了Excel與SAP系統間的數據交互,適用于需要批量導入數據的業務場景。

class?ZCX_AB_K2_SERVICE?definition
??public
??inheriting?from?CX_STATIC_CHECK
??create?public?.

public?section.

??interfaces?IF_T100_DYN_MSG?.
??interfaces?IF_T100_MESSAGE?.

??constants:
????begin?of?PROCESSID_NOT_CONFIGED,
??????msgid?type?symsgid?value?'ZMSG_AB_I02',
??????msgno?type?symsgno?value?'001',
??????attr1?type?scx_attrname?value?'MV_APTYP',
??????attr2?type?scx_attrname?value?'MV_BUKRS',
??????attr3?type?scx_attrname?value?'',
??????attr4?type?scx_attrname?value?'',
????end?of?PROCESSID_NOT_CONFIGED?.
??constants:
????begin?of?PROCESSID_NOT_UNIQUE,
??????msgid?type?symsgid?value?'ZMSG_AB_I02',
??????msgno?type?symsgno?value?'016',
??????attr1?type?scx_attrname?value?'',
??????attr2?type?scx_attrname?value?'',
??????attr3?type?scx_attrname?value?'',
??????attr4?type?scx_attrname?value?'',
????end?of?PROCESSID_NOT_UNIQUE?.
??constants:
????begin?of?WRONG_COMPANY_CODE,
??????msgid?type?symsgid?value?'ZMSG_AB_I02',
??????msgno?type?symsgno?value?'017',
??????attr1?type?scx_attrname?value?'MV_BUKRS',
??????attr2?type?scx_attrname?value?'',
??????attr3?type?scx_attrname?value?'',
??????attr4?type?scx_attrname?value?'',
????end?of?WRONG_COMPANY_CODE?.
??constants:
????begin?of?BEGIN_OVER_END,
??????msgid?type?symsgid?value?'ZMSG_AB_I02',
??????msgno?type?symsgno?value?'023',
??????attr1?type?scx_attrname?value?'',
??????attr2?type?scx_attrname?value?'',
??????attr3?type?scx_attrname?value?'',
??????attr4?type?scx_attrname?value?'',
????end?of?BEGIN_OVER_END?.
??constants:
????begin?of?UPLOAD_FILE_FAILED,
??????msgid?type?symsgid?value?'ZMSG_AB_I02',
??????msgno?type?symsgno?value?'022',
??????attr1?type?scx_attrname?value?'',
??????attr2?type?scx_attrname?value?'',
??????attr3?type?scx_attrname?value?'',
??????attr4?type?scx_attrname?value?'',
????end?of?UPLOAD_FILE_FAILED?.
??data?MV_APTYP?type?ZE_APTYP?.
??data?MV_BUKRS?type?ZE_BUKRS?.

??methods?CONSTRUCTOR
????importing
??????!TEXTID?like?IF_T100_MESSAGE=>T100KEY?optional
??????!PREVIOUS?like?PREVIOUS?optional
??????!MV_APTYP?type?ZE_APTYP?optional
??????!MV_BUKRS?type?ZE_BUKRS?optional?.

METHOD?upload_excel_2internaltab.

????DATA:?lt_excel_tab???TYPE?tyt_send_line,
??????????lo_application?TYPE?ole2_object,
??????????lo_workbook????TYPE?ole2_object,
??????????lo_worksheet???TYPE?ole2_object,
??????????lo_cell????????TYPE?ole2_object,
??????????lo_cell_1??????TYPE?ole2_object,
??????????lo_range???????TYPE?ole2_object,
??????????lv_return_code?TYPE?i,
??????????lt_file_table??TYPE?filetable.

????IF?iv_begin_colomn?>?iv_end_colomn.
??????"起止大于截止
??????RAISE?EXCEPTION?TYPE?zcx_ab_k2_service
????????EXPORTING
??????????textid?=?zcx_ab_k2_service=>begin_over_end.
????ENDIF.

????IF?iv_begin_row?>?iv_end_row.
??????RAISE?EXCEPTION?TYPE?zcx_ab_k2_service
????????EXPORTING
??????????textid?=?zcx_ab_k2_service=>begin_over_end.
????ENDIF.

????IF?iv_file_name?IS?NOT?INITIAL.
??????CALL?METHOD?cl_gui_frontend_services=>file_exist
????????EXPORTING
??????????file?????????????????=?iv_file_name
????????RECEIVING
??????????result???????????????=?DATA(lv_file_exist)
????????EXCEPTIONS
??????????cntl_error???????????=?1
??????????error_no_gui?????????=?2
??????????wrong_parameter??????=?3
??????????not_supported_by_gui?=?4
??????????OTHERS???????????????=?5.
??????IF?sy-subrc?<>?0?OR?lv_file_exist?EQ?abap_false.
????????"文件不存在
????????RAISE?EXCEPTION?TYPE?zcx_ab_k2_service
??????????EXPORTING
????????????textid?=?zcx_ab_k2_service=>upload_file_failed.
??????ELSE.
????????DATA(lv_file_name)?=?iv_file_name.
??????ENDIF.

????ELSE.
??????CALL?METHOD?cl_gui_frontend_services=>get_desktop_directory
????????CHANGING
??????????desktop_directory????=?lv_file_name
????????EXCEPTIONS
??????????cntl_error???????????=?1
??????????error_no_gui?????????=?2
??????????not_supported_by_gui?=?3
??????????OTHERS???????????????=?4.
??????IF?sy-subrc?<>?0.
????????RAISE?EXCEPTION?TYPE?zcx_ab_k2_service
??????????EXPORTING
????????????textid?=?zcx_ab_k2_service=>upload_file_failed.
??????ENDIF.

??????CALL?METHOD?cl_gui_frontend_services=>file_open_dialog
????????EXPORTING
??????????window_title????????????=?CONV?#(?TEXT-001?)
??????????default_extension???????=?CONV?#(?TEXT-002?)
*?????????default_filename????????=?'上傳模板'
??????????file_filter?????????????=?cl_gui_frontend_services=>filetype_excel
*?????????with_encoding???????????=
??????????initial_directory???????=?lv_file_name
??????????multiselection??????????=?abap_false
????????CHANGING
??????????file_table??????????????=?lt_file_table
??????????rc??????????????????????=?lv_return_code
*?????????user_action?????????????=
*?????????file_encoding???????????=
????????EXCEPTIONS
??????????file_open_dialog_failed?=?1
??????????cntl_error??????????????=?2
??????????error_no_gui????????????=?3
??????????not_supported_by_gui????=?4
??????????OTHERS??????????????????=?5.
??????IF?sy-subrc?<>?0.
????????RAISE?EXCEPTION?TYPE?zcx_ab_k2_service
??????????EXPORTING
????????????textid?=?zcx_ab_k2_service=>upload_file_failed.
??????ELSE.
????????lv_file_name?=?lt_file_table[?1?].
??????ENDIF.

????ENDIF.

????CLASS?cl_abap_char_utilities?DEFINITION?LOAD.
????DATA(lv_separator)?=?cl_abap_char_utilities=>horizontal_tab.

????IF?lo_application-header?=?abap_false
??????OR?lo_application-handle?=?-1.
??????CREATE?OBJECT?lo_application?'Excel.Application'.
????ENDIF.

????CALL?METHOD?OF?lo_application?'Workbooks'?=?lo_workbook.

????"必須參考RLGRAP-FILENAME
????DATA(lv_excel_name)?=?CONV?localfile(?lv_file_name?).
????CALL?METHOD?OF?lo_workbook?'Open'?EXPORTING?#1?=?lv_file_name.

????IF?iv_sheet_name?IS?INITIAL.
*??set?property?of?application?'Visible'?=?1.
??????GET?PROPERTY?OF??lo_application?'ACTIVESHEET'?=?lo_worksheet.
????ELSE.
??????CALL?METHOD?OF?lo_application?'WORKSHEETS'?=?lo_worksheet
??????EXPORTING?#1?=?iv_sheet_name.

??????CALL?METHOD?OF?lo_worksheet?'Activate'.
????ENDIF.

*?mark?whole?spread?sheet
????CALL?METHOD?OF?lo_worksheet?'Cells'?=?lo_cell
????????EXPORTING?#1?=?iv_begin_row?#2?=?iv_begin_colomn.

????CALL?METHOD?OF?lo_worksheet?'Cells'?=?lo_cell_1
????????EXPORTING?#1?=?iv_end_row?#2?=?iv_end_colomn.

????CALL?METHOD??OF?lo_worksheet?'RANGE'?=?lo_range
???????????????????EXPORTING?#1?=?lo_cell?#2?=?lo_cell_1.

????CALL?METHOD?OF?lo_range?'SELECT'.

*?copy?marked?area?(whole?spread?sheet)?into?Clippboard
????CALL?METHOD?OF?lo_range?'COPY'.

*?read?clipboard?into?ABAP
????CALL?METHOD?cl_gui_frontend_services=>clipboard_import
??????IMPORTING
????????data?????????????????=?lt_excel_tab
??????EXCEPTIONS
????????cntl_error???????????=?1
????????error_no_gui?????????=?2
????????not_supported_by_gui?=?3
????????OTHERS???????????????=?4.
????IF?sy-subrc?<>?0.
??????RAISE?EXCEPTION?TYPE?zcx_ab_k2_service
????????EXPORTING
??????????textid?=?zcx_ab_k2_service=>upload_file_failed.
????ENDIF.

????IF?lt_excel_tab?IS?NOT?INITIAL.
??????PERFORM?separated_to_intern_convert?IN?PROGRAM?saplalsmex
??????????????????????????????????????????TABLES?lt_excel_tab?rt_internal_table
??????????????????????????????????????????USING??lv_separator.

*?clear?clipboard
??????REFRESH?lt_excel_tab.
??????CALL?METHOD?cl_gui_frontend_services=>clipboard_export
????????IMPORTING
??????????data?????????????????=?lt_excel_tab
????????CHANGING
??????????rc???????????????????=?lv_return_code
????????EXCEPTIONS
??????????cntl_error???????????=?1
??????????error_no_gui?????????=?2
??????????not_supported_by_gui?=?3
??????????OTHERS???????????????=?4.
??????IF?sy-subrc?NE?0.
????????RAISE?EXCEPTION?TYPE?zcx_ab_k2_service
??????????EXPORTING
????????????textid?=?zcx_ab_k2_service=>upload_file_failed.
??????ENDIF.
????ENDIF.

*?quit?Excel?and?free?ABAP?Object?-?unfortunately,?this?does?not?kill
*?the?Excel?process
????CALL?METHOD?OF?lo_workbook?'CLOSE'.
????CALL?METHOD?OF?lo_application?'QUIT'.

*?>>>>>?Begin?of?change?note?575877
*?to?kill?the?Excel?process?it's?necessary?to?free?all?used?objects
????FREE?OBJECT?lo_cell.
????FREE?OBJECT?lo_cell_1.
????FREE?OBJECT?lo_range.
????FREE?OBJECT?lo_worksheet.
????FREE?OBJECT?lo_workbook.
????FREE?OBJECT?lo_application.
*?<<<<<?End?of?change?note?575877
??ENDMETHOD.

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

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

相關文章

Spring Boot(九十三):Springboot 整合cfx實現webservice接口

1 服務端 最近項目改造,有一些老項目接口協議是webservice soap1.1,這就需要我們提供webservice服務接口。在Spring Boot中整合CFX(CXF框架)以實現Web服務客戶端與服務端的功能,可以分為幾個步驟。下面我將詳細介紹如何在Spring Boot中設置一個Web服務端點,使用Apache CX…

Triton server的部署、構建、backend插件機制整體介紹

目錄 0 引言 1 什么是Trition inference server 2 Trition inference server部署 2.1 下載server 2.2 下載模型 2.3 實驗 3 triton inference server的構建 3.1 build時候需要哪些repo 3.2 構建過程做了什么 3.3 構建體驗 4 閱讀readme整體了解下backend機制 4.1 什…

Paimon在各大公司生產實踐和優化總結

這是一篇匯總和個人學習文章&#xff0c;主要目的是總結一下Paimon在各大公司的落地做一個學習筆記。 本文的主要內容是關于Paimon在各大公司包括Vivo、Shopee、阿里、抖音等公司的落地實踐&#xff0c;文末有文章來源地址&#xff0c;內容大概分為幾個部分&#xff1a; 1.引…

簡析自動駕駛產業鏈及其核心技術體系

一、自動駕駛產業鏈 自動駕駛產業鏈可以細分為感知層、決策層、執行層以及通信層等多個環節。上游部分主要包括提供環境感知所需的各種傳感器&#xff08;如激光雷達、毫米波雷達、攝像頭等&#xff09;、高精度地圖服務、定位系統以及其他相關硬件設備&#xff1b;中游涵蓋了…

第一節 布局與盒模型-Flex與Grid布局對比

一、核心特性對比?? 1. ??布局維度?? ??Flex 布局??&#xff1a; ??一維布局??&#xff1a;僅支持單方向&#xff08;水平或垂直&#xff09;的排列&#xff0c;通過 flex-direction 控制主軸方向&#xff08;row 或 column&#xff09;。??適用場景??&…

國產USRP X410 PRO/PRO+(相參版):寬頻段、大帶寬、多通道的4×4高性能軟件無線電設備

國產USRP X410 PRO/PRO(相參版)高性能軟件無線電&#xff0c;作為USRP X410的進階版本&#xff0c;X410 PRO/PRO核心均升級為Xilinx XCZU48DR FPGA芯片&#xff0c;顯著提升了信號處理能力。平臺延續了Xilinx Zynq UltraScale RFSoC的先進架構&#xff0c;集成四核ARM處理器及高…

Mac電腦-Office 2024 長期支持版(Excel、Word、PPT)

Office 2024 mac 是一款專為蘋果電腦用戶設計的高性能、高安全性的辦公軟件套裝 集成了Word、Excel、PowerPoint、Outlook等經典應用&#xff0c;為用戶提供了一站式的辦公解決方案。 不僅繼承了Office系列一貫的卓越性能&#xff0c;還在功能性和用戶體驗上進行了全面升級。…

vue2通過leaflet實現圖片點位回顯功能

需求&#xff1a;在圖片上標點了&#xff0c;需要根據標記點在圖片上進行回顯功能&#xff0c;并且不會根據窗口大小導致標記點移位 1.效果 2.下載插件 用到的是leaflet插件&#xff1a;一個交互式地圖 JavaScript 庫&#xff0c;我下載是 "leaflet": "^1.9.4&…

OmniDocBench:一鍵評測PDF解析算法

絕大多數文檔格式都能無損轉換至PDF&#xff0c;解決了PDF解析&#xff0c;也就相當于解決了絕大多數文檔的解析。所以&#xff0c;PDF解析算法是文檔服務的基石技術。 PDF解析算法目前有兩類技術路線 pipeline方法&#xff0c;整合layout analysis, OCR, formula/table reco…

[按鍵精靈安卓/ios腳本插件開發] 遍歷獲取LuaAuxLib函數庫命令輔助工具

LuaAuxLib庫 LuaAuxLib是按鍵精靈所有內置命令所在的庫文件&#xff0c;有多種方式來獲取LuaAuxLib庫下的函數命令&#xff0c;例如反編譯按鍵精靈手機端庫文件等。這里咱們來介紹一種淺顯易懂的方式來獲取&#xff0c;直接for循環遍歷獲取函數名。 ScanLuaAuxLib 我們寫一個自…

深度學習和計算機視覺的關系的理解

深度學習和計算機視覺的關系 深度學習作為人工智能的重要分支&#xff0c;近年來在計算機視覺領域取得了革命性突破。計算機視覺的核心任務包括圖像分類、目標檢測、語義分割等&#xff0c;而深度學習通過神經網絡模型自動學習圖像特征&#xff0c;極大提升了這些任務的準確率…

springboot開發項目 SLF4J+Logback日志框架集成【最終篇】

在這篇文章之前&#xff0c;實際對于 springboot和SLF4JLogback日志框架的使用 我已經分享過3篇關于springboot 日志的文章了。為什么會在寫這篇最終篇&#xff0c;因為 前3篇分享的關于springBoot框架日志的配置方案&#xff0c; 發現了一個問題&#xff1a;只有項目啟動的時候…

phpstudy無法啟動apache,80端口被占用,完美解決

phpstudy無法啟動apache&#xff0c;80端口被占用&#xff0c;完美解決 解決方法一(最推薦) 依次點擊網站-管理-修改 將端口由80改為81&#xff0c;再點擊確認后即可重新啟動apache。 需要注意的是&#xff0c;網站的訪問由127.0.0.1變為127.0.0.1:81。默認是80的端口所以可以不…

Loggers 配置解析(log4j.xml)

Loggers 配置解析 我們通過下面的例子來理解 log4j 的 Loggers 配置是如何決定日志輸出規則的。 <Loggers><!-- 根Logger&#xff1a;全局配置 --><Root level"debug"><AppenderRef ref"consoleAppender" level"info"/&g…

Java 大視界 -- Java 大數據在智能政務輿情監測與引導中的情感分析與話題挖掘技術(272)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

[NocoDB] 在局域網中調整Float類型顯示精度的部署經驗

在單位局域網環境中,NocoDB有效地連接MySQL數據庫和前端服務,做為中間件很方便。然而,在實際應用中,我們也會遇到一些較為隱藏的設置問題,比如此次經歷的 float 顯示精度不匹配問題。 問題環境 實際數據庫:MySQL,表中有 float 類型的數據 原始數據來源:Excel表格 數據轉…

Dockerfile 常見指令詳解

Dockerfile 是一個文本文件&#xff0c;包含了一系列用于構建 Docker 鏡像的指令。以下是 Dockerfile 中常見指令的詳細解釋&#xff1a; 基礎指令 1. FROM 指定基礎鏡像&#xff0c;必須為第一條指令&#xff08;注釋除外&#xff09;。 FROM ubuntu:20.04 FROM python:3.…

InnoDB Cluster 與 NDB Cluster 對比及部署指南

InnoDB Cluster 與 NDB Cluster 對比及部署指南 一、核心區別對比 特性InnoDB ClusterNDB Cluster存儲引擎InnoDBNDB (內存優先)架構設計基于Group Replication分布式架構(數據節點管理節點SQL節點)一致性模型最終一致性/強一致性強一致性數據持久化磁盤存儲為主內存存儲為主…

PySide環境配置及工具使用

文章目錄 [toc]1 概述1.1 PySide 能做什么&#xff1f;1.2 PySide 的優點1.3 PySide 的缺點1.4 示例代碼&#xff08;簡單窗口&#xff09; 2 環境準備2.1 安裝必要軟件2.2 修改 pip 源 3 PySide23.1 環境要求3.2 配置PySide23.3 工具配置 4 PySide64.1 環境4.2 配置PySide64.3…

數據標注師學習內容

目錄 文本標注詞性標注實體標注 圖像標注語音標注 文本標注 詞性標注 第一篇 第二篇 實體標注 點擊這里 關系標注 事件標注 意圖標注 關鍵詞標注 分類標注 問答標注 對話標注 圖像標注 拉框標注 關鍵點標注 2D標注 3D標注 線標注 目標跟蹤標注 OCR標注 圖像分類標注 語音…