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

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


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

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


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

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