This commit is contained in:
Rüdiger Plantiko 2025-05-04 21:19:35 +02:00 committed by GitHub
commit ad5a7fc676
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 1397 additions and 1022 deletions

View File

@ -5,9 +5,42 @@ CLASS zcl_excel_comment DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
CONSTANTS default_right_column TYPE i VALUE 4. "#EC NOTEXT TYPES:
CONSTANTS default_bottom_row TYPE i VALUE 15. "#EC NOTEXT BEGIN OF ty_rtf_fragment.
INCLUDE TYPE zexcel_s_style_font AS rtf.
TYPES:
text TYPE string,
END OF ty_rtf_fragment .
TYPES:
ty_rtf_fragments TYPE STANDARD TABLE OF ty_rtf_fragment
WITH NON-UNIQUE DEFAULT KEY .
TYPES:
BEGIN OF ty_box,
left_column TYPE i,
left_offset TYPE i,
top_row TYPE i,
top_offset TYPE i,
right_column TYPE i,
right_offset TYPE i,
bottom_row TYPE i,
bottom_offset TYPE i,
END OF ty_box .
CONSTANTS:
BEGIN OF gc_default_box,
left_column TYPE i VALUE 2,
left_offset TYPE i VALUE 15,
top_row TYPE i VALUE 11,
top_offset TYPE i VALUE 10,
right_column TYPE i VALUE 4,
right_offset TYPE i VALUE 31,
bottom_row TYPE i VALUE 15,
bottom_offset TYPE i VALUE 9,
END OF gc_default_box .
CLASS-METHODS get_default_style
RETURNING
VALUE(es_default) TYPE zexcel_s_style_font .
METHODS constructor . METHODS constructor .
METHODS get_bottom_offset METHODS get_bottom_offset
RETURNING RETURNING
@ -45,38 +78,47 @@ CLASS zcl_excel_comment DEFINITION
METHODS get_top_row METHODS get_top_row
RETURNING RETURNING
VALUE(rp_result) TYPE i . VALUE(rp_result) TYPE i .
METHODS set_box
IMPORTING
!is_box TYPE ty_box .
METHODS set_text METHODS set_text
IMPORTING IMPORTING
!ip_text TYPE string !ip_text TYPE string OPTIONAL
!is_style TYPE zexcel_s_style_font OPTIONAL
!ip_ref TYPE string OPTIONAL !ip_ref TYPE string OPTIONAL
!ip_left_column TYPE i DEFAULT 2 !ip_left_column TYPE i DEFAULT gc_default_box-left_column
!ip_left_offset TYPE i DEFAULT 15 !ip_left_offset TYPE i DEFAULT gc_default_box-left_offset
!ip_top_row TYPE i DEFAULT 11 !ip_top_row TYPE i DEFAULT gc_default_box-top_row
!ip_top_offset TYPE i DEFAULT 10 !ip_top_offset TYPE i DEFAULT gc_default_box-top_offset
!ip_right_column TYPE i DEFAULT default_right_column !ip_right_column TYPE i DEFAULT gc_default_box-right_column
!ip_right_offset TYPE i DEFAULT 31 !ip_right_offset TYPE i DEFAULT gc_default_box-right_offset
!ip_bottom_row TYPE i DEFAULT default_bottom_row !ip_bottom_row TYPE i DEFAULT gc_default_box-bottom_row
!ip_bottom_offset TYPE i DEFAULT 9. !ip_bottom_offset TYPE i DEFAULT gc_default_box-bottom_offset .
METHODS get_text_rtf
RETURNING
VALUE(et_rtf) TYPE ty_rtf_fragments .
METHODS set_text_rtf
IMPORTING
!it_rtf TYPE ty_rtf_fragments OPTIONAL
!ip_ref TYPE string OPTIONAL
!is_box TYPE ty_box OPTIONAL .
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
DATA bottom_offset TYPE i . DATA index TYPE string .
DATA bottom_row TYPE i . DATA ref TYPE string .
DATA index TYPE string . DATA gt_rtf TYPE ty_rtf_fragments .
DATA ref TYPE string . DATA gs_box TYPE ty_box .
DATA left_column TYPE i .
DATA left_offset TYPE i . METHODS add_text
DATA right_column TYPE i . IMPORTING
DATA right_offset TYPE i . !ip_text TYPE string
DATA text TYPE string . !is_style TYPE zexcel_s_style_font .
DATA top_offset TYPE i .
DATA top_row TYPE i .
ENDCLASS. ENDCLASS.
CLASS zcl_excel_comment IMPLEMENTATION. CLASS ZCL_EXCEL_COMMENT IMPLEMENTATION.
METHOD constructor. METHOD constructor.
@ -85,12 +127,12 @@ CLASS zcl_excel_comment IMPLEMENTATION.
METHOD get_bottom_offset. METHOD get_bottom_offset.
rp_result = bottom_offset. rp_result = gs_box-bottom_offset.
ENDMETHOD. ENDMETHOD.
METHOD get_bottom_row. METHOD get_bottom_row.
rp_result = bottom_row. rp_result = gs_box-bottom_row.
ENDMETHOD. ENDMETHOD.
@ -100,12 +142,12 @@ CLASS zcl_excel_comment IMPLEMENTATION.
METHOD get_left_column. METHOD get_left_column.
rp_result = left_column. rp_result = gs_box-left_column.
ENDMETHOD. ENDMETHOD.
METHOD get_left_offset. METHOD get_left_offset.
rp_result = left_offset. rp_result = gs_box-left_offset.
ENDMETHOD. ENDMETHOD.
@ -120,56 +162,112 @@ CLASS zcl_excel_comment IMPLEMENTATION.
METHOD get_right_column. METHOD get_right_column.
rp_result = right_column. rp_result = gs_box-right_column.
ENDMETHOD. ENDMETHOD.
METHOD get_right_offset. METHOD get_right_offset.
rp_result = right_offset. rp_result = gs_box-right_offset.
ENDMETHOD. ENDMETHOD.
METHOD get_text. METHOD get_text.
rp_text = me->text. FIELD-SYMBOLS: <ls_rtf> LIKE LINE OF gt_rtf.
LOOP AT gt_rtf ASSIGNING <ls_rtf>.
CONCATENATE rp_text <ls_rtf>-text INTO rp_text.
ENDLOOP.
ENDMETHOD. ENDMETHOD.
METHOD get_top_offset. METHOD get_top_offset.
rp_result = top_offset. rp_result = gs_box-top_offset.
ENDMETHOD. ENDMETHOD.
METHOD get_top_row. METHOD get_top_row.
rp_result = top_row. rp_result = gs_box-top_row.
ENDMETHOD. ENDMETHOD.
METHOD set_text. METHOD set_text.
me->text = ip_text.
IF ip_ref IS SUPPLIED. IF ip_ref IS SUPPLIED.
me->ref = ip_ref. ref = ip_ref.
ENDIF. ENDIF.
me->left_column = ip_left_column. * Add a simple text with parameter IP_TEXT and style IS_STYLE
me->left_offset = ip_left_offset. IF ip_text IS NOT INITIAL.
add_text(
me->top_row = ip_top_row. ip_text = ip_text
me->top_offset = ip_top_offset. is_style = is_style ).
IF ip_right_column IS NOT INITIAL.
me->right_column = ip_right_column.
ELSE.
me->right_column = default_right_column.
ENDIF. ENDIF.
me->right_offset = ip_right_offset.
IF ip_bottom_row IS NOT INITIAL. * Parameters of the containing box
me->bottom_row = ip_bottom_row. DATA ls_box TYPE ty_box.
ELSE. ls_box-left_column = ip_left_column.
me->bottom_row = default_bottom_row. ls_box-left_offset = ip_left_offset.
ENDIF. ls_box-top_row = ip_top_row.
me->bottom_offset = ip_bottom_offset. ls_box-top_offset = ip_top_offset.
ls_box-right_column = ip_right_column.
ls_box-right_offset = ip_right_offset.
ls_box-bottom_row = ip_bottom_row.
ls_box-bottom_offset = ip_bottom_offset.
set_box( ls_box ).
ENDMETHOD. ENDMETHOD.
METHOD set_box.
gs_box = is_box.
ENDMETHOD.
METHOD add_text.
DATA ls_rtf LIKE LINE OF gt_rtf.
ls_rtf-text = ip_text.
IF is_style IS INITIAL.
ls_rtf-rtf = get_default_style( ).
ELSE.
ls_rtf-rtf = is_style.
ENDIF.
APPEND ls_rtf TO gt_rtf.
ENDMETHOD.
METHOD get_default_style.
es_default-bold = abap_true.
es_default-size = 9.
es_default-color-indexed = 81.
es_default-color-theme = zcl_excel_style_color=>c_theme_not_set.
es_default-name = `Tahoma`.
es_default-family = 2.
ENDMETHOD.
METHOD get_text_rtf.
et_rtf = gt_rtf.
ENDMETHOD.
METHOD set_text_rtf.
* Set a text, consisting of differently styled parts
gt_rtf = it_rtf.
IF ip_ref IS SUPPLIED.
ref = ip_ref.
ENDIF.
* Parameters of the containing box
IF is_box IS SUPPLIED.
set_box( is_box ).
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -17,21 +17,31 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>CONSTRUCTOR</DESCRIPT> <DESCRIPT>CONSTRUCTOR</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>GET_DEFAULT_STYLE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Default style for formatted parts of comment</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>GET_INDEX</CMPNAME> <CMPNAME>GET_INDEX</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Get index</DESCRIPT> <DESCRIPT>Get index (in commentlist zcl_excel_comments)</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>GET_REF</CMPNAME> <CMPNAME>GET_REF</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Get reference</DESCRIPT> <DESCRIPT>Get cell reference</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>GET_TEXT</CMPNAME> <CMPNAME>GET_TEXT</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Get text</DESCRIPT> <DESCRIPT>Get text</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>GET_TEXT_RTF</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Get text consisting of styled parts</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>INDEX</CMPNAME> <CMPNAME>INDEX</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
@ -42,17 +52,72 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Reference to cell (eg. &apos;B13&apos;)</DESCRIPT> <DESCRIPT>Reference to cell (eg. &apos;B13&apos;)</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>SET_BOX</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Set box for display</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>SET_TEXT</CMPNAME> <CMPNAME>SET_TEXT</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Set text</DESCRIPT> <DESCRIPT>Set text</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>TEXT</CMPNAME> <CMPNAME>SET_TEXT_RTF</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Comment</DESCRIPT> <DESCRIPT>Set text consisting of styled parts</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
</DESCRIPTIONS> </DESCRIPTIONS>
<DESCRIPTIONS_SUB>
<SEOSUBCOTX>
<CMPNAME>ADD_TEXT</CMPNAME>
<SCONAME>IS_STYLE</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Style</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>GET_DEFAULT_STYLE</CMPNAME>
<SCONAME>ES_DEFAULT</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Cell Font</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>SET_TEXT</CMPNAME>
<SCONAME>IP_REF</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Cell reference (e.g. &apos;A1&apos;)</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>SET_TEXT</CMPNAME>
<SCONAME>IP_TEXT</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Text as string</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>SET_TEXT</CMPNAME>
<SCONAME>IS_STYLE</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Style (for richt text comment)</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>SET_TEXT_RTF</CMPNAME>
<SCONAME>IP_REF</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Cell reference (e.g. &apos;A1&apos;)</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>SET_TEXT_RTF</CMPNAME>
<SCONAME>IS_BOX</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Bounding box (optional)</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>SET_TEXT_RTF</CMPNAME>
<SCONAME>IT_RTF</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Comment with differently styled parts</DESCRIPT>
</SEOSUBCOTX>
</DESCRIPTIONS_SUB>
</asx:values> </asx:values>
</asx:abap> </asx:abap>
</abapGit> </abapGit>

