SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Vertical Tabstrip for Controls



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Dialog Programming
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1636

PostPosted: Sat Apr 12, 2008 10:33 am    Post subject: Vertical Tabstrip for Controls Reply with quote

Code:
REPORT zdrawer.
TABLES: trdir.
INCLUDE <icon>.

DATA: cc_drawer TYPE REF TO cl_gui_docking_container,
c_drawer TYPE REF TO cl_gui_container_bar,
c_container TYPE REF TO cl_gui_container,
l_caption TYPE sbptcaptn,
lt_captions TYPE sbptcaptns,
l_icon TYPE swd_icon,
lt_icons TYPE swd_icons,
ok_code TYPE sy-ucomm,
*
id TYPE i,
repid TYPE sy-repid,
dynnr TYPE sy-dynnr.
* Display data
TYPES: BEGIN OF ty_data ,
name LIKE trdir-name,
cnam LIKE trdir-cnam,
cdat LIKE trdir-cdat,
END OF ty_data.
DATA : g_alv_sd TYPE REF TO cl_gui_alv_grid,
g_alv_mm TYPE REF TO cl_gui_alv_grid,
g_alv_pp TYPE REF TO cl_gui_alv_grid,
g_alv_fi TYPE REF TO cl_gui_alv_grid,
g_alv_all TYPE REF TO cl_gui_alv_grid,
gs_data TYPE ty_data,
gt_data TYPE STANDARD TABLE OF ty_data.
CLASS lcl_application DEFINITION DEFERRED.
CLASS cl_gui_cfw DEFINITION LOAD.
DATA:
c_application TYPE REF TO lcl_application,
c_alv TYPE REF TO lcl_application.
*---------------------------------------------------------------------*
* CLASS lcl_application DEFINITION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS lcl_application DEFINITION.
  PUBLIC SECTION.
    METHODS:
    on_click FOR EVENT clicked OF cl_gui_container_bar
    IMPORTING
    id
    container,
    on_hotspot_click FOR EVENT
    hotspot_click OF cl_gui_alv_grid IMPORTING
    e_row_id e_column_id.
ENDCLASS. "lcl_application DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_application IMPLEMENTATION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION.
  METHOD on_click.
    DATA: l_fcode TYPE ui_func,
    l_link TYPE swd_htmlco,
    l_quickinfo TYPE iconquick.
    DATA:
    lx_variant TYPE disvariant,
    lt_alv_cat TYPE lvc_t_fcat,
    lx_alv_cat TYPE lvc_s_fcat,
    lx_alv_lay TYPE lvc_s_layo.
    DEFINE m_fieldcat.
      add 1 to lx_alv_cat-col_pos.
      lx_alv_cat-fieldname = &1.
      case lx_alv_cat-fieldname.
        when 'NAME'.
          lx_alv_cat-key = 'X'.
          lx_alv_cat-hotspot = 'X'.
          lx_alv_cat-scrtext_m = 'Program Name'.
          lx_alv_cat-colddictxt = 'M'.
          lx_alv_cat-tipddictxt = 'M'.
        when 'CNAM'.
          lx_alv_cat-key = ''.
          lx_alv_cat-hotspot = ''.
          lx_alv_cat-scrtext_m = 'Created By'.
          lx_alv_cat-colddictxt = 'M'.
          lx_alv_cat-tipddictxt = 'M'.
        when 'CDAT'.
          lx_alv_cat-key = ''.
          lx_alv_cat-hotspot = ''.
          lx_alv_cat-scrtext_m = 'Created On'.
          lx_alv_cat-colddictxt = 'M'.
          lx_alv_cat-tipddictxt = 'M'.
      endcase.
      lx_alv_cat-ref_field = &2.
      lx_alv_cat-ref_table = &3.
      append lx_alv_cat to lt_alv_cat.
    END-OF-DEFINITION.
    CASE id.
      WHEN 1.
        FREE : g_alv_sd.
        IF g_alv_sd IS INITIAL.
          CREATE OBJECT g_alv_sd
          EXPORTING i_parent = container.
