STRANS一:简单的XML转换
Posted sapsb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STRANS一:简单的XML转换相关的知识,希望对你有一定的参考价值。
心情不好,泥总把表妹微信给冰冰了,心塞。。。
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转换的主要内容,如果未能解决你的问题,请参考以下文章