Текущее время: Вт, июл 29 2025, 21:25

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Ср, янв 07 2009, 18:01 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Добрый день!

Использую алв_грид в контейнере на рисованом экране и вызываю через set_table_for_first_display. Нужно в зависимости от параметров менять содержимое грида, т.е. в одном случае в нем отображаются данные одной внутренней таблицы одной структуры, потом другой совершенно другой структуры. field_catalogи меняю, вот только как обновить грид с новыми параметрами (таблицы и каталога)? Заранее спасибо!

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Ср, янв 07 2009, 19:42 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:50
Сообщения: 134
Откуда: UA->DE
Пол: Женский
CALL METHOD p_alv->refresh_table_display


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 11:42 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Это помогает только обновить данные в таблице, а структура столбцов остается та же.

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 11:46 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
VID написал:
Это помогает только обновить данные в таблице, а структура столбцов остается та же.

В зависимости от каких параметров у Вас происходит замена содержимого грида? Если у Вас это навешано на какое-то событие, то по этому событию полностью сносите весь грид и создавайте заново с новым каталогом полей и тд.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 12:03 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Полностью убивать это в смысле сначала Free, потом Create object и set_table_for_first_display?

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 12:05 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
VID написал:
Полностью убивать это в смысле сначала Free, потом Create object и set_table_for_first_display?

да это FREE, потом refresh вашего филд каталога, потом по новой создание объекта, каталога и set_table_for_first_display.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 12:07 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
ок, будем пробовать. спасибо!

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 13:37 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Вы чего такое выдумываете? :shock:
Используйте стандартные связки методов: get_frontend_fieldcatalog, set_frontend_fieldcatalog и refresh_table_display.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 14:41 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
в принципе получилось через пересоздание, но это тоже интересно, спасибо!

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 14:44 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
VID написал:
в принципе получилось через пересоздание, но это тоже интересно, спасибо!

Лучше сделать как посоветовал John Doe, это более красивый способ, я просто его не знал.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Чт, янв 08 2009, 15:12 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Попробовал как советует Джон, но так у меня получилось только задать новый каталог полей. Но дело в том, что нужно еще и другую таблицу при этом отображать. refresh_table_dispay обновляет только содержимое таблицы, которую передавали при первом вызове алв.

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Пн, янв 12 2009, 13:01 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 13:40
Сообщения: 25
Пол: Мужской
Приветствую.
А если попробовать задавать имя таблицы динамически ?
Типа такого:
Code:
     
        tab_name = 'MY_TAB'.
        assign (tab_name) to <tb_name>.
         CALL METHOD g_GRID2->SET_TABLE_FOR_FIRST_DISPLAY
         EXPORTING
                   is_layout            = gs_layout2
                   IT_TOOLBAR_EXCLUDING = tool_funct
         CHANGING
                   IT_SORT              = IT_SORT[]
                   IT_OUTTAB        = <tb_name>
                   it_fieldcatalog  = it_fieldcat_grid2.

_________________
Наше Вам, с кисточкой....


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Пн, янв 12 2009, 17:05 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Дело в том, что нужно сделать смену таблиц уже после set_table_for_first_display. А многократный вызов этого метода ни к чему не приводит.

_________________
Вежливость - лучшее оружие чайника :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Вт, янв 13 2009, 12:33 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Все должно работать. Вот пример:
Code:
DATA: itab TYPE TABLE OF sflight,
      outtab TYPE TABLE OF sflight,
      wa TYPE sflight.

DATA: cont TYPE REF TO cl_gui_custom_container,
      grid TYPE REF TO cl_gui_alv_grid,
      fcat TYPE lvc_t_fcat,
      curr_fcat TYPE lvc_t_fcat,
      hcat TYPE lvc_s_fcat.

DATA: change_flag.

START-OF-SELECTION.
  SELECT * FROM sflight INTO TABLE itab UP TO 100 ROWS.

  CREATE OBJECT: cont  EXPORTING
                         container_name = 'XCONT'
                         repid          = sy-cprog
                         dynnr          = '0100',
                 grid  EXPORTING
                         i_parent = cont.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name = 'SFLIGHT'
    CHANGING
      ct_fieldcat      = fcat.

  curr_fcat = fcat.
  outtab = itab.

  CALL METHOD grid->set_table_for_first_display
    CHANGING
      it_outtab       = outtab
      it_fieldcatalog = curr_fcat.

  CALL SCREEN 100.

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'MAIN'.

  curr_fcat = fcat.
  outtab = itab.
  IF change_flag IS NOT INITIAL.
    DELETE curr_fcat WHERE fieldname CP '*SEAT*'.
    DELETE outtab WHERE carrid NE 'AA'.
  ENDIF.

  CALL METHOD grid->set_frontend_fieldcatalog
    EXPORTING
      it_fieldcatalog = curr_fcat.

  CALL METHOD grid->refresh_table_display.

ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE sy-ucomm.
    WHEN 'BACK'.
      LEAVE PROGRAM.
    WHEN 'CHANGE'.
      IF change_flag IS INITIAL.
        change_flag = 'X'.
      ELSE.
        CLEAR change_flag.
      ENDIF.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отображение 2-3 таблиц в одном АЛВ
СообщениеДобавлено: Вт, янв 13 2009, 12:54 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Вы в данном примере передаете в грид только одну таблицу - outtab. В моем случае это несколько внутренних таблиц со своим набором данных, которые в зависимости от условий отображаются в гриде. Т.е. outtab1, outtab2, outtab3 .... И сделать это все через 1 внутреннюю таблицу может конечно и реально, но не оправдано по затратам сил и времени. Все работает через free и создание заново грида. Но про grid->set_frontend_fieldcatalog я не знал, будет полезно на будущее. Всем спасибо за помощь!

_________________
Вежливость - лучшее оружие чайника :-)


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

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


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

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


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

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