SAP’de XML çıktısı oluşturmak için çeşitli yöntemler mevcut. Bunlardan biri call transformation. Ben de XML yapısı oluşturarak bir serialization  örneği oluşturmuş olacağım.

Öncelikle xml yapımız için SE11 işlem kodundan bir structure oluşturacağım. Daha sonra xslt_tool’da bir simple transformation yapısı oluşturacağım. Oluşturduğum bu yapıyı başka bir yazıda nasıl html ile tasaryabiliriz görsel olarak ne sunabilirizi küçük bir örnekle gösteriyor olacağım. Bir başka yazıda ise verinin ziplenip clustur yapıda nasıl tutulacağını örneklendireceğim. Özellikle entegrasyon sistemlerinde sıkça kullanılacak bir yapı olacaktır.

XML çıktımız aşağıdaki gibi olacaktır.

SE11 işlem kodundan aşağıdaki yapıları sırasıyla oluşturuyoruz.

Yapılarımızı oluşturmuş olduk. Şimdi xslt_tool işlem kodu ile simple transformation yapımızı oluşturalım.

Oluşan data rootu sürükle bırak ile sağdaki bloğa bırakıyoruz.

Transformation nesnemizi aktif edip bitiriyoruz. Böylelikle transformation yapımızı oluşturmuş olduk. Şimdi bunu programımızda nasıl kullanacağımıza bir örnekle bakalım. Kod yapısı aşağıdaki gibi olacaktır.

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 ).

    rv_ref = me .
  ENDMETHOD .

ENDCLASS .

START-OF-SELECTION .

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