ABAP 上傳 excel 報表

(1)先在屏幕上增加上傳文件的按鈕

"屏幕選擇條件"
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
?? ?PARAMETERS : p_source ?LIKE rlgrap-filename .
SELECTION-SCREEN END OF BLOCK b1.

你會發現,上面的代碼只是簡單的單文本框,沒有可以讓我們選擇的界面

(2)為單文本框增添搜索幫助(PARAMETERS自定義搜索幫助)

  AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_source."防止數據復用"CLEAR p_source."獲取文件名稱"PERFORM get_filename.START-OF-SELECTION."屏幕選擇結束標志/處理數據程序開始執行"

get_filename 的四種方法

① 獲取文件名稱方法一(不推薦)

 FORM GET_FILENAME1.TRY.CALL FUNCTION 'WS_FILENAME_GET' "雖然該函數仍然可以使用 , 但是該函數已經過時了"EXPORTINGDEF_FILENAME      = '' "默認文件名稱"DEF_PATH        = '' "路徑"" 格式 : (空格不可少) 名稱1 , *.xls (格式1),名稱2 , *.xlsx(格式2) ,名稱3 ,*.*.(格式3 , 注意 : . 號不可缺) """MASK          = ' XLS,*.xls,XLSX,*.xlsx,All Files,*.*.'MASK          = ''" 彈出框的模式 S -- 用來保存文件 O -- 用來打開文件 "MODE          = '0'TITLE         = '請選擇文件 'IMPORTINGFILENAME        = p_source" RC           = "EXCEPTIONSINV_WINSYS       = 1NO_BATCH        = 2SELECTION_CANCEL    = 3 "如果用戶取消了對話框"SELECTION_ERROR    = 4OTHERS         = 5 .ENDTRY.ENDFORM.

② 獲取文件名稱方法二

FORM GET_FILENAME2.DATA : G_RC TYPE I.DATA : L_OBJ TYPE REF TO CL_GUI_FRONTEND_SERVICES.DATA : IT_FILE TYPE FILETABLE WITH HEADER LINE.CREATE OBJECT L_OBJ.CALL METHOD L_OBJ->FILE_OPEN_DIALOGEXPORTINGFILE_FILTER       = ''INITIAL_DIRECTORY = ''CHANGINGFILE_TABLE        = IT_FILE[]RC                = G_RCEXCEPTIONSfile_open_dialog_failed = 1cntl_error              = 2error_no_gui            = 3not_supported_by_gui    = 4OTHERS                  = 5.READ TABLE IT_FILE INDEX 1.P_SOURCE = IT_FILE-FILENAME.ENDFORM.

③ 獲取文件名稱方法三

FORM GET_FILENAME3.CALL FUNCTION 'F4_FILENAME'EXPORTINGPROGRAM_NAME        = SYST-CPROG "程序名"DYNPRO_NUMBER       = SYST-DYNNR "當前屏幕號"FIELD_NAME          = ' '        "文件類型 , 默認為空"IMPORTINGFILE_NAME           = P_SOURCE.  "文件名稱"
ENDFORM.

④ 獲取文件名稱方法四

FORM GET_FILENAME4.CALL FUNCTION 'KD_GET_FILENAME_ON_F4'EXPORTINGPROGRAM_NAME        = SYST-REPIDDYNPRO_NUMBER       = SYST-DYNNRFIELD_NAME          = ' 'STATIC              = ' 'MASK                = ' 'FILEOPERATION       = 'R'PATH                = ' 'CHANGINGFILE_NAME            = P_SOURCE"LOCATION_FLAG       = 'P'EXCEPTIONSMASK_TOO_LONG       = 1OTHERS              = 2.
ENDFORM.

這時候就能獲取文件的路徑了

(3)將excel數據讀取到內表

① 定義內表(推薦全局定義)

"接收EXCEL報表數據的內表 (承接excel數據的內表格式一般都是string類型,內表定義多少列,就會讀取EXCEL 前幾列)"
DATA :
? BEGIN OF gt_excel OCCURS 0,
? ? aufnr(12), " 工單號碼"
? ? gstrs(10), " 工單開始日期"
? ? gltrs(10), " 工單結束日期"
? ? info(50),"信息提示"
? END OF gt_excel.

② 將excel數據讀取到內表

?

FORM get_excel .
? "如果為空,表示沒有選中文件"
? IF p_source EQ ''.
? ? MESSAGE s000(1) WITH '未選擇文件!' DISPLAY LIKE 'E'.
? ? STOP.
? ENDIF.

