Текущее время: Сб, июл 26 2025, 04:18

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 07:02 
Специалист
Специалист

Зарегистрирован:
Вт, фев 08 2011, 06:51
Сообщения: 109
Как задать динамическую струтуру таблици? То есть что при выполнение программы, пип переменной GT_TABL переопределялся.
что то типо такого
DATA GT_TABL TYPE TABLE OF <имя таблици>.

Прбывал использовать следующий метод:

data NAME_TABL(25).
data: ref_table_des TYPE REF TO CL_ABAP_STRUCTDESCR,
IDETAILS TYPE ABAP_COMPDESCR_TAB,
xdetails TYPE abap_compdescr,
xfc Type LVC_S_FCAT,
ifc Type table of LVC_S_FCAT,
dy_table Type Ref To DATA,
dy_line type Ref To DATA.
field-symbols <dyn_table> type ANY TABLE.
field-symbols <dyn_wa> type ANY.


ref_table_des ?=
cl_abap_typedescr=>describe_by_name( NAME_TABL ).
idetails[] = ref_table_des->components[].

loop at idetails into xdetails.
clear xfc.
xfc-fieldname = xdetails-name .
xfc-datatype = xdetails-type_kind.
xfc-inttype = xdetails-type_kind.
xfc-intlen = xdetails-length.
xfc-decimals = xdetails-decimals.
append xfc to ifc.
endloop.

* Create dynamic internal table and assign to FS
call method cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = ifc
IMPORTING
ep_table = dy_table.

assign dy_table->* to <dyn_table>.

* Create dynamic work area and assign to FS
create data dy_line like line of <dyn_table>.
assign dy_line->* to <dyn_wa>.


Тут по сути в <dyn_table> создаёться динамическая структура таблици, но почемуто не каректно. Идёт удвоение длинны поля


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 09:52 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
Как-то не совсем понятно, что должно переопределяться и что удваивается.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 10:14 
Специалист
Специалист

Зарегистрирован:
Вт, фев 08 2011, 06:51
Сообщения: 109
Переопределять структуру таблици.
то есть я копирую данные из таблици во внутреннюю таблицу
SELECT * FROM (NAME_TABL) INTO CORRESPONDING FIELDS OF TABLE <dyn_table>.

получаеться что <dyn_table> генериться автоматом, в зависимости от имени таблици, так и происходит, но в <dyn_table> длинна строк почему то удваиваеться


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 10:34 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
Я, наверно, что-то неправильно делаю, но вышеуказанный кусок кода нормально генерит таблицу и нормально заполняет, без всяких удвоений.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 11:04 
Специалист
Специалист

Зарегистрирован:
Вт, фев 08 2011, 06:51
Сообщения: 109
Ну он нормально заполнят если использовать INTO CORRESPONDING FIELDS OF TABLE в селекте, а ести писать
SELECT * FROM (NAME_TABL) INTO TABLE <dyn_table>. то коряво. И вотладчике будет видно что поля удваиваютсья


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 11:22 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
Как-то странно....
Если создавать динамическую таблицу из NAME_TABL и выборку делать из неё же, то разницы нету, INTO TABLE или же INTO CORRESPONDING FIELDS OF TABLE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 11:55 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Удвоение длины идет после call method cl_alv_table_create=>create_dynamic_table?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 12:03 
Специалист
Специалист

Зарегистрирован:
Вт, фев 08 2011, 06:51
Сообщения: 109
Перед ним.

Вот это блок уже формирует структуру с удвоением

loop at idetails into xdetails.
clear xfc.
xfc-fieldname = xdetails-name .
xfc-datatype = xdetails-type_kind.
xfc-inttype = xdetails-type_kind.
xfc-intlen = xdetails-length.
xfc-decimals = xdetails-decimals.
append xfc to ifc.
endloop.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 12:04 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Вт, фев 08 2011, 12:10 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Понятно. Вот нота по-моему в тему. Note 654306 - ALV grid: Field catalog entry intlen


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Чт, ноя 17 2011, 09:59 
Начинающий
Начинающий

Зарегистрирован:
Пт, янв 16 2009, 21:36
Сообщения: 20
Пол: Мужской
или я чота не понял или...
Code:
DATA: dref TYPE REF TO data.
FIELD-SYMBOLS: <tbl> TYPE any.
CREATE DATA dref TYPE STANDARD TABLE OF ('BKPF').
ASSIGN dref->* TO <tbl>.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Чт, ноя 17 2011, 10:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
siga2 написал:
или я чота не понял или...

Или система не ERP 6.0, а R/3 4.7 или ниже ;)

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как задать динамическую структуру таблици?
СообщениеДобавлено: Чт, ноя 17 2011, 10:21 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Судя по использованию убогого cl_alv_table_create=>create_dynamic_table вместо кошерного cl_abap_tabledescr=>create, Удав прав.
Версия системы 4.7 и ниже.


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

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


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

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


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

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