메뉴 건너뛰기

SAP 한국 커뮤니티

REPORT z18_02.

sapjoy 2012.08.01 20:51 조회 수 : 3071

REPORT  z18_02.

 

TYPES: node_table_type LIKE STANDARD TABLE OF mtreesnode
         WITH DEFAULT KEY.


 

DATA : con1_ref TYPE REF TO cl_gui_custom_container,
       tree_con_ref TYPE REF TO cl_gui_custom_container.


 

DATA : g_tree TYPE REF TO cl_gui_simple_tree.


 


DATA : grid1  TYPE REF TO cl_gui_alv_grid,
       gs_variant     LIKE disvariant,
       gs_cs_variant  LIKE disvariant,
       gs_layout     TYPE lvc_s_layo,
       gs_toolbar    TYPE ui_functions,
       gt_sort       TYPE lvc_t_sort,
       gt_sflight   TYPE TABLE OF sflight.


 

TYPE-POOLS: icon.


 

*---------------------------------------------------------------------*
*       CLASS lcl_event_receiver DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.


 

  PUBLIC SECTION.
    METHODS:


 

    handle_double_click
        FOR EVENT double_click OF cl_gui_alv_grid
            IMPORTING e_row e_column.


 

    METHODS : handle_toolbar
                 FOR EVENT toolbar OF cl_gui_alv_grid
                 IMPORTING e_object e_interactive.


 


    METHODS : handle_command
                 FOR EVENT user_command OF cl_gui_alv_grid
                 IMPORTING e_ucomm.


 

  PRIVATE SECTION.


 

ENDCLASS.                    "lcl_event_receiver DEFINITION


 


*---------------------------------------------------------------------*
*       CLASS LCL_APPLICATION DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_application DEFINITION.


 

  PUBLIC SECTION.
    METHODS:
      handle_node_double_click
        FOR EVENT node_double_click
        OF cl_gui_simple_tree
        IMPORTING node_key.


 

ENDCLASS.                    "LCL_APPLICATION DEFINITION


 

*---------------------------------------------------------------------*
*       CLASS LCL_APPLICATION IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION.


 

  METHOD  handle_node_double_click.
    " this method handles the node double click event of the tree
    " control instance


 

    " show the key of the double clicked node in a dynpro field
        SELECT * FROM sflight INTO TABLE gt_sflight
        where carrid = NODE_KEY.
    perform refresh_grid.
  ENDMETHOD.                    "HANDLE_NODE_DOUBLE_CLICK


 


ENDCLASS.                    "LCL_APPLICATION IMPLEMENTATION


 

 


 


*---------------------------------------------------------------------*
*       CLASS lcl_event_receiver IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.


 

  METHOD handle_double_click.
    LEAVE TO SCREEN 0.
  ENDMETHOD.                           "handle_double_click


 

*-- Add ToolBar
  METHOD handle_toolbar.


 

    DATA: ls_toolbar  TYPE stb_button.


 

    CLEAR ls_toolbar.
    ls_toolbar-butn_type = 3.
    APPEND ls_toolbar    TO e_object->mt_toolbar.


 

    CLEAR ls_toolbar.
    ls_toolbar-function  = 'RESH'.
    ls_toolbar-icon      = icon_refresh.
    ls_toolbar-quickinfo = 'Refresh'.
    ls_toolbar-text      = ' '.
    ls_toolbar-disabled  = ' '.
    APPEND ls_toolbar    TO e_object->mt_toolbar.


 

  ENDMETHOD.                    "handle_toolbar


 


  METHOD handle_command.


 

    CASE e_ucomm.
*-  REFRESH
      WHEN 'RESH'.


 


        SELECT * FROM sflight INTO TABLE gt_sflight.


 

        perform refresh_grid.


 

    ENDCASE.
  ENDMETHOD.                    "handle_user_command


 


ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
*


 

DATA : event_receiver TYPE REF TO lcl_event_receiver.
DATA : g_application TYPE REF TO lcl_application.


 

