Текущее время: Пн, июл 14 2025, 21:23

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: создание и заполнение динамической таблички
СообщениеДобавлено: Пт, ноя 28 2008, 11:44 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

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

FIELD-SYMBOLS:
                         <T_TAB>  TYPE any TABLE.
DATA:
          IT_FCAT TYPE LVC_T_FCAT,
          TABLE TYPE REF TO DATA.

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
      IT_FIELDCATALOG = IT_FCAT
    IMPORTING
      EP_TABLE        = TABLE.


  ASSIGN TABLE->* TO <T_TAB>.

после этого у меня область в <T_TAB> то что надо, теперь у меня есть табличка у которой занчение поле и есть название колонки в <T_TAB>, проблема в том что я низнаю как ее(<T_TAB>) заполнить терперь. Мажет кто нибудь сталкивался с этим?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: создание и заполнение динамической таблички
СообщениеДобавлено: Пт, ноя 28 2008, 11:53 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Besa написал:
создал табличку с помощью
Code:

FIELD-SYMBOLS:
                         <T_TAB>  TYPE any TABLE.
DATA:
          IT_FCAT TYPE LVC_T_FCAT,
          TABLE TYPE REF TO DATA.

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
      IT_FIELDCATALOG = IT_FCAT
    IMPORTING
      EP_TABLE        = TABLE.


  ASSIGN TABLE->* TO <T_TAB>.

после этого у меня область в <T_TAB> то что надо, теперь у меня есть табличка у которой занчение поле и есть название колонки в <T_TAB>, проблема в том что я низнаю как ее(<T_TAB>) заполнить терперь. Мажет кто нибудь сталкивался с этим?
Create a Dynamic Internal Table?

_________________
"I have a dream"(c)Martin Luther King, Jr.


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

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
ALEX80, посмотрел Ваш пример, там динамическая табличка
заполняется с помощью select, у меня немного другая ситуация, есть внутр таблица в ней есть поле допустим(zzz и yyy) так вот значение в этом поле (zzz) равно названию колонки в динамической таблице, а значение в yyy это есть значение в поле динамической таблицы.
Извините если не понятно объясняю. [/code]


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
ASSIGN COMPONENT (значние_поля_zzz) OF STRUCTURE строка_созданой_таблицы TO ANY.


Последний раз редактировалось Пономарев Артем Пт, ноя 28 2008, 13:31, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 28 2008, 13:01 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
задам вопрос подругому
есть табличка
счет МВЗ сумма -----названия колонок
1 11 111
2 22 222
3 33 333
4 44 444
надо сделать табличку
счет 11 22 33 44 -- названия колонок
1 111
2 222
3 333
4 444


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 28 2008, 13:19 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Нужно делать, как Артем предложил. Можно пример посмотреть - Разворот столбцов в строки в ALV


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 28 2008, 13:25 
Старший специалист
Старший специалист

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

field-symbols: <ls_fs> type any,
                     <ls_row> type any.

CREATE DATA lr_dref  TYPE (p_tname).

ASSIGN lr_dref->*  TO <ls_row>.

LOOP AT lt_data INTO ls_data.
              lv_i = 1.

                LOOP AT lt_fields INTO ls_fields. "внутренняя таблица с данными по столбцам
                ASSIGN COMPONENT lv_i OF STRUCTURE <ls_row> TO <ls_fs>.
                ADD 1 TO lv_i.

                <ls_fs> = нужное значение.
              ENDLOOP.

              INSERT (p_tname) FROM <ls_row>.
ENDLOOP.


UPDATE: Возможно неправильно вопрос понял...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 28 2008, 13:30 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 28 2008, 13:36 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 20 2008, 10:29
Сообщения: 339
Откуда: Мюнхен
Пол: Мужской
Я если честно могу ошибаться в понимании проблемы. Но для случая, когда имеется таблица, которую надо заполнить, и таблица, которая содержит записи типа "назв.полявтабл - значение", можно поступить так:
1. Предварительно собрать информацию о полях таблицы назначения (типа филдкаталога).
2. Потом проходя по таблице со значениями находить по филдкаталогу соответствие названия поля позиции колонки в таблице и через assign component _i of structure ... заполнять нужное поле.

Если не правильно понял проблему - ну сорри тогда))


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Пара ссылок еще.
Динамическое создание таблицы по внутренней таблице.
Простой пример ASSIGN COMPONENT.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 28 2008, 19:20 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

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

добавил: кстати обнаружил такую вещь, может ну меня опыта маловато и это все знают, я не знал, и решил поделиться:
есть оператор AT END OF, оказывается его можно задавать динамически тоесть
Code:
loop at t_bseg.
// какие то действия
      IF KSTGR = ''.
        MEMORY = 'KOSTL'.
      ELSE.
        MEMORY =  'KOSTL+0(7)'.
      ENDIF.
      AT END OF (MEMORY).
          // какие то действия
     ENDAT.
// какие то действия

+ как вы заметили, не обязательно проверять на концовку всего значения, можно и кусок взять.
Code:
MEMORY =  'KOSTL+0(7)'.

для AT NEW не проверял, но думаю что тоже работать будет.
Может я конечно что то напутал, и в программе под какие то данные сработало как надо, но вроде это все работает.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: создание и заполнение динамической таблички
СообщениеДобавлено: Пн, дек 01 2008, 14:53 
Начинающий
Начинающий

Зарегистрирован:
Пн, дек 01 2008, 14:32
Сообщения: 7
Коллеги! Всем кто интересуется динамическим программированием на АВАРе рекомендую на SDN найти документик ABAP351. От себя могу добавить что после использования CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 36 раз Вас ждут дампы (причину см. код метода :-) Лучше создать структурку в словаре и пользоваться CREATE DATA ref TYPE TABLE OF (struct_name).


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

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Я так понимаю что 36 это максимальное количество колонок при создани и динамической таблички, тогда почему у меня в создалось в 42-я колонками? версия ECC 6.0.


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Besa, это связано совсем с другим.
Не слушайте ivkravchin, для динамических структур данных объектов в словаре не напасешься. 36 же - достаточно большое число.
За техническими подробностями идите в справку к GENERATE SUBROUTINE POOL.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, дек 01 2008, 15:28 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Пономарев Артем написал:
Besa, это связано совсем с другим.
Не слушайте ivkravchin, для динамических структур данных объектов в словаре не напасешься. 36 же - достаточно большое число.
За техническими подробностями идите в справку к GENERATE SUBROUTINE POOL.

Спасибо, извиняюсь за глупость на счет количества колонок :oops:
Понял что это за число 36, теперь все ясно, думаю что этот метод очень даже не плох для создания динамических таблиц.


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

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


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

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


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

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