Vous êtes sur la page 1sur 7

Code Snippet for Interface

*&---------------------------------------------------------------------* *& Report YTEST_OOP_INHERITANCE_DEMO *& Example on Iterface *&---------------------------------------------------------------------* *& By Debesh *& Date 29/05/2013 *&---------------------------------------------------------------------* REPORT ytest_oop_interface_demo. TABLES: vbak. SELECT-OPTIONS :s_vbeln FOR vbak-vbeln NO INTERVALS. *----------------------------------------------------------------------* * INTERFACE lin_alv_control *----------------------------------------------------------------------* INTERFACE lin_alv_control. METHODS : met_alv_display EXPORTING controller TYPE REF TO cl_gui_docking_container grid TYPE REF TO cl_gui_alv_grid, met_build_catalog, met_free_memeory. ENDINTERFACE. "lin_alv_control *----------------------------------------------------------------------* * CLASS lcl_sales DEFINITION *----------------------------------------------------------------------* CLASS lcl_sales DEFINITION. PUBLIC SECTION. CLASS-METHODS: class_constructor . PROTECTED SECTION. TYPES : BEGIN OF ty_header, vbeln TYPE vbeln_va, netwr TYPE netwr_ak, waerk TYPE waerk, vtweg TYPE vtweg, spart TYPE spart, END OF ty_header, BEGIN OF ty_item, vbeln TYPE vbeln_va, posnr TYPE posnr_va, matnr TYPE matnr, netwr TYPE netwr_ap, ntgew TYPE ntgew_ap, END OF ty_item. CLASS-DATA : gt_sales_header TYPE TABLE OF ty_header, gt_sales_item TYPE TABLE OF ty_item. ENDCLASS. "lcl_sales DEFINITION *----------------------------------------------------------------------*

By Debesh

Page 1

Code Snippet for Interface


* CLASS lcl_delivery DEFINITION *----------------------------------------------------------------------* CLASS lcl_delivery DEFINITION INHERITING FROM lcl_sales. PUBLIC SECTION. METHODS : met_delivery. INTERFACES: lin_alv_control. ALIASES : met_display FOR lin_alv_control~met_alv_display , met_catalog FOR lin_alv_control~met_build_catalog, met_free FOR lin_alv_control~met_free_memeory. DATA : lo_controller TYPE REF TO cl_gui_docking_container, lo_grid TYPE REF TO cl_gui_alv_grid. PRIVATE SECTION. TYPES : BEGIN OF ty_delivery, vbeln TYPE vbeln_vl, posnr TYPE posnr_vl, matnr TYPE matnr, werks TYPE werks_d, lgort TYPE lgort_d, ntgew TYPE ntgew_15, vgpos TYPE vgpos, vgbel TYPE vgbel, END OF ty_delivery. DATA : BEGIN OF gt_delivery_tmp , vbeln TYPE vbeln_vl, posnr TYPE posnr_vl, matnr TYPE matnr, werks TYPE werks_d, lgort TYPE lgort_d, ntgew TYPE ntgew_15, vgpos TYPE vgpos, vgbel TYPE vgbel, END OF gt_delivery_tmp. DATA : gt_delivery TYPE TABLE OF ty_delivery, gs_delivery TYPE ty_delivery. DATA : gt_catlog TYPE lvc_t_fcat , " For LVC_FIELDCATALOG_MERGE gs_catlog TYPE lvc_s_fcat. DATA : gv_repid TYPE sy-repid VALUE sy-repid. ENDCLASS. "lcl_delivery DEFINITION *----------------------------------------------------------------------* * CLASS lcl_sales IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_sales IMPLEMENTATION. METHOD class_constructor. SELECT * FROM vbak INTO CORRESPONDING FIELDS OF TABLE gt_sales_header

By Debesh

Page 2

Code Snippet for Interface


WHERE vbeln IN s_vbeln. IF sy-subrc IS INITIAL. SELECT * FROM vbap INTO CORRESPONDING FIELDS OF TABLE gt_sales_item FOR ALL ENTRIES IN gt_sales_header WHERE vbeln = gt_sales_header-vbeln. ENDIF. ENDMETHOD. "class_constructor ENDCLASS. "lcl_sales IMPLEMENTATION *----------------------------------------------------------------------* * CLASS lcl_delivery IMPLEMENTATION *----------------------------------------------------------------------* * *----------------------------------------------------------------------* CLASS lcl_delivery IMPLEMENTATION. METHOD met_delivery. SELECT * FROM lips INTO CORRESPONDING FIELDS OF TABLE gt_delivery FOR ALL ENTRIES IN lcl_sales=>gt_sales_item WHERE vgbel = lcl_sales=>gt_sales_item-vbeln AND vgpos = lcl_sales=>gt_sales_item-posnr. ENDMETHOD. "met_delivery METHOD met_catalog. gs_catlog-fieldname = 'VBELN' . gs_catlog-ref_table = 'LIPS' . gs_catlog-outputlen = 10 . gs_catlog-col_pos = 1 . APPEND gs_catlog TO gt_catlog. CLEAR gs_catlog. gs_catlog-fieldname = 'POSNR' . gs_catlog-ref_table = 'LIPS' . gs_catlog-outputlen = 10 . gs_catlog-col_pos = 2 . APPEND gs_catlog TO gt_catlog. CLEAR gs_catlog. gs_catlog-fieldname = 'MATNR' . gs_catlog-ref_table = 'LIPS' . gs_catlog-outputlen = 10 . gs_catlog-col_pos = 3 . APPEND gs_catlog TO gt_catlog. CLEAR gs_catlog. gs_catlog-fieldname = 'WERKS' . gs_catlog-ref_table = 'LIPS' .