START-OF-SELECTION.
  SELECT * FROM sflight INTO TABLE gt_sflight.


 

  CALL SCREEN 100.


 

 


 

 


 

*---------------------------------------------------------------------*
*  MODULE init_con OUTPUT
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
MODULE init_con OUTPUT.


 

  IF con1_ref IS INITIAL.
    CREATE OBJECT con1_ref
    EXPORTING container_name = 'CON1'.


 


    CREATE OBJECT grid1
           EXPORTING
                i_parent = con1_ref.


 

    PERFORM setting_layout.
    PERFORM setting_toolbar.
    PERFORM setting_sort.
    PERFORM setting_event.


 

    CALL METHOD grid1->set_table_for_first_display
      EXPORTING
        i_structure_name     = 'SFLIGHT'
        i_save               = 'A'
        is_variant           = gs_variant  " variant display
        i_default            = ' '
        is_layout            = gs_layout
        it_toolbar_excluding = gs_toolbar
      CHANGING
        it_outtab            = gt_sflight
        it_sort              = gt_sort.


 

 


 


  ENDIF.
ENDMODULE.                 " init_con  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'G100'.
*  SET TITLEBAR 'xxx'.


 

ENDMODULE.                 " STATUS_0100  OUTPUT


 

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.


 

  CASE sy-ucomm.
    WHEN 'BACK' OR 'EXIT' OR 'CANC'.
      LEAVE TO SCREEN 0.
  ENDCASE.


 

ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Form  setting_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GS_LAYOCAT  text
*----------------------------------------------------------------------*
FORM setting_layout .
*- General display options
  gs_layout-cwidth_opt = 'X'.
* TITLE BAR
  gs_layout-grid_title = 'SIMPLE TREE EVENT TEST'.
* Selection modes for SEL_MODE
  gs_layout-sel_mode = 'D'.
* Grid pattern
  gs_layout-zebra      = 'X'.
ENDFORM.                    " setting_layout
*&---------------------------------------------------------------------*
*&      Form  setting_toolbar
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GS_TOOLBAR  text
*----------------------------------------------------------------------*
FORM setting_toolbar.
  DATA: l_exclude TYPE ui_func.


 

  l_exclude = cl_gui_alv_grid=>mc_fc_save_variant.
  APPEND l_exclude TO gs_toolbar.


 

  l_exclude = cl_gui_alv_grid=>mc_fc_maintain_variant.
  APPEND l_exclude TO gs_toolbar.


 

ENDFORM.                    " setting_toolbar
*&---------------------------------------------------------------------*
*&      Form  setting_sort
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM setting_sort .


 

  DATA : ls_sort TYPE lvc_s_sort.


 

  ls_sort-spos = '1'.
  ls_sort-fieldname = 'CARRID'.
  ls_sort-up = 'X'.
  ls_sort-subtot = 'X'.
  APPEND ls_sort TO gt_sort.


 

ENDFORM.                    " setting_sort
*&---------------------------------------------------------------------*
*&      Form  setting_event
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM setting_event .
  CREATE OBJECT event_receiver.
  SET HANDLER event_receiver->handle_double_click FOR grid1.
  SET HANDLER event_receiver->handle_toolbar       FOR grid1.
  SET HANDLER event_receiver->handle_command       FOR grid1.


 

ENDFORM.                    " setting_event
*&---------------------------------------------------------------------*
*&      Module  init_tree  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE init_tree OUTPUT.
  IF g_tree IS INITIAL.
    DATA: node_table TYPE node_table_type.
    DATA : events TYPE cntl_simple_events,
           event TYPE cntl_simple_event.
    CREATE OBJECT tree_con_ref
      EXPORTING
        " the container is linked to the custom control with the
        " name 'TREE_CONTAINER' on the dynpro
        container_name = 'TREE_CONTAINER'.
* create a tree control
    CREATE OBJECT g_tree
      EXPORTING
        parent              = tree_con_ref
        " single node selection is used
        node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single.


 

    PERFORM build_node_table USING node_table.
