SAPфорум.RU
https://sapboard.ru/forum/

Подскажите как создать и добавлять данные в таблицу с вложенной структурой?
https://sapboard.ru/forum/viewtopic.php?f=13&t=98976
Страница 1 из 1

Автор:  AlexU123 [ Чт, сен 03 2020, 12:19 ]
Заголовок сообщения:  Подскажите как создать и добавлять данные в таблицу с вложенной структурой?

Подскажите как создать и добавлять данные в таблицу с вложенной структурой?
Идея следующая к одному ключю RBUKRS в deep Таблице gt_pivot надо добавить несколько записей
со структурой teil затем к следующему RBUKRS еще несколько записей со структурой teil и так далее

структура teil есть часть сложной структуры ds_pivot:
-----------------------------------------------
Code:
   TYPES: BEGIN OF ts_teil,
         RACCT   TYPE  RACCT,
         WAERS   TYPE  WAERS,
         REPVAL  TYPE  BSPL_REPVAL,
      END   OF ts_teil.

types tab_teil type standard table of ts_teil.

data: BEGIN OF ds_pivot,
         RBUKRS  TYPE BUKRS,
         teil   TYPE  tab_teil,
END   OF ds_pivot.


-----------------------------------------------------------------------------------
для какого то определенного RBUKRS = 600 заполняем из данных gt_data часть сложной структуры, те получаем таблицу в структуре
(типизирвание gt_data не преводил чтобы не засорять картину)

Code:
loop at gt_data INTO gs_data  where RBUKRS = '600'.
     ds_pivot-RBUKRS = '600'
     gs_teil-RACCT  = gs_data-RACCT.
     gs_teil-WAERS  = gs_data-waers.
     gs_teil-REPVAL = gs_data-REPVAL.   
    APPEND gs_teil to ds_pivot-teil .
   ds_pivot-rbukrs = gs_data-rbukrs.
endloop

-----------------------------------------------------------------------------------------

Далее синтакстически не корректно. только попытка реализовать желаемое, но не знаю как.

Code:
TYPES: BEGIN OF ts_pivot,
        RBUKRS  TYPE BUKRS,
         teil   TYPE  ts_teil,
END   OF ts_pivot.

INSERT ds_pivot INTO TABLE gt_pivot.


Хочу добавлять записи в некую таблицу gt_pivot
для нескольких RBUKRS для каждого из которых есть набор данных в структуре-таблице ds_pivot.
Как сделать такую конструкцию?

Автор:  kernel [ Пт, сен 04 2020, 07:33 ]
Заголовок сообщения:  Re: Подскажите как создать и добавлять данные в таблицу с вложенной структурой?

А что именно не корректно? У меня компилятор не ругается на этот код.

Автор:  AlexU123 [ Вс, сен 06 2020, 00:41 ]
Заголовок сообщения:  Re: Подскажите как создать и добавлять данные в таблицу с вложенной структурой?

kernel написал(а):
А что именно не корректно? У меня компилятор не ругается на этот код.



на последную строчку кода не ругается? у меня вылетает ошибка. завтра напишу какая именно
до последней строчки все ОК. но вся соль именно в ней. как типизировать таблицу под вложенную в нее структуру и как правильно добавлять в нее записи?
чтобы в конечном итоге получалось что на каждый KEY = RBUKRS приходится еще от 0 до n записей с несколькими полями. когда в Debugger видишь такую таблицу то после клика на ее колонку со вложенной структурой открывается внутренняя таблица для активного KEY с основной таблицы. у меня возникла первая необходимость заполнения такой таблицы. но не могу пока понять как это делать. в самом коде SAP таких internal table можно встретить великое множество. например в известном репортре ORDER_READ

Автор:  LKU [ Вс, сен 06 2020, 17:47 ]
Заголовок сообщения:  Re: Подскажите как создать и добавлять данные в таблицу с вложенной структурой?

Вроде у вас не хватает объявления:
Code:
data: gt_pivot type table of ts_pivot.

И второй момент: насколько помню, использовать insert в том виде, как вы написали, можно только если таблица объявлена как сортированная (тогда система понимает на какое место вставить строку).
Если же таблица не сортированная, то надо использовать либо append, либо для insert явно указывать номер строки, куда хотите вставить (insert <> into table <> index <> ).

Автор:  Удав [ Вт, сен 08 2020, 08:35 ]
Заголовок сообщения:  Re: Подскажите как создать и добавлять данные в таблицу с вложенной структурой?

LKU написал:
насколько помню, использовать insert в том виде, как вы написали, можно только если таблица объявлена как сортированная (тогда система понимает на какое место вставить строку).
Если же таблица не сортированная, то надо использовать либо append, либо для insert явно указывать номер строки, куда хотите вставить (insert <> into table <> index <> ).

INSERT .. INTO TABLE с несортированными таблицами работает как APPEND.
Дополнение ..INDEX используется без TABLE: INSERT .. INTO .. INDEX

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/