*&---------------------------------------------------------------------*
*& 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