Sie sind auf Seite 1von 8

CLASS lcl_customer DEFINITION.

PUBLIC SECTION.
DATA: id TYPE scustom-id READ-ONLY.
METHODS:
constructor IMPORTING iv_id TYPE scustom-id,
get_attributes
EXPORTING
es_cust_data TYPE bc401_typd_cust.
PRIVATE SECTION.
DATA: name TYPE scustom-name,
street TYPE scustom-street,
city TYPE scustom-city,
app_date TYPE d.
ENDCLASS.

CLASS lcl_customer IMPLEMENTATION.


METHOD constructor.
id = iv_id.
app_date = sy-datum.
SELECT SINGLE name street city FROM scustom INTO (name,street,city)
WHERE id = id.
* keine Ausnahmebehandlung notwendig, da die Existenz von iv_id ber
Prftabelle gesichert ist
ENDMETHOD.

METHOD get_attributes.
es_cust_data-id = id.
es_cust_data-name = name.
es_cust_data-street = street.
es_cust_data-city = city.
es_cust_data-app_date = app_date.
ENDMETHOD.
ENDCLASS.

*__________________________________________________________________________
____________________
*__________________________________________________________________________
____________________

CLASS lcl_waitlist DEFINITION.


PUBLIC SECTION.
DATA:
carrid TYPE s_carr_id READ-ONLY,
connid TYPE s_conn_id READ-ONLY,
fldate TYPE s_date READ-ONLY.
METHODS:
add
IMPORTING
iv_id TYPE scustom-id,
constructor
IMPORTING
iv_carrid TYPE s_carr_id
iv_connid TYPE s_conn_id
iv_fldate TYPE s_date,
delete
IMPORTING
iv_id TYPE scustom-id,
get_cust_list
RETURNING
value(rt_cust_list) TYPE bc401_typd_cust_list,
get_first
RETURNING
value(ro_customer) TYPE REF TO lcl_customer,
get_pos
IMPORTING
iv_id TYPE scustom-id
RETURNING
value(rv_pos) TYPE i
RAISING zcx_bc401_01_no_waitlist.

PRIVATE SECTION.
DATA:
customer_list TYPE TABLE OF REF TO lcl_customer.
ENDCLASS.

CLASS lcl_waitlist IMPLEMENTATION.


METHOD add.
DATA lo_customer TYPE REF TO lcl_customer.

READ TABLE customer_list WITH KEY table_line->id = iv_id TRANSPORTING


NO FIELDS.
IF sy-subrc <> 0.
CREATE OBJECT lo_customer
EXPORTING
iv_id = iv_id.
APPEND lo_customer TO customer_list.
ELSE.
MESSAGE i101(zbc401_01) WITH iv_id.
ENDIF.
ENDMETHOD.

METHOD constructor.
carrid = iv_carrid.
connid = iv_connid.
fldate = iv_fldate.
ENDMETHOD.

METHOD delete.
DATA lo_customer TYPE REF TO lcl_customer.

READ TABLE customer_list INTO lo_customer WITH KEY


table_line->id = iv_id.
IF sy-subrc = 0.
DELETE TABLE customer_list FROM lo_customer.
ELSE.
* Ausnahme :
* Kunde nicht in customer_list.
MESSAGE i102(zbc401_01) WITH iv_id.
ENDIF.
ENDMETHOD.

METHOD get_cust_list.
DATA: lo_customer TYPE REF TO lcl_customer,
ls_customer TYPE bc401_typd_cust.
LOOP AT customer_list INTO lo_customer.
lo_customer->get_attributes( IMPORTING es_cust_data = ls_customer ).
APPEND ls_customer TO rt_cust_list.
ENDLOOP.
ENDMETHOD.

METHOD get_first.
READ TABLE customer_list INTO ro_customer INDEX 1.
ENDMETHOD.

METHOD get_pos.
READ TABLE customer_list WITH KEY table_line->id = iv_id TRANSPORTING
NO FIELDS.
IF sy-subrc = 0.
rv_pos = sy-tabix.
ELSE.
RAISE EXCEPTION TYPE zcx_bc401_01_no_waitlist.
ENDIF.

ENDMETHOD.

ENDCLASS.

*__________________________________________________________________________
____________________
*__________________________________________________________________________
____________________

CLASS lcl_buffer DEFINITION CREATE PRIVATE.


