Текущее время: Ср, июл 23 2025, 11:15

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: ALV Grid и GUI-status
СообщениеДобавлено: Ср, мар 14 2007, 16:03 
Начинающий
Начинающий

Зарегистрирован:
Ср, мар 14 2007, 15:53
Сообщения: 3
Для вывода данных используется CL_SALV_TABLE в полноэкранном режиме. Также определён GUI-статус, в котором определены дополнительные кнопки.

Каким образом можно управлять состоянием этих кнопок (видимый/невидимый, разрешённый/запрещённый)?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 14 2007, 16:32 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
SET PF-STATUS + F1.

Смотреть EXCLUDING.

Состояние кнопок определяется в самом статусе. А именно крыжиком над строкой Application toolbar. Всего два положения: либо исключаемые кнопки дизабляться, либо скрываются.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 15 2007, 01:25 
Начинающий
Начинающий

Зарегистрирован:
Ср, мар 14 2007, 15:53
Сообщения: 3
Не то.

Вот небольшой пример программы
Code:
REPORT  z_salv_example.

* Класс обработки событий
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS
      : on_user_command
            FOR EVENT added_function OF cl_salv_events
            IMPORTING e_salv_function
      .
ENDCLASS.

CLASS lcl_handle_events IMPLEMENTATION.

  METHOD on_user_command.
    CASE sy-ucomm.
      WHEN 'MYFUNCTION'.
*         Здесь должен быть код, скрывающий кнопку MYFUNCTION
          SET PF-STATUS 'SALV_STANDARD' EXCLUDING 'MYFUNCTION'.
*         К сожалению, PF-STATUS не работает
    ENDCASE.
  ENDMETHOD.

ENDCLASS.

DATA
  : gt_spfli TYPE STANDARD TABLE OF spfli

  , gr_table   TYPE REF TO cl_salv_table
  , gr_events  TYPE REF TO cl_salv_events_table
  , gr_handler TYPE REF TO lcl_handle_events
.

START-OF-SELECTION.

  SELECT *
      UP TO 100 ROWS
      INTO TABLE gt_spfli
      FROM spfli
  .

* Создание ALV Grid
  TRY.
    cl_salv_table=>factory(
        IMPORTING r_salv_table = gr_table
        CHANGING  t_table      = gt_spfli
    ).
  CATCH cx_salv_msg.
  ENDTRY.

* Назначение GUI-статуса
  gr_table->set_screen_status(
      pfstatus      = 'SALV_STANDARD'
      report        = sy-cprog
      set_functions = gr_table->c_functions_all
  ).

* Назначение обработчика событий
  gr_events = gr_table->get_event( ).
  CREATE OBJECT gr_handler.
  SET HANDLER gr_handler->on_user_command FOR gr_events.

* Вывод ALV Grid
  gr_table->display( ).


В программу скопирован из пакета SALV_OBJECTS статус 'SALV_STANDARD', в котором определена пользовательская кнопка 'MYFUNCTION'. При нажатии на эту кнопку необходимо, чтобы она стала недоступной. Как этого добиться?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 16 2007, 13:23 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 13 2006, 16:44
Сообщения: 55
Пол: Мужской
Скорее всего надо по нажатию кнопки повторно вызвать
Code:
* Назначение GUI-статуса
  gr_table->set_screen_status(
      pfstatus      = 'SALV_STANDARD'
      report        = sy-cprog
      set_functions = gr_table->c_functions_all
  ).

К сожалению, в моей системе этого класса нет, но похоже, что отображаемые кнопки регулируются параметром set_functions. Если нет, ищите в параметрах какую-то таблицу с именем *exclud* - туда должны передаваться коды исключаемых функций/отображаемых кнопок.
Также возможно при повторном вызове понадобится отметить параметр типа IMMEDIATE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 20 2007, 17:22 
Начинающий
Начинающий

Зарегистрирован:
Ср, мар 14 2007, 15:53
Сообщения: 3
Всем спасибо. Решение найдено.

Code:
REPORT  z_salv_example.

* Класс обработки событий
CLASS lcl_handle_events DEFINITION.
  PUBLIC SECTION.
      METHODS
        : constructor
              IMPORTING pi_table TYPE REF TO cl_salv_table

        , on_user_command
              FOR EVENT added_function OF cl_salv_events
              IMPORTING e_salv_function
        .
  PRIVATE SECTION.
      DATA
        : fr_myfunc TYPE REF TO cl_salv_function
      .
ENDCLASS.

DATA
  : gt_spfli TYPE STANDARD TABLE OF spfli

  , gr_table   TYPE REF TO cl_salv_table
  , gr_events  TYPE REF TO cl_salv_events_table
  , gr_handler TYPE REF TO lcl_handle_events
.

CLASS lcl_handle_events IMPLEMENTATION.

  METHOD constructor.
    DATA
      : lr_functions TYPE REF TO cl_salv_functions
      , lt_functions TYPE salv_t_ui_func
      , lr_function  TYPE REF TO cl_salv_function
      , lv_name      TYPE string
    .
    FIELD-SYMBOLS
      : <function> LIKE LINE OF lt_functions
    .

*   Сохранение ссылки на кнопку
    lr_functions = pi_table->get_functions( ).
    lt_functions = lr_functions->get_functions( ).
    LOOP AT lt_functions ASSIGNING <function>.
      lr_function = <function>-r_function.

      CASE lr_function->get_name( ).
        WHEN 'MYFUNCTION'.
            fr_myfunc = lr_function.
      ENDCASE.

    ENDLOOP.
  ENDMETHOD.

  METHOD on_user_command.
    CASE sy-ucomm.
      WHEN 'MYFUNCTION'.
*         Скрытие кнопки
          fr_myfunc->set_visible( abap_false ).
    ENDCASE.
  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

  SELECT *
      UP TO 100 ROWS
      INTO TABLE gt_spfli
      FROM spfli
  .

* Создание ALV Grid
  TRY.
    cl_salv_table=>factory(
        IMPORTING r_salv_table = gr_table
        CHANGING  t_table      = gt_spfli
    ).
  CATCH cx_salv_msg.
  ENDTRY.

* Назначение GUI-статуса
  gr_table->set_screen_status(
      pfstatus      = 'SALV_STANDARD'
      report        = sy-cprog
      set_functions = gr_table->c_functions_all
  ).

* Назначение обработчика событий
  gr_events = gr_table->get_event( ).
  CREATE OBJECT gr_handler
      EXPORTING pi_table = gr_table
  .
  SET HANDLER gr_handler->on_user_command FOR gr_events.

* Вывод ALV Grid
  gr_table->display( ).


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

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


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

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


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

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