Текущее время: Пт, июл 18 2025, 20:04

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Печать Smartform из ALV
СообщениеДобавлено: Чт, сен 21 2006, 15:07 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, сен 21 2006, 12:42
Сообщения: 27
Всем доброго дня!
Подскажите пожалуйста как вместо стандартной печати ALV при нажатии на кнопочку принтера вызвать смартформу.
Насколько я понимаю, должно быть что-то вроде:

MODULE user_command_0100.
CASE sy-ucomm.
WHEN '&RNT'.
" вызов смартформы
ENDCASE.
ENDMODULE.

'&RNT' - смотрела код функции в стандартном GUI-статусе экрана ALV.
Подозреваю, что имя модуля неправильно, но где посмотреть какое нужно.
Или может быть вообще есть другие варианты решения.

Заранее большое спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 21 2006, 17:05 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
При вызове вывода ALV указать подпрограмму пользовательской обработки событий.
Code:
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = lf_programm
      IS_LAYOUT                = ls_layout
      I_CALLBACK_PF_STATUS_SET = 'SET_MY_PF_STATUS'
      I_SAVE                   = 'A'
      IS_VARIANT               = ls_variant
      IT_EVENTS                = lt_events
      IT_FIELDCAT              = lt_fieldcat
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
      I_GRID_TITLE             = lf_title
    TABLES
      T_OUTTAB                 = pt_output.
*&---------------------------------------------------------------------*
*&      Form  set_my_pf_status
*&---------------------------------------------------------------------*
*    Установка статуса
*----------------------------------------------------------------------*
FORM SET_MY_PF_STATUS USING PF_TAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'ZSTANDARD' OF PROGRAM sy-repid.

ENDFORM.

*&---------------------------------------------------------------------*
*       Обработка команд пользователя
*----------------------------------------------------------------------*
*  -->  R_UCOMM      - команда пользователя
*  -->  RS_SELFIELD  - выбранное поле
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm     LIKE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  DATA: ls_output TYPE TS_OUTPUT_ALV.
  CASE r_ucomm.
    WHEN 'ZPRN'. " Команда указанная вами на вашу кнопку в тулбаре
*Вызов вашейго функционального модуля       
  ENDCASE.
ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 21 2006, 17:55 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Можно красивие ;)
Для начала так:
Code:
class lcl_event_receiver definition.

  public section.

    methods:
    handle_toolbar
       for event toolbar of cl_gui_alv_grid
            importing e_object e_interactive,

    handle_user_command
       for event user_command of cl_gui_alv_grid
            importing e_ucomm.

  private section.

endclass.

Потом отимплементим:
Code:
class lcl_event_receiver implementation.
  method handle_toolbar.
    data:
      ls_toolbar type stb_button.

      read table e_object->mt_toolbar into ls_toolbar
      with key function = 'SELECTED_LINES'.

      IF sy-subrc <> 0.

        clear ls_toolbar.
        ls_toolbar-butn_type = 3. "separator
        append ls_toolbar to e_object->mt_toolbar.

        clear ls_toolbar.
        ls_toolbar-function = 'FORM_SHOW'.
        ls_toolbar-icon = ICON_XLS.
        ls_toolbar-quickinfo = ''. "All lines
        ls_toolbar-butn_type = 0. "push button
        ls_toolbar-disabled = ''.
        ls_toolbar-text = ''.
        append ls_toolbar to e_object->mt_toolbar.
     
      ENDIF.

  endmethod.

  method handle_user_command.
    case e_ucomm.
      when 'FORM_SHOW'.
        perform smartform_main. "тут выводим нашу смартформу
    endcase.
  endmethod.

endclass.

В основной программе:
Code:
DATA: my_event_receiver TYPE REF TO lcl_event_receiver,
          alv_grid TYPE REF TO cl_gui_alv_grid.
...
create object my_event_receiver.
set handler my_event_receiver->handle_toolbar for alv_grid.
set handler my_event_receiver->handle_user_command for alv_grid.
...

Как работать с алв гридом думаю и так все знают. В результате мы добавим в стандартный тулбар грида свою кнопку. По нажатию на которую - выведем форму.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Thanks
СообщениеДобавлено: Пт, сен 22 2006, 08:59 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, сен 21 2006, 12:42
Сообщения: 27
Большое спасибо за помощь! Сделала по 1-му варианту, через вызов REUSE_ALV_GRID_DISPLAY, всё работает!


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

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


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

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


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

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