心情不好,泥总把表妹微信给冰冰了,心塞。。。

1.简单的单层结构:

<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT"/>
<tt:template>
<result>
<error>
<tt:value ref="ROOT.error"/>
</error>
<message>
<tt:value ref="ROOT.message"/>
</message>
</result>
</tt:template>
</tt:transform>

2.简单的表结构:

<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT"/>
<tt:template>
<Repairs>
<tt:loop name="I" ref="ROOT">
<Request>
<Id>
<tt:value ref="$I.ZID"/>
</Id>
<ProductName>
<tt:value ref="$I.ZPRODUCT"/>
</ProductName>
<BrandName>
<tt:value ref="$I.ZBRAND"/>
</BrandName>
<StoreName>
<tt:value ref="$I.ZSTNAME"/>
</StoreName>
<RepairerName>
<tt:value ref="$I.ZREPNAME"/>
</RepairerName>
<Created>
<tt:value ref="$I.ZCREATED"/>
</Created>
<Updated>
<tt:value ref="$I.ZUPDATED"/>
</Updated>
<StatusCode>
<tt:value ref="$I.ZSTATUS"/>
</StatusCode>
<StatusText>
<tt:value ref="$I.ZSTATUST"/>
</StatusText>
<Overdue>
<tt:value ref="$I.ZOVERDUE"/>
</Overdue>
</Request>
</tt:loop>
</Repairs>
</tt:template>
</tt:transform>

3.既有结构又有表:

<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="OUTPUT"/>
<tt:template>
<TX>
<REQUEST_SN>
<tt:value ref="OUTPUT.REQUEST_SN"/>
</REQUEST_SN>
<CUST_ID>
<tt:value ref="OUTPUT.CUST_ID"/>
</CUST_ID>
<TX_CODE>
<tt:value ref="OUTPUT.TX_CODE"/>
</TX_CODE>
<RETURN_CODE>
<tt:value ref="OUTPUT.RETURN_CODE"/>
</RETURN_CODE>
<RETURN_MSG>
<tt:value ref="OUTPUT.RETURN_MSG"/>
</RETURN_MSG>
<LANGUAGES>
<tt:value ref="OUTPUT.LANGUAGES"/>
</LANGUAGES>
<TX_INFO>
<ACCNO1>
<tt:value ref="OUTPUT.TX_INFO.ACCNO1"/>
</ACCNO1>
<CURR_COD>
<tt:value ref="OUTPUT.TX_INFO.CURR_COD"/>
</CURR_COD>
<ACC_NAME>
<tt:value ref="OUTPUT.TX_INFO.ACC_NAME"/>
</ACC_NAME>
<ACC_ORGAN>
<tt:value ref="OUTPUT.TX_INFO.ACC_ORGAN"/>
</ACC_ORGAN>
<ACC_STATE>
<tt:value ref="OUTPUT.TX_INFO.ACC_STATE"/>
</ACC_STATE>
<INTR>
<tt:value ref="OUTPUT.TX_INFO.INTR"/>
</INTR>
<TOTAL_PAGE>
<tt:value ref="OUTPUT.TX_INFO.TOTAL_PAGE"/>
</TOTAL_PAGE>
<PAGE>
<tt:value ref="OUTPUT.TX_INFO.PAGE"/>
</PAGE>
<POSTSTR>
<tt:value ref="OUTPUT.TX_INFO.POSTSTR"/>
</POSTSTR>
<FLAG>
<tt:value ref="OUTPUT.TX_INFO.FLAG"/>
</FLAG>
<FILE_LOCSTR>
<tt:value ref="OUTPUT.TX_INFO.FILE_LOCSTR"/>
</FILE_LOCSTR>
<DETAILLIST>
<tt:loop name="I" ref="OUTPUT.TX_INFO.DETAILLIST.DETAILINFO">
<DETAILINFO>
<TRANDATE>
<tt:value ref="$I.TRANDATE"/>
</TRANDATE>
<TRANTIME>
<tt:value ref="$I.TRANTIME"/>
</TRANTIME>
<CRE_TYP>
<tt:value ref="$I.CRE_TYP"/>
</CRE_TYP>
<CRE_NO>
<tt:value ref="$I.CRE_NO"/>
</CRE_NO>
<MESSAGE>
<tt:value ref="$I.MESSAGE"/>
</MESSAGE>
<AMT>
<tt:value ref="$I.AMT"/>
</AMT>
<AMT1>
<tt:value ref="$I.AMT1"/>
</AMT1>
<FLAG1>
<tt:value ref="$I.FLAG1 "/>
</FLAG1>
<ACCNO2>
<tt:value ref="$I.ACCNO2"/>
</ACCNO2>
<ACC_NAME1>
<tt:value ref="$I.ACC_NAME1"/>
</ACC_NAME1>
<FLAG2>
<tt:value ref="$I.FLAG2"/>
</FLAG2>
<TRAN_FLOW>
<tt:value ref="$I.TRAN_FLOW"/>
</TRAN_FLOW>
<BFLOW>
<tt:value ref="$I.BFLOW"/>
</BFLOW>
<DET_NO>
<tt:value ref="$I.DET_NO"/>
</DET_NO>
<DET>
<tt:value ref="$I.DET"/>
</DET>
<REAL_TRANDATE>
<tt:value ref="$I.REAL_TRANDATE"/>
</REAL_TRANDATE>
<RLTV_ACCNO>
<tt:value ref="$I.RLTV_ACCNO"/>
</RLTV_ACCNO>
<CADBank_Nm>
<tt:value ref="$I.CADBank_Nm"/>
</CADBank_Nm>
<Ovrlsttn_Trck_No>
<tt:value ref="$I.Ovrlsttn_Trck_No"/>
</Ovrlsttn_Trck_No>
<ExoStm_Py_Rmrk>
<tt:value ref="$I.ExoStm_Py_Rmrk"/>
</ExoStm_Py_Rmrk>
</DETAILINFO>
</tt:loop>
</DETAILLIST>
</TX_INFO>
</TX>
</tt:template>
</tt:transform>

