Age: 38 Joined: 17 Jan 2011 Posts: 3 Location: 176
Posted: Mon Jan 17, 2011 1:36 pm Post subject: Динамические структуры
Добрый день,
прошу помощи с небольшой проблемой кода, над которым бьюсь уже не один день...
Осваивать АБАП начал не давно, поэтому не отрицаю что возможна проблема в обычном упущении элементарных вещей...
Суть вопроса - есть код, который частично был взят как пример с этого форума:
Code:
name_dt TYPE dd02l-tabname,
...
dt_field_catalog TYPE lvc_t_fcat,
...
lt_dtable TYPE REF TO data,
datavalue TYPE REF TO data.
...
FIELD-SYMBOLS: <fs_dtable> TYPE STANDARD TABLE,
<fs_drows> TYPE ANY.
ASSIGN lt_dtable->* TO <fs_dtable>.
CHECK <fs_dtable> IS ASSIGNED.
SELECT *
INTO TABLE <fs_dtable>
FROM (name_dt).
IF <fs_dtable> IS INITIAL.
MESSAGE s398 WITH text-003 name_dt.
STOP.
ENDIF.
CREATE DATA datavalue TYPE (name_dt).
ASSIGN datavalue->* TO <fs_drows>.
CHECK <fs_drows> IS ASSIGNED.
LOOP AT <fs_dtable> ASSIGNING <fs_drows>.
ENDLOOP.
Когда name_dt - таблицы куба, <fs_dtable> в последнем цикле LOOP, сохраняется значение Structure: flat & not charlike. Если же name_dt - обычная таблица, напримет Т100, то <fs_dtable> заполняется компонентами построчно. Все это наблюдаю через отладчик.
Подскажите, пожалуйста, что я упускаю?
Age: 38 Joined: 17 Jan 2011 Posts: 3 Location: 176
Posted: Mon Jan 17, 2011 4:40 pm Post subject:
Для таблиц куба(/BIC/E*, /BIC/D*), в последнем цикле LOOP - AT, для этого FIEID-SIMBOL, значение остается Structure: flat & not charlike. Так как мне нужно работать лишь с некоторыми компонентами этой структуры, при коде:
Code:
ASSIGN COMPONENT 1 OF STRUCTURE <fs_drows> TO <fs_field>.
я падаю с ошибкой:
"The current statement is only defined for character-type data objects."
Хотя для таблиц типа DD02L, T100, созданных вручную таблиц, присвоение нужного компонента проходит успешно.[/quote]
Age: 38 Joined: 17 Jan 2011 Posts: 3 Location: 176
Posted: Mon Jan 17, 2011 7:11 pm Post subject:
Удав wrote:
А создание указателя на данные напрямую не работает?
Code:
DATA: dref TYPE REF TO DATA.
FIELD-SYMBOLS: <fs> TYPE ANY.
" Create object of type SBOOK and attach the field symbol
CREATE DATA dref TYPE sbook.
ASSIGN dref->* TO <fs>.
Помогло
Большое спасибо, буду искать причину того, что мой вариант кода забраковывался. В первом сообщении и способ присвоения, и типы переменных точно такие же, как и в вашем примере...
Но в догонку еще один вопрос - как в этом случае значение этой структуры переложить в текстовую переменную?
Способ, типа
Joined: 23 Jan 2010 Posts: 26 Location: Naberezhnye Chelny
Posted: Tue Jan 18, 2011 11:02 am Post subject:
В справке написано: Depending on the type of processing, the data objects dobj1 dobj2 ... or the row type in the internal table itab and the separator sep must be byte or character type.
Так преобразуйте ссылку в символьный тип или типизируйте изначально.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.