? "文件選中后 , 將文件信息讀取到內表 , 注意 : 文件信息的排版 , 必須與獲取數據內表的數據結構 , 排版要一致 , 不然會報錯"
? CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' "可以是Excel文件,也可以是Txt文件"
? ? EXPORTING
"* ? ? I_FIELD_SEPERATOR ? ?= 分隔符,默認為TAB"
? ? ? i_line_header ? ? ? ?= 'X' "文本中的第一行是否是標題頭,如果是則不會讀取"
? ? ? i_tab_raw_data ? ? ? = il_raw "該參數實際上沒有使用到,但為必輸參數"
? ? ? i_filename ? ? ? ? ? = p_source
? ? TABLES
? ? ? i_tab_converted_data = gt_excel "會自動的將Excel、Txt文件中的數據一行行讀取到數據內表中"
? ? EXCEPTIONS
? ? ? conversion_failed ? ?= 1
? ? ? OTHERS ? ? ? ? ? ? ? = 2.

? "如果excel 數據格式不正確 或 excel 數據為空 , 提示重新選擇文件"

? IF gt_excel[] IS ?INITIAL .
? ? MESSAGE s000(1) WITH '文件無數據或文件格式出錯,請重新選擇文件!' DISPLAY LIKE 'E'.
? ? LEAVE LIST-PROCESSING.
? ENDIF.
*----------------------------------------------------------------------*
* LEAVE LIST-PROCESSING.
*
* 如果寫在at selection-screen 就返回到輸出界面
* 如果寫在start-of-selection. 就返回到initialization事件
*
*----------------------------------------------------------------------*
ENDFORM.
?

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

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

相關文章

Compose與View系統互操作方案

本文將全面解析 Android 現代 UI 框架 Jetpack Compose 與傳統 View 系統的互操作方案,涵蓋基礎原理、實戰技巧、性能優化和高級應用,助你實現漸進式遷移和混合開發。 一、互操作的必要性與整體架構 1.1 為什么需要互操作性 漸進式遷移:大型…

HNCTF 2025 Just Ping Write-up