下面就简单说说Strans的简单转换:

1.ROOT,这是转换的根节点,开始节点,程序到这就执行转换开始了,后面跟的NAME是对应外面的返回结构名字:比如第三个,外面调用就需要:

  CALL TRANSFORMATION z_ccb_detail_return
SOURCE XML iv_response_message_xstring
RESULT output = ls_resp_mapping_result_data.

把结果返给节点output对应的参数结构。

2.template这个是没有实际节点的,在简单转换里都是自动生成的,表示模板结构。

3.后面开始带标签的字段了,注意结构层次,要对应到XML的结构层次,比如第一个:就是RESULT结构名,然后带两个字段。

结构第一级节点,用ROOT的名字.字段名。这表示这是第一级节点,会直接默认到第一级结构对应的字段。

如果第二级还是结构,那么第一级的名字作为标签,第二级以第一级的标签为前缀,加上.加上字段名。

如果有循环的表结构,这时候需要以表名作为标签字段。然后加上loop循环,因为一般到循环已经是深结构了,所以会做个映射。如3.

STRANS一:简单的XML转换的更多相关文章

  1. 一个简单的XML与数组之间的转换

    xml是网络使用最多的数据交换格式,所以,不掌握怎么操作它,又有蛋疼的了. php中可以操作xml的类/函数很多,个人认为最简单的是SimpleXMLElement这个类,它的使用就跟其名字一样:简单 ...

  2. ABAP 内表与XML转换

    1需求说明 在系统交互中需要将SAP内表转换为XML文件,发送给其他系统,并且将其他系统返回的XML文件转换为SAP内表. 2创建转换编辑器 事务代码:STRANS 选择简单转换 以图形方式编辑 右键 ...

  3. 如何在ASP.NET中用C#将XML转换成JSON

    本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方式来 ...

  4. 如何在ASP.NET中用C#将XML转换成JSON 【转】

      本文旨在介绍如果通过C#将获取到的XML文档转换成对应的JSON格式字符串,然后将其输出到页面前端,以供JavaScript代码解析使用.或许你可以直接利用JavaScript代码通过Ajax的方 ...

  5. 最简单的XML用法

    在传递数据时,XML和JSON是最常用的数据格式,SQL Server从很早的版本就开始支持XML格式,而对于JSON格式,SQL Server从2016版本开始支持.大多数数据库系统并没有升级到SQ ...

  6. Java对象和XML转换

    有时候,我们需要把Java对象转换成XML文件.这时可以用JAXB来实现.(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了) 假如某个公司有许多部门,每个部门有许多职员,我们可以这样 ...

  7. Dom4j把xml转换成Map(固定格式)

    /** * 可解析list * * @param fileName * @return * @throws Exception */ @SuppressWarnings("unchecked ...

  8. Dom4j把xml转换成Map(非固定格式)

    将xml转换成Map,能够应对不用结构的xml,而不是只针对固定格式的xml.转换规则:1.主要是Map与List的互相嵌套2.同名称的节点会被装进List 示例: import java.util. ...

  9. 非常简单的XML解析(SAX解析、pull解析)

    这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...

随机推荐

  1. Vue系列之 => html-webpack-plugin的两个基本作用

    安装 npm i html-webpack-plugin -D webpack.config.js const path = require('path'); //启用热更新的第二步,导入webpac ...

  2. 【转】Powershell与jenkins集成部署的运用(powershell运用)

    powershell简介: 远程管理采用的一种新的通信协议,Web Services for Management,简称WS-MAN它通过http或者https进行工作,WS-WAN的实现主要基于一个 ...

  3. json转换导致金额失真问题解决

    平台的余额查询逻辑中,今天爆了个雷.因平台用户都是较大的商户,且资金一般都是整数(这也是埋雷这么久的原因吧),但今天有客户说他们今天充值金额有个0.63的零头,但为何页面展示的账户余额零头却只是0.6 ...

  4. nginx 环境不支持thinkPHP

    在linux+Nginx+mysql+PHP 新装的服务器下,不支持重写pathinfo功能 . 需要加入这个代码 让Nginx 支持重写功能 location / { if (!-e $reques ...

  5. java 接口详解

    定义接口 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口.Java 接口本身没有任何实现,只描述 public 行为,因此 Java 接口比 Java 抽象类更抽象化.Jav ...

  6. 996.icu,不加班的程序员有前途吗?

    一.有没有不加班的程序员? 有,我就是. 我目前工作与一家500强外企(欧美),职称为高级软件开发专家. 我在这家公司(500强外企)已经服务了10年,所有加班次数合起来不超过10天,最近3年则一次都 ...

  7. 集成学习:以Bagging、Adaboosting为例

    集成学习是一大类模型融合策略和方法的统称,以下以bagging和boosting为例进行说明: 1.boosting boosting方法训练分类器采用串行的方式,每个弱分类器之间是相互依赖的,尤其后 ...

  8. 1.4:SubShader

    文章著作权归作者所有.转载请联系作者,并在文中注明出处,给出原文链接. 本系列原更新于作者的github博客,这里给出链接. 在了解了渲染流水线之后,我们可以开始SubShader的学习了. 什么是S ...

  9. 单元测试系列之八:Sonar 数据库表关系整理一(续)

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 简介:Sonar平台是目前较为流行的静态代码扫描平台,为了便于使用以及自己二次开发,有必要对它的数据库结构进行学习 ...

  10. async/await 的使用

    async : 使用 async 修饰符可将方法.lambda 表达式或匿名方法指定为异步. 如果对方法或表达式使用此修饰符,则其称为异步方法 await: await 运算符应用于异步方法中的任务, ...