ich hätte ein Verständnisproblem zum Returning Value und hoffe dass mir jemand etwas Licht ins Dunkel bringen könnte.
Wieso hat die interne Tabelle initial_data in der SORT Methode 7 Einträge, ohne dass updated_data in die initial_data gesetzt wurde? Der Append in der add_to_itab Methode erfolgt doch nur auf die updated_data Tabelle?
Müsste updated_data nicht in der Methode durch initial_data überschrieben werden? Das passiert jedoch nicht.
CLASS zcl_itab_basics DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES group TYPE c LENGTH 1.
TYPES: BEGIN OF initial_type,
group TYPE group,
number TYPE i,
description TYPE string,
END OF initial_type,
itab_data_type TYPE STANDARD TABLE OF initial_type WITH EMPTY KEY.
METHODS fill_itab
RETURNING
VALUE(initial_data) TYPE itab_data_type.
METHODS add_to_itab
IMPORTING initial_data TYPE itab_data_type
RETURNING
VALUE(updated_data) TYPE itab_data_type.
METHODS sort_itab
IMPORTING initial_data TYPE itab_data_type
RETURNING
VALUE(updated_data) TYPE itab_data_type.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_itab_basics IMPLEMENTATION.
METHOD fill_itab.
initial_data = Value #(
( group = 'A' number = 10 description = 'Group A-2' )
( group = 'B' number = 5 description = 'Group B' )
( group = 'A' number = 6 description = 'Group A-1' )
( group = 'C' number = 22 description = 'Group C-1' )
( group = 'A' number = 13 description = 'Group A-3' )
( group = 'C' number = 500 description = 'Group C-2' )
).
ENDMETHOD.
METHOD add_to_itab.
updated_data = initial_data.
Append
Value #( group = 'A' number = 19 description = 'Group A-4' )
TO updated_data.
ENDMETHOD.
METHOD sort_itab.
updated_data = initial_data.
Sort updated_data by group ascending number descending.
ENDMETHOD.
Da wir die Aufrufe der Methoden nicht kennen, ist das schwer zu beurteilen. Wenn beim Aufruf von sort_itab das Ergebnis aus add_to_itab verwende, hätte ich natürlich 7 Einträge.
Ist zufällig beim Aufruf der Methode sort_itab
IMPORTING-Variable = RETURNING-Variable? Wenn ja, nimm mal 2 unterschiedliche.
Bei Funktionsbausteinen hatte ich schon Fälle, bei der importing und exporting im Aufruf die selbe Variable genutzt wurde und das exporting hat zur Laufzeit dann den Inhalt im importing geändert. War aber abhängig von der Kernel Version, ob es auftrat oder nicht.