CONSTRUCTOR EXPRESSION | VALUE

  • Dienstag, 08. März 2016 12:51
Artikel bewerten
(0 Stimmen)

Der neue Wertoperator VALUE und seine Möglichkeiten.

In einem vorangegangen Artikel habe ich bereits von dem neuen Instanzoperator NEW berichtet.
In diesem Artikel möchte ich euch den Wert Operator VALUE näher vorstellen. Dieser arbeitet ähnlich wie der NEW Operator.

Was sind aber nun die Unterschiede zwischen diesen beiden Operatoren?

  • Wenn der Operator NEW verwendet wird, um beispielsweise die ITAB Einträge zu erstellen, erhalten wir die Datenreferenz zurück.
  • wenn wir den VALUE-Operator verwenden, werden diese Daten auf die Variable auf der linken Seite zugewiesen 
  • Bei Verwendung des NEW-Operators kann es sich bei der Zielvariable nur vom Typen REF TO DATA handeln
  • während bei dem VALUE-Operator sich der Typ der Zielvariable nur um den aktuell zugewiesen Typen handeln kann.

Ansonsten verhalten sich die Operatoren identisch. Ihr müsst lediglich nur darüber entscheiden, mit welchen Datentypen ihr arbeiten möchtet.

Ein Beispiel:

TYPES tt_itab TYPE STANDARD TABLE OF i WITH DEFAULT KEY .

NEW:

 DATA(lr_itab) = NEW tt_itab( ( 100 ) ( ) ( 300 ) ).

VALUE:

 DATA(lt_itab) = VALUE tt_itab( ( 100 ) ( ) ( 300 ) ).

Hier ein konkretes Anwendungsbeispiel

 *== save change history
        IF me->mo_salv_table->is_history_active( ).
          me->save_my_change_history(
            EXPORTING
              iv_object_class = 'ABAP_OO_TEST_1'    " Object class
              it_field_name   = VALUE #(
                                 ( fieldname = 'RECIEVER' )
                                 ( fieldname = 'ATNAM' )
                                )
          ).
        ENDIF.

Fazit:

Der Vorteil mit dem VALUE-Operator ist, dass ich hier keine Dereferenzierung (Verwendung eines Feldsymbols) mehr tätigen muss,
da ich bereits den Typen einer internen Tabelle habe. Ich kann also direkt mit dieser Tabelle weiter arbeiten. Wie bereits gesagt,
hängt es von der aktuellen Anforderung ab, ob ich den NEW-Operator oder den VALUE-Operator verwende.  Ich selbst liebe die Möglichkeit Daten inline zu befüllen. Uns sollte jedoch bewusst sein, es hiermit nicht zu übertreiben. Es gibt nämlich nichts schlimmeres als unlesbarer Quellcode.

Offiziele SAP Doku: VALUE - Wertoperator

Was meint ihr? Habe ich noch etwas wichtiges vergessen? Lasst es mich wissen. Über jedes Feedback würde ich mich freuen.

In diesem Sinne

Blogging is a conversation, not a code.

Letzte Änderung am Freitag, 18 März 2016 10:39
Kommentare einblenden

Copyright © 2017 ABAP-Workbench.de