Текущее время: Ср, май 14 2025, 01:31

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Итоговая строка в ALV
СообщениеДобавлено: Вт, фев 15 2005, 08:40 
Гость
Чет не пойму как её вывести ... есть во внутренней таблице два поля тип i, и вот надо по ним сумму выдать ... как там и чего подскажите ?

и ещё вопрос, есть текстовое поле и надо в итоговой строке выдать количество различающихся значений ... можно это ?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: Итоговая строка в ALV
СообщениеДобавлено: Вт, фев 15 2005, 09:17 
Гость
EHOT написал(а):
Чет не пойму как её вывести ... есть во внутренней таблице два поля тип i, и вот надо по ним сумму выдать ... как там и чего подскажите ?


С этим разобрался, тип N должен быть ... а по второму вопросу кто-нить поможет ?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 09:50 
Гость
Цитата:
С этим разобрался, тип N должен быть ... а по второму вопросу кто-нить поможет ?


Может, в LOOP цикле ввести счетчик, который увеличивать при наступлении события
Code:
at new field/endat
?
Предварительно, естественно, таблица должна быть упорядочена по этому полю.

Или, как вариант, завести внутр. таблицу, содержащую имена поля field, в которой на каждом шаге цикла искать наличие текущего значения; в случае sy-subrc=0, записывать текущее значение.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 10:00 
Гость
Paul_80 написал:
Цитата:
С этим разобрался, тип N должен быть ... а по второму вопросу кто-нить поможет ?


Может, в LOOP цикле ввести счетчик, который увеличивать при наступлении события
Code:
at new field/endat
?
Предварительно, естественно, таблица должна быть упорядочена по этому полю.

Или, как вариант, завести внутр. таблицу, содержащую имена поля field, в которой на каждом шаге цикла искать наличие текущего значения; в случае sy-subrc=0, записывать текущее значение.



:-)))))))) не, ты не понял ... посчитать не проблема ... проблема вывести количество в итоговой строке ALV-отчета ...


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 10:15 
Гость
ну так сформируй сам итоговую строку в таблице - и выводе ее


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 10:26 
Гость
ВН написал(а):
ну так сформируй сам итоговую строку в таблице - и выводе ее


а если таблицу сортировать будут ? или фильтр захотят ? по умолчанию то итоговая строка пересчитывается при использовании фильтра ...


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 10:41 
Гость
ну и это решается,
пересчитывай итоговую строку по событиям сортировки и фильтра


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 11:01 
Гость
ВН написал(а):
ну и это решается,
пересчитывай итоговую строку по событиям сортировки и фильтра


не ... гемор .... неужели нет более красивого и простого способа ?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 11:32 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
EHOT написал(а):
не ... гемор .... неужели нет более красивого и простого способа ?


Проще, наверное, объяснить пользователям как пользоваться сортировкой и сделать объединение по колонке, он сами наглядно всё увидят.
Можно в заголовке поместить количество несовпадений.
Можно поле завести (1-новое значение, 0-старое) по нему суммировать.
Только с учетом сортировок и фильтров, гимора не избежать :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 12:11 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 16:49
Сообщения: 186
Откуда: SAP ERP60
Пол: Мужской
Есть нормальный способ воздействия на строки итогов в ALV - давно уже пользуемся и глюков незамечено...
Сразу оговорюсь - речь пойдет о ФМ reuse_alv_ LIST_display в GRID может будет иначе - просто LIST был выбран изначально с точки зрения быстродействия и максимальной схожести с печатной формой выходного документа .

Дальше все просто: регистрируем эвент BEFORE_LINE_OUTPUT или AFTER в зависимости от задачи (лучше все-же before - красивее будет если изменения уложатся в структуру таблиц)

Code:
*---------------------------------------------------------------------*
*       FORM BEFORE_LINE_OUTPUT                                       *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  RS_LINEINFO                                                   *
*---------------------------------------------------------------------*
FORM before_line_output CHANGING rs_lineinfo TYPE slis_lineinfo.
  IF  rs_lineinfo-subtot = 'X'.
** здесь в заголовке нашей таблицы лежат итоги
** их и будем менять на то что надо
     it_htab-field1 = itog1.  и т.д
**   или класть в свободные поля свои данные :)
  ENDIF.


p.s Ложка дегтя - по-хорошему нужно учитывать условия фильтра, считывая их из ALV и формировать свои данные согласно этим условиям. Но честное слово - что-то еще никто из юзеров не поднял этот вопрос , а самим искать приключений лень...

