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

Код для выборки из внутренних таблиц
https://sapboard.ru/forum/viewtopic.php?f=13&t=100140
Страница 1 из 1

Автор:  saphir [ Ср, июл 27 2022, 11:16 ]
Заголовок сообщения:  Код для выборки из внутренних таблиц  Тема решена

Добрый день, при запуске программа ругается на то, что таблица maravtable не задекларирована. Хотя написано что maravtable TYPE TABLE OF marastr.
Подскажите, пожалуйста, что не так ? Как сделать этот простой селект.

Спасибо
Code:
TYPES:  BEGIN OF marastr,
mandt(3)      TYPE I,
mantr(10)     TYPE I,
mtart(30)     TYPE C,
END OF marastr.

TYPES: BEGIN OF marainstr,
mandt_i(5)  TYPE I,
mantr_i     TYPE I,
mtart_char  TYPE C,
END OF   marainstr.

TYPES: BEGIN OF ztabl,
  id TYPE I,
  text TYPE C,
  num  TYPE P,
END OF ztabl.

DATA: marav TYPE marastr,
      maravtable TYPE TABLE OF marastr,
      maravtable1 TYPE TABLE OF marainstr,
      ztable TYPE TABLE OF ztabl.

marav-mandt = 500.
marav-mantr = 123456789.
marav-mtart(30) = 'ROHRMATERIALLE'.

write : marav-mandt , marav-mantr , marav-mtart, 'Присвоили значения'.
INSERT marav INTO TABLE maravtable.
SELECT * FROM maravtable ORDER BY mandt.
ENDSELECT.

Автор:  Кодер [ Ср, июл 27 2022, 11:25 ]
Заголовок сообщения:  Re: Ошибка в простом коде

Вы объявили внутр. таблицу maravtable . Внутр.таблица это почти как массив. Т.е. этот объект не в БД, а вашей программе существует. Выбирать с помощью SELECT из нее нельзя (в новых версиях можно, но лучше пока вам считать, что нельзя)

Автор:  saphir [ Ср, июл 27 2022, 11:40 ]
Заголовок сообщения:  Re: Ошибка в простом коде

Спасибо за быстрый ответ. Я учусь. Подскажите, пожалуйста, я правильно понимаю, что с внутренними таблицами нужно работать через READ INTO и т.д., а SQL для таблиц из БД?

Автор:  Кодер [ Ср, июл 27 2022, 15:00 ]
Заголовок сообщения:  Re: Код для выборки из внутренних таблиц

Для чтения данных из внут. таблиц используются
read table - чтение одной записи по ключу или индексу
loop at - перебор строк внут.таблы в цикле, при этом в Where можно задать условие, которое ограничит перебираемые записи
INTO в обоих случаях можно использовать, но лучше не надо, т.к. в этом случае нужна переменная и время на перекладывание строки из внут. таблы в эту переменную. Лучше использовать ASSIGNING (в field-symbol) или REFERENCE INTO (привязка строки таблы к переменной типа ссылка).

Все информацию по оператору можно посмотреть во встроенном хелпе. Что бы его посмотреть, надо встать на интересующую конструкцию и нажать F1. Обычно в статье будет и ссылка на пример использования конструкции

Хелп так же доступен и в инете. Например, раздел про обработку внутр таблиц. Нужно только учитывать версию системы. Синтаксис и возможности языка могут сильно меняться от версии к версии

Автор:  saphir [ Ср, июл 27 2022, 15:46 ]
Заголовок сообщения:  Re: Код для выборки из внутренних таблиц

Спасибо большое за ответ

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