giovedì 14 maggio 2015

Dividere un Custom Container in tre parti

*----------------------------------------------------------------------*
* DECLARATIONS                                                         *
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION DEFERRED.

DATA: go_custom_c       TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      go_split1         TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER,
      go_split2         TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER,
      go_grid1          TYPE REF TO CL_GUI_ALV_GRID,
      go_grid2          TYPE REF TO CL_GUI_ALV_GRID,
      go_event_receiver TYPE REF TO LCL_EVENT_RECEIVER.

*----------------------------------------------------------------------*
* MODULE STATUS_0100 OUTPUT                                            *
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.

  DATA: ls_layout    TYPE LVC_S_LAYO,
        lt_fieldcat1 TYPE LVC_T_FCAT,
        lt_fieldcat2 TYPE LVC_T_FCAT.

  SET PF-STATUS 'ZPF01'.
  SET TITLEBAR 'ZTITLE01'.

  IF go_custom_c IS INITIAL.

*   Creo il container
    CREATE OBJECT go_custom_c
      EXPORTING
        CONTAINER_NAME = 'CONTAINER'.
*   Lo divido in tre
    CREATE OBJECT go_split1
      EXPORTING
        PARENT        = go_custom_c
        ORIENTATION   = CL_GUI_EASY_SPLITTER_CONTAINER=>ORIENTATION_VERTICAL
        SASH_POSITION = 12.
    CREATE OBJECT go_split2
      EXPORTING
        PARENT        = go_split1->bottom_right_container
        ORIENTATION   = CL_GUI_EASY_SPLITTER_CONTAINER=>ORIENTATION_HORIZONTAL
        SASH_POSITION = 55.

    PERFORM top_of_page USING 0 0 0.
    PERFORM exclude_tb_func.
    PERFORM build_fielcat CHANGING lt_fieldcat1
                                   lt_fieldcat2.

*   ALV Grid di sinistra - note di credito
    CREATE OBJECT go_grid1
      EXPORTING
        I_PARENT = go_split2->top_left_container.
    ls_layout-stylefname = 'STYLE'.
    ls_layout-grid_title = 'Note di credito'.
    CALL METHOD go_grid1->set_table_for_first_display
      EXPORTING
        IS_LAYOUT            = ls_layout
        IT_TOOLBAR_EXCLUDING = gt_excl_func
      CHANGING
        IT_FIELDCATALOG      = lt_fieldcat1
        IT_OUTTAB            = gt_noteb.

*   ALV Grid di destra - partite
    CREATE OBJECT go_grid2
      EXPORTING
        I_PARENT = go_split2->bottom_right_container.
    ls_layout-grid_title = 'Partite aperte'.
    CALL METHOD go_grid2->set_table_for_first_display
      EXPORTING
        IS_LAYOUT            = ls_layout
        IT_TOOLBAR_EXCLUDING = gt_excl_func
      CHANGING
        IT_FIELDCATALOG      = lt_fieldcat2
        IT_OUTTAB            = gt_fattb.

    CREATE OBJECT go_event_receiver.
    SET HANDLER go_event_receiver->handle_button_click
                go_event_receiver->handle_data_changed_finished
                go_event_receiver->handle_double_click
                go_event_receiver->handle_hotspot_click
                go_event_receiver->handle_toolbar
                go_event_receiver->handle_user_command
      FOR go_grid1.
    SET HANDLER go_event_receiver->handle_button_click
                go_event_receiver->handle_data_changed_finished
                go_event_receiver->handle_double_click
                go_event_receiver->handle_hotspot_click
                go_event_receiver->handle_toolbar
                go_event_receiver->handle_user_command
      FOR go_grid2.

*   Imposto la toolbar personalizzata
    CALL METHOD go_grid1->set_toolbar_interactive.
    CALL METHOD go_grid2->set_toolbar_interactive.

*   Registro l'evento Enter che mi serve per gli importi manuali
    CALL METHOD go_grid1->register_edit_event
      EXPORTING
        I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
    CALL METHOD go_grid2->register_edit_event
      EXPORTING
        I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.

  ENDIF.

ENDMODULE.                    "status_0100 OUTPUT

Nessun commento: