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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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