PUBLIC SECTION.
CLASS-METHODS:
class_constructor,
get_buffer_ref RETURNING value(ro_buffer) TYPE REF TO lcl_buffer.
METHODS:
constructor,
create_waitlist
IMPORTING
iv_carrid TYPE s_carr_id
iv_connid TYPE s_conn_id
iv_fldate TYPE s_date,
delete,
delete_waitlist
IMPORTING
iv_carrid TYPE s_carr_id
iv_connid TYPE s_conn_id
iv_fldate TYPE s_date
RAISING zcx_bc401_01_no_waitlist,
get_waitlist
IMPORTING
iv_carrid TYPE s_carr_id
iv_connid TYPE s_conn_id
iv_fldate TYPE s_date
RETURNING
value(ro_waitlist) TYPE REF TO lcl_waitlist
RAISING zcx_bc401_01_no_waitlist,
show_waitlist
IMPORTING
iv_carrid TYPE s_carr_id
iv_connid TYPE s_conn_id
iv_fldate TYPE s_date
RAISING zcx_bc401_01_no_waitlist.
PRIVATE SECTION.
CLASS-DATA:
r_buffer TYPE REF TO lcl_buffer.
DATA:
wait_list TYPE TABLE OF REF TO lcl_waitlist.
ENDCLASS.

CLASS lcl_buffer IMPLEMENTATION.


METHOD class_constructor.
CREATE OBJECT r_buffer.
ENDMETHOD.

METHOD constructor.
ENDMETHOD.

METHOD create_waitlist.
DATA lo_waitlist TYPE REF TO lcl_waitlist.

READ TABLE wait_list


WITH KEY
table_line->carrid = iv_carrid
table_line->connid = iv_connid
table_line->fldate = iv_fldate
TRANSPORTING NO FIELDS.

IF sy-subrc <> 0.
CREATE OBJECT lo_waitlist
EXPORTING
iv_carrid = iv_carrid
iv_connid = iv_connid
iv_fldate = iv_fldate.

APPEND lo_waitlist TO wait_list.


ELSE.
MESSAGE i106(zbc401_01).
ENDIF.

ENDMETHOD.

METHOD delete.

ENDMETHOD.

METHOD delete_waitlist.
DATA lo_waitlist TYPE REF TO lcl_waitlist.

READ TABLE wait_list INTO lo_waitlist


WITH KEY
table_line->carrid = iv_carrid
table_line->connid = iv_connid
table_line->fldate = iv_fldate.
IF sy-subrc = 0.
DELETE TABLE wait_list FROM lo_waitlist.
ELSE.
RAISE EXCEPTION TYPE zcx_bc401_01_no_waitlist.
ENDIF.
ENDMETHOD.
METHOD get_buffer_ref.
ro_buffer = r_buffer.
ENDMETHOD.

METHOD get_waitlist.
READ TABLE wait_list
WITH KEY
table_line->carrid = iv_carrid
table_line->connid = iv_connid
table_line->fldate = iv_fldate
INTO
ro_waitlist.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE zcx_bc401_01_no_waitlist.
ENDIF.
ENDMETHOD.

METHOD show_waitlist.
DATA: lo_waitlist TYPE REF TO lcl_waitlist,
lt_cust_list TYPE bc401_typd_cust_list.
TRY .
lo_waitlist = get_waitlist( iv_carrid = iv_carrid iv_connid =
iv_connid iv_fldate = iv_fldate ).
lt_cust_list = lo_waitlist->get_cust_list( ).
CATCH zcx_bc401_01_no_waitlist.
MESSAGE e103(zbc401_01).
ENDTRY.
IF lines( lt_cust_list ) > 0.
CALL FUNCTION 'BC401_DISPLAY_DATA'
EXPORTING
im_list = lt_cust_list.
ELSE.
RAISE EXCEPTION TYPE zcx_bc401_01_no_waitlist.
ENDIF.
ENDMETHOD.
ENDCLASS.

*__________________________________________________________________________
____________________
*__________________________________________________________________________
____________________

*----------------------------------------------------------------------*
***INCLUDE TAW10_CSS1_WAITLIST_I01 .
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Module check_and_create_cust INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE check_and_create_cust INPUT.
SELECT SINGLE name street city FROM scustom
INTO CORRESPONDING FIELDS OF scustom
WHERE id = scustom-id.
IF sy-subrc <> 0.
CLEAR: scustom-name, scustom-city.
MESSAGE e000(taw10) WITH scustom-id.
* Customernumber & does not exist. Please correct !
ENDIF.
ENDMODULE. " check_and_create_cust INPUT

*&---------------------------------------------------------------------*
*& Module user_command_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
DATA: save_ok TYPE sy-ucomm.
save_ok = ok_code.
CLEAR ok_code.

CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 0.

WHEN 'CREATE'. "##########################################

lcl_buffer=>get_buffer_ref( )->create_waitlist(
iv_carrid = sdyn_conn-carrid
iv_connid = sdyn_conn-connid
iv_fldate = sdyn_conn-fldate ).

WHEN 'SHOW'. "##########################################


TRY.
lcl_buffer=>get_buffer_ref( )->show_waitlist(
iv_carrid = sdyn_conn-carrid
iv_connid = sdyn_conn-connid
iv_fldate = sdyn_conn-fldate ).
CATCH zcx_bc401_01_no_waitlist.
MESSAGE i106(zbc401_01).
ENDTRY.

WHEN 'DELETE'. "##########################################


TRY.
lcl_buffer=>get_buffer_ref( )->delete_waitlist(
iv_carrid = sdyn_conn-carrid
iv_connid = sdyn_conn-connid
iv_fldate = sdyn_conn-fldate ).
CATCH zcx_bc401_01_no_waitlist.
MESSAGE e105(zbc401_01).
ENDTRY.

WHEN 'FIRST'. "##########################################

WHEN 'ADD'. "##########################################


TRY.
lcl_buffer=>get_buffer_ref( )->get_waitlist(
iv_carrid = sdyn_conn-carrid
iv_connid = sdyn_conn-connid
iv_fldate = sdyn_conn-fldate )->add( iv_id = scustom-id ).
CATCH zcx_bc401_01_no_waitlist.
MESSAGE e103(zbc401_01).
ENDTRY.

WHEN 'DEL'. "##########################################


TRY.
lcl_buffer=>get_buffer_ref( )->get_waitlist(
iv_carrid = sdyn_conn-carrid
iv_connid = sdyn_conn-connid
iv_fldate = sdyn_conn-fldate )->delete( iv_id = scustom-id ).
CATCH zcx_bc401_01_no_waitlist.
MESSAGE e103(zbc401_01).
ENDTRY.

WHEN 'POS'. "##########################################


TRY.
gv_pos = lcl_buffer=>get_buffer_ref( )->get_waitlist(
iv_carrid = sdyn_conn-carrid
iv_connid = sdyn_conn-connid
iv_fldate = sdyn_conn-fldate )->get_pos( iv_id = scustom-id ).
MESSAGE i119(zbc401_01) WITH scustom-id gv_pos.
CATCH zcx_bc401_01_no_waitlist.
MESSAGE 'Kunde nicht auf Liste' TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
WHEN OTHERS.

ENDCASE.

ENDMODULE. " user_command_0100 INPUT

*&---------------------------------------------------------------------*
*& Module check_flight INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE check_flight INPUT.
SELECT SINGLE * FROM sflight INTO gs_sflight
WHERE carrid = sdyn_conn-carrid
AND connid = sdyn_conn-connid
AND fldate = sdyn_conn-fldate.

IF sy-subrc <> 0.
MESSAGE e004(taw10).
* Please select a valid flight !
ENDIF.
ENDMODULE. " check_flight INPUT

*&---------------------------------------------------------------------*
*& Module exit INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.

CASE ok_code.
WHEN 'CANCEL'.
CLEAR: scustom, sdyn_conn.
LEAVE TO SCREEN 100.
WHEN 'EXIT'.
LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " exit INPUT

*&---------------------------------------------------------------------*
*& Include TAW10_CSS1_WAITLIST_O01
*
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'DYNPRO_100'.
SET TITLEBAR 'TITLE_100'.

ENDMODULE. " STATUS_0100 OUTPUT

*&---------------------------------------------------------------------*
*& Module clear_ok_code OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE clear_ok_code OUTPUT.
CLEAR ok_code.
ENDMODULE. " clear_ok_code OUTPUT

Das könnte Ihnen auch gefallen