SAP ABAP XSLT

From SapWiki

Ejemplo 01: XSLT ZHCM_CARGAR_DOCUMENTO (trn. xslt_tool)

 <?sap.transform simple?>
 <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
   <tt:root name="ROOT"/>
   <tt:template>
     <documento>
       <id_documento tt:value-ref=".ROOT.ID_DOCUMENTO"/>
       <tt:cond check="not-initial(ROOT.FIRMA)">
         <firma tt:value-ref=".ROOT.FIRMA"/>
       </tt:cond>
       <nombre_documento tt:value-ref=".ROOT.NOMBRE_DOCUMENTO"/>
       <tipo_archivo tt:value-ref=".ROOT.TIPO_ARCHIVO"/>
       <archivo_b64 tt:value-ref=".ROOT.ARCHIVO_B64"/>
     </documento>
   </tt:template>
 </tt:transform>

Generar XML

types: begin of ty_documento,
  ID_DOCUMENTO type string,
  firma type string,
  NOMBRE_DOCUMENTO type string,
  TIPO_ARCHIVO type string,
  ARCHIVO_B64 type string,
end of ty_documento.

data ls_documento type ty_documento.
data l_documento_xml type string.
DATA l_exception_error TYPE REF TO cx_st_error.
DATA l_st_error TYPE string.
TRY.
    CALL TRANSFORMATION zhcm_cargar_documento
     SOURCE root = ls_documento
     RESULT XML l_documento_xml.
  CATCH cx_st_error INTO l_exception_error.
    l_st_error = l_exception_error->get_text( ).
    p_subrc = 1.
    p_msg = l_st_error.
    RETURN.
ENDTRY.

Leer XML

DATA l_exception_error TYPE REF TO cx_st_error.
DATA l_st_error TYPE string.
TRY.
    CALL TRANSFORMATION zhcm_cargar_documento
    SOURCE XML  l_documento_xml
    RESULT root = ls_documento.
  CATCH cx_st_error INTO l_exception_error.
    l_st_error = l_exception_error->get_text( ).
    p_subrc = 1.
    p_msg = l_st_error.
    RETURN.
ENDTRY.

Attribute

  • ejemplo 01
<campoString>
  <tt:attribute name="name" value-ref=".PERSONALIZADOS.PESO_NAME"/>
  <tt:value ref=".PERSONALIZADOS.PESO"/>
</campoString>
<campoString name="Peso">24.271,366 KG</campoString>
  • Ejemplo 02
<?xml version="1.0" encoding="ISO-8859-1"?>
<RspRecuperarDocumento>
  <RecuperarDocumento ID="1376954087995">
    <EstadoOperacion>0</EstadoOperacion>
    <Mensaje>Operación existosa</Mensaje>
    <idExpediente>413</idExpediente>
    <Documento>
      <idDocumento>697</idDocumento>
      <Extension>PDF</Extension>
      <Formato>base64</Formato>
      <CodTipoDocumento>1</CodTipoDocumento>
      R0lGODlh3QAxAPcAAAAA
    </Documento>
  </RecuperarDocumento>
</RspRecuperarDocumento>

<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
  <tt:root name="RSPRECUPERARDOCUMENTO"/>
  <tt:template>
    <RspRecuperarDocumento>
      <RecuperarDocumento>
        <tt:attribute name="ID" value-ref=".RSPRECUPERARDOCUMENTO.IDRECUPERARDOCUMENTO"/>
        <EstadoOperacion tt:value-ref=".RSPRECUPERARDOCUMENTO.ESTADOOPERACION"/>
        <Mensaje tt:value-ref=".RSPRECUPERARDOCUMENTO.MENSAJE"/>

        <tt:cond check="not-initial(RSPRECUPERARDOCUMENTO.IDEXPEDIENTE)">
          <idExpediente tt:value-ref=".RSPRECUPERARDOCUMENTO.IDEXPEDIENTE"/>
        </tt:cond>

        <tt:cond check="not-initial(RSPRECUPERARDOCUMENTO.DATA)">
          <Documento>
            <idDocumento tt:value-ref=".RSPRECUPERARDOCUMENTO.IDDOCUMENTO"/>
            <Extension tt:value-ref=".RSPRECUPERARDOCUMENTO.EXTENCION"/>
            <Formato tt:value-ref=".RSPRECUPERARDOCUMENTO.FORMATO"/>
            <CodTipoDocumento tt:value-ref=".RSPRECUPERARDOCUMENTO.CODTIPODOCUMENTO"/>
            
          </Documento>
        </tt:cond>
      </RecuperarDocumento>
    </RspRecuperarDocumento>
 </tt:template>

</tt:transform>

</nowiki>

Cond

 <tt:cond check="not-initial(RSPCONSULTAREXPEDIENTE.RUTEMPLEADOR)">
   <RUTEMPLEADOR tt:value-ref=".RSPCONSULTAREXPEDIENTE.RUTEMPLEADOR"/>
 </tt:cond>

Ver XML DISPLAY_XML_STRING

data l_xtring type xstring.
try.
  CALL TRANSFORMATION Z_TRANSF_SIMPLE_EJEMPLO1
    SOURCE  ROOT = t_a
    RESULT  XML l_xstring.
  catch cx_st_error.
endtry.
call function 'DISPLAY_XML_STRING'
  EXPORTING xml_string = l_xstring.