Field-Symbols (ABAP): Unterschied zwischen den Versionen
Aus Matts Wiki
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung  | 
				Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung  | 
				||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
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 7: | Zeile 14: | ||
</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:
- 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:
  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.
