diff --git a/src/not_cloud/zcl_excel_converter_salv_model.clas.abap b/src/not_cloud/zcl_excel_converter_salv_model.clas.abap
new file mode 100644
index 0000000..59d1b6e
--- /dev/null
+++ b/src/not_cloud/zcl_excel_converter_salv_model.clas.abap
@@ -0,0 +1,39 @@
+CLASS zcl_excel_converter_salv_model DEFINITION
+ PUBLIC
+ INHERITING FROM cl_salv_model
+ FINAL
+ CREATE PUBLIC .
+
+ PUBLIC SECTION.
+ CLASS-METHODS is_get_metadata_callable
+ IMPORTING
+ io_salv TYPE REF TO cl_salv_table
+ RETURNING
+ VALUE(result) TYPE abap_bool.
+ PROTECTED SECTION.
+ PRIVATE SECTION.
+ENDCLASS.
+
+
+
+CLASS zcl_excel_converter_salv_model IMPLEMENTATION.
+
+ METHOD is_get_metadata_callable.
+ DATA: lo_object TYPE REF TO object,
+ lo_model TYPE REF TO cl_salv_model.
+
+ " In 7.52 and older versions, we have a short dump with CL_SALV_TABLE->GET_METADATA if the ALV is not displayed
+ " (due to io_salv->r_controller->r_adapter not instantiated yet). That's later fixed by SAP (no short dump in 7.57).
+ " NB: r_controller is always instantiated.
+ lo_object = io_salv.
+ TRY.
+ lo_model ?= lo_object.
+ CATCH cx_sy_move_cast_error.
+ " In 7.57, CL_SALV_TABLE is no more a subclass of CL_SALV_MODEL, but CL_SALV_TABLE->GET_METADATA can be called.
+ result = abap_true.
+ RETURN.
+ ENDTRY.
+ result = boolc( lo_model->r_controller->r_adapter IS BOUND ).
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/not_cloud/zcl_excel_converter_salv_model.clas.xml b/src/not_cloud/zcl_excel_converter_salv_model.clas.xml
new file mode 100644
index 0000000..48ae985
--- /dev/null
+++ b/src/not_cloud/zcl_excel_converter_salv_model.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ ZCL_EXCEL_CONVERTER_SALV_MODEL
+ E
+ SALV model utility methods
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/not_cloud/zcl_excel_converter_salv_table.clas.abap b/src/not_cloud/zcl_excel_converter_salv_table.clas.abap
index 3f0f899..cc906c2 100644
--- a/src/not_cloud/zcl_excel_converter_salv_table.clas.abap
+++ b/src/not_cloud/zcl_excel_converter_salv_table.clas.abap
@@ -74,8 +74,18 @@ CLASS zcl_excel_converter_salv_table IMPLEMENTATION.
ls_vari-report = ls_layout_key-report.
ls_vari-handle = ls_layout_key-handle.
ls_vari-log_group = ls_layout_key-logical_group.
+ ls_vari-variant = lo_layout->get_initial_layout( ).
ELSE.
- io_salv->get_metadata( ) .
+ IF zcl_excel_converter_salv_model=>is_get_metadata_callable( io_salv ) = abap_true.
+ io_salv->get_metadata( ) .
+ ELSE.
+ " (do same as offline below)
+ cl_salv_controller_metadata=>get_variant(
+ EXPORTING
+ r_layout = lo_layout
+ CHANGING
+ s_variant = ls_vari ).
+ ENDIF.
ENDIF.
ELSE.
* If we are offline we need to build this.
diff --git a/src/not_cloud/zcl_excel_ole.clas.abap b/src/not_cloud/zcl_excel_ole.clas.abap
index f32c37e..f507a38 100644
--- a/src/not_cloud/zcl_excel_ole.clas.abap
+++ b/src/not_cloud/zcl_excel_ole.clas.abap
@@ -1548,10 +1548,13 @@ CLASS zcl_excel_ole IMPLEMENTATION.
CLEAR contentsitem-value.
* if type is not numeric -> dun display with zero
+ IF - CO '0123456789.,-+E '.
+ WRITE
- TO contentsitem-value NO-ZERO.
- WRITE
- TO contentsitem-value NO-ZERO.
-
- SHIFT contentsitem-value LEFT DELETING LEADING space.
+ SHIFT contentsitem-value LEFT DELETING LEADING space.
+ ELSE.
+ WRITE
- TO contentsitem-value.
+ ENDIF.
ENDIF.
APPEND contentsitem TO contents.