Текущее время: Вс, июл 27 2025, 18:24

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Динамическая структура
СообщениеДобавлено: Пт, апр 08 2011, 10:40 
Начинающий
Начинающий

Зарегистрирован:
Чт, июл 29 2010, 14:29
Сообщения: 17
Добрый день
Подскажите, пожалуйста, как можно перенести строку динамической таблицы в обычную символьную переменную?
Code:
LOOP AT <FS_DTABLE> ASSIGNING <FS_DROWS>.
...
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Пт, апр 08 2011, 11:18 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ketsalkoatl2 написал(а):
Добрый день
Подскажите, пожалуйста, как можно перенести строку динамической таблицы в обычную символьную переменную?
Code:
LOOP AT <FS_DTABLE> ASSIGNING <FS_DROWS>.
...
ENDLOOP.

Зависит от того результата, который вы хотите получить и прочего.
А в чём проблема просто присвоить STR = <FS_DROWS>. ?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Пт, апр 08 2011, 11:30 
Начинающий
Начинающий

Зарегистрирован:
Чт, июл 29 2010, 14:29
Сообщения: 17
Хочу получить строку таблицы, для выделения в последствии в ней нужного текста.
Кроме как цикла по всем компонентам строки и последовательном присвоении их в переменную, варианта пока не вижу. Но лишний цикл добавлять хотелось бы лишь в крайнем случае...

При простом присвоении:
Code:
row_one = <fs_drows>.

получаю падение в дамп:

Анализ ошибки
The statement
"MOVE src TO dst"
requires that the operands "dst" and "src" are convertible.
Since this statement is in a Unicode program, the special conversion
rules for Unicode programs apply.
In this case, these rules were violate
d.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Сб, апр 09 2011, 11:28 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
ketsalkoatl2 написал(а):
"MOVE src TO dst"


Может так
Code:
Field-Symbols:
<cDest> Type C.
Assign src To <cDest> Casting.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Чт, апр 14 2011, 14:49 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, окт 06 2009, 13:35
Сообщения: 38
Пол: Женский
Помогите, пожалуйста. Мне нужно получить хешированную таблицу из динамической структуры. Как создать таблицу, после того как получена ссылка на нее?
Code:
DATA: zt_needed_table type ref to data.
FIELD-SYMBOLS:    <f_table> TYPE HASHED TABLE.             
............................................
ASSIGN zt_needed_table->* TO <f_table>.

Пишу так, вылетает в дамп. Где ошибка? C типом zt_needed_table что-то не так?
Спасибо!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Чт, апр 14 2011, 15:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Ley написала:
Помогите, пожалуйста. Мне нужно получить хешированную таблицу из динамической структуры. Как создать таблицу, после того как получена ссылка на нее?
Code:
DATA: zt_needed_table type ref to data.
FIELD-SYMBOLS:    <f_table> TYPE HASHED TABLE.             
............................................
ASSIGN zt_needed_table->* TO <f_table>.

Пишу так, вылетает в дамп. Где ошибка? C типом zt_needed_table что-то не так?
Спасибо!

наверно - не видя дампа сложно сказать.
Уточните что Вам нужно и что Вы делаете?
"Как создать таблицу, после того как получена ссылка на нее?" - создавать таблицу надо до ссылки.
Создать можно несколькими способами.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Чт, апр 14 2011, 15:16 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, окт 06 2009, 13:35
Сообщения: 38
Пол: Женский
Сейчас объясню. У меня ФМ, экспорую ссылку на таблицу zt_needed_table (TYPE REF TO DATA).
Саму ссылку получаю без проблем здесь:
Code:
CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = it_fields
    IMPORTING
      ep_table        = zt_needed_table.


Теперь нужно получить саму ссылочную таблицу <f_table> (хешированную). В случае со стандартной таблицей код
Code:
ASSIGN zt_needed_table->* TO <f_table>
работает отлично. А здесь проблема с типами. <f_table> объявляю как хешированную, и дамп кричит что не могу я из ссылки на стандартную таблицу получить хешированную. Логично. Только я не знаю ка тогда объявить zt_needed_table, чтобы типы совпали в итоге при ASSIGN. Подскажите, пожалуйста!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Чт, апр 14 2011, 15:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
А кто вам сказал, что create_dynamic_table создает хешированные таблицы? :shock:
Code:
    con_begin(60) type c value
                 'DATA: BEGIN OF LT_GENTAB OCCURS 0.',
    con_style(60) type c value 'DATA: XYZSTYLEZYX TYPE LVC_T_STYL.',

