心情不好,泥总把表妹微信给冰冰了,心塞。。。
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.