採用RFC讀取表後的後處理
採用RFC讀取表後的後處理
通過Function:RFC_READ_TABLE 可以獲取某個表的結構和資料,最終的資料會把讀取的表的每一行資料放到一個字元型列中,所以我們需要通過返回的結構,把字元中的資料拆解出來。
這裡存在一個問題,Function返回的結構是一個描述性的,比如說列名稱,而我們需要把這些描述性的東西和具體的變數對應起來,比如說我們從結構中可以知道字元列從第幾位到第幾位是對應什麼列的值,但是我們需要的是把這個值賦值到當前系統的某個變數中。
參看了之前幾位寫的程式碼,發現他們採用的方法是,把資料讀過來之後,人為的去判斷該怎麼一個個的對應。
CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'WXXX000'
EXPORTING
query_table = 'ZXXX001'
TABLES
OPTIONS = l_options
fields = l_fields
data = l_data_week.
LOOP AT l_data_week.
l_itgkrawdata_week-gkcode = l_data_week-wa+3(10).
l_itgkrawdata_week-gksite = l_data_week-wa+43(15).
l_itgkrawdata_week-gkbs = l_data_week-wa+58(10).
l_itgkrawdata_week-gkdttype = l_data_week-wa+68(6).
………
從上面的程式碼我們可以發現,開發人員如果沒有先檢視l_fields的值的話,能寫出上面的字元獲取語句,是需要很大的天賦和運氣的。實際上賦值的程式碼比我選取的還要長的多,因為列很多。
記得很久之前,自己看到一個如何將結構的資料逐一讀取而不需要知曉列名的方法,語法格式如下。
ASSIGN COMPONENT comp OF STRUCTURE struc
詳細的看完幫助後,發現comp除了可以使用列數(即第幾列)外,還可以用列名(字元型),有點欣喜若狂,並想起某君的信誓旦旦。
所以可以對上面的程式碼進行一些修改,即可以實現靈活配對的功能。
FIELD-SYMBOLS:
LOOP AT l_data_week.
LOOP AT l_fields.
ASSIGN COMPONENT l_fields-fieldname
OF STRUCTURE l_itgkrawdata_week TO
ENDLOOP.
APPEND l_itgkrawdata_week TO ....
ENDLOOP.
以後,不管讀其他什麼表,只要把l_itgkrawdata_week替換成對應的工作區即可,以之前的程式碼對比,是否靈活、簡潔許多?
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/554557/viewspace-664358/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL分表後原分割槽表處理方案MySql
- url http異常處理 The valid characters are defined in RFC 7230 and RFC 3986HTTP
- 後臺處理
- 後處理 - 均值模糊
- 後處理 - 高斯模糊
- autodock vina後處理分析
- BeanPostProcessor 後置處理器Bean
- 售後處理流程用什麼管理軟體好?
- JMeter—後置處理器(十)JMeter
- Spring之後置處理器Spring
- 【Spring】Spring後置處理器Spring
- java讀取大檔案並處理Java
- ETL中後設資料處理的方式
- axios 後端拿不到引數的處理iOS後端
- 精讀《React useEvent RFC》React
- Pytorch資料前後處理整理PyTorch
- PHP安裝後錯誤處理PHP
- 資料預處理之 pandas 讀表
- 多語言應用後臺系統大家是怎麼處理的
- 處理pandas讀取資料為nan時NaN
- 讀取檔案最後一行
- 遊戲場景渲染中的PostProcessing(後處理)遊戲
- [資料庫][分庫分表]分庫分表之後,id主鍵如何處理資料庫
- 【SpringBoot + Tomcat】請求到達後端服務程序後的處理過程Spring BootTomcat後端
- thinkPHP 分頁後如何處理資料PHP
- Motion 5 for Mac(影片後期特效處理)Mac特效
- 圖形學之紋理後續/WebGL多紋理處理Web
- Linux伺服器被入侵後的處理過程Linux伺服器
- 自然語言處理背後的資料科學自然語言處理資料科學
- raid磁碟陣列OFFLINE後的應急處理方案AI陣列
- 後臺設計產品經理指南:用AxureRP設計功能強大的後臺系統儀表盤
- rfc7234之http快取HTTP快取
- Luminar 4 for MacOS影象後期處理軟體Mac
- 批處理檔案 bat 後臺執行BAT
- 前後端處理流檔案請求後端
- Unity Shader-後處理:Bloom全屏泛光UnityOOM
- 拿到登入資料以後如何處理?
- Spring原始碼之BeanFactoryPostProcessor(後置處理器)Spring原始碼Bean
- Mac影像後設資料處理器:MesaExifMac