採用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
- 後臺處理
- 後處理 - 均值模糊
- 後處理 - 高斯模糊
- SGI採用Woodcrest處理器REST
- BeanPostProcessor 後置處理器Bean
- /etc/fstab改錯後的處理
- svn dump 失敗後的處理
- Shell 引數的讀取和處理
- 讀Cookie安全後的讀後感Cookie
- JMeter—後置處理器(十)JMeter
- 售後處理流程用什麼管理軟體好?
- 往返讀取後臺資料的代價
- url http異常處理 The valid characters are defined in RFC 7230 and RFC 3986HTTP
- Facebook:使用者點選舉報後的後臺處理流程
- MySQL忘記root密碼後的處理MySql密碼
- aix的協處理(後臺執行程式)AI行程
- ATO料號BOOKED後要取消的處理
- ETL中後設資料處理的方式
- Spring之後置處理器Spring
- PHP安裝後錯誤處理PHP
- unity 部分obj不接受後處理UnityOBJ
- mysql忘記密碼後處理MySql密碼
- java讀取大檔案並處理Java
- CSS > 關於雪碧圖預處理和後處理方案的討論CSS
- 讀取檔案最後一行
- 資料預處理之 pandas 讀表
- 多語言應用後臺系統大家是怎麼處理的
- Autoprefixer:一個以最好的方式處理瀏覽器字首的後處理程式瀏覽器
- 遊戲場景渲染中的PostProcessing(後處理)遊戲
- axios 後端拿不到引數的處理iOS後端
- vrlogon.dll出錯後的處理VRGo
- 銷貨後訂單還是BOOKED的處理
- 怎麼控制伺服器的後臺處理伺服器
- rman備份後發現壞塊的處理
- 發生壞塊後的處理及確認
- [資料庫][分庫分表]分庫分表之後,id主鍵如何處理資料庫
- Motion 5 for Mac(影片後期特效處理)Mac特效