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.

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18599.html

(0)
上一篇 2021年7月19日 21:15
下一篇 2021年7月19日 21:15

相关推荐

发表回复

登录后才能评论