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

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


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

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


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

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