Текущее время: Чт, июл 31 2025, 16:46

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 13:19 
Начинающий
Начинающий

Зарегистрирован:
Вт, авг 25 2009, 12:46
Сообщения: 4
Уважаемые коолеги!

Поставлена задача. Обработать матрицу A(i,j) (умножение на другую матрицу, другой вектор, и вообще все операции предусмотренные алгеброй).
Т.е. как в C++ многомерный массив:

int x = 0; // две переменные для хранения координат игрока
int y = 0;
int map[15][20]; // массив для хранения игровой карты
// инициализация массива
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 20; j++)
{
map[i][j] = i + j;
}
}

Ничего подобного не нашёл в ABAPе. :cry:
ABAPерский опыт пока нулевой. :cry:

Что можно сделать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 13:35 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
А зачем Вам это?
В принципе любая внутренняя таблица в АБАПЕ и есть двумерный массив.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 13:42 
Начинающий
Начинающий

Зарегистрирован:
Пн, янв 19 2009, 16:39
Сообщения: 10
Пол: Мужской
Besa написал:
А зачем Вам это?
В принципе любая внутренняя таблица в АБАПЕ и есть двумерный массив.

Все-таки таблицы наиболее удобны в качестве одномерного массива.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 13:45 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
user123 написал:
Besa написал:
А зачем Вам это?
В принципе любая внутренняя таблица в АБАПЕ и есть двумерный массив.

Все-таки таблицы наиболее удобны в качестве одномерного массива.

Как это в качестве одномерного? Одномерный массив это структура с абапе.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 13:48 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 03 2008, 17:20
Сообщения: 162
Besa написал:
user123 написал:
Все-таки таблицы наиболее удобны в качестве одномерного массива.

Как это в качестве одномерного? Одномерный массив это структура с абапе.

Это с каких таких пор структура считается массивом? :shock: Вы можете динамически поля добавлять и удалять?

_________________
В SAPе есть всё, просто вы чего-то не нашли.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 13:53 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
А с чего Вы взяли что массив это обязательно динамическое добавление/удаление полей?
Во вторых, думаю что можно динамически создать структуру какую Вам надо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 13:54 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ivan_okunev написал(а):
Уважаемые коолеги!

Поставлена задача. Обработать матрицу A(i,j) (умножение на другую матрицу, другой вектор, и вообще все операции предусмотренные алгеброй).
Т.е. как в C++ многомерный массив:

int x = 0; // две переменные для хранения координат игрока
int y = 0;
int map[15][20]; // массив для хранения игровой карты
// инициализация массива
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 20; j++)
{
map[i][j] = i + j;
}
}

Ничего подобного не нашёл в ABAPе. :cry:
Что можно сделать?
Всё тоже самое. Вы плохо искали. Внимательно изучайте разделы, посвящённые внутренним таблицам. Если хочется красоты и простоты синтаксиса - делайте обёртки на классах.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 13:57 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
SYS написал(а):
Это с каких таких пор структура считается массивом? :shock: Вы можете динамически поля добавлять и удалять?

Про динамические массивы в исходной задаче ничего не было сказано.

Code:
int map[15][20]

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

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 14:01 
Начинающий
Начинающий

Зарегистрирован:
Вт, авг 25 2009, 12:46
Сообщения: 4
Большое спасибо, что откликнулись.

Зачем? А вот зачем. Чтобы я не обращался к элементу строки (столбцу матрицы) A-column_1 (и так далее A-column_n), а мог использовать приведённый в предыдущем сообщении (очень понятный и лёгкий) метод:
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 20; j++)
{
A[i][j] = i + j;
}
}

А без этого мне придётся номер строки матрицы указывать через SY-TABIX (??? :cry: ), а уж как в цикле указать column_'j' я даже представить не могу. :cry:

Что делать? :cry:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 14:06 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
ivan_okunev написал(а):
Большое спасибо, что откликнулись.

Зачем? А вот зачем. Чтобы я не обращался к элементу строки (столбцу матрицы) A-column_1 (и так далее A-column_n), а мог использовать приведённый в предыдущем сообщении (очень понятный и лёгкий) метод:
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 20; j++)
{
A[i][j] = i + j;
}
}

А без этого мне придётся номер строки матрицы указывать через SY-TABIX (??? :cry: ), а уж как в цикле указать column_'j' я даже представить не могу. :cry:

