mirror of
https://github.com/abap2xlsx/abap2xlsx.git
synced 2025-05-06 07:43:32 +08:00
Merge branch 'main' into main
This commit is contained in:
commit
4cac24da1e
39
src/not_cloud/zcl_excel_converter_salv_model.clas.abap
Normal file
39
src/not_cloud/zcl_excel_converter_salv_model.clas.abap
Normal file
|
@ -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.
|
16
src/not_cloud/zcl_excel_converter_salv_model.clas.xml
Normal file
16
src/not_cloud/zcl_excel_converter_salv_model.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_EXCEL_CONVERTER_SALV_MODEL</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>SALV model utility methods</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -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.
|
||||
|
|
|
@ -1548,10 +1548,13 @@ CLASS zcl_excel_ole IMPLEMENTATION.
|
|||
CLEAR contentsitem-value.
|
||||
|
||||
* if type is not numeric -> dun display with zero
|
||||
IF <item> CO '0123456789.,-+E '.
|
||||
WRITE <item> TO contentsitem-value NO-ZERO.
|
||||
|
||||
WRITE <item> TO contentsitem-value NO-ZERO.
|
||||
|
||||
SHIFT contentsitem-value LEFT DELETING LEADING space.
|
||||
SHIFT contentsitem-value LEFT DELETING LEADING space.
|
||||
ELSE.
|
||||
WRITE <item> TO contentsitem-value.
|
||||
ENDIF.
|
||||
|
||||
ENDIF.
|
||||
APPEND contentsitem TO contents.
|
||||
|
|
41
src/zcl_excel_style_changer.clas.testclasses.abap
Normal file
41
src/zcl_excel_style_changer.clas.testclasses.abap
Normal file
|
@ -0,0 +1,41 @@
|
|||
CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mi_cut TYPE REF TO zif_excel_style_changer.
|
||||
DATA mo_excel TYPE REF TO zcl_excel.
|
||||
DATA mo_worksheet TYPE REF TO zcl_excel_worksheet.
|
||||
|
||||
METHODS setup RAISING cx_static_check.
|
||||
METHODS apply FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_test IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
CREATE OBJECT mo_excel.
|
||||
mo_worksheet = mo_excel->get_active_worksheet( ).
|
||||
mi_cut = zcl_excel_style_changer=>create( mo_excel ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD apply.
|
||||
|
||||
DATA lv_guid TYPE zexcel_cell_style.
|
||||
|
||||
mo_worksheet->set_cell(
|
||||
ip_column = 'B'
|
||||
ip_row = 2
|
||||
ip_value = 'Hello' ).
|
||||
|
||||
mi_cut->set_font_bold( abap_true ).
|
||||
|
||||
lv_guid = mi_cut->apply(
|
||||
ip_worksheet = mo_worksheet
|
||||
ip_column = 'B'
|
||||
ip_row = 2 ).
|
||||
|
||||
mo_excel->get_style_to_guid( lv_guid ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -30,9 +30,15 @@ CLASS lcl_excel_worksheet_test DEFINITION FOR TESTING
|
|||
METHODS: setup.
|
||||
METHODS: teardown.
|
||||
METHODS: set_merge FOR TESTING RAISING cx_static_check.
|
||||
METHODS: delete_merge FOR TESTING RAISING cx_static_check.
|
||||
METHODS: get_dimension_range FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS. "lcl_Excel_Worksheet_Test
|
||||
METHODS delete_merge1 FOR TESTING RAISING cx_static_check.
|
||||
METHODS delete_merge2 FOR TESTING RAISING cx_static_check.
|
||||
METHODS delete_merge3 FOR TESTING RAISING cx_static_check.
|
||||
METHODS delete_merge4 FOR TESTING RAISING cx_static_check.
|
||||
METHODS delete_merge5 FOR TESTING RAISING cx_static_check.
|
||||
METHODS delete_merge6 FOR TESTING RAISING cx_static_check.
|
||||
METHODS get_dimension_range FOR TESTING RAISING cx_static_check.
|
||||
METHODS get_rows_iterator FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltc_calculate_table_bottom_rig DEFINITION FOR TESTING
|
||||
|
@ -465,12 +471,11 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD delete_merge.
|
||||
METHOD delete_merge1.
|
||||
* ====================
|
||||
DATA lt_merge TYPE string_table.
|
||||
DATA lv_merge TYPE string.
|
||||
DATA lv_size TYPE i.
|
||||
DATA lv_index TYPE i.
|
||||
|
||||
* Test 1. Simple test delete all merges
|
||||
|
||||
|
@ -491,6 +496,13 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
msg = 'Expect merge table with 1 line fully cleared'
|
||||
level = if_aunit_constants=>critical
|
||||
).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD delete_merge2.
|
||||
* ====================
|
||||
DATA lt_merge TYPE string_table.
|
||||
DATA lv_merge TYPE string.
|
||||
DATA lv_size TYPE i.
|
||||
|
||||
* Test 2. Simple test delete all merges
|
||||
|
||||
|
@ -513,7 +525,14 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
msg = 'Expect merge table with few lines fully cleared'
|
||||
level = if_aunit_constants=>critical
|
||||
).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD delete_merge3.
|
||||
* ====================
|
||||
DATA lt_merge TYPE string_table.
|
||||
DATA lv_merge TYPE string.
|
||||
DATA lv_size TYPE i.
|
||||
DATA lv_index TYPE i.
|
||||
* Test 3. Delete concrete merge with success
|
||||
|
||||
DO 4 TIMES.
|
||||
|
@ -529,10 +548,14 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
).
|
||||
|
||||
CASE lv_index.
|
||||
WHEN 1. f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 2 ).
|
||||
WHEN 2. f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 3 ).
|
||||
WHEN 3. f_cut->delete_merge( ip_cell_column = 3 ip_cell_row = 2 ).
|
||||
WHEN 4. f_cut->delete_merge( ip_cell_column = 3 ip_cell_row = 3 ).
|
||||
WHEN 1.
|
||||
f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 2 ).
|
||||
WHEN 2.
|
||||
f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 3 ).
|
||||
WHEN 3.
|
||||
f_cut->delete_merge( ip_cell_column = 3 ip_cell_row = 2 ).
|
||||
WHEN 4.
|
||||
f_cut->delete_merge( ip_cell_column = 3 ip_cell_row = 3 ).
|
||||
ENDCASE.
|
||||
|
||||
lt_merge = f_cut->get_merge( ).
|
||||
|
@ -545,7 +568,14 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
level = if_aunit_constants=>critical
|
||||
).
|
||||
ENDDO.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD delete_merge4.
|
||||
* ====================
|
||||
DATA lt_merge TYPE string_table.
|
||||
DATA lv_merge TYPE string.
|
||||
DATA lv_size TYPE i.
|
||||
DATA lv_index TYPE i.
|
||||
* Test 4. Delete concrete merge with fail
|
||||
|
||||
DO 4 TIMES.
|
||||
|
@ -561,10 +591,14 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
).
|
||||
|
||||
CASE lv_index.
|
||||
WHEN 1. f_cut->delete_merge( ip_cell_column = 1 ip_cell_row = 2 ).
|
||||
WHEN 2. f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 1 ).
|
||||
WHEN 3. f_cut->delete_merge( ip_cell_column = 4 ip_cell_row = 2 ).
|
||||
WHEN 4. f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 4 ).
|
||||
WHEN 1.
|
||||
f_cut->delete_merge( ip_cell_column = 1 ip_cell_row = 2 ).
|
||||
WHEN 2.
|
||||
f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 1 ).
|
||||
WHEN 3.
|
||||
f_cut->delete_merge( ip_cell_column = 4 ip_cell_row = 2 ).
|
||||
WHEN 4.
|
||||
f_cut->delete_merge( ip_cell_column = 2 ip_cell_row = 4 ).
|
||||
ENDCASE.
|
||||
|
||||
lt_merge = f_cut->get_merge( ).
|
||||
|
@ -577,6 +611,13 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
level = if_aunit_constants=>critical
|
||||
).
|
||||
ENDDO.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD delete_merge5.
|
||||
* ====================
|
||||
DATA lt_merge TYPE string_table.
|
||||
DATA lv_merge TYPE string.
|
||||
DATA lv_size TYPE i.
|
||||
|
||||
* Test 5. Delete concrete merge #1
|
||||
|
||||
|
@ -614,6 +655,13 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
msg = 'Expect delete B2:C3 merge'
|
||||
level = if_aunit_constants=>critical
|
||||
).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD delete_merge6.
|
||||
* ====================
|
||||
DATA lt_merge TYPE string_table.
|
||||
DATA lv_merge TYPE string.
|
||||
DATA lv_size TYPE i.
|
||||
|
||||
* Test 6. Delete concrete merge #2
|
||||
|
||||
|
@ -682,6 +730,18 @@ CLASS lcl_excel_worksheet_test IMPLEMENTATION.
|
|||
).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_rows_iterator.
|
||||
DATA lo_iterator TYPE REF TO zcl_excel_collection_iterator.
|
||||
DATA lv_index TYPE i.
|
||||
|
||||
f_cut->set_cell( ip_column = 'B' ip_row = 2 ip_value = 'Hello world' ).
|
||||
lo_iterator = f_cut->get_rows_iterator( ).
|
||||
lv_index = lo_iterator->get_index( ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_index
|
||||
exp = 0 ).
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_Excel_Worksheet_Test
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user