Удачи!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 12:18 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
А я использую событие SUBTOTAL_TEXT, во всех ALV: лист, грид, на ФМ и объектах. Все раюотает, без глюков.

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 12:22 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 16:49
Сообщения: 186
Откуда: SAP ERP60
Пол: Мужской
А разве subtotal_text это событие?
Разве это не всего-лишь текст для строки итогов?
или я чего-то путаю...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 13:56 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Это, безсуловно, событие :-))) Почитайте хэлпарь про АЛВ, оно там есть. Интерфейс события позволяет менять как текст группировки так и сами значения итогов.

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, фев 15 2005, 14:08 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 16:49
Сообщения: 186
Откуда: SAP ERP60
Пол: Мужской
Или с глазами плохо или еще чего :)
ненашел такого евента :(((

Code:
The table of possible events per list type can be initialized using the module REUSE_ALV_EVENTS_GET.

You can display the names of the constants in the type pools SLIS which represent the individual events using the individual test function in the function module
REUSE_ALV_EVENT_NAMES_GET. Only events with a form routine name are processed.

The table structure contains the fields:

IT_EVENTS-NAME
Name of the Callback event.
Possible Callback events:
Action
USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD
Process actions on the list
As this is a frequently-used Callback event, the form routine can also be passed directly in the interface in the IMPORTING parameter I_CALLBACK_USER_COMMAND.
PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB
If a user list status is to be set, it must be done in the form routine assigned to this event. The ALV function codes, which must not be active, are in the Parameter RT_EXTAB. This table must be passed with the SET PF-STATUS command (with inactive user function codes as well, if necessary).
The STANDARD status of the function group SALV should be used as a template for a user-specific status.
As this is a frequently-used Callback event, its form routine can also be passed directly in the interface in the IMPORTING parameter I_CALLBACK_PF_STATUS_SET.
ITEM_DATA_EXPAND USING RS_SELFIELD TYPE SLIS_SELFIELD
RFLG_ALL TYPE C
Only relevant for hierarchical-sequential lists using the layout parameter IS_LAYOUT-EXPAND_FIELDNAME of the structure IS_LAYOUT.
Exit for passing item entries (ITEM table) for a header record which was expanded interactively by the user.
RS_SELFIELD-TABINDEX contains the header table index for which the item entries are to be put in the global item output table (T_OUTTAB_SLAVE). The Callback is only called if ALV has no items for a header which is to be expanded.
RFLG_ALL is passed with 'X' if the user shows all items. The application must ensure that entries are not repeated in the item table.
RS_SELFIELD is initial in this case.
CALLER_EXIT USING RS_DATA
Is called at the beginning of the function module to make special settings. It is not usually used.
List processing events
IMPORTANT: The application Callback routine must not manipulate the internal output table and/or its header record. This restriction applies to all Callbacks which are called in the list output and run under the 'List processing events'.
TOP_OF_LIST no USING parameter
Information output at the start of the list
END_OF_LIST no USING parameter
Information output at the end of the list
TOP_OF_PAGE no USING parameter
Equivalent to the list processing TOP-OF-PAGE event
END_OF_PAGE no USING parameter
Not available for hierarchical-sequential lists.
Information output at the end of a page. This is only called for printing.
TOP_OF_COVERPAGE no USING parameter
The selection information and list status are output together (if they exist) on a separate page by default. See also the documentation of the parameters:
IS_PRINT-NO_COVERPAGE
IS_PRINT-NO_PRINT_SELINFOS
IS_PRINT-NO_PRINT_LISTINFOS
IS_LAYOUT-GET_SELINFOS
The user can format the header area of the 'cover page' himself or herself by specifying a Callback routine for this event.
END_OF_COVERPAGE no USING parameter
Analogously to TOP_OF_COVERPAGE the user can add other information to the information output by ALV (selection information, list status) at this event.
FOREIGN_TOP_OF_PAGE no USING parameter
The Top-of-page event is always processed in ALV and is only passed to the caller via the Callback mechanism. This is still the case if the caller, e.g. by a user action, processes a branch list which was not formatted by ALV (e.g. a popup with additional information about the list record selected and displayed by ALV).
In this case, top-of-page cannot be formatted by ALV analogously to the basic list, it must be handled completely by the caller. The event top-of-page still occurs in ALV. When ALV notices a top-of-page which was not caused by an ALV output, the form routine in FOREIGN_TOP_OF_PAGE is called.
FOREIGN_END_OF_PAGE no USING parameter
The event end-of-page is always processed in ALV and only passed to the caller via callback. This is still the case, e.g. when the caller processes a details list which was not formatted by ALV (e.g. a popup with further information about selected list records which were displayed by ALV).
In this case, end-of-page cannot be formatted by ALV analogously to the basic list, it must be handled completely by the caller. The event end-of-page still occurs in ALV. When ALV notices an end-of-page that was not caused by an ALV output, the form routine in FOREIGN_END_OF_PAGE is called.
BEFORE_LINE_OUTPUT USING RS_LINEINFO TYPE SLIS_LINEINFO
Output information before each output line. Should only be used in justified cases because it costs a lot of performance.
AFTER_LINE_OUTPUT USING RS_LINEINFO TYPE SLIS_LINEINFO
Output information after each output line. Should only be used in justified cases because it costs a lot of performance.
Internal use only
LIST_MODIFY USING R_TABNAME TYPE SLIS_TABNAME
R_INDEX LIKE SY-TABIX
R_INDEX_ITEM LIKE SY-TABIX
R_INDEX_SUM LIKE SY-TABIX
IT_EVENTS-FORM
Name of the form routine which should be called in the calling program at the event.


Мож есть примерчик с его использованием?


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

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Тщательнее нада :-)))

function reuse_alv_events_get.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_LIST_TYPE) TYPE SLIS_LIST_TYPE DEFAULT 0
*" EXPORTING
*" VALUE(ET_EVENTS) TYPE SLIS_T_EVENT
*" EXCEPTIONS
*" LIST_TYPE_WRONG
*"----------------------------------------------------------------------
data: l_event type slis_alv_event.
*
clear et_events[].
*
clear l_event.
l_event-name = slis_ev_caller_exit_at_start.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_user_command.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_top_of_page.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_top_of_coverpage.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_end_of_coverpage.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_foreign_top_of_page.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_foreign_end_of_page.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_pf_status_set.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_list_modify.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_top_of_list.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_end_of_page.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_end_of_list.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_after_line_output.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_before_line_output.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_reprep_sel_modify.
append l_event to et_events.
*
clear l_event.
l_event-name = slis_ev_subtotal_text.
append l_event to et_events.

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

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


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

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


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

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