Field-Symbols (ABAP): Unterschied zwischen den Versionen

Aus MattWiki
(Die Seite wurde neu angelegt: „Umgang mit FIELD-SYMBOLS: Anlegen von FIELD-SYMBOL für eine interne Tabelle als Ersatz für eine Arbeitsstruktur: <syntaxhighlight lang="abap"> FIELD-SYMB…“)
 
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Umgang mit FIELD-SYMBOLS:
Dieser Artikel beschreibt, wie Field-Symbols definiert werden können.
 
Weitere Artikel zur Definition von Field-Symbols:
 
* Statisch oder dynamisch: [[InfoProvider lesen (ABAP)]]
* Dynamisch: [[Dynamische Programmierung (ABAP)]]
 
== Definition FIELD-SYMBOLS ==


Anlegen von FIELD-SYMBOL für eine interne Tabelle als Ersatz für eine Arbeitsstruktur:
Anlegen von FIELD-SYMBOL für eine interne Tabelle als Ersatz für eine Arbeitsstruktur:
Zeile 6: Zeile 13:
   FIELD-SYMBOLS: <result_fields> LIKE LINE OF result_package.
   FIELD-SYMBOLS: <result_fields> LIKE LINE OF result_package.
</syntaxhighlight>
</syntaxhighlight>
== FIELD-SYMBOLS mit statischem Tabellentyp ==
Strukturdefinition:
<syntaxhighlight lang="abap">
  TYPES:
    BEGIN OF ls_fzgnr,
      fzgnr TYPE /bic/oifzgnr,
    END OF ls_fzgnr.
</syntaxhighlight>
Wenn Struktur nur ein Feld hat, dann ist dies Inline möglich:
<syntaxhighlight lang="abap">
  TYPES: l_tt_fzgnr TYPE  "STANDARD TABLE OF ls_fzgnr.
    STANDARD TABLE OF /bic/oifzgnr WITH NON-UNIQUE key TABLE_LINE.
 
  FIELD-SYMBOLS: <lt_fzgnr> TYPE STANDARD TABLE,
                <ls_fzgnr> TYPE LINE OF l_tt_fzgnr.
</syntaxhighlight>
Reservierung von Speicher für Rückgabewerte von Funktionsbausteinen vom Typ STANDARD TABLE
<syntaxhighlight lang="abap">
  " Create appropriate work area for info provider results
  DATA: lr_fzgnr TYPE REF TO data.
  CREATE DATA lr_fzgnr TYPE l_tt_fzgnr.
  ASSIGN lr_fzgnr->* TO <lt_fzgnr>.
</syntaxhighlight>
== Werte aus Referenzvariablen abrufen ==
<syntaxhighlight lang="abap">
  ASSIGN->* to <fieldref>
</syntaxhighlight>
Sollte bei einzelnen Feldwerten klappen und auch bei Strukturen:
=== Abrufen aus einzelnen Variablen ===
<syntaxhighlight lang="abap">
REPORT z_reftodata_to_string.
field-symbols: <lv_low> type string.
DATA: lr_data  TYPE REF TO data,
      lv_low  TYPE sstring,
      lt_range TYPE rrrange.
START-OF-SELECTION.
  create data lr_data type string.
  assign lr_data->* to <lv_low>.
  lv_low = <lv_low>.
  write: 'Ergebnis ', lv_low.
</syntaxhighlight>
=== Abrufen aus Feldern eine Tabelle ===
Der Wert lt_rangepsp-low soll gefüllt werden, aus der Tabelle it_change_log, die dynamisch typisiert ist und an die Methode übergeben wird. Ihr Typ ist also zum Zeitpunkt der Programmierung nicht bekannt.
<syntaxhighlight lang="abap">
    FIELD-SYMBOLS: <it_change_log>    TYPE fpmgb_s_changelog,
                  <lv_low>          TYPE /bic/oizpspe.
    DATA: lt_rangepsp  TYPE TABLE OF rrrange,
          lr_data      TYPE REF TO data,
          lv_string    TYPE sstring.
    LOOP AT it_change_log ASSIGNING <it_change_log> WHERE name = 'ZPSPE_K'.
      CREATE DATA lr_data TYPE /bic/oizpspe.
      lr_data = <it_change_log>-new_value.
      ASSIGN lr_data->* TO <lv_low>.
      lv_string = <lv_low>.
      APPEND VALUE rrrange( sign = 'I'
                            opt  = 'EQ'
                            low  = lv_string ) TO lt_rangepsp.
    ENDLOOP.
</syntaxhighlight>


[[Category:ABAP]]
[[Category:ABAP]]

Aktuelle Version vom 24. Juli 2019, 12:19 Uhr

Dieser Artikel beschreibt, wie Field-Symbols definiert werden können.

Weitere Artikel zur Definition von Field-Symbols:

Definition FIELD-SYMBOLS

Anlegen von FIELD-SYMBOL für eine interne Tabelle als Ersatz für eine Arbeitsstruktur:

  FIELD-SYMBOLS: <result_fields> LIKE LINE OF result_package.

FIELD-SYMBOLS mit statischem Tabellentyp

Strukturdefinition:

  TYPES:
    BEGIN OF ls_fzgnr,
      fzgnr TYPE /bic/oifzgnr,
    END OF ls_fzgnr.

Wenn Struktur nur ein Feld hat, dann ist dies Inline möglich:

  TYPES: l_tt_fzgnr TYPE   "STANDARD TABLE OF ls_fzgnr.
    STANDARD TABLE OF /bic/oifzgnr WITH NON-UNIQUE key TABLE_LINE.
  
  FIELD-SYMBOLS: <lt_fzgnr> TYPE STANDARD TABLE,
                 <ls_fzgnr> TYPE LINE OF l_tt_fzgnr.

Reservierung von Speicher für Rückgabewerte von Funktionsbausteinen vom Typ STANDARD TABLE

  " Create appropriate work area for info provider results
  DATA: lr_fzgnr TYPE REF TO data.
  CREATE DATA lr_fzgnr TYPE l_tt_fzgnr.
  ASSIGN lr_fzgnr->* TO <lt_fzgnr>.


Werte aus Referenzvariablen abrufen

  ASSIGN->* to <fieldref>

Sollte bei einzelnen Feldwerten klappen und auch bei Strukturen:

Abrufen aus einzelnen Variablen

REPORT z_reftodata_to_string.

field-symbols: <lv_low> type string.

DATA: lr_data  TYPE REF TO data,
      lv_low   TYPE sstring,
      lt_range TYPE rrrange.

START-OF-SELECTION.

  create data lr_data type string.

  assign lr_data->* to <lv_low>.

  lv_low = <lv_low>.

  write: 'Ergebnis ', lv_low.


Abrufen aus Feldern eine Tabelle

Der Wert lt_rangepsp-low soll gefüllt werden, aus der Tabelle it_change_log, die dynamisch typisiert ist und an die Methode übergeben wird. Ihr Typ ist also zum Zeitpunkt der Programmierung nicht bekannt.

    FIELD-SYMBOLS: <it_change_log>    TYPE fpmgb_s_changelog,
                   <lv_low>           TYPE /bic/oizpspe.

    DATA: lt_rangepsp  TYPE TABLE OF rrrange,
          lr_data      TYPE REF TO data,
          lv_string    TYPE sstring.

    LOOP AT it_change_log ASSIGNING <it_change_log> WHERE name = 'ZPSPE_K'.
      CREATE DATA lr_data TYPE /bic/oizpspe.

      lr_data = <it_change_log>-new_value.
      ASSIGN lr_data->* TO <lv_low>.

      lv_string = <lv_low>.
      APPEND VALUE rrrange( sign = 'I'
                            opt  = 'EQ'
                            low  = lv_string ) TO lt_rangepsp.

    ENDLOOP.