[ABAP] Text zu Wert in einem Datenbankfeld auslesen

Variante 1 (einzelner Feldwert)

DATA: lv_text TYPE text255.
DATA: lv_found TYPE flag_x.
DATA: it_identifier TYPE txid_t_text_identifier_result.

TRY.
    DATA(o_text) = NEW cl_text_identifier( ).
* Text für EBAN-STATU zu Feldwert 'B' holen
    o_text->read_text( EXPORTING
                         tabname    = 'EBAN'   " Tabelle
                         fieldname  = 'STATU'  " Feld
                         fieldvalue = 'B'      " Feldwert
                       IMPORTING
                         text                    = lv_text
                         text_for_value_read     = lv_found
                         text_identifier_results = it_identifier ).

    IF lv_found = abap_true.
* gefundenen Text ausgeben
      WRITE: / lv_text.

      LOOP AT it_identifier ASSIGNING FIELD-SYMBOL(<i>).
        WRITE: / <i>-tabname, <i>-fieldname, <i>-fieldvalue, <i>-text.
      ENDLOOP.
    ENDIF.
  CATCH cx_root INTO DATA(e_txt).
    WRITE: / e_txt->get_text( ).
ENDTRY.

Variante 2 (Datensatz)

PARAMETERS: p_banf TYPE eban-banfn OBLIGATORY.

START-OF-SELECTION.
* Datensatz holen
  DATA: lv_eban TYPE eban.
  SELECT SINGLE * FROM eban INTO lv_eban WHERE banfn EQ p_banf.

  IF sy-subrc = 0.
    DATA: lv_text TYPE text255.
    DATA: lv_found TYPE flag_x.
    DATA: it_identifier TYPE txid_t_text_identifier_result.

    TRY.
* Datensatz: Text zu Feld 'STATU' holen
        DATA(o_text) = NEW cl_text_identifier( ).
        o_text->read_text( EXPORTING
                             tabname          = 'EBAN'    " Tabelle
                             fieldname        = 'STATU'   " Feld
                             record           = lv_eban   " Struktur mit Wert für EBAN-STATU
                             record_specified = abap_true
                           IMPORTING
                             text                    = lv_text
                             text_for_value_read     = lv_found
                             text_identifier_results = it_identifier ).

        IF lv_found = abap_true.
* gefundenen Text ausgeben
          WRITE: / lv_text.

          LOOP AT it_identifier ASSIGNING FIELD-SYMBOL(<i>).
            WRITE: / <i>-tabname, <i>-fieldname, <i>-fieldvalue, <i>-text.
          ENDLOOP.
        ENDIF.
      CATCH cx_root INTO DATA(e_txt).
        WRITE: / e_txt->get_text( ).
    ENDTRY.
  ENDIF.

[ABAP] Listenausgabe mit Zeilennummern (Integer-Werte) – führende Nullen auffüllen

DATA(it_text_lines) = VALUE stringtab( ( |Heinz| )
                                       ( |Udo| )
                                       ( |Horst| )
                                       ( |Gerda| )
                                       ( |Hilde| )
                                       ( |Ulf| )
                                       ( |Marianne| )
                                       ( |Bertram| )
                                       ( |Eduart| )
                                       ( |Marianne| ) ).

DATA(lv_width) = strlen( |{ lines( it_text_lines ) }| ).

LOOP AT it_text_lines ASSIGNING FIELD-SYMBOL(<fs_line>).
  DATA(lv_cnt) = |{ sy-tabix }|.

  WRITE: / |{ lv_cnt WIDTH = lv_width ALPHA = IN }: { <fs_line> }|.
ENDLOOP.

[ABAP] ABAPJSON Serializer / Deserializer

SELECT * FROM sflight INTO TABLE @DATA(it_flight).

* ABAP->JSON
DATA(lv_json) = /ui2/cl_json=>serialize( data = it_flight
                                         compress = abap_true
                                         pretty_name = /ui2/cl_json=>pretty_mode-camel_case ).

