@@ -17,6 +17,7 @@ CLASS ltcl_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
17
17
METHODS hex2 FOR TESTING RAISING cx_static_check.
18
18
METHODS reference_table FOR TESTING RAISING cx_static_check.
19
19
METHODS keep_absolute FOR TESTING RAISING cx_static_check.
20
+ METHODS keep_absolute_struct FOR TESTING RAISING cx_static_check.
20
21
21
22
METHODS ref_test1 CHANGING foo TYPE REF TO data .
22
23
METHODS ref_test2 FOR TESTING RAISING cx_static_check.
@@ -325,4 +326,38 @@ CLASS ltcl_test IMPLEMENTATION.
325
326
exp = '\TYPE-POOL=ABAP\TYPE=ABAP_BOOL' ).
326
327
ENDMETHOD .
327
328
329
+ METHOD keep_absolute_struct .
330
+ TYPES : BEGIN OF ty,
331
+ foo TYPE i ,
332
+ END OF ty.
333
+
334
+ DATA lo_before TYPE REF TO cl_abap_structdescr.
335
+ DATA lo_after TYPE REF TO cl_abap_structdescr.
336
+ DATA lo_tabletype TYPE REF TO cl_abap_tabledescr.
337
+ DATA tab TYPE STANDARD TABLE OF ty WITH DEFAULT KEY .
338
+
339
+ DATA ref TYPE REF TO data .
340
+ GET REFERENCE OF tab INTO ref .
341
+
342
+ lo_tabletype ?= cl_abap_typedescr=>describe_by_data_ref( ref ).
343
+
344
+ lo_before ?= lo_tabletype->get_table_line_type( ).
345
+ cl_abap_unit_assert=>assert_not_initial( lo_before->absolute_name ).
346
+ cl_abap_unit_assert=>assert_not_initial( lo_before->get_relative_name( ) ).
347
+
348
+ CREATE DATA ref TYPE HANDLE lo_before.
349
+
350
+ lo_after ?= cl_abap_structdescr=>describe_by_data_ref( ref ).
351
+ cl_abap_unit_assert=>assert_not_initial( lo_after->absolute_name ).
352
+ cl_abap_unit_assert=>assert_not_initial( lo_after->get_relative_name( ) ).
353
+
354
+ cl_abap_unit_assert=>assert_equals(
355
+ act = lo_after->absolute_name
356
+ exp = lo_before->absolute_name ).
357
+
358
+ cl_abap_unit_assert=>assert_equals(
359
+ act = lo_after->get_relative_name( )
360
+ exp = lo_before->get_relative_name( ) ).
361
+ ENDMETHOD .
362
+
328
363
ENDCLASS .
0 commit comments