Текущее время: Чт, мар 28 2024, 18:13

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Двойной клик в ALV
СообщениеДобавлено: Вт, май 29 2018, 11:17 
Ассистент
Ассистент

Зарегистрирован:
Вт, мар 20 2018, 11:16
Сообщения: 27
Добрый день!
Необходимо, чтобы при двойном клике на строку в таблице ALV открывался снизу второй экран с доп. информацией. Возможно ли сделать это с помощью класса CL_SALV_TABLE? можно сделать это проще или хотя бы стандартный пример?)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Двойной клик в ALV
СообщениеДобавлено: Вт, май 29 2018, 13:45 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2018, 12:54
Сообщения: 4
Привет.
Вот стандартный пример:
Code:
DATA:
  BEGIN OF TAB,
    EBELN LIKE EKKO-EBELN,
    KONNR LIKE EKPO-KONNR,
    BANFN LIKE EBAN-BANFN,
  END OF TAB,
  ALV_TAB LIKE TAB OCCURS 0.
FIELD-SYMBOLS: <FS> LIKE LINE OF ALV_TAB.


CLASS LCL_HANDLE_EVENTS DEFINITION DEFERRED. "класс для обработки событий
DATA: O_ALV         TYPE REF TO CL_SALV_TABLE,
      GC_SELECTIONS TYPE REF TO CL_SALV_SELECTIONS,
      LR_EVENTS     TYPE REF TO CL_SALV_EVENTS_TABLE,
      GR_EVENTS     TYPE REF TO LCL_HANDLE_EVENTS,
      ALV_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      ALV_CLASS     TYPE REF TO CL_GUI_ALV_GRID.

CLASS LCL_HANDLE_EVENTS DEFINITION.
  PUBLIC SECTION.
    METHODS:
      ON_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_SALV_EVENTS_TABLE
        IMPORTING ROW COLUMN.
ENDCLASS.

CLASS LCL_HANDLE_EVENTS IMPLEMENTATION.
  METHOD ON_DOUBLE_CLICK.
    DATA: LT_CELLS TYPE SALV_S_CELL.
    CLEAR LT_CELLS.
    GC_SELECTIONS = O_ALV->GET_SELECTIONS( ).
    LT_CELLS = GC_SELECTIONS->GET_CURRENT_CELL( ).
    READ TABLE ALV_TAB ASSIGNING <FS> INDEX LT_CELLS-ROW.
    CASE LT_CELLS-COLUMNNAME.
      WHEN 'EBELN'.
        SET PARAMETER ID 'BES' FIELD <FS>-EBELN.
        CALL TRANSACTION  'ME23N' AND SKIP FIRST SCREEN.
      WHEN 'KONNR'.
        SET PARAMETER ID 'CTR' FIELD <FS>-KONNR.
        CALL TRANSACTION  'ME33K' AND SKIP FIRST SCREEN.
      WHEN 'BANFN'.
        SET PARAMETER ID 'BAN' FIELD <FS>-BANFN.
        CALL TRANSACTION  'ME53N' AND SKIP FIRST SCREEN.
    ENDCASE.
  ENDMETHOD.
ENDCLASS.


MODULE CREATE_OBJECTS OUTPUT.
  IF ALV_CONTAINER IS INITIAL.
    CREATE OBJECT ALV_CONTAINER
      EXPORTING
        CONTAINER_NAME = 'MY_CONTROL_AREA'.
    CREATE OBJECT ALV_CLASS
      EXPORTING
        I_PARENT = ALV_CONTAINER.

    CREATE OBJECT GR_EVENTS.
    SET HANDLER GR_EVENTS->ON_DOUBLE_CLICK FOR LR_EVENTS.
  ENDIF.
ENDMODULE.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Двойной клик в ALV
СообщениеДобавлено: Вт, май 29 2018, 15:26 
Ассистент
Ассистент

Зарегистрирован:
Вт, мар 20 2018, 11:16
Сообщения: 27
carbon_credit написал(а):
Привет.
Вот стандартный пример:
Code:
DATA:
  BEGIN OF TAB,
    EBELN LIKE EKKO-EBELN,
    KONNR LIKE EKPO-KONNR,
    BANFN LIKE EBAN-BANFN,
  END OF TAB,
  ALV_TAB LIKE TAB OCCURS 0.
