abap xml转换(1)XSLT程序

导语:最近做一个银企直连的接口改造,原来数据传输格式为XML格式,现在要转成josn格式,我的方案是xml转成abap,abap转成josn,这里就不分享abap转josn的过程了,感兴趣可以在【abap josn转换】中看一下。

本次转换是进行复杂的xml转换(XSLT程序),还有一种是【abap xml转换(2)简单转换】,两者的xml格式和创建过程略有差异,下面分享一下实现过程。

1、查看原来的XML格式
2、创建一个同样格式的XML
3、根据XML格式创建结构
4、读取XML数据到结构

原来的XML格式
原来的xml是在代理类中,存放在一个string类型的字符串中。
在这里插入图片描述
换一种格式查看一下xml的内容
在这里插入图片描述
创建一个同样格式的XML
根据上图的xml创建一个同样格式的xml,以便将数据放到结构中。

事务码:STRANS,选择转换类型为 X XSLT

创建XML如下图,尽量节点名称要和上面debug界面中的XML名称一样,要特别注意红色框住的区域,必须用原XML格式的【节点名称/字段名称】,行项目需要【节点名称/行项目节点名称/字段名称】这样才可以把值一一对应的放进我们的结构中。
在这里插入图片描述
XML创建代码

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
  <xsl:strip-space elements="*"/>
  <xsl:template match="/">
    <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
      <asx:values>
        <TX>
          <REQUEST_SN>
            <xsl:value-of select="TX/REQUEST_SN"/>
          </REQUEST_SN>
          <CUST_ID>
            <xsl:value-of select="TX/CUST_ID"/>
          </CUST_ID>
          <USER_ID>
            <xsl:value-of select="TX/USER_ID"/>
          </USER_ID>
          <PASSWORD>
            <xsl:value-of select="TX/PASSWORD"/>
          </PASSWORD>
          <TX_CODE>
            <xsl:value-of select="TX/TX_CODE"/>
          </TX_CODE>
          <LANGUAGE>
            <xsl:value-of select="TX/LANGUAGE"/>
          </LANGUAGE>
          <TX_INFO>
            <PAY_ACCNO>
              <xsl:value-of select="TX/TX_INFO/PAY_ACCNO"/>
            </PAY_ACCNO>
            <RECV_ACCNO>
              <xsl:value-of select="TX/TX_INFO/RECV_ACCNO"/>
            </RECV_ACCNO>
            <RECV_ACC_NAME>
              <xsl:value-of select="TX/TX_INFO/RECV_ACC_NAME"/>
            </RECV_ACC_NAME>
            <RECV_EXCHANGENO>
              <xsl:value-of select="TX/TX_INFO/RECV_EXCHANGENO"/>
            </RECV_EXCHANGENO>
            <RECV_COUNTERNO>
              <xsl:value-of select="TX/TX_INFO/RECV_COUNTERNO"/>
            </RECV_COUNTERNO>
            <RECV_OPENACC_DEPT>
              <xsl:value-of select="TX/TX_INFO/RECV_OPENACC_DEPT"/>
            </RECV_OPENACC_DEPT>
            <RECV_UBANKNO>
              <xsl:value-of select="TX/TX_INFO/RECV_UBANKNO"/>
            </RECV_UBANKNO>
            <AMOUNT>
              <xsl:value-of select="TX/TX_INFO/AMOUNT"/>
            </AMOUNT>
            <CUR_TYPE>
              <xsl:value-of select="TX/TX_INFO/CUR_TYPE"/>
            </CUR_TYPE>
            <USEOF>
              <xsl:value-of select="TX/TX_INFO/USEOF"/>
            </USEOF>
            <REM1>
              <xsl:value-of select="TX/TX_INFO/REM1"/>
            </REM1>
            <REM2>
              <xsl:value-of select="TX/TX_INFO/REM2"/>
            </REM2>
          </TX_INFO>
        </TX>
      </asx:values>
    </asx:abap>
  </xsl:template>
</xsl:transform>

根据XML格式创建结构
一定要用结构来,行项目节点也要用结构,不然会catch到错误
在这里插入图片描述
读取XML数据到结构

    DATA :lw_tx      TYPE zepic_mod_2.
    
     "解析xml内容到结构lw_tx中
      CALL TRANSFORMATION  zepic_get_ccb_mod2
                SOURCE XML ls_other_parameters-payment_file
                RESULT tx = lw_tx.

在这里插入图片描述
在这里插入图片描述
这样数据就转换到结构当中了,然后在进行abap转josn传出去就好了。

作者:小飞猪猪猪猪猪猪猪–CSDN

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞猪猪猪猪猪猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值