part 1 路由部分主邏輯逆向 package mainimport ("net/http" )func main() {// 注冊路由和處理函數// 當訪問 "/api/ping" 路徑時,調用 pingHandler 函數處理請求http.HandleFunc("/api/ping", pingHandler)// 注冊開發測試API路由//…

OpenCV CUDA模塊中用于稠密光流計算的 TV-L1(Dual TV-L1)算法類cv::cuda::OpticalFlowDual_TVL1

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::cuda::OpticalFlowDual_TVL1類是基于變分優化方法的稠密光流算法實現(Dual TV-L1 光流模型),在 GPU 上加…

ThreadPoolTaskExecutor+CompletableFuture實現多線程異步數據同步和自定義線程池監控和動態調整實現

前言 ThreadPoolTaskExecutor是Spring框架提供的一個線程池實現,它是對Java標準庫中ThreadPoolExecutor的封裝,提供了更便捷的配置和集成方式,特別適合在Spring環境中使用。相關線程池概念見線程&線程池相關 CompletableFuture 是 Java…

一篇文章理解js閉包和作用于原理

一、js閉包的作用原理 JS閉包是指內部函數訪問外部函數變量的機制,常用于數據封裝和模塊化。典型應用包括創建私有變量、解決循環中的異步問題、實現函數柯里化等。案例分析展示了閉包在計數器、防抖函數等場景的使用,同時揭示了可能的內存泄漏風險。正…

GUI絲滑教程-python tinker

在 Tkinter GUI 應用中,線程可以幫助你在后臺執行長時間運行的任務,而不阻塞界面響應。下面是一些技巧,幫助你在使用線程時避免 Tkinter 界面卡頓的問題。 為什么 Tkinter 界面會卡頓? Tkinter 使用 主線程 來處理 UI 更新&…

第一部分-數據通信網絡基礎

目錄 一、什么是網絡通信? 二、網絡通信設備的基本識別 1.雙絞線 2.集線器(物理層設備) 3.中繼器(物理層設備) 4.接入交換機 5.匯聚交換機 6.核心交換機 7.路由器 8.無線路由器 9.光貓 一、什么是網絡通信?…

windows電腦解決筆記本搜索不到wifi問題

windows筆記本電腦明明打開了wifi功能,卻搜索不到wifi,此問題可能是網絡適配器被禁用的原因導致,通過以下方法也許能解決,無需重啟電腦 1、右鍵點擊網絡或wifi圖標,打開界面”網絡和internet“ 2、選擇”高級網絡設置…

C# 界面檢測顯示器移除并在可用顯示器上顯示

C# 檢測顯示器被移除,將界面在當前可用的顯示器上顯示,避免程序在任務欄點擊無響應。 using System; using System.Linq; using System.Windows.Forms;public class MonitorWatcher : IDisposable {private readonly Form _targetForm;private Screen …

JAVA實戰開源項目:青年公寓服務平臺 (Vue+SpringBoot) 附源碼

本文項目編號 T 233 ,文末自助獲取源碼 \color{red}{T233,文末自助獲取源碼} T233,文末自助獲取源碼 目錄 一、系統介紹二、數據庫設計三、配套教程3.1 啟動教程3.2 講解視頻3.3 二次開發教程 四、功能截圖五、文案資料5.1 選題背景5.2 國內…

阿里云服務狀態監控:實時掌握云服務健康狀況

前言 在云計算時代,企業和開發者越來越依賴云服務提供商的基礎設施和服務。當我們的應用部署在云上,服務的可用性和穩定性就與云服務提供商息息相關。一旦云服務出現故障或維護,可能會對我們的業務造成直接影響。因此,實時了解云服務的運行狀態變得尤為重要。阿里云作為國…

使用VSCode開發FastAPI指南

1概述 FastAPI 是一個現代的高性能 Web 框架,用于使用 Python 構建 API。它旨在讓開發者輕松快速高效地構建 API,同時提供 API 的自動驗證、序列化和文檔記錄等功能,使其成為構建 Web 服務和微服務的熱門選擇。 在這個 FastAPI 教程中&#…

2025年硬件實習/秋招面試準備

前言 暑期即將到來,有很多研一研二以及大三大四的同學準備硬件類(硬件研發、嵌入式硬件、layout、電源設計、射頻、硬件測試、工藝、FAE)的實習或秋招。鑒于此,總結一下網友們秋招、實習中的硬件高頻考點,并分析他們是…

VSCode - Trae 插件關閉彈出框代碼補全

Trae 插件關閉彈出框代碼補全 彈出框代碼補全與非彈出框代碼補全 如下是彈出框代碼補全 如下是非彈出框代碼補全 關閉 / 啟用彈出框代碼補全 點擊 【管理】(小齒輪) -> 點擊 【設置】 取消勾選(如果需要啟用,則勾選即可&…

Elasticsearch從安裝到實戰、kibana安裝以及自定義IK分詞器/集成整合SpringBoot詳細的教程ES(三)

DSL官方地址: DSL查詢分類 Elasticsearch提供了基于JSON的DSL(https://www.elastic.co/docs/explore-analyze/query-filter/languages/querydsl)來定義查詢。常見的查詢類型包括: 查詢所有:查詢出所有數據&#xff0…

我們來學mysql -- keepalive主從高可用

keepalive主從高可用 簡明扼要安裝KP場景“高可用”配置主keepalived.conf從keepalived.confmysql_check.sh 高可用驗證KP運行情況通過vip連接mysqlvip連接上創建數據庫關閉主庫所在服務器的KPvip連接上再次創建數據庫 結尾 簡明扼要 搭建mysql的主從八股文如是:主…

Compose筆記(二十六)--DatePicker

這一節主要了解一下Compose中的DatePicker,DatePicker是一個用于選擇日期的組件,它提供了直觀的界面讓用戶可以通過日歷視圖或直接輸入來選擇年、月、日。我們在開發中時常會用到日期選擇器,簡單總結如下: API: DatePickerDialog onDismissRequest&…

【靶場】upload-labs-文件上傳漏洞闖關

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言1.第一關1.保存html頁面2.修改頁面html3.訪問修改后的本地html文件4.上傳php文件5.訪問上傳的php2.第二關1.抓上傳包修改文件類型2.上傳成功3.第三關1.phtml php3會被解析為php原理2.上傳成功4…

基于 Transformer RoBERTa的情感分類任務實踐總結之四——PGM、EMA

整合了以下五大核心技術:R-Drop、PGM 對抗訓練、EMA、標簽平滑、CosineAnnealing 學習率調度。 1. R-Drop(Regularized Dropout) 原理:同一個樣本做兩次前向傳播(同 dropout mask),計算兩次輸…

錄制mp4 rospy

ros 預覽攝像頭 #!/usr/bin/env python import rospy from sensor_msgs.msg import Image from cv_bridge import CvBridge import cv2# 初始化 bridge bridge CvBridge()def image_callback(msg):# 將ROS圖像消息轉換為OpenCV圖像cv_image bridge.imgmsg_to_cv2(msg, desir…