diff --git a/ZA2X/PROG/ZDEMO_EXCEL30.slnk b/ZA2X/PROG/ZDEMO_EXCEL30.slnk
index bd87c0c..6959117 100644
--- a/ZA2X/PROG/ZDEMO_EXCEL30.slnk
+++ b/ZA2X/PROG/ZDEMO_EXCEL30.slnk
@@ -1,125 +1,144 @@
-
-
-
-
-
-
-
-
-
- *&---------------------------------------------------------------------*
-*& Report ZDEMO_EXCEL1
-*&
-*&---------------------------------------------------------------------*
-*&
-*&
-*&---------------------------------------------------------------------*
-
-REPORT zdemo_excel30.
-
-DATA: lo_excel TYPE REF TO zcl_excel,
- lo_excel_writer TYPE REF TO zif_excel_writer,
- lo_worksheet TYPE REF TO zcl_excel_worksheet,
- lo_hyperlink TYPE REF TO zcl_excel_hyperlink,
- column_dimension TYPE REF TO zcl_excel_worksheet_columndime.
-
-DATA: lv_file TYPE xstring,
- lv_bytecount TYPE i,
- lt_file_tab TYPE solix_tab.
-
-DATA: lv_full_path TYPE string,
- lv_workdir TYPE string,
- lv_file_separator TYPE c.
-
-CONSTANTS: lv_default_file_name TYPE string VALUE '30_CellDataTypes.xlsx',
- lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string,
- lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed,
- lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num,
- lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date.
-
-PARAMETERS: p_path TYPE zexcel_export_dir.
-
-AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
- lv_workdir = p_path.
- cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir
- CHANGING selected_folder = lv_workdir ).
- p_path = lv_workdir.
-
-INITIALIZATION.
- cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ).
- cl_gui_cfw=>flush( ).
- p_path = lv_workdir.
-
-START-OF-SELECTION.
-
- IF p_path IS INITIAL.
- p_path = lv_workdir.
- ENDIF.
- cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ).
- CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path.
-
- " Creates active sheet
- CREATE OBJECT lo_excel.
-
- " Get active sheet
- lo_worksheet = lo_excel->get_active_worksheet( ).
- lo_worksheet->set_title( ip_title = 'Cell data types' ).
- lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String'
- ip_abap_type = lc_typekind_string ).
- lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11'
- ip_abap_type = lc_typekind_string ).
- lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String'
- ip_abap_type = lc_typekind_string ).
- lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Negative Value'
- ip_abap_type = lc_typekind_string ).
- lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed'
- ip_abap_type = lc_typekind_string ).
- lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.00-'
- ip_abap_type = lc_typekind_packed ).
- lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage'
- ip_abap_type = lc_typekind_string ).
- lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %'
- ip_abap_type = lc_typekind_num ).
- lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date'
- ip_abap_type = lc_typekind_string ).
- lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831'
- ip_abap_type = lc_typekind_date ).
- lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value'
- ip_abap_type = lc_typekind_string ).
- lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.00'
- ip_abap_type = lc_typekind_packed ).
- lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %'
- ip_abap_type = lc_typekind_num ).
-
- column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ).
- column_dimension->set_auto_size( abap_true ).
- column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ).
- column_dimension->set_auto_size( abap_true ).
- column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ).
- column_dimension->set_auto_size( abap_true ).
- column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ).
- column_dimension->set_auto_size( abap_true ).
- column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ).
- column_dimension->set_auto_size( abap_true ).
-
- CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.
- lv_file = lo_excel_writer->write_file( lo_excel ).
-
- " Convert to binary
- CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
- EXPORTING
- buffer = lv_file
- IMPORTING
- output_length = lv_bytecount
- TABLES
- binary_tab = lt_file_tab.
-* " This method is only available on AS ABAP > 6.40
-* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ).
-* lv_bytecount = xstrlen( lv_file ).
-
- " Save the file
- cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount
- filename = lv_full_path
- filetype = 'BIN'
- CHANGING data_tab = lt_file_tab ).
-
+
+
+
+
+
+
+
+
+ *&---------------------------------------------------------------------*
+*& Report ZDEMO_EXCEL1
+*&
+*&---------------------------------------------------------------------*
+*&
+*&
+*&---------------------------------------------------------------------*
+
+REPORT zdemo_excel30.
+
+DATA: lo_excel TYPE REF TO zcl_excel,
+ lo_excel_writer TYPE REF TO zif_excel_writer,
+ lo_worksheet TYPE REF TO zcl_excel_worksheet,
+ lo_hyperlink TYPE REF TO zcl_excel_hyperlink,
+ column_dimension TYPE REF TO zcl_excel_worksheet_columndime.
+
+DATA: lv_file TYPE xstring,
+ lv_bytecount TYPE i,
+ lt_file_tab TYPE solix_tab.
+
+DATA: lv_full_path TYPE string,
+ lv_workdir TYPE string,
+ lv_file_separator TYPE c.
+
+DATA: lv_value TYPE string,
+ lv_count TYPE i VALUE 10,
+ lv_packed TYPE p LENGTH 16 DECIMALS 1 VALUE '1234567890.5'.
+
+CONSTANTS: lv_default_file_name TYPE string VALUE '30_CellDataTypes.xlsx',
+ lc_typekind_string TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_string,
+ lc_typekind_packed TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_packed,
+ lc_typekind_num TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_num,
+ lc_typekind_date TYPE abap_typekind VALUE cl_abap_typedescr=>typekind_date.
+
+PARAMETERS: p_path TYPE zexcel_export_dir.
+
+AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.
+ lv_workdir = p_path.
+ cl_gui_frontend_services=>directory_browse( EXPORTING initial_folder = lv_workdir
+ CHANGING selected_folder = lv_workdir ).
+ p_path = lv_workdir.
+
+INITIALIZATION.
+ cl_gui_frontend_services=>get_sapgui_workdir( CHANGING sapworkdir = lv_workdir ).
+ cl_gui_cfw=>flush( ).
+ p_path = lv_workdir.
+
+START-OF-SELECTION.
+
+ IF p_path IS INITIAL.
+ p_path = lv_workdir.
+ ENDIF.
+ cl_gui_frontend_services=>get_file_separator( CHANGING file_separator = lv_file_separator ).
+ CONCATENATE p_path lv_file_separator lv_default_file_name INTO lv_full_path.
+
+ " Creates active sheet
+ CREATE OBJECT lo_excel.
+
+ " Get active sheet
+ lo_worksheet = lo_excel->get_active_worksheet( ).
+ lo_worksheet->set_title( ip_title = 'Cell data types' ).
+ lo_worksheet->set_cell( ip_column = 'A' ip_row = 1 ip_value = 'Number as String'
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'A' ip_row = 2 ip_value = '11'
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'B' ip_row = 1 ip_value = 'String'
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Negative Value'
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'C' ip_row = 1 ip_value = 'Packed'
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'C' ip_row = 2 ip_value = '50000.00-'
+ ip_abap_type = lc_typekind_packed ).
+ lo_worksheet->set_cell( ip_column = 'D' ip_row = 1 ip_value = 'Number with Percentage'
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'D' ip_row = 2 ip_value = '0 %'
+ ip_abap_type = lc_typekind_num ).
+ lo_worksheet->set_cell( ip_column = 'E' ip_row = 1 ip_value = 'Date'
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'E' ip_row = 2 ip_value = '20110831'
+ ip_abap_type = lc_typekind_date ).
+ lo_worksheet->set_cell( ip_column = 'B' ip_row = 3 ip_value = 'Positive Value'
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'C' ip_row = 3 ip_value = '5000.00'
+ ip_abap_type = lc_typekind_packed ).
+ lo_worksheet->set_cell( ip_column = 'D' ip_row = 3 ip_value = '50 %'
+ ip_abap_type = lc_typekind_num ).
+
+ WHILE lv_count <= 15.
+ lv_value = lv_count.
+ CONCATENATE 'Positive Value with' lv_value 'Digits' INTO lv_value SEPARATED BY space.
+ lo_worksheet->set_cell( ip_column = 'B' ip_row = lv_count ip_value = lv_value
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'C' ip_row = lv_count ip_value = lv_packed
+ ip_abap_type = lc_typekind_packed ).
+ CONCATENATE 'Positive Value with' lv_value 'Digits formated as string' INTO lv_value SEPARATED BY space.
+ lo_worksheet->set_cell( ip_column = 'D' ip_row = lv_count ip_value = lv_value
+ ip_abap_type = lc_typekind_string ).
+ lo_worksheet->set_cell( ip_column = 'E' ip_row = lv_count ip_value = lv_packed
+ ip_abap_type = lc_typekind_string ).
+ lv_packed = lv_packed * 10.
+ lv_count = lv_count + 1.
+ ENDWHILE.
+
+ column_dimension = lo_worksheet->get_column_dimension( ip_column = 'A' ).
+ column_dimension->set_auto_size( abap_true ).
+ column_dimension = lo_worksheet->get_column_dimension( ip_column = 'B' ).
+ column_dimension->set_auto_size( abap_true ).
+ column_dimension = lo_worksheet->get_column_dimension( ip_column = 'C' ).
+ column_dimension->set_auto_size( abap_true ).
+ column_dimension = lo_worksheet->get_column_dimension( ip_column = 'D' ).
+ column_dimension->set_auto_size( abap_true ).
+ column_dimension = lo_worksheet->get_column_dimension( ip_column = 'E' ).
+ column_dimension->set_auto_size( abap_true ).
+
+ CREATE OBJECT lo_excel_writer TYPE zcl_excel_writer_2007.
+ lv_file = lo_excel_writer->write_file( lo_excel ).
+
+ " Convert to binary
+ CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
+ EXPORTING
+ buffer = lv_file
+ IMPORTING
+ output_length = lv_bytecount
+ TABLES
+ binary_tab = lt_file_tab.
+* " This method is only available on AS ABAP > 6.40
+* lt_file_tab = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_file ).
+* lv_bytecount = xstrlen( lv_file ).
+
+ " Save the file
+ cl_gui_frontend_services=>gui_download( EXPORTING bin_filesize = lv_bytecount
+ filename = lv_full_path
+ filetype = 'BIN'
+ CHANGING data_tab = lt_file_tab ).
+