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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Динамические структуры
СообщениеДобавлено: Вт, мар 22 2005, 10:56 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, мар 10 2005, 10:21
Сообщения: 198
Пол: Мужской
Вот встал вопрос, необходимо создать отчет/ALV Grid, в который в зависимости от данных селективного экрана динамическое число столбцов, т.е. отчет за 2 месяца - 2 столбца, за год - 12 столбцов и т.д. Конечное число стобцов неизвестно. Как проще организовать структуру для хранения таких данных?

_________________
Если программа заработала с первого раза, значит она написана принципиально неверно!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 22 2005, 11:05 
Гость
ну самое простое это создать структуру с максимально возможным числом столбцов :)


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 22 2005, 11:11 
Модератор
Модератор

Зарегистрирован:
Пт, ноя 12 2004, 11:40
Сообщения: 542
Откуда: Москва
Пол: Мужской
В зависмости от того скока месяцев передали формировать филд каталог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 22 2005, 11:58 
Гость
Ich Will написал:
В зависмости от того скока месяцев передали формировать филд каталог


наиболее верный вариант


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

Зарегистрирован:
Чт, мар 10 2005, 10:21
Сообщения: 198
Пол: Мужской
Ich Will написал:
В зависмости от того скока месяцев передали формировать филд каталог


Филд каталог формировать не проблема, но вот вот как прописать, откуда брать данные для столбцов ALV Grid'а? В field_cat все равно надо указывать поле структуры :(

_________________
Если программа заработала с первого раза, значит она написана принципиально неверно!


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

Зарегистрирован:
Чт, мар 10 2005, 10:21
Сообщения: 198
Пол: Мужской
EHOT написал(а):
ну самое простое это создать структуру с максимально возможным числом столбцов :)


Это чего, описать полей этак 120 что-ли? :)
А красивее как-то можно?

_________________
Если программа заработала с первого раза, значит она написана принципиально неверно!


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

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Igor Moskvin написал:
Это чего, описать полей этак 120 что-ли? :)
А красивее как-то можно?


Если действительно количество стобцов неизвестно, то можно попробовать (сам я не пробовал) использовать CL_ABAP_STRUCTDESCR (как раз я тему поднимал недавно), и с помощью него формировать динамический тип.
Хотя, конечно, это довольно извратно получится.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Последний раз редактировалось 111 Вт, мар 22 2005, 12:49, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 22 2005, 12:49 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
Igor Moskvin написал:
EHOT написал(а):
ну самое простое это создать структуру с максимально возможным числом столбцов :)


Это чего, описать полей этак 120 что-ли? :)
А красивее как-то можно?

можно в лупе инкрементить к-нить переменную и составлять из неё имя поля.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 22 2005, 12:56 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Igor Moskvin написал:
EHOT написал(а):
ну самое простое это создать структуру с максимально возможным числом столбцов :)


Это чего, описать полей этак 120 что-ли? :)
А красивее как-то можно?


Если поглядеть на САПовские таблицы с оборотами, то увидишь, что они так и поступают. Так сказать, местный колорит :)

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 22 2005, 13:35 
Гость
Динамическое создание внутренних таблиц:
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = lt_fieldcat
IMPORTING ep_table = gt_outtab.
Code:
*
* Копирайт не мой, благодарности автору отдельно :) !!! Но для примера более чем достаточно:
*
REPORT ZZZ1 .
data: lt_fieldcat type LVC_T_FCAT,
      gt_outtab   type ref to data,
      gf_line     type ref to data,
      fcat_line   like line of lt_fieldcat
.
field-symbols: <tab> type table,
               <line>,
               <field>.

refresh lt_fieldcat.

clear fcat_line.
fcat_line-FIELDNAME = 'FIRST'.
fcat_line-OUTPUTLEN = 10.
fcat_line-INTTYPE = 'C'.
append fcat_line to lt_fieldcat.

clear fcat_line.
fcat_line-FIELDNAME = 'SECOND'.
fcat_line-OUTPUTLEN = 20.
fcat_line-INTTYPE = 'C'.
append fcat_line to lt_fieldcat.

CALL METHOD cl_alv_table_create=>create_dynamic_table
           EXPORTING it_fieldcatalog = lt_fieldcat
           IMPORTING ep_table        = gt_outtab.

ASSIGN gt_outtab->* TO <tab>.
create data gf_line like line of <tab>.
ASSIGN gf_line->* TO <line>.

assign component 'FIRST'  of structure <line> to <field>.
<field> = 'ОДЫН'.
assign component 'SECOND' of structure <line> to <field>.
<field> = 'ДВА'.
append <line> to <tab>.

assign component 'FIRST'  of structure <line> to <field>.
<field> = 'ЫЩО ОДЫН'.
assign component 'SECOND' of structure <line> to <field>.
<field> = 'ИЩО ДВА'.
append <line> to <tab>.

loop at <tab> assigning <line>.
  write / <line>.
endloop.


Последний раз редактировалось Stenj_90 Вт, мар 22 2005, 13:57, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 22 2005, 13:44 
Гость
TYPE-POOLS
: slis
.
DATA
: longrow(1023) TYPE c
, sum TYPE dmbtr
, l TYPE i
, i TYPE i
, n(3) TYPE n
, fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE
, fnam TYPE slis_fieldname
.
FIELD-SYMBOLS
: <f> TYPE dmbtr
.
DESCRIBE FIELD sum LENGTH l.
DO 12 TIMES.
i = ( sy-index - 1 ) * l.
sum = sy-index.
n = sy-index.
ASSIGN longrow+i(l) TO <f> CASTING.
<f> = sum.
CLEAR fcat.
CONCATENATE 'SUM' n INTO fnam.
fcat-fieldname = fnam.
* Как нибудь заполнить fcat
APPEND fcat.
ENDDO.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 22 2005, 14:05 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Stenj_90 написал(а):
Динамическое создание внутренних таблиц:
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = lt_fieldcat
IMPORTING ep_table = gt_outtab.


А кто-нибудь смотрел, как реализован этот шедевр?
Через generate subroutine pool :-) .

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 23 2005, 07:10 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, мар 10 2005, 10:21
Сообщения: 198
Пол: Мужской
Забавно, сейчас что-нидь попробую :idea:

_________________
Если программа заработала с первого раза, значит она написана принципиально неверно!


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

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


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

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


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

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