View File

@ -5,6 +5,12 @@ CLASS zcl_excel_comments DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
TYPES:
ty_boxes TYPE STANDARD TABLE OF zcl_excel_comment=>ty_box
WITH NON-UNIQUE DEFAULT KEY .
DATA gv_full_vml TYPE string READ-ONLY .
METHODS add METHODS add
IMPORTING IMPORTING
!ip_comment TYPE REF TO zcl_excel_comment . !ip_comment TYPE REF TO zcl_excel_comment .
@ -12,7 +18,9 @@ CLASS zcl_excel_comments DEFINITION
IMPORTING IMPORTING
!ip_comment TYPE REF TO zcl_excel_comment . !ip_comment TYPE REF TO zcl_excel_comment .
METHODS clear . METHODS clear .
METHODS constructor . METHODS constructor
IMPORTING
!io_from TYPE REF TO zcl_excel_comments OPTIONAL .
METHODS get METHODS get
IMPORTING IMPORTING
!ip_index TYPE zexcel_active_worksheet !ip_index TYPE zexcel_active_worksheet
@ -30,15 +38,20 @@ CLASS zcl_excel_comments DEFINITION
METHODS size METHODS size
RETURNING RETURNING
VALUE(ep_size) TYPE i . VALUE(ep_size) TYPE i .
METHODS set_boxes
IMPORTING
!it_boxes TYPE ty_boxes OPTIONAL
!iv_full_vml TYPE string OPTIONAL .
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
DATA comments TYPE REF TO zcl_excel_collection . DATA comments TYPE REF TO zcl_excel_collection .
DATA gt_boxes TYPE ty_boxes .
ENDCLASS. ENDCLASS.
CLASS zcl_excel_comments IMPLEMENTATION. CLASS ZCL_EXCEL_COMMENTS IMPLEMENTATION.
METHOD add. METHOD add.
@ -57,7 +70,15 @@ CLASS zcl_excel_comments IMPLEMENTATION.
METHOD constructor. METHOD constructor.
CREATE OBJECT comments.
IF io_from IS INITIAL.
CREATE OBJECT comments.
ELSE.
* Copy constructor: copy attributes from original
comments = io_from->comments.
gt_boxes = io_from->gt_boxes.
gv_full_vml = io_from->gv_full_vml.
ENDIF.
ENDMETHOD. ENDMETHOD.
@ -97,4 +118,37 @@ CLASS zcl_excel_comments IMPLEMENTATION.
ep_size = comments->size( ). ep_size = comments->size( ).
ENDMETHOD. ENDMETHOD.
METHOD set_boxes.
DATA:
lo_comments TYPE REF TO zcl_excel_collection_iterator,
lo_comment TYPE REF TO zcl_excel_comment.
FIELD-SYMBOLS:
<ls_box> TYPE zcl_excel_comment=>ty_box.
IF it_boxes IS NOT INITIAL.
gt_boxes = it_boxes.
ENDIF.
IF iv_full_vml IS NOT INITIAL.
gv_full_vml = iv_full_vml.
ENDIF.
IF gt_boxes IS NOT INITIAL.
lo_comments = comments->get_iterator( ).
WHILE lo_comments->has_next( ) EQ abap_true.
READ TABLE gt_boxes INDEX 1 ASSIGNING <ls_box>.
CHECK sy-subrc EQ 0.
lo_comment ?= lo_comments->get_next( ).
lo_comment->set_box( <ls_box> ).
DELETE gt_boxes INDEX 1.
ENDWHILE.
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -37,6 +37,11 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Returns an iterator</DESCRIPT> <DESCRIPT>Returns an iterator</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>GV_FULL_VML</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Full VML with graphics information for the comment boxes</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>INCLUDE</CMPNAME> <CMPNAME>INCLUDE</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
@ -52,12 +57,25 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Deletes an Element from the Collection</DESCRIPT> <DESCRIPT>Deletes an Element from the Collection</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>SET_BOXES</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Propagate dimensions of the info boxes to the comments</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>SIZE</CMPNAME> <CMPNAME>SIZE</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Specifies number of contained elements</DESCRIPT> <DESCRIPT>Specifies number of contained elements</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
</DESCRIPTIONS> </DESCRIPTIONS>
<DESCRIPTIONS_SUB>
<SEOSUBCOTX>
<CMPNAME>CONSTRUCTOR</CMPNAME>
<SCONAME>IO_FROM</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Create new instance from this original</DESCRIPT>
</SEOSUBCOTX>
</DESCRIPTIONS_SUB>
</asx:values> </asx:values>
</asx:abap> </asx:abap>
</abapGit> </abapGit>