*Fill gt_data
          REFRESH gt_data[].
          SELECT name cnam cdat FROM trdir INTO CORRESPONDING FIELDS OF
          TABLE gt_data
          WHERE name LIKE 'ZSD%'.
*Fill the field catalog
          REFRESH lt_alv_cat[].
          m_fieldcat 'NAME' 'NAME' 'TRDIR'.
          m_fieldcat 'CNAM' 'CNAM' 'TRDIR'.
          m_fieldcat 'CDAT' 'CDAT' 'TRDIR'.
*Layout
          CLEAR lx_alv_lay.
          lx_alv_lay-zebra = 'X'.
          lx_alv_lay-cwidth_opt = 'X'.
          lx_alv_lay-grid_title = 'Sales and Distribution Reports'.
          lx_alv_lay-sel_mode = 'A'.
          lx_variant-report = sy-cprog.
*Display
          CALL METHOD g_alv_sd->set_table_for_first_display
          EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
          is_variant = lx_variant
* I_SAVE =
* I_DEFAULT = 'X'
          is_layout = lx_alv_lay
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
          CHANGING
          it_outtab = gt_data
          it_fieldcatalog = lt_alv_cat
* IT_SORT =
* IT_FILTER =
          EXCEPTIONS
          invalid_parameter_combination = 1
          program_error = 2
          too_many_lines = 3
          OTHERS = 4
          .
          IF c_alv IS INITIAL.
            CREATE OBJECT c_alv.
          ENDIF.
          SET HANDLER c_alv->on_hotspot_click FOR g_alv_sd.
        ENDIF.
      WHEN 2.
        FREE : g_alv_mm.
        IF g_alv_mm IS INITIAL.
          CREATE OBJECT g_alv_mm
          EXPORTING i_parent = container.
*Fill gt_data
          REFRESH gt_data[].
          SELECT name cnam cdat FROM trdir INTO CORRESPONDING FIELDS OF
          TABLE gt_data
          WHERE name LIKE 'ZMM%'.
*Fill the field catalog
          REFRESH lt_alv_cat[].
          m_fieldcat 'NAME' 'NAME' 'TRDIR'.
          m_fieldcat 'CNAM' 'CNAM' 'TRDIR'.
          m_fieldcat 'CDAT' 'CDAT' 'TRDIR'.
*Layout
          CLEAR lx_alv_lay.
          lx_alv_lay-zebra = 'X'.
          lx_alv_lay-cwidth_opt = 'X'.
          lx_alv_lay-grid_title = 'Material Management Reports'.
          lx_alv_lay-sel_mode = 'A'.
          lx_variant-report = sy-cprog.
*Display
          CALL METHOD g_alv_mm->set_table_for_first_display
          EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
          is_variant = lx_variant
* I_SAVE =
* I_DEFAULT = 'X'
          is_layout = lx_alv_lay
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
          CHANGING
          it_outtab = gt_data
          it_fieldcatalog = lt_alv_cat
* IT_SORT =
* IT_FILTER =
          EXCEPTIONS
          invalid_parameter_combination = 1
          program_error = 2
          too_many_lines = 3
          OTHERS = 4
          .
          IF c_alv IS INITIAL.
            CREATE OBJECT c_alv.
          ENDIF.
          SET HANDLER c_alv->on_hotspot_click FOR g_alv_mm.
        ENDIF.
      WHEN 3.
        FREE : g_alv_pp.
        IF g_alv_pp IS INITIAL.
          CREATE OBJECT g_alv_pp
          EXPORTING i_parent = container.
*Fill gt_data
          REFRESH gt_data[].
          SELECT name cnam cdat FROM trdir INTO CORRESPONDING FIELDS OF
          TABLE gt_data
          WHERE name LIKE 'ZPP%'.
*Fill the field catalog
          REFRESH lt_alv_cat[].
          m_fieldcat 'NAME' 'NAME' 'TRDIR'.
          m_fieldcat 'CNAM' 'CNAM' 'TRDIR'.
          m_fieldcat 'CDAT' 'CDAT' 'TRDIR'.
*Layout
          CLEAR lx_alv_lay.
          lx_alv_lay-zebra = 'X'.
          lx_alv_lay-cwidth_opt = 'X'.
          lx_alv_lay-grid_title = 'Production Planning Reports'.
          lx_alv_lay-sel_mode = 'A'.
          lx_variant-report = sy-cprog.
*Display
          CALL METHOD g_alv_pp->set_table_for_first_display
          EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
          is_variant = lx_variant
* I_SAVE =
* I_DEFAULT = 'X'
          is_layout = lx_alv_lay
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
          CHANGING
          it_outtab = gt_data
          it_fieldcatalog = lt_alv_cat
* IT_SORT =
* IT_FILTER =
          EXCEPTIONS
          invalid_parameter_combination = 1
          program_error = 2
          too_many_lines = 3
          OTHERS = 4
          .
          IF c_alv IS INITIAL.
            CREATE OBJECT c_alv.
          ENDIF.
          SET HANDLER c_alv->on_hotspot_click FOR g_alv_pp.
        ENDIF.
      WHEN 4.
        FREE : g_alv_fi.
        IF g_alv_fi IS INITIAL.
          CREATE OBJECT g_alv_fi
          EXPORTING i_parent = container.
*Fill gt_data
          REFRESH gt_data[].
          SELECT name cnam cdat FROM trdir INTO CORRESPONDING FIELDS OF
          TABLE gt_data
          WHERE name LIKE 'ZFI%'.
*Fill the field catalog
          REFRESH lt_alv_cat[].
          m_fieldcat 'NAME' 'NAME' 'TRDIR'.
          m_fieldcat 'CNAM' 'CNAM' 'TRDIR'.
          m_fieldcat 'CDAT' 'CDAT' 'TRDIR'.
*Layout
          CLEAR lx_alv_lay.
          lx_alv_lay-zebra = 'X'.
          lx_alv_lay-cwidth_opt = 'X'.
          lx_alv_lay-grid_title = 'Finance and Controlling Reports'.
          lx_alv_lay-sel_mode = 'A'.
          lx_variant-report = sy-cprog.
*Display
          CALL METHOD g_alv_fi->set_table_for_first_display
          EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
          is_variant = lx_variant
* I_SAVE =
* I_DEFAULT = 'X'
          is_layout = lx_alv_lay
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
          CHANGING
          it_outtab = gt_data
          it_fieldcatalog = lt_alv_cat
* IT_SORT =
* IT_FILTER =
          EXCEPTIONS
          invalid_parameter_combination = 1
          program_error = 2
          too_many_lines = 3
          OTHERS = 4
          .
          IF c_alv IS INITIAL.
            CREATE OBJECT c_alv.
          ENDIF.
          SET HANDLER c_alv->on_hotspot_click FOR g_alv_fi.
        ENDIF.
      WHEN 5.
        FREE : g_alv_all.
        IF g_alv_all IS INITIAL.
          CREATE OBJECT g_alv_all
          EXPORTING i_parent = container.
*Fill gt_data
          REFRESH gt_data[].
          SELECT name cnam cdat FROM trdir INTO CORRESPONDING FIELDS OF
          TABLE gt_data
          WHERE name LIKE 'Z%'.
*Fill the field catalog
          REFRESH lt_alv_cat[].
          m_fieldcat 'NAME' 'NAME' 'TRDIR'.
          m_fieldcat 'CNAM' 'CNAM' 'TRDIR'.
          m_fieldcat 'CDAT' 'CDAT' 'TRDIR'.
*Layout
          CLEAR lx_alv_lay.
          lx_alv_lay-zebra = 'X'.
          lx_alv_lay-cwidth_opt = 'X'.
          lx_alv_lay-grid_title = 'All custom Reports'.
          lx_alv_lay-sel_mode = 'A'.
          lx_variant-report = sy-cprog.
