Bei den Anhängen im Reisemanagement kann eine Beschreibung angegeben werden. Die Beschreibung wird allerdings in den Anhängen nicht angezeigt. In der Klasse CL_FITV_GOS wird die Anlage gespeichert. Durch die...
Nach Erstellung eines Adaptation Projektes wird automatisch die i18n.properties Datei angelegt. Mit dieser Datei können sprachenübergreifend alle Texte in der Anwendung gepflegt werden. Möchten Sie die Texte pro Sprache...
Im folgenden Artikel werden wir eine Beispielimplementierung zeigen, mit der die Pflegedialoge über den Tabellenpflegegenerator automatisch in Optimaler Größe generiert werden können. Hierfür benötigen wir keine Modifikation und diese...
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....
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: 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,...
Wir freuen uns, dass die DSAG Technologietage 2023 endlich anstehen und wir als Aussteller Teil dieser großen Veranstaltung sein dürfen. Die Messe findet am 22. und 23.03. in Mannheim...
Es ist schon fast vier Jahre her, dass wir zum ersten Mal alle zusammen im HQ versammelt waren. Der 20. September 2019 war ein besonderes Datum in der Geschichte...
Sie wollen auch die Ninjas in Ihrem Unternehmen?Beauftragen Sie uns!
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>