View File

@ -13,361 +13,371 @@ CLASS zcl_excel_reader_2007 DEFINITION
!ip_element TYPE REF TO if_ixml_element !ip_element TYPE REF TO if_ixml_element
CHANGING CHANGING
!cp_structure TYPE any . !cp_structure TYPE any .
PROTECTED SECTION. PROTECTED SECTION.
TYPES: TYPES:
*"* protected components of class ZCL_EXCEL_READER_2007 *"* protected components of class ZCL_EXCEL_READER_2007
*"* do not include other source files here!!! *"* do not include other source files here!!!
BEGIN OF t_relationship, BEGIN OF t_relationship,
id TYPE string, id TYPE string,
type TYPE string, type TYPE string,
target TYPE string, target TYPE string,
targetmode TYPE string, targetmode TYPE string,
worksheet TYPE REF TO zcl_excel_worksheet, worksheet TYPE REF TO zcl_excel_worksheet,
sheetid TYPE string, "ins #235 - repeat rows/cols - needed to identify correct sheet sheetid TYPE string, "ins #235 - repeat rows/cols - needed to identify correct sheet
localsheetid TYPE string, localsheetid TYPE string,
END OF t_relationship . END OF t_relationship .
TYPES: TYPES:
BEGIN OF t_fileversion, BEGIN OF t_fileversion,
appname TYPE string, appname TYPE string,
lastedited TYPE string, lastedited TYPE string,
lowestedited TYPE string, lowestedited TYPE string,
rupbuild TYPE string, rupbuild TYPE string,
codename TYPE string, codename TYPE string,
END OF t_fileversion . END OF t_fileversion .
TYPES: TYPES:
BEGIN OF t_sheet, BEGIN OF t_sheet,
name TYPE string, name TYPE string,
sheetid TYPE string, sheetid TYPE string,
id TYPE string, id TYPE string,
state TYPE string, state TYPE string,
END OF t_sheet . END OF t_sheet .
TYPES: TYPES:
BEGIN OF t_workbookpr, BEGIN OF t_workbookpr,
codename TYPE string, codename TYPE string,
defaultthemeversion TYPE string, defaultthemeversion TYPE string,
END OF t_workbookpr . END OF t_workbookpr .
TYPES: TYPES:
BEGIN OF t_sheetpr, BEGIN OF t_sheetpr,
codename TYPE string, codename TYPE string,
END OF t_sheetpr . END OF t_sheetpr .
TYPES: TYPES:
BEGIN OF t_range, BEGIN OF t_range,
name TYPE string, name TYPE string,
hidden TYPE string, "inserted with issue #235 because Autofilters didn't passthrough hidden TYPE string, "inserted with issue #235 because Autofilters didn't passthrough
localsheetid TYPE string, " issue #163 localsheetid TYPE string, " issue #163
END OF t_range . END OF t_range .
TYPES: TYPES:
t_fills TYPE STANDARD TABLE OF REF TO zcl_excel_style_fill WITH NON-UNIQUE DEFAULT KEY . t_fills TYPE STANDARD TABLE OF REF TO zcl_excel_style_fill WITH NON-UNIQUE DEFAULT KEY .
TYPES: TYPES:
t_borders TYPE STANDARD TABLE OF REF TO zcl_excel_style_borders WITH NON-UNIQUE DEFAULT KEY . t_borders TYPE STANDARD TABLE OF REF TO zcl_excel_style_borders WITH NON-UNIQUE DEFAULT KEY .
TYPES: TYPES:
t_fonts TYPE STANDARD TABLE OF REF TO zcl_excel_style_font WITH NON-UNIQUE DEFAULT KEY . t_fonts TYPE STANDARD TABLE OF REF TO zcl_excel_style_font WITH NON-UNIQUE DEFAULT KEY .
TYPES: TYPES:
t_style_refs TYPE STANDARD TABLE OF REF TO zcl_excel_style WITH NON-UNIQUE DEFAULT KEY . t_style_refs TYPE STANDARD TABLE OF REF TO zcl_excel_style WITH NON-UNIQUE DEFAULT KEY .
TYPES: TYPES:
BEGIN OF t_color, BEGIN OF t_color,
indexed TYPE string, indexed TYPE string,
rgb TYPE string, rgb TYPE string,
theme TYPE string, theme TYPE string,
tint TYPE string, tint TYPE string,
END OF t_color . END OF t_color .
TYPES: TYPES:
BEGIN OF t_rel_drawing, BEGIN OF t_rel_drawing,
id TYPE string, id TYPE string,
content TYPE xstring, content TYPE xstring,
file_ext TYPE string, file_ext TYPE string,
content_xml TYPE REF TO if_ixml_document, content_xml TYPE REF TO if_ixml_document,
END OF t_rel_drawing . END OF t_rel_drawing .
TYPES: TYPES:
t_rel_drawings TYPE STANDARD TABLE OF t_rel_drawing WITH NON-UNIQUE DEFAULT KEY . t_rel_drawings TYPE STANDARD TABLE OF t_rel_drawing WITH NON-UNIQUE DEFAULT KEY .
TYPES: TYPES:
BEGIN OF gts_external_hyperlink, BEGIN OF gts_external_hyperlink,
id TYPE string, id TYPE string,
target TYPE string, target TYPE string,
END OF gts_external_hyperlink . END OF gts_external_hyperlink .
TYPES: TYPES:
gtt_external_hyperlinks TYPE HASHED TABLE OF gts_external_hyperlink WITH UNIQUE KEY id . gtt_external_hyperlinks TYPE HASHED TABLE OF gts_external_hyperlink WITH UNIQUE KEY id .
TYPES: TYPES:
BEGIN OF ty_ref_formulae, BEGIN OF ty_ref_formulae,
sheet TYPE REF TO zcl_excel_worksheet, sheet TYPE REF TO zcl_excel_worksheet,
row TYPE i, row TYPE i,
column TYPE i, column TYPE i,
si TYPE i, si TYPE i,
ref TYPE string, ref TYPE string,
formula TYPE string, formula TYPE string,
END OF ty_ref_formulae . END OF ty_ref_formulae .
TYPES: TYPES:
tyt_ref_formulae TYPE HASHED TABLE OF ty_ref_formulae WITH UNIQUE KEY sheet row column . tyt_ref_formulae TYPE HASHED TABLE OF ty_ref_formulae WITH UNIQUE KEY sheet row column .
TYPES: TYPES:
BEGIN OF t_shared_string, BEGIN OF t_shared_string,
value TYPE string, value TYPE string,
rtf TYPE zexcel_t_rtf, rtf TYPE zexcel_t_rtf,
END OF t_shared_string . END OF t_shared_string .
TYPES: TYPES:
t_shared_strings TYPE STANDARD TABLE OF t_shared_string WITH DEFAULT KEY . t_shared_strings TYPE STANDARD TABLE OF t_shared_string WITH DEFAULT KEY .
TYPES: TYPES:
BEGIN OF t_table, BEGIN OF t_table,
id TYPE string, id TYPE string,
target TYPE string, target TYPE string,
END OF t_table . END OF t_table .
TYPES: TYPES:
t_tables TYPE HASHED TABLE OF t_table WITH UNIQUE KEY id . t_tables TYPE HASHED TABLE OF t_table WITH UNIQUE KEY id .
DATA shared_strings TYPE t_shared_strings . DATA shared_strings TYPE t_shared_strings .
DATA styles TYPE t_style_refs . DATA styles TYPE t_style_refs .
DATA mt_ref_formulae TYPE tyt_ref_formulae . DATA mt_ref_formulae TYPE tyt_ref_formulae .
DATA mt_dxf_styles TYPE zexcel_t_styles_cond_mapping . DATA mt_dxf_styles TYPE zexcel_t_styles_cond_mapping .
CONSTANTS:
BEGIN OF namespace,
x14ac TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',
vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader
c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart',
a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main',
xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing',
mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006',
r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',
hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
printer_settings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings',
shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',
styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
theme TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',
relationships TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships',
core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
main TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',
END OF namespace .
METHODS fill_row_outlines METHODS fill_row_outlines
IMPORTING IMPORTING
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel . zcx_excel .
METHODS get_from_zip_archive METHODS get_from_zip_archive
IMPORTING IMPORTING
!i_filename TYPE string !i_filename TYPE string
RETURNING RETURNING
VALUE(r_content) TYPE xstring VALUE(r_content) TYPE xstring
RAISING RAISING
zcx_excel . zcx_excel .
METHODS get_ixml_from_zip_archive METHODS get_ixml_from_zip_archive
IMPORTING IMPORTING
!i_filename TYPE string !i_filename TYPE string
!is_normalizing TYPE abap_bool DEFAULT 'X' !is_normalizing TYPE abap_bool DEFAULT 'X'
RETURNING RETURNING
VALUE(r_ixml) TYPE REF TO if_ixml_document VALUE(r_ixml) TYPE REF TO if_ixml_document
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_drawing_anchor METHODS load_drawing_anchor
IMPORTING IMPORTING
!io_anchor_element TYPE REF TO if_ixml_element !io_anchor_element TYPE REF TO if_ixml_element
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
!it_related_drawings TYPE t_rel_drawings . !it_related_drawings TYPE t_rel_drawings .
METHODS load_shared_strings METHODS load_shared_strings
IMPORTING IMPORTING
!ip_path TYPE string !ip_path TYPE string
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_styles METHODS load_styles
IMPORTING IMPORTING
!ip_path TYPE string !ip_path TYPE string
!ip_excel TYPE REF TO zcl_excel !ip_excel TYPE REF TO zcl_excel
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_dxf_styles METHODS load_dxf_styles
IMPORTING IMPORTING
!iv_path TYPE string !iv_path TYPE string
!io_excel TYPE REF TO zcl_excel !io_excel TYPE REF TO zcl_excel
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_style_borders METHODS load_style_borders
IMPORTING IMPORTING
!ip_xml TYPE REF TO if_ixml_document !ip_xml TYPE REF TO if_ixml_document
RETURNING RETURNING
VALUE(ep_borders) TYPE t_borders . VALUE(ep_borders) TYPE t_borders .
METHODS load_style_fills METHODS load_style_fills
IMPORTING IMPORTING
!ip_xml TYPE REF TO if_ixml_document !ip_xml TYPE REF TO if_ixml_document
RETURNING RETURNING
VALUE(ep_fills) TYPE t_fills . VALUE(ep_fills) TYPE t_fills .
METHODS load_style_font METHODS load_style_font
IMPORTING IMPORTING
!io_xml_element TYPE REF TO if_ixml_element !io_xml_element TYPE REF TO if_ixml_element
RETURNING RETURNING
VALUE(ro_font) TYPE REF TO zcl_excel_style_font . VALUE(ro_font) TYPE REF TO zcl_excel_style_font .
METHODS load_style_fonts METHODS load_style_fonts
IMPORTING IMPORTING
!ip_xml TYPE REF TO if_ixml_document !ip_xml TYPE REF TO if_ixml_document
RETURNING RETURNING
VALUE(ep_fonts) TYPE t_fonts . VALUE(ep_fonts) TYPE t_fonts .
METHODS load_style_num_formats METHODS load_style_num_formats
IMPORTING IMPORTING
!ip_xml TYPE REF TO if_ixml_document !ip_xml TYPE REF TO if_ixml_document
RETURNING RETURNING
VALUE(ep_num_formats) TYPE zcl_excel_style_number_format=>t_num_formats . VALUE(ep_num_formats) TYPE zcl_excel_style_number_format=>t_num_formats .
METHODS load_workbook METHODS load_workbook
IMPORTING IMPORTING
!iv_workbook_full_filename TYPE string !iv_workbook_full_filename TYPE string
!io_excel TYPE REF TO zcl_excel !io_excel TYPE REF TO zcl_excel
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_worksheet METHODS load_worksheet
IMPORTING IMPORTING
!ip_path TYPE string !ip_path TYPE string
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_worksheet_cond_format METHODS load_worksheet_cond_format
IMPORTING IMPORTING
!io_ixml_worksheet TYPE REF TO if_ixml_document !io_ixml_worksheet TYPE REF TO if_ixml_document
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_worksheet_cond_format_aa METHODS load_worksheet_cond_format_aa
IMPORTING IMPORTING
!io_ixml_rule TYPE REF TO if_ixml_element !io_ixml_rule TYPE REF TO if_ixml_element
!io_style_cond TYPE REF TO zcl_excel_style_cond. !io_style_cond TYPE REF TO zcl_excel_style_cond .
METHODS load_worksheet_cond_format_ci METHODS load_worksheet_cond_format_ci
IMPORTING IMPORTING
!io_ixml_rule TYPE REF TO if_ixml_element !io_ixml_rule TYPE REF TO if_ixml_element
!io_style_cond TYPE REF TO zcl_excel_style_cond . !io_style_cond TYPE REF TO zcl_excel_style_cond .
METHODS load_worksheet_cond_format_cs METHODS load_worksheet_cond_format_cs
IMPORTING IMPORTING
!io_ixml_rule TYPE REF TO if_ixml_element !io_ixml_rule TYPE REF TO if_ixml_element
!io_style_cond TYPE REF TO zcl_excel_style_cond . !io_style_cond TYPE REF TO zcl_excel_style_cond .
METHODS load_worksheet_cond_format_ex METHODS load_worksheet_cond_format_ex
IMPORTING IMPORTING
!io_ixml_rule TYPE REF TO if_ixml_element !io_ixml_rule TYPE REF TO if_ixml_element
!io_style_cond TYPE REF TO zcl_excel_style_cond . !io_style_cond TYPE REF TO zcl_excel_style_cond .
METHODS load_worksheet_cond_format_is METHODS load_worksheet_cond_format_is
IMPORTING IMPORTING
!io_ixml_rule TYPE REF TO if_ixml_element !io_ixml_rule TYPE REF TO if_ixml_element
!io_style_cond TYPE REF TO zcl_excel_style_cond . !io_style_cond TYPE REF TO zcl_excel_style_cond .
METHODS load_worksheet_cond_format_db METHODS load_worksheet_cond_format_db
IMPORTING IMPORTING
!io_ixml_rule TYPE REF TO if_ixml_element !io_ixml_rule TYPE REF TO if_ixml_element
!io_style_cond TYPE REF TO zcl_excel_style_cond . !io_style_cond TYPE REF TO zcl_excel_style_cond .
METHODS load_worksheet_cond_format_t10 METHODS load_worksheet_cond_format_t10
IMPORTING IMPORTING
!io_ixml_rule TYPE REF TO if_ixml_element !io_ixml_rule TYPE REF TO if_ixml_element
!io_style_cond TYPE REF TO zcl_excel_style_cond . !io_style_cond TYPE REF TO zcl_excel_style_cond .
METHODS load_worksheet_drawing METHODS load_worksheet_drawing
IMPORTING IMPORTING
!ip_path TYPE string !ip_path TYPE string
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_comments METHODS load_comments
IMPORTING IMPORTING
ip_path TYPE string !ip_path TYPE string
io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_worksheet_hyperlinks METHODS load_worksheet_hyperlinks
IMPORTING IMPORTING
!io_ixml_worksheet TYPE REF TO if_ixml_document !io_ixml_worksheet TYPE REF TO if_ixml_document
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
!it_external_hyperlinks TYPE gtt_external_hyperlinks !it_external_hyperlinks TYPE gtt_external_hyperlinks
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_worksheet_ignored_errors METHODS load_worksheet_ignored_errors
IMPORTING IMPORTING
!io_ixml_worksheet TYPE REF TO if_ixml_document !io_ixml_worksheet TYPE REF TO if_ixml_document
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_worksheet_pagebreaks METHODS load_worksheet_pagebreaks
IMPORTING IMPORTING
!io_ixml_worksheet TYPE REF TO if_ixml_document !io_ixml_worksheet TYPE REF TO if_ixml_document
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel . zcx_excel .
METHODS load_worksheet_autofilter METHODS load_worksheet_autofilter
IMPORTING IMPORTING
io_ixml_worksheet TYPE REF TO if_ixml_document !io_ixml_worksheet TYPE REF TO if_ixml_document
io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel. zcx_excel .
METHODS load_worksheet_pagemargins METHODS load_worksheet_pagemargins
IMPORTING IMPORTING
!io_ixml_worksheet TYPE REF TO if_ixml_document !io_ixml_worksheet TYPE REF TO if_ixml_document
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING RAISING
zcx_excel . zcx_excel .
"! <p class="shorttext synchronized" lang="en">Load worksheet tables</p> "! <p class="shorttext synchronized" lang="en">Load worksheet tables</p>
METHODS load_worksheet_tables METHODS load_worksheet_tables
IMPORTING IMPORTING
io_ixml_worksheet TYPE REF TO if_ixml_document !io_ixml_worksheet TYPE REF TO if_ixml_document
io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet
iv_dirname TYPE string !iv_dirname TYPE string
it_tables TYPE t_tables !it_tables TYPE t_tables
RAISING RAISING
zcx_excel . zcx_excel .
CLASS-METHODS resolve_path CLASS-METHODS resolve_path
IMPORTING IMPORTING
!ip_path TYPE string !ip_path TYPE string
RETURNING RETURNING
VALUE(rp_result) TYPE string . VALUE(rp_result) TYPE string .
METHODS resolve_referenced_formulae . METHODS resolve_referenced_formulae .
METHODS unescape_string_value METHODS unescape_string_value
IMPORTING IMPORTING
i_value TYPE string !i_value TYPE string
RETURNING RETURNING
VALUE(result) TYPE string. VALUE(result) TYPE string .
METHODS get_dxf_style_guid METHODS get_dxf_style_guid
IMPORTING IMPORTING
!io_ixml_dxf TYPE REF TO if_ixml_element !io_ixml_dxf TYPE REF TO if_ixml_element
!io_excel TYPE REF TO zcl_excel !io_excel TYPE REF TO zcl_excel
RETURNING RETURNING
VALUE(rv_style_guid) TYPE zexcel_cell_style . VALUE(rv_style_guid) TYPE zexcel_cell_style .
METHODS load_theme METHODS load_theme
IMPORTING IMPORTING
iv_path TYPE string !iv_path TYPE string
!ip_excel TYPE REF TO zcl_excel !ip_excel TYPE REF TO zcl_excel
RAISING RAISING
zcx_excel. zcx_excel .
METHODS provided_string_is_escaped METHODS provided_string_is_escaped
IMPORTING IMPORTING
!value TYPE string !value TYPE string
RETURNING RETURNING
VALUE(is_escaped) TYPE abap_bool. VALUE(is_escaped) TYPE abap_bool .
METHODS load_comment_boxes
IMPORTING
!ip_path TYPE string
!io_worksheet TYPE REF TO zcl_excel_worksheet
RAISING
zcx_excel .
PRIVATE SECTION.
CONSTANTS: BEGIN OF namespace, DATA zip TYPE REF TO lcl_zip_archive .
x14ac TYPE string VALUE 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac', DATA gid TYPE i .
vba_project TYPE string VALUE 'http://schemas.microsoft.com/office/2006/relationships/vbaProject', "#EC NEEDED for future incorporation of XLSM-reader
c TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/chart',
a TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/main',
xdr TYPE string VALUE 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing',
mc TYPE string VALUE 'http://schemas.openxmlformats.org/markup-compatibility/2006',
r TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
chart TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart',
drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',
hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
image TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
office_document TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
printer_settings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings',
shared_strings TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',
styles TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
theme TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
worksheet TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',
relationships TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships',
core_properties TYPE string VALUE 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
main TYPE string VALUE 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',
END OF namespace.
PRIVATE SECTION. METHODS load_single_comment
IMPORTING
DATA zip TYPE REF TO lcl_zip_archive . !io_node_comment TYPE REF TO if_ixml_element
DATA: gid TYPE i. RETURNING
VALUE(eo_comment) TYPE REF TO zcl_excel_comment .
METHODS create_zip_archive METHODS create_zip_archive
IMPORTING IMPORTING
!i_xlsx_binary TYPE xstring !i_xlsx_binary TYPE xstring
!i_use_alternate_zip TYPE seoclsname OPTIONAL !i_use_alternate_zip TYPE seoclsname OPTIONAL
RETURNING RETURNING
VALUE(e_zip) TYPE REF TO lcl_zip_archive VALUE(e_zip) TYPE REF TO lcl_zip_archive
RAISING RAISING
zcx_excel . zcx_excel .
METHODS read_from_applserver METHODS read_from_applserver
IMPORTING IMPORTING
!i_filename TYPE csequence !i_filename TYPE csequence
RETURNING RETURNING
VALUE(r_excel_data) TYPE xstring VALUE(r_excel_data) TYPE xstring
RAISING RAISING
zcx_excel. zcx_excel .
METHODS read_from_local_file METHODS read_from_local_file
IMPORTING IMPORTING
!i_filename TYPE csequence !i_filename TYPE csequence
RETURNING RETURNING
VALUE(r_excel_data) TYPE xstring VALUE(r_excel_data) TYPE xstring
RAISING RAISING
zcx_excel . zcx_excel .
ENDCLASS. ENDCLASS.
CLASS zcl_excel_reader_2007 IMPLEMENTATION. CLASS ZCL_EXCEL_READER_2007 IMPLEMENTATION.
METHOD create_zip_archive. METHOD create_zip_archive.
@ -2267,7 +2277,7 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
workbookviewid TYPE string, workbookviewid TYPE string,
showrowcolheaders TYPE string, showrowcolheaders TYPE string,
righttoleft TYPE string, righttoleft TYPE string,
topleftcell TYPE string, topleftcell TYPE string,
END OF lty_sheetview. END OF lty_sheetview.
TYPES: BEGIN OF lty_mergecell, TYPES: BEGIN OF lty_mergecell,
@ -2338,13 +2348,14 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
CONSTANTS: lc_xml_attr_true TYPE string VALUE 'true', CONSTANTS: lc_xml_attr_true TYPE string VALUE `true`,
lc_xml_attr_true_int TYPE string VALUE '1', lc_xml_attr_true_int TYPE string VALUE `1`,
lc_rel_drawing TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', lc_rel_drawing TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing`,
lc_rel_hyperlink TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', lc_rel_vmldrawing TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing`,
lc_rel_comments TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments', lc_rel_hyperlink TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink`,
lc_rel_printer TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings'. lc_rel_comments TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments`,
CONSTANTS lc_rel_table TYPE string VALUE 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table'. lc_rel_printer TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/printerSettings`.
CONSTANTS lc_rel_table TYPE string VALUE `http://schemas.openxmlformats.org/officeDocument/2006/relationships/table`.
DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document, DATA: lo_ixml_worksheet TYPE REF TO if_ixml_document,
lo_ixml_cells TYPE REF TO if_ixml_node_collection, lo_ixml_cells TYPE REF TO if_ixml_node_collection,
@ -2493,10 +2504,19 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
* in the "load_worksheet_drawing" shouldn't lead to an abortion of the reading * in the "load_worksheet_drawing" shouldn't lead to an abortion of the reading
TRY. TRY.
me->load_worksheet_drawing( ip_path = lv_path me->load_worksheet_drawing( ip_path = lv_path
io_worksheet = io_worksheet ). io_worksheet = io_worksheet ).
CATCH zcx_excel. "--> then ignore it CATCH zcx_excel. "--> then ignore it
ENDTRY. ENDTRY.
WHEN lc_rel_vmldrawing.
* This file contains the dimensions of the boxes in which comments are displayed
TRY.
me->load_comment_boxes( ip_path = lv_path
io_worksheet = io_worksheet ).
CATCH zcx_excel. "--> then ignore it (boxes will get default values)
ENDTRY.
WHEN lc_rel_printer. WHEN lc_rel_printer.
" Read Printer settings " Read Printer settings
@ -3669,48 +3689,31 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD load_comments. METHOD load_comments.
DATA: lo_comments_xml TYPE REF TO if_ixml_document,
lo_node_comment TYPE REF TO if_ixml_element,
lo_node_comment_child TYPE REF TO if_ixml_element,
lo_node_r_child_t TYPE REF TO if_ixml_element,
lo_attr TYPE REF TO if_ixml_attribute,
lo_comment TYPE REF TO zcl_excel_comment,
lv_comment_text TYPE string,
lv_node_value TYPE string,
lv_attr_value TYPE string.
lo_comments_xml = me->get_ixml_from_zip_archive( ip_path ). DATA:
lo_comments_xml TYPE REF TO if_ixml_document,
lo_node_comment TYPE REF TO if_ixml_element,
lo_comment TYPE REF TO zcl_excel_comment.
lo_node_comment ?= lo_comments_xml->find_from_name_ns( name = 'comment' uri = namespace-main ). lo_comments_xml = get_ixml_from_zip_archive( i_filename = ip_path is_normalizing = abap_false ).
lo_node_comment = lo_comments_xml->find_from_name_ns( name = 'comment' uri = namespace-main ).
WHILE lo_node_comment IS BOUND. WHILE lo_node_comment IS BOUND.
CLEAR lv_comment_text. lo_comment = load_single_comment( lo_node_comment ).
lo_attr = lo_node_comment->get_attribute_node_ns( name = 'ref' ).
lv_attr_value = lo_attr->get_value( ).
lo_node_comment_child ?= lo_node_comment->get_first_child( ).
WHILE lo_node_comment_child IS BOUND.
" There will be rPr nodes here, but we do not support them
" in comments right now; see 'load_shared_strings' for handling.
" Extract the <t>...</t> part of each <r>-tag
lo_node_r_child_t ?= lo_node_comment_child->find_from_name_ns( name = 't' uri = namespace-main ).
IF lo_node_r_child_t IS BOUND.
lv_node_value = lo_node_r_child_t->get_value( ).
CONCATENATE lv_comment_text lv_node_value INTO lv_comment_text RESPECTING BLANKS.
ENDIF.
lo_node_comment_child ?= lo_node_comment_child->get_next( ).
ENDWHILE.
CREATE OBJECT lo_comment.
lo_comment->set_text( ip_ref = lv_attr_value ip_text = lv_comment_text ).
io_worksheet->add_comment( lo_comment ). io_worksheet->add_comment( lo_comment ).
lo_node_comment ?= lo_node_comment->get_next( ). lo_node_comment ?= lo_node_comment->get_next( ).
ENDWHILE. ENDWHILE.
* If the comment boxes had been loaded before the comments themselves,
* the box dimensions have to be propagated now into the individual comments
io_worksheet->set_comment_boxes( ).
ENDMETHOD. ENDMETHOD.
METHOD load_worksheet_hyperlinks. METHOD load_worksheet_hyperlinks.
DATA: lo_ixml_hyperlinks TYPE REF TO if_ixml_node_collection, DATA: lo_ixml_hyperlinks TYPE REF TO if_ixml_node_collection,
@ -4459,6 +4462,8 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
iv_zcl_excel_classname = iv_zcl_excel_classname ). iv_zcl_excel_classname = iv_zcl_excel_classname ).
ENDMETHOD. ENDMETHOD.
METHOD provided_string_is_escaped. METHOD provided_string_is_escaped.
"Check if passed value is really an escaped Character "Check if passed value is really an escaped Character
@ -4474,4 +4479,143 @@ CLASS zcl_excel_reader_2007 IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD load_comment_boxes.
CONSTANTS:
BEGIN OF lc_namespace,
vml TYPE string VALUE `urn:schemas-microsoft-com:vml`,
excel TYPE string VALUE `urn:schemas-microsoft-com:office:excel`,
END OF lc_namespace.
DATA:
lo_anchor TYPE REF TO if_ixml_element,
lo_shape TYPE REF TO if_ixml_element,
lo_shapes TYPE REF TO if_ixml_node_collection,
lo_vml TYPE REF TO if_ixml_document,
lv_vml TYPE string,
ls_box TYPE zcl_excel_comment=>ty_box,
lt_boxes TYPE zcl_excel_comments=>ty_boxes,
lt_dims TYPE stringtab,
lv_dims TYPE string,
lv_dim TYPE string,
lv_shape_index TYPE i,
lv_total_shapes TYPE i.
FIELD-SYMBOLS:
<lv_dim> TYPE i.
lo_vml = get_ixml_from_zip_archive( ip_path ).
lo_shapes = lo_vml->get_elements_by_tag_name_ns(
name = `shape`
uri = lc_namespace-vml
).
lv_total_shapes = lo_shapes->get_length( ).
WHILE lv_shape_index < lv_total_shapes.
lo_shape ?= lo_shapes->get_item( lv_shape_index ).
CLEAR ls_box.
lo_anchor ?= lo_shape->find_from_name_ns( name = `Anchor` uri = lc_namespace-excel ).
IF lo_anchor IS BOUND.
lv_dims = lo_anchor->get_value( ).
SPLIT lv_dims AT `,` INTO TABLE lt_dims.
LOOP AT lt_dims INTO lv_dim.
ASSIGN COMPONENT sy-tabix OF STRUCTURE ls_box TO <lv_dim>.
CHECK sy-subrc EQ 0.
TRY.
<lv_dim> = lv_dim.
CATCH cx_sy_conversion_error.
ENDTRY.
ENDLOOP.
APPEND ls_box TO lt_boxes.
ENDIF.
ADD 1 TO lv_shape_index.
ENDWHILE.
* Serialize lo_vml into a string lv_vml and pass it to the comments object
CALL TRANSFORMATION id
SOURCE XML lo_vml
RESULT XML lv_vml.
IF lt_boxes IS NOT INITIAL.
io_worksheet->set_comment_boxes( it_boxes = lt_boxes iv_full_vml = lv_vml ).
ENDIF.
ENDMETHOD.
METHOD load_single_comment.
* Example
*
* <comment ref="A1" authorId="0" shapeId="0" xr:uid="{F71DF43B-AD16-449F-8E98-D378C5CB6E57}">
* <text>
* <r>
* <rPr>
* <b/>
* <sz val="9"/>
* <color indexed="81"/>
* <rFont val="Segoe UI"/>
* <family val="2"/>
* </rPr>
* <t>Info:</t>
* </r>
* <r>
* <rPr>
* <sz val="9"/>
* <color indexed="81"/>
* <rFont val="Segoe UI"/>
* <family val="2"/>
* </rPr>
* <t xml:space="preserve"> Demo Text </t>
* </r>
* ...
DATA:
lo_attr TYPE REF TO if_ixml_attribute,
lv_comment_text TYPE string,
lv_ref TYPE string.
CREATE OBJECT eo_comment.
lo_attr = io_node_comment->get_attribute_node_ns( name = 'ref' ).
lv_ref = lo_attr->get_value( ).
DATA:
lo_rs TYPE REF TO if_ixml_node_collection,
lo_r TYPE REF TO if_ixml_element,
lo_t TYPE REF TO if_ixml_element,
lo_rpr TYPE REF TO if_ixml_element,
lo_font TYPE REF TO zcl_excel_style_font,
ls_rtf TYPE zcl_excel_comment=>ty_rtf_fragment,
lt_rtf TYPE zcl_excel_comment=>ty_rtf_fragments,
lv_r_index TYPE i,
lv_total_r TYPE i.
lo_rs = io_node_comment->get_elements_by_tag_name_ns( name = `r` uri = namespace-main ).
lv_total_r = lo_rs->get_length( ).
WHILE lv_r_index < lv_total_r.
CLEAR:
ls_rtf.
lo_r ?= lo_rs->get_item( lv_r_index ).
lo_rpr ?= lo_r->find_from_name_ns( name = `rPr` uri = namespace-main ).
IF lo_rpr IS BOUND.
lo_font = load_style_font( lo_rpr ).
ls_rtf-rtf = lo_font->get_structure( ).
ENDIF.
lo_t ?= lo_r->find_from_name_ns( name = `t` uri = namespace-main ).
IF lo_t IS BOUND.
ls_rtf-text = lo_t->get_value( ).
ENDIF.
APPEND ls_rtf TO lt_rtf.
ADD 1 TO lv_r_index.
ENDWHILE.
eo_comment->set_text_rtf( ip_ref = lv_ref it_rtf = lt_rtf ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0"> <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:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values> <asx:values>
@ -73,6 +73,11 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Table with external hyperlinks</DESCRIPT> <DESCRIPT>Table with external hyperlinks</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>LOAD_COMMENT_BOXES</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Loads worksheet drawings</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>LOAD_DRAWING_ANCHOR</CMPNAME> <CMPNAME>LOAD_DRAWING_ANCHOR</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
@ -234,6 +239,20 @@
<DESCRIPT>Zip Utility</DESCRIPT> <DESCRIPT>Zip Utility</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
</DESCRIPTIONS> </DESCRIPTIONS>
<DESCRIPTIONS_SUB>
<SEOSUBCOTX>
<CMPNAME>LOAD_SINGLE_COMMENT</CMPNAME>
<SCONAME>EO_COMMENT</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Comment</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>LOAD_SINGLE_COMMENT</CMPNAME>
<SCONAME>IO_NODE_COMMENT</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Element of an XML Document</DESCRIPT>
</SEOSUBCOTX>
</DESCRIPTIONS_SUB>
</asx:values> </asx:values>
</asx:abap> </asx:abap>
</abapGit> </abapGit>

View File

@ -3,13 +3,13 @@ CLASS zcl_excel_worksheet DEFINITION
CREATE PUBLIC . CREATE PUBLIC .
PUBLIC SECTION. PUBLIC SECTION.
*"* public components of class ZCL_EXCEL_WORKSHEET *"* public components of class ZCL_EXCEL_WORKSHEET
*"* do not include other source files here!!! *"* do not include other source files here!!!
*"* protected components of class ZCL_EXCEL_WORKSHEET *"* protected components of class ZCL_EXCEL_WORKSHEET
*"* do not include other source files here!!! *"* do not include other source files here!!!
*"* protected components of class ZCL_EXCEL_WORKSHEET *"* protected components of class ZCL_EXCEL_WORKSHEET
*"* do not include other source files here!!! *"* do not include other source files here!!!
INTERFACES zif_excel_sheet_printsettings . INTERFACES zif_excel_sheet_printsettings .
INTERFACES zif_excel_sheet_properties . INTERFACES zif_excel_sheet_properties .
INTERFACES zif_excel_sheet_protection . INTERFACES zif_excel_sheet_protection .
@ -21,8 +21,9 @@ CLASS zcl_excel_worksheet DEFINITION
row_to TYPE i, row_to TYPE i,
collapsed TYPE abap_bool, collapsed TYPE abap_bool,
END OF mty_s_outline_row . END OF mty_s_outline_row .
TYPES: mty_ts_outlines_row TYPE SORTED TABLE OF mty_s_outline_row WITH UNIQUE KEY primary_key COMPONENTS row_from row_to TYPES:
WITH NON-UNIQUE SORTED KEY row_to COMPONENTS row_to collapsed. mty_ts_outlines_row TYPE SORTED TABLE OF mty_s_outline_row WITH UNIQUE KEY primary_key COMPONENTS row_from row_to
WITH NON-UNIQUE SORTED KEY row_to COMPONENTS row_to collapsed .
TYPES: TYPES:
BEGIN OF mty_s_ignored_errors, BEGIN OF mty_s_ignored_errors,
"! Cell reference (e.g. "A1") or list like "A1 A2" or range "A1:G1" "! Cell reference (e.g. "A1") or list like "A1 A2" or range "A1:G1"
@ -62,8 +63,8 @@ CLASS zcl_excel_worksheet DEFINITION
END OF mty_s_column_formula . END OF mty_s_column_formula .
TYPES: TYPES:
mty_th_column_formula mty_th_column_formula
TYPE HASHED TABLE OF mty_s_column_formula TYPE HASHED TABLE OF mty_s_column_formula
WITH UNIQUE KEY id . WITH UNIQUE KEY id .
TYPES: TYPES:
ty_doc_url TYPE c LENGTH 255 . ty_doc_url TYPE c LENGTH 255 .
TYPES: TYPES:
@ -74,8 +75,7 @@ CLASS zcl_excel_worksheet DEFINITION
col_to TYPE i, col_to TYPE i,
END OF mty_merge . END OF mty_merge .
TYPES: TYPES:
mty_ts_merge TYPE SORTED TABLE OF mty_merge WITH UNIQUE KEY table_line. mty_ts_merge TYPE SORTED TABLE OF mty_merge WITH UNIQUE KEY table_line .
TYPES: TYPES:
ty_area TYPE c LENGTH 1 . ty_area TYPE c LENGTH 1 .
@ -103,8 +103,8 @@ CLASS zcl_excel_worksheet DEFINITION
formula_in_other_column TYPE string, formula_in_other_column TYPE string,
END OF c_messages . END OF c_messages .
DATA mt_merged_cells TYPE mty_ts_merge READ-ONLY . DATA mt_merged_cells TYPE mty_ts_merge READ-ONLY .
DATA pane_top_left_cell TYPE string READ-ONLY. DATA pane_top_left_cell TYPE string READ-ONLY .
DATA sheetview_top_left_cell TYPE string READ-ONLY. DATA sheetview_top_left_cell TYPE string READ-ONLY .
METHODS add_comment METHODS add_comment
IMPORTING IMPORTING
@ -548,15 +548,15 @@ CLASS zcl_excel_worksheet DEFINITION
!ip_row TYPE zexcel_cell_row OPTIONAL !ip_row TYPE zexcel_cell_row OPTIONAL
!ip_row_to TYPE zexcel_cell_row OPTIONAL !ip_row_to TYPE zexcel_cell_row OPTIONAL
!ip_style TYPE any OPTIONAL !ip_style TYPE any OPTIONAL
!ip_value TYPE simple OPTIONAL "added parameter !ip_value TYPE simple OPTIONAL "added parameter
!ip_formula TYPE zexcel_cell_formula OPTIONAL "added parameter !ip_formula TYPE zexcel_cell_formula OPTIONAL "added parameter
RAISING RAISING
zcx_excel . zcx_excel .
METHODS set_pane_top_left_cell METHODS set_pane_top_left_cell
IMPORTING IMPORTING
!iv_columnrow TYPE csequence !iv_columnrow TYPE csequence
RAISING RAISING
zcx_excel. zcx_excel .
METHODS set_print_gridlines METHODS set_print_gridlines
IMPORTING IMPORTING
!i_print_gridlines TYPE zexcel_print_gridlines . !i_print_gridlines TYPE zexcel_print_gridlines .
@ -577,7 +577,7 @@ CLASS zcl_excel_worksheet DEFINITION
IMPORTING IMPORTING
!iv_columnrow TYPE csequence !iv_columnrow TYPE csequence
RAISING RAISING
zcx_excel. zcx_excel .
METHODS set_show_gridlines METHODS set_show_gridlines
IMPORTING IMPORTING
!i_show_gridlines TYPE zexcel_show_gridlines . !i_show_gridlines TYPE zexcel_show_gridlines .
@ -694,6 +694,10 @@ CLASS zcl_excel_worksheet DEFINITION
!er_data TYPE REF TO data !er_data TYPE REF TO data
RAISING RAISING
zcx_excel . zcx_excel .
METHODS set_comment_boxes
IMPORTING
!it_boxes TYPE zcl_excel_comments=>ty_boxes OPTIONAL
!iv_full_vml TYPE string OPTIONAL .
PROTECTED SECTION. PROTECTED SECTION.
METHODS set_table_reference METHODS set_table_reference
IMPORTING IMPORTING
@ -857,7 +861,7 @@ ENDCLASS.
CLASS zcl_excel_worksheet IMPLEMENTATION. CLASS ZCL_EXCEL_WORKSHEET IMPLEMENTATION.
METHOD add_comment. METHOD add_comment.
@ -2612,16 +2616,11 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
METHOD get_comments. METHOD get_comments.
DATA: lo_comment TYPE REF TO zcl_excel_comment,
lo_iterator TYPE REF TO zcl_excel_collection_iterator.
CREATE OBJECT r_comments. * Create a copy of the comments attribute
CREATE OBJECT r_comments
lo_iterator = comments->get_iterator( ). EXPORTING
WHILE lo_iterator->has_next( ) = abap_true. io_from = comments.
lo_comment ?= lo_iterator->get_next( ).
r_comments->include( lo_comment ).
ENDWHILE.
ENDMETHOD. "get_comments ENDMETHOD. "get_comments
@ -4869,4 +4868,9 @@ CLASS zcl_excel_worksheet IMPLEMENTATION.
METHOD zif_excel_sheet_vba_project~set_codename_pr. METHOD zif_excel_sheet_vba_project~set_codename_pr.
me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr. me->zif_excel_sheet_vba_project~codename_pr = ip_codename_pr.
ENDMETHOD. "ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR ENDMETHOD. "ZIF_EXCEL_SHEET_VBA_PROJECT~SET_CODENAME_PR
METHOD set_comment_boxes.
comments->set_boxes( it_boxes = it_boxes iv_full_vml = iv_full_vml ).
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -503,6 +503,11 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Set column width</DESCRIPT> <DESCRIPT>Set column width</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>SET_COMMENT_BOXES</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Set dimensions of info boxes for comments</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>SET_DEFAULT_EXCEL_DATE_FORMAT</CMPNAME> <CMPNAME>SET_DEFAULT_EXCEL_DATE_FORMAT</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>

File diff suppressed because it is too large Load Diff

View File

@ -53,6 +53,11 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Create &apos;xl/charts/chart1.xml&apos;</DESCRIPT> <DESCRIPT>Create &apos;xl/charts/chart1.xml&apos;</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>CREATE_XL_COMMENTS</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Create &apos;xl/comments1.xml&apos;</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>CREATE_XL_DRAWINGS</CMPNAME> <CMPNAME>CREATE_XL_DRAWINGS</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
@ -83,6 +88,11 @@
<LANGU>E</LANGU> <LANGU>E</LANGU>
<DESCRIPT>Create &apos;xl/drawings/drawing1.xml&apos;</DESCRIPT> <DESCRIPT>Create &apos;xl/drawings/drawing1.xml&apos;</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
<SEOCOMPOTX>
<CMPNAME>CREATE_XL_DRAWING_FOR_COMMENTS</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Create &apos;xl/drawings/vmlDrawing1.vml&apos; (style for comments)</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX> <SEOCOMPOTX>
<CMPNAME>CREATE_XL_RELATIONSHIPS</CMPNAME> <CMPNAME>CREATE_XL_RELATIONSHIPS</CMPNAME>
<LANGU>E</LANGU> <LANGU>E</LANGU>
@ -269,6 +279,26 @@
<DESCRIPT>Styles mapping</DESCRIPT> <DESCRIPT>Styles mapping</DESCRIPT>
</SEOCOMPOTX> </SEOCOMPOTX>
</DESCRIPTIONS> </DESCRIPTIONS>
<DESCRIPTIONS_SUB>
<SEOSUBCOTX>
<CMPNAME>GET_COMMENT_ANCHOR</CMPNAME>
<SCONAME>IO_COMMENT</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>Comment</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>RENDER_XML_DOCUMENT</CMPNAME>
<SCONAME>IO_DOCUMENT</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>XML Doc as object</DESCRIPT>
</SEOSUBCOTX>
<SEOSUBCOTX>
<CMPNAME>RENDER_XML_DOCUMENT</CMPNAME>
<SCONAME>IV_DOCUMENT_AS_STRING</SCONAME>
<LANGU>E</LANGU>
<DESCRIPT>XML Doc as string</DESCRIPT>
</SEOSUBCOTX>
</DESCRIPTIONS_SUB>
</asx:values> </asx:values>
</asx:abap> </asx:abap>
</abapGit> </abapGit>