ABAP和XML資料格式互相轉換的兩種方式
ABAP和XML資料格式互相轉換是廣大開發人員經常遇到的需求。本文介紹兩種方式。
1. ABAP提供了一個工具類cl_proxy_xml_transform,透過它的兩個方法abap_to_xml_xstring和xml_xstring_to_abap實現兩種格式的互換。
看具體例子:
REPORT zxm. DATA: ls_abap TYPE zzcrmost__pro001dotproduct1. DATA: ls_line LIKE LINE OF ls_abap-item. ls_line-logsys = 'AG3'. ls_line-object_family = '0401'. ls_line-product_id = 'MCF-0001'. ls_line-product_type = '01'. APPEND ls_line TO ls_abap-item. ls_line-logsys = 'QDD'. ls_line-object_family = '0402'. ls_line-product_id = 'MCF-0002'. ls_line-product_type = '02'. APPEND ls_line TO ls_abap-item. DATA(xml) = cl_proxy_xml_transform=>abap_to_xml_xstring( EXPORTING abap_data = ls_abap ddic_type = 'ZZCRMOST__PRO001DOTPRODUCT1' ). DATA: ls_abap2 LIKE ls_abap, ls_abap3 LIKE ls_abap. cl_proxy_xml_transform=>xml_xstring_to_abap( EXPORTING ddic_type = 'ZZCRMOST__PRO001DOTPRODUCT1' xml = xml IMPORTING abap_data = ls_abap2 ). ASSERT ls_abap2 = ls_abap.
最後一行的ASSERT語句,說明從ABAP格式轉換成XML格式,再轉換成ABAP格式,轉換前的ABAP資料和轉換後的ABAP資料是完全相同的。
上述ABAP程式碼使用到的結構體zzcrmost__pro001dotproduct1型別定義如下:
如果我們單步除錯工具類cl_proxy_xml_transform,發現它也沒有神奇之處,
內部生成了一個ABAP simple transformation,以此來實現ABAP和XML格式的互相轉換。
在偵錯程式裡記錄下這個生成的transformation ID,然後用事務碼STRANS開啟,就可以看到明細了。
2. 有了方法1單步除錯發現simple transformation的提示,我們可以用另一種更簡單的辦法實現兩種格式的互換,即直接呼叫simple transformation:
DATA: lv_xml TYPE string.CALL TRANSFORMATION id SOURCE b = ls_abap RESULT XML lv_xml.
生成的XML的根節點名稱為b,因為上面程式碼呼叫引數SOURCE,將ABAP變數ls_abap傳入時,繫結的引數名為“b”。
CALL TRANSFORMATION id SOURCE XML lv_xml RESULT b = ls_abap3.
ASSERT ls_abap2 = ls_abap3. 用這種方式進行ABAP->XML->ABAP仍然能得到最初的ABAP變數的值。
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2214338/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用兩種方法把JSON資料格式轉換為Python的類物件JSONPython物件
- [SSL證書].pfx格式和.Cer格式的區別以及格式互相轉換
- png轉jpg,常用格式怎麼互相轉換
- 保障兩種不同的軟體在交換資料時可以互相相容
- json_encode的資料格式化的兩種格式[]和{}JSON
- Java中將XML轉換為PDF的兩種辦法JavaXML
- Python將xml格式轉換為json格式PythonXMLJSON
- js資料型別間的互相轉換JS資料型別
- heic轉換格式的兩種方法:你get到了嗎
- hrsc2016資料集xml格式轉換為yolo格式,附下載連結XMLYOLO
- C++中OpenCV、Armadillo矩陣資料格式的轉換方式C++OpenCV矩陣
- Hive資料格式轉換Hive
- JAVA中GBK格式檔案和UTF-8格式檔案互相轉換Java
- jquery物件和DOM物件的互相轉換jQuery物件
- Python教程:Pandas資料轉換編碼的10種方式Python
- java json格式化的兩種方式JavaJSON
- 數倉的兩種輕量級資料交換格式:json與jsonbJSON
- layui tree資料格式轉換UI
- C# bytes[]和sting互相轉換C#
- python中列表、字典和字串的互相轉換Python字串
- 【JQuery】DOM物件和JQuery物件的互相轉換jQuery物件
- MyBatis 與 SpringBoot 整合:註解和xml兩種使用方式介紹MyBatisSpring BootXML
- SAP CRM WebClient UI和ABAP Webdynpro頁面的互相跳轉WebclientUI
- 探索多種資料格式:JSON、YAML、XML、CSV等資料格式詳解與比較JSONYAMLXML
- mxnet資料格式轉換為tensorflow,pytorch資料PyTorch
- JSON資料交換格式有幾種?JSON
- 各種座標系互相轉換(WGS84轉換BD-09主要)
- 交換兩個資料的三種方法
- [轉]Python格式化字串的4種方式Python字串
- 生信分析預處理:plink兩種格式識別與轉換
- Java中String和byte型別互相轉換Java型別
- Oracle資料庫日期格式轉換操作Oracle資料庫
- Python資料處理(一):處理 JSON、XML、CSV 三種格式資料PythonJSONXML
- heic格式轉換jpg怎麼轉?兩步搞定
- 字串 列表 字典 互相轉換字串
- float與byte[]互相轉換
- HTML轉換到PDF的三種方式HTML
- QString與QByteArray互相轉換的方法