FIELD-SYMBOLS: <FS> LIKE LINE OF ALV_TAB.


CLASS LCL_HANDLE_EVENTS DEFINITION DEFERRED. "класс для обработки событий
DATA: O_ALV         TYPE REF TO CL_SALV_TABLE,
      GC_SELECTIONS TYPE REF TO CL_SALV_SELECTIONS,
      LR_EVENTS     TYPE REF TO CL_SALV_EVENTS_TABLE,
      GR_EVENTS     TYPE REF TO LCL_HANDLE_EVENTS,
      ALV_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      ALV_CLASS     TYPE REF TO CL_GUI_ALV_GRID.

CLASS LCL_HANDLE_EVENTS DEFINITION.
  PUBLIC SECTION.
    METHODS:
      ON_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_SALV_EVENTS_TABLE
        IMPORTING ROW COLUMN.
ENDCLASS.

CLASS LCL_HANDLE_EVENTS IMPLEMENTATION.
  METHOD ON_DOUBLE_CLICK.
    DATA: LT_CELLS TYPE SALV_S_CELL.
    CLEAR LT_CELLS.
    GC_SELECTIONS = O_ALV->GET_SELECTIONS( ).
    LT_CELLS = GC_SELECTIONS->GET_CURRENT_CELL( ).
    READ TABLE ALV_TAB ASSIGNING <FS> INDEX LT_CELLS-ROW.
    CASE LT_CELLS-COLUMNNAME.
      WHEN 'EBELN'.
        SET PARAMETER ID 'BES' FIELD <FS>-EBELN.
        CALL TRANSACTION  'ME23N' AND SKIP FIRST SCREEN.
      WHEN 'KONNR'.
        SET PARAMETER ID 'CTR' FIELD <FS>-KONNR.
        CALL TRANSACTION  'ME33K' AND SKIP FIRST SCREEN.
      WHEN 'BANFN'.
        SET PARAMETER ID 'BAN' FIELD <FS>-BANFN.
        CALL TRANSACTION  'ME53N' AND SKIP FIRST SCREEN.
    ENDCASE.
  ENDMETHOD.
ENDCLASS.


MODULE CREATE_OBJECTS OUTPUT.
  IF ALV_CONTAINER IS INITIAL.
    CREATE OBJECT ALV_CONTAINER
      EXPORTING
        CONTAINER_NAME = 'MY_CONTROL_AREA'.
    CREATE OBJECT ALV_CLASS
      EXPORTING
        I_PARENT = ALV_CONTAINER.

    CREATE OBJECT GR_EVENTS.
    SET HANDLER GR_EVENTS->ON_DOUBLE_CLICK FOR LR_EVENTS.
  ENDIF.
ENDMODULE.


Надо чтоб при двойном клике он передавал данные со строчки, на которую кликаешь, как это можно реализовать?

Code:
DATA:
  gt_usr   TYPE TABLE OF zobur.

*----------------------------------------------------------------------*
*       CLASS cl_event_handler DEFINITION
*----------------------------------------------------------------------*
CLASS cl_event_handler DEFINITION.
  PUBLIC SECTION.

    CLASS-METHODS on_before_salv_function         " BEFORE_SALV_FUNCTION
      FOR EVENT if_salv_events_functions~before_salv_function
        OF cl_salv_events_table
          IMPORTING e_salv_function.

    CLASS-METHODS on_after_salv_function          " AFTER_SALV_FUNCTION
      FOR EVENT if_salv_events_functions~before_salv_function
        OF cl_salv_events_table
          IMPORTING e_salv_function.

    CLASS-METHODS on_added_function               " ADDED_FUNCTION
      FOR EVENT if_salv_events_functions~added_function
        OF cl_salv_events_table
          IMPORTING e_salv_function.

    CLASS-METHODS on_top_of_page                  " TOP_OF_PAGE
      FOR EVENT if_salv_events_list~top_of_page
        OF cl_salv_events_table
          IMPORTING r_top_of_page
                    page
                    table_index.

    CLASS-METHODS on_end_of_page                  " END_OF_PAGE
      FOR EVENT if_salv_events_list~end_of_page
        OF cl_salv_events_table
          IMPORTING r_end_of_page
                    page.

    CLASS-METHODS on_double_click                 " DOUBLE_CLICK
      FOR EVENT if_salv_events_actions_table~double_click
        OF cl_salv_events_table
          IMPORTING row
                    column.

    CLASS-METHODS on_link_click                   " LINK_CLICK
      FOR EVENT if_salv_events_actions_table~link_click
        OF cl_salv_events_table
          IMPORTING row
                    column.
