diff --git a/src/zcl_excel_common.clas.abap b/src/zcl_excel_common.clas.abap index 12ec1ee..c12aec1 100644 --- a/src/zcl_excel_common.clas.abap +++ b/src/zcl_excel_common.clas.abap @@ -1106,12 +1106,12 @@ CLASS zcl_excel_common IMPLEMENTATION. METHOD recursive_struct_to_class. " # issue 139 DATA: descr TYPE REF TO cl_abap_structdescr, + lo_refdescr TYPE REF TO cl_abap_refdescr, wa_component LIKE LINE OF descr->components, attribute_name LIKE wa_component-name, type_kind TYPE abap_typekind, flag_class TYPE abap_bool, -* lo_refdescr TYPE REF TO cl_abap_refdescr, - o_border TYPE REF TO zcl_excel_style_border. + lv_clsname TYPE seoclsname. FIELD-SYMBOLS: TYPE any, TYPE any, @@ -1121,18 +1121,12 @@ CLASS zcl_excel_common IMPLEMENTATION. DESCRIBE FIELD e_target TYPE type_kind. flag_class = boolc( type_kind = cl_abap_typedescr=>typekind_oref ). IF flag_class = abap_true AND e_target IS INITIAL. -* TRY. -* lo_refdescr ?= cl_abap_typedescr=>describe_by_data( e_target ). -* CASE lo_refdescr->get_referenced_type( )->get_relative_name( ). -* WHEN 'ZCL_EXCEL_STYLE_BORDER'. -* Only borders will be passed as unbound references. But since we want to set a value we have to create an instance - CREATE OBJECT o_border. - e_target = o_border. -** WHEN 'ZCL_EXCEL_...'. " todo, if necessary -* WHEN OTHERS. " should not happen -* ENDCASE. -* CATCH cx_sy_move_cast_error. " should not happen -* ENDTRY. + lo_refdescr ?= cl_abap_typedescr=>describe_by_data( e_target ). +* The result in lv_clsname is still always 'ZCL_EXCEL_STYLE_BORDER', +* because currently only borders will be passed as unbound references. +* But since we want to set a value we have to create an instance. + lv_clsname = lo_refdescr->get_referenced_type( )->get_relative_name( ). + CREATE OBJECT e_target TYPE (lv_clsname). ENDIF. descr ?= cl_abap_structdescr=>describe_by_data( i_source ).