Что делать? :cry:

Объясните цель задачи, что Вам нужно сделать, перебрать таблицу, найти какой элемент, отсортировать или что?
У меня опыта не так уж и много, но таких задач я не встречал, с динамикой знаком, название колонок тоже можно найти, на форуме много материала.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 14:07 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, апр 07 2009, 10:23
Сообщения: 51
Пол: Мужской
ivan_okunev написал(а):
а уж как в цикле указать column_'j' я даже представить не могу. :cry:

ASSIGN COMPONENT idx OF STRUCTURE struc TO <fs>.
где idx может быть как именем, так и номером компонента в структуре...

не так коротко, как прямо по цифирьке, но всё же вариант...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 14:09 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ivan_okunev написал(а):
Большое спасибо, что откликнулись.

Зачем? А вот зачем. Чтобы я не обращался к элементу строки (столбцу матрицы) A-column_1 (и так далее A-column_n), а мог использовать приведённый в предыдущем сообщении (очень понятный и лёгкий) метод:
for (int i = 0; i < 15; i++)
{
for (int j = 0; j < 20; j++)
{
A[i][j] = i + j;
}
}

А без этого мне придётся номер строки матрицы указывать через SY-TABIX (??? :cry: ),
Либо ABAP и SY-TABIX , либо A[i][j] и С++, Java, C#, ...
Цитата:
а уж как в цикле указать column_'j' я даже представить не могу. :cry:
А что тут представлять - всё так-же, как и в С++ с A[][] - массив массивов

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 14:12 
Начинающий
Начинающий

Зарегистрирован:
Вт, авг 25 2009, 12:46
Сообщения: 4
[/quote]Всё тоже самое. Вы плохо искали. Внимательно изучайте разделы, посвящённые внутренним таблицам. Если хочется красоты и простоты синтаксиса - делайте обёртки на классах.[/quote]

Прошу прощения. Специально сначала не хотел усложнять задачу, но раз уж разговор зашёл.

Действительно, я не знаю размерность матрицы, до выполнения определённых вычислений.
ABAPовские внутренние таблицы позволяют увеличивать число строк матрицы до скока( :) ) угодно. А как же быть со столбцами? :(

А что такое "обёртки на классах"?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 14:22 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ivan_okunev написал(а):

Прошу прощения. Специально сначала не хотел усложнять задачу, но раз уж разговор зашёл.

Действительно, я не знаю размерность матрицы, до выполнения определённых вычислений.
ABAPовские внутренние таблицы позволяют увеличивать число строк матрицы до скока( :) ) угодно. А как же быть со столбцами? :(


А что такое столбец? Точнее матрица? Грубо и не чисто математически - таблица из столбцов, где столбец - таблица из значений.
ABAP вполне себе позволяет хранить в структурах в качестве отдельных полей вн.табицы. А уж как из структуры получить вн. таблицу Вам должно быть уже известно.
Цитата:
А что такое "обёртки на классах"?

"обёртки" - это чтобы не писать read table table1 index i. read table table2 index j, а написать, например, table->get( i = i i = j );

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Многомерные массивы в ABAPе
СообщениеДобавлено: Вт, авг 25 2009, 14:27 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, окт 03 2008, 17:20
Сообщения: 162
Besa написал:
А с чего Вы взяли что массив это обязательно динамическое добавление/удаление полей?
Во вторых, думаю что можно динамически создать структуру какую Вам надо.

Может вот это подсказало, что массив динамический.
ivan_okunev написал(а):
Уважаемые коолеги!

Поставлена задача. Обработать матрицу A(i,j) (умножение на другую матрицу, другой вектор, и вообще все операции предусмотренные алгеброй).

Или Вы предлагаете создавать N структур для работы с матрицами различных размерностей (зависит от кол-ва столбцов)?

to ivan_okunev
Используйте одномерный массив, т.е. таблицу из одного поля в качестве двумерного массива. Если у Вас будет матрица размерности MxN (M - кол-во строк, N - кол-во столбцов), то и строк будет столько же - M*N. Доступ к элементу A[i][j] будет выглядеть считываением i*N + j -го элемента.

_________________
В SAPе есть всё, просто вы чего-то не нашли.


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

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


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

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


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

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