* node_table_structure_name     = 'MTREESNODE'
    CALL METHOD g_tree->add_nodes
      EXPORTING
        table_structure_name = 'MTREESNODE'
        node_table           = node_table.


 


    CREATE OBJECT g_application.


 

* define the events which will be passed to the backend
    " node double click
    event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
    event-appl_event = 'X'. " process PAI if event occurs
    APPEND event TO events.


 

    CALL METHOD g_tree->set_registered_events
      EXPORTING
        events                    = events
      EXCEPTIONS
        cntl_error                = 1
        cntl_system_error         = 2
        illegal_event_combination = 3.


 

* assign event handlers in the application class to each desired event
    SET HANDLER g_application->handle_node_double_click FOR g_tree.


 

 


 


  ENDIF.


 

ENDMODULE.                 " init_tree  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  BUILD_NODE_TABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_NODE_TABLE  text
*----------------------------------------------------------------------*
FORM build_node_table
  USING
    node_table TYPE node_table_type.


 

  DATA: node LIKE mtreesnode.


 

  CLEAR node.
  node-node_key = 'Root'.
  node-isfolder = 'X'.      " a folder.
  node-text = 'AIRPLANE'.
  APPEND node TO node_table.


 

  CLEAR node.
  node-node_key = 'Child1'.
  node-relatkey = 'Root'.
  node-isfolder = 'X'.
  node-text = 'CARRID'.
  node-expander = 'X' .
  APPEND node TO node_table.


 


  CLEAR node.
  node-node_key = 'AA'.
  node-relatkey = 'Child1'.
  node-n_image = '@10@'.
  node-text = 'AA'.
  APPEND node TO node_table.


 

  CLEAR node.
  node-node_key = 'AZ'.
  node-relatkey = 'Child1'.
  node-style = cl_gui_simple_tree=>style_emphasized.
  node-text = 'AZ'.


 

  APPEND node TO node_table.


 

  CLEAR node.
  node-node_key = 'DL'.
  node-relatkey = 'Child1'.
  node-expander = ' '.
*  NODE-HIDDEN = ' '.
  node-disabled = 'X'.
  node-relatship =  cl_gui_simple_tree=>relat_last_child.
  node-text = 'DL'.
  APPEND node TO node_table.


 

ENDFORM.                    " build_node_table
*&---------------------------------------------------------------------*
*&      Form  refresh_grid
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form refresh_grid .
    DATA : l_scroll TYPE lvc_s_stbl.
        l_scroll-row = 'X'.
        l_scroll-col = 'X'.
        CALL METHOD grid1->refresh_table_display
          EXPORTING
            i_soft_refresh = ''
            is_stable      = l_scroll.
endform.                    " refresh_grid

번호 제목 글쓴이 날짜 조회 수
669 REPORT Z06_01. sapjoy 2024.04.20 6
668 REPORT  z05_36 sapjoy 2023.02.07 240
667 API sapjoy 2022.11.02 312
666  z15_21_drag sapjoy 2022.02.24 267
665 Z18_06_DRAGCLASS sapjoy 2022.02.22 291
664 REPORT Z21_01 sapjoy 2015.10.28 2244
663 subroutine pool sapjoy 2013.11.15 3272
662 REPORT Z20_01. sapjoy 2012.08.01 5055
661 REPORT Z19_02. sapjoy 2012.08.01 3921
660 REPORT z19_01. sapjoy 2012.08.01 3526
659 REPORT z18_06. sapjoy 2012.08.01 3147
658 REPORT z18_05 sapjoy 2012.08.01 3328
657 REPORT z18_04 . sapjoy 2012.08.01 3344
656 REPORT z18_03. sapjoy 2012.08.01 4550
» REPORT z18_02. sapjoy 2012.08.01 3071
654 REPORT z18_01. sapjoy 2012.08.01 3108
653 REPORT z17_23 sapjoy 2012.08.01 2510
652 REPORT z17_22 sapjoy 2012.08.01 2260
651 REPORT z17_21 . sapjoy 2012.08.01 2466
650 REPORT z17_20 sapjoy 2012.08.01 2876