Текущее время: Ср, июл 30 2025, 21:40

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


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

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


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

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