ENDCLASS.                    "cl_event_handler DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS cl_event_handler IMPLEMENTATION.

  METHOD on_before_salv_function.
    BREAK-POINT.
  ENDMETHOD.                    "on_before_salv_function

  METHOD on_after_salv_function.
    BREAK-POINT.
  ENDMETHOD.                    "on_after_salv_function

  METHOD on_added_function.
    BREAK-POINT.
  ENDMETHOD.                    "on_added_function

  METHOD on_top_of_page.
    BREAK-POINT.
  ENDMETHOD.                    "on_top_of_page

  METHOD on_end_of_page.
    BREAK-POINT.
  ENDMETHOD.                    "on_end_of_page

  METHOD on_double_click.

   *Здесь происходит обработка двойного клика*
    BREAK-POINT.
  ENDMETHOD.                    "on_double_click

  METHOD on_link_click.
    BREAK-POINT.
  ENDMETHOD.                    "on_link_click
ENDCLASS.                    "cl_event_handler IMPLEMENTATION

*&---------------------------------------------------------------------*
*&      START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.

* read sample data to internal table
  SELECT * FROM zobur UP TO 30 ROWS
    into TABLE gt_usr
    ORDER BY pernr.

  PERFORM display_alv.

*&---------------------------------------------------------------------*
*&      Form  display_alv
*&---------------------------------------------------------------------*
FORM display_alv.

  DATA:
    lo_table      TYPE REF TO cl_salv_table,
    lo_events     TYPE REF TO cl_salv_events_table,
    lo_columns    TYPE REF TO cl_salv_columns_table,
    lo_column     TYPE REF TO cl_salv_column_list.

  TRY.
      CALL METHOD cl_salv_table=>factory
        IMPORTING
          r_salv_table = lo_table
        CHANGING
          t_table      = gt_usr.

      lo_events = lo_table->get_event( ).
      SET HANDLER cl_event_handler=>on_before_salv_function FOR lo_events.
      SET HANDLER cl_event_handler=>on_after_salv_function FOR lo_events.
      SET HANDLER cl_event_handler=>on_added_function FOR lo_events.
      SET HANDLER cl_event_handler=>on_top_of_page FOR lo_events.
      SET HANDLER cl_event_handler=>on_end_of_page FOR lo_events.
      SET HANDLER cl_event_handler=>on_double_click FOR lo_events.
      SET HANDLER cl_event_handler=>on_link_click FOR lo_events.

*     ALV-Toolbar
      lo_table->set_screen_status(
        pfstatus      = 'STANDARD_FULLSCREEN'
        report        = 'SAPLSLVC_FULLSCREEN'
        set_functions = lo_table->c_functions_all ).

*     Set column as hotspot
lo_columns = lo_table->get_columns( ).
      lo_column ?= lo_columns->get_column( 'PERNR' ).
      lo_column->set_cell_type( if_salv_c_cell_type=>hotspot ).

      lo_table->display( ).

      lo_table->display( ).

    CATCH cx_salv_msg.             " cl_salv_table=>factory()
      WRITE: / 'cx_salv_msg exception'.
      STOP.

  ENDTRY.
ENDFORM.     



Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Двойной клик в ALV
СообщениеДобавлено: Вт, май 29 2018, 15:38 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
у метода ON_DOUBLE_CLICK есть два параметрa ROW и COLUMN
там указано куда кликнул пользователь.
ROW-строка
COLUMN колонка


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Двойной клик в ALV  Тема решена
СообщениеДобавлено: Вт, май 29 2018, 15:45 
Ассистент
Ассистент

Зарегистрирован:
Вт, мар 20 2018, 11:16
Сообщения: 27
Разобрался)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB