*&---------------------------------------------------------------------*
*& Report Z
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z.
DATA: BEGIN OF itab OCCURS 0,
a(10) TYPE c,
b(10) TYPE c,
c(10) TYPE c,
END OF itab.
itab-a = 'ljc'.
itab-b = '0'.
itab-c = 'fruit'.
APPEND itab.
itab-a = 'ljc'.
itab-b = '1'.
itab-c = 'apple'.
APPEND itab.
itab-a = 'ljc'.
itab-b = '1'.
itab-c = 'pear'.
APPEND itab.
itab-a = 'ljc'.
itab-b = '1'.
itab-c = 'watermelon'.
APPEND itab.
itab-a = 'ljc'.
itab-b = '2'.
itab-c = 'grape'.
APPEND itab.
itab-a = 'ljc'.
itab-b = '2'.
itab-c = 'strawberry'.
APPEND itab.
itab-a = 'wy'.
itab-b = '1'.
itab-c = 'garlic'.
APPEND itab.
itab-a = 'wy'.
itab-b = '2'.
itab-c = 'green pepper'.
APPEND itab.
itab-a = 'wy'.
itab-b = '2'.
itab-c = 'bean'.
APPEND itab.
itab-a = 'wy'.
itab-b = '3'.
itab-c = 'tomato'.
APPEND itab.
itab-a = 'wy'.
itab-b = '3'.
itab-c = 'potato'.
APPEND itab.
WRITE:/ 'input data:'.
LOOP AT itab.
WRITE:/ itab-a,itab-b,itab-c.
ENDLOOP.
DATA itab3 LIKE itab OCCURS 0 WITH HEADER LINE.
PERFORM filterdata1 TABLES itab itab3.
ULINE.
WRITE:/ 'output data:'.
LOOP AT itab3.
WRITE:/ itab3-a,itab3-b,itab3-c.
ENDLOOP.
ULINE.
*&---------------------------------------------------------------------*
*& Form filterData1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB text
*----------------------------------------------------------------------*
FORM filterdata1 TABLES p_itab STRUCTURE itab
p_itab3 STRUCTURE itab.
DATA itab2 LIKE itab OCCURS 0 WITH HEADER LINE.
DATA:l_s LIKE LINE OF itab.
SORT p_itab ASCENDING BY a b.
LOOP AT p_itab.
IF l_s IS INITIAL.
MOVE p_itab TO l_s.
ELSE.
IF l_s-a <> p_itab-a OR l_s-b <> p_itab-b .
MOVE p_itab TO l_s.
IF ( LINES( itab2 ) > 1 ).
APPEND LINES OF itab2 TO p_itab3.
ENDIF.
REFRESH itab2. CLEAR itab2. .
ENDIF.
ENDIF.
APPEND p_itab TO itab2.
ENDLOOP.
IF ( LINES( itab2 ) > 1 ).
APPEND LINES OF itab2 TO p_itab3.
ENDIF.
ENDFORM. " filterData1