ABAP 內表與XML轉換


1需求說明

在系統交互中需要將SAP內表轉換為XML文件,發送給其他系統,並且將其他系統返回的XML文件轉換為SAP內表。

2創建轉換編輯器

事務代碼:STRANS

選擇簡單轉換

以圖形方式編輯

右鍵插入新行

選擇參考的類型。此處的TYPE類型是SE11中創建的表類型

SE11表類型如下

結構為嵌套結構,其中包含詳細信息的表類型

詳細信息表類型

其中包含兩個詳細信息字段

插入行后整個結構如下

在源代碼中將會看到如下信息

完成XML格式

3代碼實現

3.1內表與XML轉換

定義變量

頭行內表賦值

將內表轉換為XML,並將返回的二進制字符串轉為XML字符串

將XML轉換為內表

3.2源代碼

DATA:LT_EKKO     TYPE ZTXML001,
     GT_EKKO     TYPE ZTXML001,
     GS_EKKO     TYPE ZSXML001,
     GT_EKPO     TYPE ZTDETAIL,
     GS_EKPO     TYPE ZSDETAIL,
     XML_XSTRING TYPE XSTRING,
     XML_STRING  TYPE STRING,
     LO_OREF     TYPE REF TO CX_ST_ERROR,
     LV_MESSAGE  TYPE CHAR200.       "輸出參數

"行結構
GS_EKPO-EBELP
 = '00010'.
GS_EKPO-LOEKZ
 = 'X'.
APPEND
 GS_EKPO TO GT_EKPO.

"頭結構
GS_EKKO-ID
 = '111'.
GS_EKKO-EBELN
 = '4100000011'.
GS_EKKO-BUKRS
 = '2000'.
GS_EKKO-DETAIL
 = GT_EKPO.
APPEND
 GS_EKKO TO GT_EKKO.

"將內表轉換為XML
TRY
 .
    CALL TRANSFORMATION ZXMLTEST001
                  SOURCE POHEADER = GT_EKKO
                  RESULT XML XML_XSTRING.
    "2進制轉換XML字符串不亂碼
    CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
      EXPORTING
        IM_XSTRING  = XML_XSTRING "二進制字符串
        IM_ENCODING = 'UTF-8'
      IMPORTING
        EX_STRING   = XML_STRING. "返回的xml字符串
  CATCH CX_ST_ERROR INTO LO_OREF.
    "傳輸XML轉換錯誤
    LV_MESSAGE  = LO_OREF->GET_TEXT( ) .
    "報錯日志保存
ENDTRY.
WRITE
 /:XML_STRING.

"將XML轉換為內表
TRY.

    CALL TRANSFORMATION ZXMLTEST001
    SOURCE XML XML_STRING
    RESULT POHEADER = LT_EKKO.
  CATCH CX_ST_ERROR INTO LO_OREF.
    "返回XML解析錯誤
    LV_MESSAGE = LO_OREF->GET_TEXT( ).
ENDTRY.
WRITE
 /:LV_MESSAGE.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM