[ABAP] XML -> String

DATA: xml TYPE string VALUE '<?xml version="1.0" encoding="utf-8"?><asx:abap version="1.0" xmlns:asx="http://www.sap.com/abapxml"><asx:values><TEXT>Hello world!</TEXT></asx:values></asx:abap>'.
DATA: text TYPE string.

* XML -> ABAP (string)
CALL TRANSFORMATION id SOURCE XML xml RESULT text = text.

WRITE: / text.

[ABAP] itab -> XML

TYPES: BEGIN OF s_person,
         name  TYPE string,
         title TYPE string,
         age   TYPE i,
       END OF s_person.

TYPES: t_person TYPE STANDARD TABLE OF s_person WITH DEFAULT KEY.

DATA(it_persons) = VALUE t_person( ( name = 'Horst' title = 'Herr' age = 30 )
                                   ( name = 'Jutta' title = 'Frau' age = 35 )
                                   ( name = 'Ingo' title = 'Herr' age = 31 ) ).

* ABAP (iTab) -> XML
DATA(o_writer_itab_xml) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_xml10 ).
CALL TRANSFORMATION id SOURCE values = it_persons RESULT XML o_writer_itab_xml.
DATA(itab_xml) = cl_abap_codepage=>convert_from( o_writer_itab_xml->get_output( ) ).

WRITE: / itab_xml.

[ABAP] XML -> itab

TYPES: BEGIN OF s_person,
         name  TYPE string,
         title TYPE string,
         age   TYPE i,
       END OF s_person.

TYPES: t_person TYPE STANDARD TABLE OF s_person WITH DEFAULT KEY.

DATA(xml) = |<?xml version="1.0" encoding="UTF-8"?>| &&
            |<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">| &&
            |  <asx:values>| &&
            |    <VALUES>| &&
            |      <item>| &&
            |        <NAME>Horst</NAME>| &&
            |        <TITLE>Herr</TITLE>| &&
            |        <AGE>30</AGE>| &&
            |      </item>| &&
            |      <item>| &&
            |        <NAME>Jutta</NAME>| &&
            |        <TITLE>Frau</TITLE>| &&
            |        <AGE>35</AGE>| &&
            |      </item>| &&
            |      <item>| &&
            |        <NAME>Ingo</NAME>| &&
            |        <TITLE>Herr</TITLE>| &&
            |        <AGE>31</AGE>| &&
            |      </item>| &&
            |    </VALUES>| &&
            |  </asx:values>| &&
            |</asx:abap>|.

* XML -> ABAP (itab)
DATA(it_persons) = VALUE t_person( ).

CALL TRANSFORMATION id SOURCE XML xml RESULT values = it_persons.

IF lines( it_persons ) > 0.
  WRITE: / it_persons[ 1 ]-name.
endif.

[ABAP] itab -> JSON

* Variante 1 (CALL TRANSFORMATION)
TYPES: BEGIN OF s_person,
         name  TYPE string,
         title TYPE string,
         age   TYPE i,
       END OF s_person.

TYPES: t_person TYPE STANDARD TABLE OF s_person WITH DEFAULT KEY.

DATA(it_persons) = VALUE t_person( ( name = 'Horst' title = 'Herr' age = 30 )
                                   ( name = 'Jutta' title = 'Frau' age = 35 )
                                   ( name = 'Ingo' title = 'Herr' age = 31 ) ).

* ABAP (iTab) -> JSON
DATA(o_writer_itab) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id SOURCE values = it_persons RESULT XML o_writer_itab.
DATA: json TYPE string.
cl_abap_conv_in_ce=>create( )->convert( EXPORTING
                                          input = o_writer_itab->get_output( )
                                        IMPORTING
                                          data = json ).

WRITE: / json.

* Variante 2 (/ui2/cl_abap2json)
SELECT matnr, mtart, meins, pstat
  INTO TABLE @DATA(it_mara)
  FROM mara
  UP TO 10 ROWS.

* ABAP (iTab) -> JSON
DATA(o_conv) = NEW /ui2/cl_abap2json( ).
DATA(lv_str) = o_conv->table2json( it_data = it_mara ).

WRITE: / lv_str.

[ABAP] JSON -> itab

TYPES: BEGIN OF s_person,
         name  TYPE string,
         title TYPE string,
         age   TYPE i,
       END OF s_person.

TYPES: t_person TYPE STANDARD TABLE OF s_person WITH DEFAULT KEY.

DATA: json TYPE string VALUE '{"VALUES":[{"NAME":"Horst","TITLE":"Herr","AGE":30},{"NAME":"Jutta","TITLE":"Frau","AGE":35},{"NAME":"Ingo","TITLE":"Herr","AGE":31}]}'.
DATA(it_persons) = VALUE t_person( ).

* JSON -> ABAP (iTab)
CALL TRANSFORMATION id SOURCE XML json RESULT values = it_persons.

IF lines( it_persons ) > 0.
  WRITE: / it_persons[ 1 ]-name.
ENDIF.

[ABAP] itab -> JSON (trex)

TYPES: BEGIN OF s_person,
         name  TYPE string,
         title TYPE string,
         age   TYPE i,
       END OF s_person.

TYPES: t_person TYPE STANDARD TABLE OF s_person WITH DEFAULT KEY.

DATA(it_persons) = VALUE t_person( ( name = 'Horst' title = 'Herr' age = 30 )
                                   ( name = 'Jutta' title = 'Frau' age = 35 )
                                   ( name = 'Ingo' title = 'Herr' age = 31 ) ).

* ABAP (iTab) -> JSON (trex)
DATA(o_trex) = NEW cl_trex_json_serializer( it_persons ).
o_trex->serialize( ).

WRITE: / o_trex->get_data( ).

[MS Access] Binärdaten aus einer Datei lesen

' https://stackoverflow.com/questions/660312/how-can-i-read-a-binary-file-using-vba
Sub BtnReadBinaryClick()
    ' Dateipfad + Dateiname
    Dim sFile As String
    sFile = "c:\\temp\\test.bin"
   
    ' Array für Binärdaten
    Dim byaFileData() As Byte
   
    ' Dateizeiger
    Dim fd As Integer
    ' nächsten freien Dateizeiger holen
    fd = FreeFile

    ' Datei zum binären Lesen öffnen
    Open sFile For Binary Access Read As #fd
    ' Array an Dateigröße anpassen
    ReDim byaFileData(0 To LOF(fd) - 1)
    ' Datei in Array einlesen
    Get #fd, , byaFileData
   
    ' hier byaFileData bearbeiten
    ...
   
    ' Datei schließen
    Close #fd
End Sub