*Display
          CALL METHOD g_alv_all->set_table_for_first_display
          EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
          is_variant = lx_variant
* I_SAVE =
* I_DEFAULT = 'X'
          is_layout = lx_alv_lay
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
          CHANGING
          it_outtab = gt_data
          it_fieldcatalog = lt_alv_cat
* IT_SORT =
* IT_FILTER =
          EXCEPTIONS
          invalid_parameter_combination = 1
          program_error = 2
          too_many_lines = 3
          OTHERS = 4
          .
          IF c_alv IS INITIAL.
            CREATE OBJECT c_alv.
          ENDIF.
          SET HANDLER c_alv->on_hotspot_click FOR g_alv_all.
        ENDIF.
    ENDCASE.
  ENDMETHOD. "on_click
  METHOD on_hotspot_click.
    DATA:
    lx_selected_row TYPE lvc_s_row,
    ls_data TYPE ty_data.
    CLEAR lx_selected_row.
    MOVE-CORRESPONDING e_row_id TO lx_selected_row.
    READ TABLE gt_data INTO ls_data INDEX lx_selected_row-index.
    SET PARAMETER ID 'RID' FIELD ls_data-name.
    CALL TRANSACTION 'SE38' AND SKIP FIRST SCREEN.
  ENDMETHOD. "on_hotspot_click
ENDCLASS. "lcl_application IMPLEMENTATION
*DATA: c_application TYPE REF TO lcl_application.
START-OF-SELECTION.
  CALL SCREEN 100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS '100'.
  SET TITLEBAR '100'.
  repid = sy-repid.
  dynnr = sy-dynnr.
*Test the function
* create container for drawer
  IF cc_drawer IS INITIAL.
    CREATE OBJECT cc_drawer
    EXPORTING
    repid = repid
    dynnr = dynnr
    extension = 300.
  ENDIF.
* create drawer
  IF c_drawer IS INITIAL.
    l_caption-caption = 'Sales and Distribution Reports'(004)."text-004.
    l_caption-icon = icon_wizard.
    APPEND l_caption TO lt_captions.
    l_caption-caption = 'Material Management Reports'(005). "text-005.
    l_caption-icon = space.
    APPEND l_caption TO lt_captions.
    l_caption-caption = 'Production Planning Reports'(006). "text-006.
    l_caption-icon = icon_display_text.
    APPEND l_caption TO lt_captions.
    l_caption-caption = 'Finance and Controlling Reports'(007)."text-007.
    l_caption-icon = icon_display_text.
    APPEND l_caption TO lt_captions.
    l_caption-caption = 'All custom Reports'(008).          "text-008.
    l_caption-icon = icon_display_text.
    APPEND l_caption TO lt_captions.
* Create cl_gui_container_bar
    CREATE OBJECT c_drawer
    EXPORTING
    parent = cc_drawer
    captions = lt_captions
    EXCEPTIONS
    max_number_of_cells_exceeded = 1
    OTHERS = 2.
    IF sy-subrc <> 0.
      SET SCREEN 0. LEAVE SCREEN.
    ENDIF.
* Create cl_gui_container_bar
    IF c_application IS INITIAL.
      CREATE OBJECT c_application.
    ENDIF.
    SET HANDLER c_application->on_click FOR c_drawer.
    CALL METHOD c_drawer->set_active
      EXPORTING
        id = 1.
  ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  IF ok_code = 'EX'.
    CALL METHOD c_drawer->free.
    CALL METHOD cc_drawer->free.
    SET SCREEN 0. LEAVE SCREEN.
  ELSEIF ok_code = 'HI'.
    CALL METHOD c_drawer->set_active
      EXPORTING
        id = id.
  ELSEIF ok_code = 'ENTE'.
    CALL METHOD c_drawer->set_active
      EXPORTING
        id = id.
  ENDIF.
ENDMODULE. " USER_COMMAND_0100 INPUT
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Dialog Programming All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.