Объявите <fs_table> как обычную таблицу. Тогда все получится ;)
А в хешированную таблицу просто добавляйте записи из <fs_table>.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Чт, апр 14 2011, 15:36 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, окт 06 2009, 13:35
Сообщения: 38
Пол: Женский
Удав написал(а):
А кто вам сказал, что create_dynamic_table создает хешированные таблицы? :shock:


create_dynamic_table мне ссылку дает, а не таблицу.
Хех..попробую, спасибо!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Чт, апр 14 2011, 15:42 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Вт, окт 06 2009, 13:35
Сообщения: 38
Пол: Женский
Удав написал(а):
Объявите <fs_table> как обычную таблицу. Тогда все получится ;)
А в хешированную таблицу просто добавляйте записи из <fs_table>.


Хотя нет...как я буду в нее записи добавлять, она ж динамическая , мне со структурой определиться надо сначала. create_dynamic_table по-любому для нее делать надо ж....


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Чт, апр 14 2011, 15:47 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Используйте RTTI.
cl_abap_tabledescr=>create и CREATE DATA ... TYPE HANDLE ... позволит вам создать нужный тип таблицы без промежуточных прослоек.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Пт, апр 15 2011, 11:04 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
Пономарев Артем написал:
Используйте RTTI.
cl_abap_tabledescr=>create и CREATE DATA ... TYPE HANDLE ... позволит вам создать нужный тип таблицы без промежуточных прослоек.

Вроде все равно нужно создать структуру, а потом уже hashed таблицу. Можно решить
Create Data … Like Hashed Table Of
К примеру так
Code:
Type-Pools:
ABAP.

Data:
tbFldCat   Type LVC_T_FCAT,
tbHKEY     Type ABAP_KEYDESCR_TAB, " Ключевые поля для Hashed Table

tbRef      Type Ref To DATA,
tbHRef     Type Ref To DATA,
oStrucDesc Type Ref To CL_ABAP_STRUCTDESCR,
oTableDesc Type Ref To CL_ABAP_TABLEDESCR,
waStruc    Type Ref To DATA.
Field-Symbols:
  <tbStd>    Type Standard Table,
  <tbResult> Type Hashed Table,    " Итоговая таблица
  <waStruc>  Type ANY.

* Заполнение tbFldCat и tbHKEY
*****

* Стандартная таблица
CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE(
  Exporting
   it_fieldcatalog = tbFldCat
   I_LENGTH_IN_BYTE = ABAP_TRUE
  Importing
   ep_table        = tbRef ).
Assign tbRef->* To <tbStd>.

* Получения handle-а
oTableDesc ?= CL_ABAP_TABLEDESCR=>DESCRIBE_BY_DATA( <tbStd> ).
oStrucDesc ?= oTableDesc->GET_TABLE_LINE_TYPE( ).

Create Data waStruc Type Handle oStrucDesc.
Assign waStruc->* To <waStruc>.

* Создаем хэшированную таблицу через Like
Create Data tbHRef Like Hashed Table Of <waStruc>
  With Unique Key (tbHKEY). " Initial Size не обязательно.
Assign tbHRef->* To <tbResult>.


Есть ограничения на количество создаваемых таблиц и типы полей. Писал об этом тут


Последний раз редактировалось matik Пт, апр 15 2011, 13:59, всего редактировалось 1 раз.

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

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

Вместо CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE и заполнения tbFldCat можно заполнить таблицу типа abap_component_tab, получить из нее описание с помощью cl_abap_structdescr=>create и потом вызвать cl_abap_tabledescr=>create с нужными параметрами.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Пт, апр 15 2011, 11:40 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
Пономарев Артем написал:
Зачем? У метода cl_abap_tabledescr=>create есть вне необходимые параметры для создания hash таблицы.

Вместо CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE и заполнения tbFldCat можно заполнить таблицу типа abap_component_tab, получить из нее описание с помощью cl_abap_structdescr=>create и потом вызвать cl_abap_tabledescr=>create с нужными параметрами.


Абсолютно согласен. В новых системах лучше делать напрямую. А если в старой сиcтеме просто нету метода cl_abap_tabledescr=>create ?
:)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Динамическая структура
СообщениеДобавлено: Пт, апр 15 2011, 11:51 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
Может и есть, какой-то ФМ в старых системах для создания структур, вместо CL_ABAP_STRUCTDESCR=> CREATE. Не знаю. Просто чтобы не создавать свой, можно использовать cl_alv_table_create=>create_dynamic_table.
А так конечно эффективнее и правильней kernel реализацию.


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

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


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

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


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

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