Unsere Ninja-Suche


Neues aus dem BLOG

ABAP Cleaner

Die Bedeutung von Tools zur Einhaltung von Programmierkonventionen und Checks Die Entwicklung von qualitativ hochwertiger Software erfordert nicht nur technisches Know-how, sondern auch die Einhaltung bestimmter Programmierkonventionen und Standards....

Neue Wallpaper verfügbar!

Ab sofort stehen unsere neuen Ninja-Wallpaper zur Verfügung “Ninja-Town” zur Verfügung! Ninja-Town (1920×1080) Ninja-Town (3840×2160) Ninja-Town (3072×1920)

Clean Code und Unit Tests

Clean Code und Unit Tests: Eine unzertrennliche Kombination Neben Clean Code ist auch das Testen von entscheidender Bedeutung für eine erfolgreiche Softwareentwicklung. Automatisierte Unit Tests sind eine wichtige Methode,...

Sie wollen auch die Ninjas in Ihrem Unternehmen? Beauftragen Sie uns!

 

Aktuell suchen wir zur Festanstellung

Daten nach XML transformieren / Simple Transformation

Daten nach XML transformieren / Simple Transformation

Der Datenaustausch per XML gehört heute zum Standard. Immer wieder wird die XML-Datei hier mühevoll von Hand im ABAP erzeugt sowie in einem weiteren Programm beim einlesen analysiert.

Das folgende Programm selektiert die Einträge der Tabelle USR02 und wandelt diese mit Hilfe der Technologie Simple Transformation in eine XML-Datei um. Anschließend wird die erzeugte XML-Datei mit der gleichen Transformation wieder in eine interne Tabelle umgewandelt. Diese Form der Entwicklung hat den Vorteil, dass Sie sowohl für IN- als auch OUTbound-Schnittstellen die gleiche Transformation verwenden können.

							
							
					
DATA: gv_xml       TYPE string,
      gt_usr02_new TYPE TABLE OF usr02,
      gt_xml_table TYPE STANDARD TABLE OF string.


* ein paar Daten selektieren
SELECT * FROM usr02 INTO TABLE @DATA(gt_usr02) ORDER BY bname.

* Umwandung in ein XML
CALL TRANSFORMATION z_exl_01
 SOURCE lt_usr02 = gt_usr02
 RESULT XML gv_xml.

* XML mal ausgeben
WRITE: gv_xml.

* und jetzt das XML wieder in eine interne Tabelle umwandeln
CALL TRANSFORMATION z_exl_01
 SOURCE XML gv_xml " lt_usr02 = gt_usr02_new
 RESULT lt_usr02 = gt_usr02_new. "XML gv_xml.


ULINE.
SKIP 2.

LOOP AT gt_usr02_new ASSIGNING FIELD-SYMBOL(<gs_usr02>).

  WRITE: / <gs_usr02>-bname, <gs_usr02>-gltgv, <gs_usr02>-gltgb.

ENDLOOP.


* Daten an itab für Download
APPEND gv_xml TO gt_xml_table.

* Download auf den Rechner ausführen
CALL METHOD cl_gui_frontend_services=>gui_download
  EXPORTING
    filename                = 'C:\Temp\example01.xml'
    filetype                = 'ASC'
  CHANGING
    data_tab                = gt_xml_table
  EXCEPTIONS
    file_write_error        = 1
    no_batch                = 2
    gui_refuse_filetransfer = 3
    invalid_type            = 4
    no_authority            = 5
    unknown_error           = 6
    header_not_allowed      = 7
    separator_not_allowed   = 8
    filesize_not_allowed    = 9
    header_too_long         = 10
    dp_error_create         = 11
    dp_error_send           = 12
    dp_error_write          = 13
    unknown_dp_error        = 14
    access_denied           = 15
    dp_out_of_memory        = 16
    disk_full               = 17
    dp_timeout              = 18
    file_not_found          = 19
    dataprovider_exception  = 20
    control_flush_error     = 21
    not_supported_by_gui    = 22
    error_no_gui            = 23
    OTHERS                  = 24.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ELSE.

ENDIF.

CALL METHOD cl_gui_frontend_services=>execute
  EXPORTING
    document               = 'C:\Temp\example01.xml'
    operation              = 'OPEN'
  EXCEPTIONS
    cntl_error             = 1
    error_no_gui           = 2
    bad_parameter          = 3
    file_not_found         = 4
    path_not_found         = 5
    file_extension_unknown = 6
    error_execute_failed   = 7
    synchronous_failed     = 8
    not_supported_by_gui   = 9
    OTHERS                 = 10.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. 

				
			

Das folgende Coding enthält die dazugehörige Transformation.

							
							
					<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:def="http://www.sap.com/abapxml/types/defined">
  <!-- Definition der Schnittstelle-->
  <tt:root name="LT_USR02"/>
  <tt:template>
    <!-- Hier wird das feste Root-Tag geöffnet-->
    <USR02>
      <!-- loop über die übergebene interne Tabelle -->
      <tt:loop name="line" ref=".LT_USR02">
        <USERID>
          <!-- die Spalte BNAME ist der Schlüssel, daher immer gefüllt und es ist keine Prüfung notwendig -->
          <BNAME>
            <tt:value ref="$line.bname"/>
          </BNAME>
          <!-- die Spalte GLTGV könnte leer sein, daher muss eine Bedingung mit eingebaut werden -->
          <tt:cond>
            <GLTGV>
              <tt:value ref="$line.gltgv"/>
            </GLTGV>
          </tt:cond>
        </USERID>
      </tt:loop>
      <!-- schließen des festen Root-Tags-->
    </USR02>
  </tt:template>
</tt:transform> 

				
			

Ich möchte einen Termin vereinbaren

Ich habe ein Anliegen

Ich habe ein AnlieGen