diff --git a/src/zcl_excel_rows.clas.abap b/src/zcl_excel_rows.clas.abap
index c1cf0f1..f7dfc06 100644
--- a/src/zcl_excel_rows.clas.abap
+++ b/src/zcl_excel_rows.clas.abap
@@ -3,45 +3,54 @@
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
-class ZCL_EXCEL_ROWS definition
- public
- final
- create public .
+CLASS ZCL_EXCEL_ROWS DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PUBLIC .
+
*"* public components of class ZCL_EXCEL_ROWS
*"* do not include other source files here!!!
*"* protected components of class ZABAP_EXCEL_WORKSHEETS
*"* do not include other source files here!!!
-public section.
+ PUBLIC SECTION.
+ TYPES:
+ BEGIN OF T_ROWS,
+ ROW_INDEX TYPE INT4,
+ ROW TYPE REF TO ZCL_EXCEL_ROW,
+ END OF T_ROWS.
- methods ADD
- importing
- !IO_ROW type ref to ZCL_EXCEL_ROW .
- methods CLEAR .
- methods CONSTRUCTOR .
- methods GET
- importing
- !IP_INDEX type I
- returning
- value(EO_ROW) type ref to ZCL_EXCEL_ROW .
- methods GET_ITERATOR
- returning
- value(EO_ITERATOR) type ref to CL_OBJECT_COLLECTION_ITERATOR .
- methods IS_EMPTY
- returning
- value(IS_EMPTY) type FLAG .
- methods REMOVE
- importing
- !IO_ROW type ref to ZCL_EXCEL_ROW .
- methods SIZE
- returning
- value(EP_SIZE) type I .
+ DATA:
+ DT_ROWS TYPE HASHED TABLE OF T_ROWS WITH UNIQUE KEY ROW_INDEX.
+
+ METHODS ADD
+ IMPORTING
+ !IO_ROW TYPE REF TO ZCL_EXCEL_ROW .
+ METHODS CLEAR .
+ METHODS CONSTRUCTOR .
+ METHODS GET
+ IMPORTING
+ !IP_INDEX TYPE I
+ RETURNING
+ VALUE(EO_ROW) TYPE REF TO ZCL_EXCEL_ROW .
+ METHODS GET_ITERATOR
+ RETURNING
+ VALUE(EO_ITERATOR) TYPE REF TO CL_OBJECT_COLLECTION_ITERATOR .
+ METHODS IS_EMPTY
+ RETURNING
+ VALUE(IS_EMPTY) TYPE FLAG .
+ METHODS REMOVE
+ IMPORTING
+ !IO_ROW TYPE REF TO ZCL_EXCEL_ROW .
+ METHODS SIZE
+ RETURNING
+ VALUE(EP_SIZE) TYPE I .
PROTECTED SECTION.
*"* private components of class ZABAP_EXCEL_RANGES
*"* do not include other source files here!!!
PRIVATE SECTION.
- DATA rows TYPE REF TO cl_object_collection .
+ DATA ROWS TYPE REF TO CL_OBJECT_COLLECTION .
ENDCLASS.
@@ -49,44 +58,118 @@ ENDCLASS.
CLASS ZCL_EXCEL_ROWS IMPLEMENTATION.
- METHOD add.
- rows->add( io_row ).
+* ---------------------------------------------------------------------------------------+
+* | Instance Public Method ZCL_EXCEL_ROWS->ADD
+* +-------------------------------------------------------------------------------------------------+
+* | [--->] IO_ROW TYPE REF TO ZCL_EXCEL_ROW
+* +--------------------------------------------------------------------------------------
+ METHOD ADD.
+* IF SY-UNAME = 'BILEN'.
+ DATA:
+ LS_ROW TYPE T_ROWS.
+ LS_ROW-ROW_INDEX = IO_ROW->GET_ROW_INDEX( ).
+ LS_ROW-ROW = IO_ROW.
+ INSERT LS_ROW INTO TABLE DT_ROWS.
+*
+* ELSE.
+* ROWS->ADD( IO_ROW ).
+*
+* ENDIF.
+
ENDMETHOD. "ADD
- METHOD clear.
- rows->clear( ).
+* ---------------------------------------------------------------------------------------+
+* | Instance Public Method ZCL_EXCEL_ROWS->CLEAR
+* +-------------------------------------------------------------------------------------------------+
+* +--------------------------------------------------------------------------------------
+ METHOD CLEAR.
+* ROWS->CLEAR( ).
+ CLEAR DT_ROWS[].
+
ENDMETHOD. "CLEAR
- METHOD constructor.
+* ---------------------------------------------------------------------------------------+
+* | Instance Public Method ZCL_EXCEL_ROWS->CONSTRUCTOR
+* +-------------------------------------------------------------------------------------------------+
+* +--------------------------------------------------------------------------------------
+ METHOD CONSTRUCTOR.
- CREATE OBJECT rows.
+ CREATE OBJECT ROWS.
ENDMETHOD. "CONSTRUCTOR
- METHOD get.
- eo_row ?= rows->if_object_collection~get( ip_index ).
+* ---------------------------------------------------------------------------------------+
+* | Instance Public Method ZCL_EXCEL_ROWS->GET
+* +-------------------------------------------------------------------------------------------------+
+* | [--->] IP_INDEX TYPE I
+* | [<-()] EO_ROW TYPE REF TO ZCL_EXCEL_ROW
+* +--------------------------------------------------------------------------------------
+ METHOD GET.
+* IF SY-UNAME = 'BILEN'.
+ READ TABLE DT_ROWS ASSIGNING FIELD-SYMBOL() WITH TABLE KEY ROW_INDEX = IP_INDEX.
+ IF SY-SUBRC = 0.
+ EO_ROW ?= -ROW.
+ ENDIF.
+* ELSE.
+* EO_ROW ?= ROWS->IF_OBJECT_COLLECTION~GET( IP_INDEX ).
+*
+* ENDIF.
ENDMETHOD. "GET
- METHOD get_iterator.
- eo_iterator ?= rows->if_object_collection~get_iterator( ).
+* ---------------------------------------------------------------------------------------+
+* | Instance Public Method ZCL_EXCEL_ROWS->GET_ITERATOR
+* +-------------------------------------------------------------------------------------------------+
+* | [<-()] EO_ITERATOR TYPE REF TO CL_OBJECT_COLLECTION_ITERATOR
+* +--------------------------------------------------------------------------------------
+ METHOD GET_ITERATOR.
+ EO_ITERATOR ?= ROWS->IF_OBJECT_COLLECTION~GET_ITERATOR( ).
ENDMETHOD. "GET_ITERATOR
- METHOD is_empty.
- is_empty = rows->if_object_collection~is_empty( ).
+* ---------------------------------------------------------------------------------------+
+* | Instance Public Method ZCL_EXCEL_ROWS->IS_EMPTY
+* +-------------------------------------------------------------------------------------------------+
+* | [<-()] IS_EMPTY TYPE FLAG
+* +--------------------------------------------------------------------------------------
+ METHOD IS_EMPTY.
+ DATA(LV_LINES) = LINES( DT_ROWS ).
+
+ IF LV_LINES = 0.
+ IS_EMPTY = 'X'.
+ ELSE.
+ IS_EMPTY = ' '.
+ ENDIF.
+* IS_EMPTY = ROWS->IF_OBJECT_COLLECTION~IS_EMPTY( ).
ENDMETHOD. "IS_EMPTY
- METHOD remove.
- rows->remove( io_row ).
+* ---------------------------------------------------------------------------------------+
+* | Instance Public Method ZCL_EXCEL_ROWS->REMOVE
+* +-------------------------------------------------------------------------------------------------+
+* | [--->] IO_ROW TYPE REF TO ZCL_EXCEL_ROW
+* +--------------------------------------------------------------------------------------
+ METHOD REMOVE.
+* ROWS->REMOVE( IO_ROW ).
+ DELETE DT_ROWS WHERE ROW_INDEX = IO_ROW->GET_ROW_INDEX( ).
ENDMETHOD. "REMOVE
- METHOD size.
- ep_size = rows->if_object_collection~size( ).
+* ---------------------------------------------------------------------------------------+
+* | Instance Public Method ZCL_EXCEL_ROWS->SIZE
+* +-------------------------------------------------------------------------------------------------+
+* | [<-()] EP_SIZE TYPE I
+* +--------------------------------------------------------------------------------------
+ METHOD SIZE.
+* IF sy-uname = 'BILEN'.
+ EP_SIZE = LINES( DT_ROWS )..
+*
+* else.
+* EP_SIZE = ROWS->IF_OBJECT_COLLECTION~SIZE( ).
+*
+* ENDIF.
ENDMETHOD. "SIZE
ENDCLASS.