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

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


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

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


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

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