WRITE: / lv_json.

DATA: it_flight_json TYPE STANDARD TABLE OF sflight WITH DEFAULT KEY.

* JSON->ABAP
/ui2/cl_json=>deserialize( EXPORTING
                             json = lv_json
                             pretty_name = /ui2/cl_json=>pretty_mode-camel_case
                           CHANGING
                             data = it_flight_json ).

* ABAP object ->JSON
DATA(o_descr) = cl_abap_typedescr=>describe_by_data( it_flight_json ).
DATA(lv_json2) = /ui2/cl_json=>serialize( o_descr ).

WRITE: / lv_json2.

Weiterführende Infos: Link

[ABAP] String nach Integer konvertieren

Variante 1 (Typecast -> direkte Zuweisung)

DATA: lv_string TYPE string VALUE '01234567'.
DATA: lv_int TYPE i.

* Typecast durch direkte Zuweisung
lv_int = lv_string.

* Ausgabe: 1.234.567
WRITE: / lv_int.

Variante 2 (CL_ABAP_CONTAINER_UTILITIES)

* String
DATA(lv_str_val) = |123|.
* Int
DATA(lv_int) = 0.

* String -> Int
cl_abap_container_utilities=>read_container_c( EXPORTING
                                                 im_container = lv_str_val
                                               IMPORTING
                                                 ex_value     = lv_int ).

WRITE: / lv_int.

[ABAP] Struktur in CSV-String wandeln

Variante 1 (cl_rsda_csv_converter)

DATA: it_mara TYPE STANDARD TABLE OF mara.
  
...

* erste Zeile der iTab holen
DATA(lv_line) = it_mara[ 1 ].
DATA: lv_string TYPE c LENGTH 4096.

* Struktur mit Daten zu CSV-Zeile konvertieren
DATA(o_conv) = cl_rsda_csv_converter=>create( i_delimiter = '"' i_separator = ';' ).
o_conv->structure_to_csv( EXPORTING
                            i_s_data = lv_line
                          IMPORTING
                            e_data = lv_string ).

WRITE: / lv_string.

Variante 2 (SO_STRUCT_TO_CHAR)

SELECT FROM sflight
  FIELDS *
  WHERE carrid = 'AA'
  INTO TABLE @DATA(it_sflight).

DATA(lv_line) = it_sflight[ 1 ].
DATA(lv_string) = ||.

CALL FUNCTION 'SO_STRUCT_TO_CHAR'
  EXPORTING
    ip_struct = lv_line
  IMPORTING
    ep_string = lv_string.

WRITE: / lv_string.

[ABAP] Interne Tabelle in CSV wandeln / speichern

Variante 1 (cl_icf_csv)

DATA: it_mara TYPE STANDARD TABLE OF mara.

...

* iTab nach CSV-Datei konvertieren und speichern
cl_icf_csv=>request_for_write_into_csv( it_data = it_mara
                                        iv_hdr_struct_name = 'MARA'
                                        iv_init_dir = 'c:\temp'
                                        iv_file_name = 'test.csv' ).

Variante 2 (SAP_CONVERT_TO_CSV_FORMAT)

DATA: it_csv_output TYPE truxs_t_text_data.

SELECT FROM sflight
  FIELDS *
  WHERE CARRID = 'AA'
  INTO TABLE @DATA(it_sflight).

CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
  EXPORTING
    i_field_seperator    = ';'
*   I_LINE_HEADER        =
*   I_FILENAME           =
*   I_APPL_KEEP          = ' '
  TABLES
    i_tab_sap_data       = it_sflight
  CHANGING
    i_tab_converted_data = it_csv_output
  EXCEPTIONS
    conversion_failed    = 1
    OTHERS               = 2.

IF sy-subrc = 0.
  cl_demo_output=>write_data( it_csv_output ).
  cl_demo_output=>display( ).
ENDIF.