Hi,
Something like this
PROGRAM zjbtst4 .
CLASS zcl_pattern_range DEFINITION
FINAL
CREATE PRIVATE .
PUBLIC SECTION.
TYPES: rt_patterns TYPE RANGE OF string .
TYPES: rs_pattern TYPE LINE OF rt_patterns .
CLASS-METHODS get_instance
RETURNING value(ro_instance) TYPE REF TO zcl_pattern_range.
METHODS:
get_exclude_rng
RETURNING value(rt_exclude_patterns) TYPE rt_patterns ,
get_include_rng
RETURNING value(rt_include_patterns) TYPE rt_patterns .
PROTECTED SECTION.
PRIVATE SECTION.
CLASS-DATA mo_instance TYPE REF TO zcl_pattern_range.
METHODS get_range
IMPORTING i_sign TYPE c
RETURNING value(rt_patterns) TYPE rt_patterns .
ENDCLASS.
CLASS zcl_pattern_range IMPLEMENTATION.
METHOD get_instance.
IF mo_instance IS NOT BOUND .
CREATE OBJECT mo_instance .
ENDIF .
ro_instance = mo_instance .
ENDMETHOD.
METHOD get_range.
DATA: ls_pattern TYPE rs_pattern .
DATA: l_number TYPE i .
REFRESH rt_patterns .
ls_pattern-sign = i_sign .
ls_pattern-option = 'CP' .
WHILE l_number LE 9 .
ls_pattern-low = |{ l_number }| && '*' .
APPEND ls_pattern TO rt_patterns .
ADD 1 TO l_number.
ENDWHILE .
ENDMETHOD.
METHOD get_exclude_rng .
refresh rt_exclude_patterns .
rt_exclude_patterns = me->get_range( 'E' ).
ENDMETHOD .
METHOD get_include_rng .
refresh rt_include_patterns .
rt_include_patterns = me->get_range( 'I' ).
ENDMETHOD .
ENDCLASS.
TYPES: BEGIN OF ts_string,
string TYPE string,
END OF ts_string .
DATA: gs_string TYPE ts_string .
DATA: gt_string TYPE STANDARD TABLE OF ts_string .
START-OF-SELECTION .
REFRESH gt_string .
gs_string-string = 'a12344'. APPEND gs_string TO gt_string.
gs_string-string = '1234vb'. APPEND gs_string TO gt_string.
gs_string-string = 'c42456d44'. APPEND gs_string TO gt_string .
DELETE gt_string WHERE
string IN zcl_pattern_range=>get_instance( )->get_exclude_rng( ).
BREAK-POINT .
REFRESH gt_string .
gs_string-string = 'a12344'. APPEND gs_string TO gt_string.
gs_string-string = '1234vb'. APPEND gs_string TO gt_string.
gs_string-string = 'c42456d44'. APPEND gs_string TO gt_string .
DELETE gt_string WHERE
string NOT IN zcl_pattern_range=>get_instance( )->get_include_rng( ).
BREAK-POINT.
cheers,
Janis