By Debesh

Page 3

Code Snippet for Interface


gs_catlog-outputlen = 10 . gs_catlog-col_pos = 4 . APPEND gs_catlog TO gt_catlog. CLEAR gs_catlog. gs_catlog-fieldname = 'LGORT' . gs_catlog-ref_table = 'LIPS' . gs_catlog-outputlen = 10 . gs_catlog-col_pos = 5 . APPEND gs_catlog TO gt_catlog. CLEAR gs_catlog. gs_catlog-fieldname = 'NTGEW' . gs_catlog-ref_table = 'LIPS' . gs_catlog-outputlen = 10 . gs_catlog-col_pos = 6 . APPEND gs_catlog TO gt_catlog. CLEAR gs_catlog. gs_catlog-fieldname = 'VGPOS' . gs_catlog-ref_table = 'LIPS' . gs_catlog-outputlen = 10 . gs_catlog-col_pos = 7 . APPEND gs_catlog TO gt_catlog. CLEAR gs_catlog. gs_catlog-fieldname = 'VGBEL' . gs_catlog-ref_table = 'LIPS' . gs_catlog-outputlen = 10 . gs_catlog-col_pos = 8 . APPEND gs_catlog TO gt_catlog. CLEAR gs_catlog. ENDMETHOD. "met_catalog METHOD met_display. CREATE OBJECT controller EXPORTING ratio = '75' EXCEPTIONS cntl_error =1 cntl_system_error =2 create_error =3 lifetime_error =4 lifetime_dynpro_dynpro_link = 5 OTHERS =6 .

By Debesh

Page 4

Code Snippet for Interface


IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. else. lo_controller = controller. ENDIF. CREATE OBJECT grid EXPORTING i_parent = controller EXCEPTIONS error_cntl_create = 1 error_cntl_init = 2 error_cntl_link = 3 error_dp_create = 4 OTHERS =5 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. else. lo_grid = grid. ENDIF. CALL METHOD grid->set_table_for_first_display CHANGING it_outtab = gt_delivery it_fieldcatalog = gt_catlog EXCEPTIONS invalid_parameter_combination = 1 program_error =2 too_many_lines =3 OTHERS = 4. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDMETHOD. "met_display METHOD met_free. CALL METHOD lo_grid->free EXCEPTIONS cntl_error =1 cntl_system_error = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

By Debesh

Page 5

Code Snippet for Interface


ENDIF. CALL METHOD lo_controller->free EXCEPTIONS cntl_error =1 cntl_system_error = 2 OTHERS = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDMETHOD. "met_free ENDCLASS. "lcl_delivery IMPLEMENTATION ** Global Data declaration DATA : lo_delivery TYPE REF TO lcl_delivery. START-OF-SELECTION. CREATE OBJECT lo_delivery. CALL METHOD lo_delivery->met_delivery. CALL METHOD lo_delivery->met_catalog. CALL SCREEN 9000. *&---------------------------------------------------------------------* *& Module STATUS_9000 OUTPUT *&---------------------------------------------------------------------* MODULE status_9000 OUTPUT. SET PF-STATUS 'ZSTAT'. SET TITLEBAR 'ALV_USING_OOP'. CALL METHOD lo_delivery->met_display. ENDMODULE. " STATUS_9000 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_9000 INPUT *&---------------------------------------------------------------------* MODULE user_command_9000 INPUT. DATA lv_ucomm TYPE sy-ucomm. lv_ucomm = sy-ucomm. CASE lv_ucomm. WHEN 'EXIT'. call method lo_delivery->met_free. LEAVE PROGRAM. WHEN 'BACK'. call method lo_delivery->met_free. SET SCREEN '0'. LEAVE SCREEN. ENDCASE. ENDMODULE. " USER_COMMAND_9000 INPUT

By Debesh

Page 6

Code Snippet for Interface


OUTPUT

By Debesh

Page 7

Vous aimerez peut-être aussi