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

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


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

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


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

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