diff --git a/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk b/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk
index 3bca3d7..e1e77e1 100644
--- a/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk
+++ b/ZA2X/CLAS/ZCL_EXCEL_COMMON.slnk
@@ -195,7 +195,7 @@ CLASS zcl_excel_common DEFINITION LOCAL FRIENDS lcl_excel_common_test.
*----------------------------------------------------------------------*
CLASS lcl_excel_common_test DEFINITION FOR TESTING "#AU Risk_Level Harmless
. "#AU Duration Short
-*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
+*?<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
*?<asx:values>
*?<TESTCLASS_OPTIONS>
*?<TEST_CLASS>lcl_Excel_Common_Test
@@ -1096,7 +1096,7 @@ endmethod.
ep_column = lv_column_c. " Fix #164
EXIT.
ENDIF.
- CATCH cx_sy_conversion_no_number.
+ CATCH cx_sy_conversion_no_number."#EC NO_HANDLER
" Too bad - try the character-approach
ENDTRY.
@@ -1443,27 +1443,63 @@ endmethod.
- method GET_FIELDCATALOG.
+ METHOD get_fieldcatalog.
+ DATA: lr_dref_tab TYPE REF TO data,
+ lo_salv_table TYPE REF TO cl_salv_table,
+ lo_salv_columns_table TYPE REF TO cl_salv_columns_table,
+ lt_salv_t_column_ref TYPE salv_t_column_ref,
+ ls_salv_t_column_ref LIKE LINE OF lt_salv_t_column_ref,
+ lo_salv_column_table TYPE REF TO cl_salv_column_table.
- data: lr_data type ref to data,
- lo_structdescr type ref to cl_abap_structdescr,
- lt_dfies type ddfields,
- ls_dfies type dfies,
- ls_fieldcatalog type zexcel_s_fieldcatalog.
+ FIELD-SYMBOLS: <tab> TYPE STANDARD TABLE.
+ FIELD-SYMBOLS: <fcat> LIKE LINE OF ep_fieldcatalog.
- create data lr_data like line of ip_table.
+* Get copy of IP_TABLE-structure <-- must be changeable to create salv
+ CREATE DATA lr_dref_tab LIKE ip_table.
+ ASSIGN lr_dref_tab->* TO <tab>.
+* Create salv --> implicitly create fieldcat
+ TRY.
+ cl_salv_table=>factory( IMPORTING
+ r_salv_table = lo_salv_table
+ CHANGING
+ t_table = <tab> ).
+ lo_salv_columns_table = lo_salv_table->get_columns( ).
+ lt_salv_t_column_ref = lo_salv_columns_table->get( ).
+ CATCH cx_root.
+* maybe some errorhandling here - just haven't made up my mind yet
+ ENDTRY.
- lo_structdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ).
+* Loop through columns and set relevant fields ( fieldname, texts )
+ LOOP AT lt_salv_t_column_ref INTO ls_salv_t_column_ref.
- lt_dfies = describe_structure( io_struct = lo_structdescr ).
+ lo_salv_column_table ?= ls_salv_t_column_ref-r_column.
+ APPEND INITIAL LINE TO ep_fieldcatalog ASSIGNING <fcat>.
+ <fcat>-position = sy-tabix.
+ <fcat>-fieldname = ls_salv_t_column_ref-columnname.
+ <fcat>-scrtext_s = ls_salv_t_column_ref-r_column->get_short_text( ).
+ <fcat>-scrtext_m = ls_salv_t_column_ref-r_column->get_medium_text( ).
+ <fcat>-scrtext_l = ls_salv_t_column_ref-r_column->get_long_text( ).
- loop at lt_dfies into ls_dfies.
- clear ls_fieldcatalog.
- move-corresponding ls_dfies to ls_fieldcatalog.
- append ls_fieldcatalog to ep_fieldcatalog.
- endloop.
+ <fcat>-dynpfld = 'X'. " What in the world would we exclude here?
+ IF <fcat>-position = 1. " except for the MANDT-field of most tables ( 1st column that is )
+ IF lo_salv_column_table->get_ddic_datatype( ) = 'CLNT'.
+ CLEAR <fcat>-dynpfld.
+ ENDIF.
+ ENDIF.
-endmethod.
+* For fields that don't a description ( i.e. defined by "field type i," )
+* just use the fieldname as description - that is better than nothing
+ IF <fcat>-scrtext_s IS INITIAL
+ AND <fcat>-scrtext_m IS INITIAL
+ AND <fcat>-scrtext_l IS INITIAL.
+ CONCATENATE 'Col:' <fcat>-fieldname INTO <fcat>-scrtext_l SEPARATED BY space.
+ <fcat>-scrtext_m = <fcat>-scrtext_l.
+ <fcat>-scrtext_s = <fcat>-scrtext_l.
+ ENDIF.
+
+ ENDLOOP.
+
+ENDMETHOD.
@@ -1655,7 +1691,7 @@ endmethod.
- METHOD split_file.
+ method SPLIT_FILE.
DATA: lt_hlp TYPE TABLE OF text255,
ls_hlp TYPE text255.
@@ -1696,7 +1732,7 @@ endmethod.
ep_file = ip_file(lf_len).
ENDIF.
-ENDMETHOD.
+endmethod.