欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SAP 自定义解析JSON方法

程序员文章站 2022-05-18 15:27:27
...

JSON串
HEADER = ‘{“STATUS”:“1”,“BSART”:“SH02”,“LIFNR”:“0040003799”,“EKORG”:“SHM1”,“EKGRP”:“SH2”,“BUKRS”:“5200”,“ZCMISNO”:"",“ZCRTNAME”:"",“ZSWZXR”:"",“LONGTEXT”:"",“ERNAM”:"",“WAERS”:"",“EBELNESSC”:""}’.

FORM analysis_json TABLES tab_alv TYPE STANDARD TABLE
USING t
CHANGING gv_text status ebelnessc tdline.
FIELD-SYMBOLS: .

DATA:BEGIN OF tab_j,
txt(262143) TYPE c,
END OF tab_j.
DATA:tab1 LIKE TABLE OF tab_j WITH HEADER LINE.
DATA:tab2 LIKE TABLE OF tab_j WITH HEADER LINE.
DATA:lv_fld_name TYPE string.
DATA:key TYPE string.
DATA:value TYPE string.
REPLACE ALL OCCURRENCES OF ‘[’ IN t WITH ‘’.
REPLACE ALL OCCURRENCES OF ‘]’ IN t WITH ‘’.
SPLIT t AT ‘}’ INTO TABLE tab1.
LOOP AT tab1.
REPLACE ALL OCCURRENCES OF ‘{’ IN tab1-txt WITH ‘’.
SPLIT tab1-txt AT ‘,’ INTO TABLE tab2.
LOOP AT tab2.
IF tab2-txt <> ‘’.
CLEAR:key,value.
REPLACE ALL OCCURRENCES OF ‘"’ IN tab2-txt WITH ‘’.
SPLIT tab2-txt AT ‘:’ INTO key value.
CONDENSE key NO-GAPS.
CONDENSE value NO-GAPS.
IF key = ‘PS_PSP_PNR’.
SELECT SINGLE pspnr INTO value FROM prps WHERE posid = value.
ENDIF.
IF value = ‘NULL’.
value = ‘’.
ENDIF.
IF value = ‘null’.
value = ‘’.
ENDIF.

    IF key = 'LONGTEXT'.
      gv_text = value.
    ELSEIF key = 'STATUS'.
      status = value.
    ELSEIF key = 'EBELNESSC'.
      ebelnessc = value.
    ELSEIF key = 'TDLINE'.
      tdline = value.
    ELSE.
      CONCATENATE 'TAB_ALV-' key INTO lv_fld_name.
      ASSIGN (lv_fld_name) TO <fs1>.
      <fs1> = value.
    ENDIF.
  ENDIF.
ENDLOOP.
APPEND tab_alv.
CLEAR:tab_alv.
CLEAR:tab2,tab2[].

ENDLOOP.
ENDFORM.

相关标签: SAP知识点 sap