SAP ABAP将XML解析为内表 CALL FUNCTION ‘SMUM_XML_PARSE‘<转载>

原文链接:https://blog.csdn.net/huanglin6/article/details/122842670
背景
最近在弄Fiori 的新闻磁贴,然后了解了一下新闻磁贴的原理(RSS),其中RSS常用是XML的格式,所以需要使用ABAP对RSS订阅进行解析后然后odata(或者restful)输出
解析后的内表
在这里插入图片描述
demo code ABAP

  REPORT Y_PERSON_XML.
  DATA lv_url TYPE string VALUE 'https://blog.csdn.net/huanglin6/rss/list?spm=1001.2014.3001.5494'.
  DATA lo_http TYPE REF TO if_http_client.

  DATA:LV_RESULT_STRING TYPE STRING,
       E_DATA TYPE STRING.
  DATA TEXT     TYPE STRING.
  DATA LV_XSTRING   TYPE XSTRING.
  DATA XML_TABLE TYPE STANDARD TABLE OF SMUM_XMLTB.
  DATA RETURN    TYPE STANDARD TABLE OF BAPIRET2.

  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                = lv_url
    IMPORTING
      client             = lo_http
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      OTHERS             = 4.
  IF sy-subrc = 0.
    CALL METHOD lo_http->send
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        http_invalid_timeout       = 4
        OTHERS                     = 5.
    IF sy-subrc <> 0.
*  Implement suitable error handling here
    ENDIF.
    CALL METHOD lo_http->receive
      EXCEPTIONS
        http_communication_failure = 1
        http_invalid_state         = 2
        http_processing_failed     = 3
        OTHERS                     = 4.
    IF sy-subrc = 0.

      LV_RESULT_STRING = LO_HTTP->RESPONSE->GET_CDATA( ).

      CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
        EXPORTING
          TEXT           = LV_RESULT_STRING
        IMPORTING
          BUFFER         = LV_XSTRING
       EXCEPTIONS
        FAILED         = 1
                .

      CALL FUNCTION 'SMUM_XML_PARSE'
        EXPORTING
          xml_input       = LV_XSTRING
        TABLES
          xml_table       = XML_TABLE
          return          = return
                .
      IF SY-SUBRC EQ 0.

      ENDIF.

    ENDIF.
  ENDIF.

其中

HIER是层次结构(即xml文件的第N层),
TYPE是当前结点的类型:A:属性,V是结点值,空:其他

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值