Текущее время: Пт, июл 25 2025, 05:56

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


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

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


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

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