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

相关推荐

发表回复

登录后才能评论