ABAP------>OO for event

*&---------------------------------------------------------------------*
*& Report  Y_JAMES_OO_DAY6
*&
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

REPORT Y_JAMES_OO_DAY6.

TABLES:sflight.

SELECT-OPTIONS: s_carrid FOR sflight-carrid.

CLASS c1 DEFINITION.
  PUBLIC SECTION .
    TYPES:
      BEGIN OF t_sflight,
      carrid TYPE sflight-carrid,
      connid TYPE sflight-connid,
      fldate TYPE sflight-fldate,
      END OF t_sflight.
   DATA:
     gt_itab TYPE STANDARD TABLE OF t_sflight,
     gs_itab TYPE sflight.

   EVENTS:e1.
   METHODS:
     get_data,display_data,no_data
     FOR EVENT e1 of c1.
 ENDCLASS.

 CLASS c1 IMPLEMENTATION.
   METHOD:get_data.
     SELECT     carrid
                connid
                fldate
     FROM       sflight
     INTO TABLE gt_itab
     WHERE      carrid IN s_carrid.
     IF  sy-subrc <> 0.
       RAISE EVENT e1.
     ELSE.
       CALL METHOD display_data.
     ENDIF.
   ENDMETHOD.

   METHOD:display_data.
     LOOP AT gt_itab INTO gs_itab.
       WRITE:/10 gs_itab-carrid.
       WRITE:/40 gs_itab-connid.
       WRITE:/60 gs_itab-fldate.
     ENDLOOP.
   ENDMETHOD.

   METHOD: no_data.
     WRITE:/10 'There are no match data!'.
   ENDMETHOD.
ENDCLASS.

DATA:go_obj TYPE REF TO c1.

START-OF-SELECTION.
CREATE OBJECT:go_obj.
SET HANDLER go_obj->no_data FOR:go_obj.
CALL METHOD go_obj->get_data.

posted @ 2017-12-15 13:54  HARU_ちゃん  阅读(191)  评论(0编辑  收藏  举报