Bir önceki yazımda( bknz : xslt_tool ile xml transformation kullanımı ) veriyi xml’e dönüştürmede xslt_tool dan nasıl yararlanabileceğimizi örneklendirmiştim. Şimdi ise veriyi kullanıcı için nasıl tasarlayabiliriz, görsel olarak ne sunabiliriz buna bakalım.

Arkaplanda bir entegrasyon söz konusu olabilir. Bununla birlikte kullanıcıya veriyi görsel olarak da göstermemiz gerekebilir. Böyle bir durumda bunu smartform, adobe form, bsp sayfası ya da webdynpro sayfası vs. olarak tasarlayıp gösterebiliyorken diğer bir yol xslt programı kullanarak tasarım yapmak.

Halihazırda elimizde xml çıktısı mevcut. Bunun için xslt_tool işlem kodundan bir xslt programı oluşturalım.

html kullanılarak oluşturulmuş tasarım kodu

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
  <xsl:output version="4.0" 
    method="html" 
    indent="no" 
    encoding="UTF-8"  
    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
    doctype-system="http://www.w3.org/TR/html4/loose.dtd" />
  <xsl:variable name="XML" select="/"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>deneme</title>
        <style type="text/css">
        body{font-family:'Tahoma',"Times New Roman",Times,serif;font-size:11px}
        table {margin:0px;border-spacing:0px} td{border-color:gray} hr{height:2px;border:0;background-color:gray;}
        </style>
      </head>
      <body style="margin:10px;width:800px">
        <xsl:call-template name="Header"/>
        <xsl:call-template name="Detail"/>
      </body>
    </html>
  </xsl:template>

   <xsl:template name="Header">
      <table style="width:100%" border="0" cellspacing="0" cellpadding="0">
          <tr valign="top">
            <td width="40%"> Personel Id :</td>
            <td width="40%">
                <xsl:value-of select="//HEADER/PERSONID"/>
            </td>
          </tr>
          <tr valign="top">
            <td width="40%"> Personel Adı :</td>
            <td width="40%">
                <xsl:value-of select="//HEADER/PERSNAME"/>
            </td>
          </tr>
          <tr valign="top">
            <td width="40%"> Başlık Açıklaması</td>
            <td width="40%">
                <xsl:value-of select="//HEADER/DESCRIPT"/>
            </td>
          </tr>
      </table>
   </xsl:template>

   <xsl:template name="Detail">
      <table style="width:100%" border="1" cellspacing="0" cellpadding="0" id="lineItemTable" class="padding">
        <tr>
          <td width="auto" align="center">
            <xsl:text>İban</xsl:text>
          </td>
          <td width="auto" align="center">
            <xsl:text>İşlem Tarihi</xsl:text>
          </td>
          <td width="auto" align="center">
            <xsl:text>Kalem Açıklaması</xsl:text>
          </td>
          <xsl:for-each select="//DETAIL/ZSTLOGNET_S2">
            <xsl:call-template name="DetailOfItems"/>
          </xsl:for-each>
        </tr>
      </table>
   </xsl:template>

   <xsl:template name="DetailOfItems">
    <tr>
      <td width="auto" align="center">
        <xsl:value-of select="./IBAN"/>
      </td>
      <td width="auto" align="center">
        <xsl:value-of select="./IDATE"/>
      </td>
      <td width="auto" align="center">
        <xsl:value-of select="./IDESCRIPTION"/>
      </td>
    </tr>
   </xsl:template>

</xsl:stylesheet>

xslt programımızı oluşturup html olarak tasarımını gerçekleştirdik. şimdi ise programımızda görsel çıktımızı görüntüleyelim.

Z_STLOG_NET_008

*&---------------------------------------------------------------------*
*& Report Z_STLOG_NET_008
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_stlog_net_008.

CLASS lcl_main DEFINITION CREATE PUBLIC .

  PUBLIC SECTION .

    DATA          :
      gs_stlognet_s3 TYPE zstlognet_s3,
      gv_xml_out     TYPE xstring
      .

    METHODS       :
      get_data      RETURNING VALUE(rv_ref) TYPE REF TO lcl_main,
      serialization RETURNING VALUE(rv_ref) TYPE REF TO lcl_main,
      disp_xml_data RETURNING VALUE(rv_ref) TYPE REF TO lcl_main
      .

ENDCLASS .

CLASS lcl_main IMPLEMENTATION.

  METHOD get_data .

    gs_stlognet_s3 = VALUE #( header-personid = '123'
                              header-persname = 'Eleman 1'
                              header-descript = 'Test'
                              detail = VALUE #( ( iban = 'TR12345678901234'
                                                  idate = sy-datum
                                                  idescription = 'A bankasına eft' )
                                                ( iban = 'TR98765432109876'
                                                  idate = sy-datum
                                                  idescription = 'B bankasına eft'
                                                  )
                                               )
                             ) .




    rv_ref = me .
  ENDMETHOD .

  METHOD serialization .

    TRY.
        CALL TRANSFORMATION zstlognet_xslt1
                     SOURCE mainroot = gs_stlognet_s3
                 RESULT XML gv_xml_out .
      CATCH cx_root INTO DATA(lo_root) .
        MESSAGE lo_root->get_text( ) TYPE 'E' .
    ENDTRY.

    rv_ref = me .
  ENDMETHOD .

  METHOD disp_xml_data .
*    cl_abap_browser=>show_xml( EXPORTING xml_xstring  = gv_xml_out ).

    TRY .
        CALL TRANSFORMATION zstlognet_xslt2
                SOURCE XML gv_xml_out "
                RESULT XML DATA(v_xout) .
      CATCH cx_root INTO DATA(lo_root).
        MESSAGE lo_root->get_text( ) TYPE 'E' .
    ENDTRY.

    cl_bcs_convert=>xstring_to_string(
      EXPORTING
        iv_xstr   = v_xout
        iv_cp     = '4110'  " SAP character set identification
      RECEIVING
        rv_string = DATA(v_html)
    ).

    cl_abap_browser=>show_html(
      EXPORTING
      size         = cl_abap_browser=>xlarge   " Size (S,M.L,XL)
      html_string  = v_html  " HTML String
      printing     = abap_true
      format       = cl_abap_browser=>landscape
    ).

    rv_ref = me .
  ENDMETHOD .

ENDCLASS .

START-OF-SELECTION .

  NEW lcl_main( )->get_data( )->serialization( )->disp_xml_data( ).

görsel çıktısı

bir sonraki yazıda üretilen xml verinin ziplenip clustur tabloya yazılması ve tablodan tekrar okunup gösterme işlemi olacak.

0