Текущее время: Чт, июл 24 2025, 06:32

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: ФМ на загрузку и локальные таблицы
СообщениеДобавлено: Сб, июн 07 2008, 14:17 
Специалист
Специалист

Зарегистрирован:
Чт, май 31 2007, 15:46
Сообщения: 119
в общем смотрел я ФМ RSAX_BIW_GET_DATA_SIMPLE и иже с ним, но так и не понял немножко.
ситуация следующая. есть у меня задача собрать данные из разных таблиц (банк и касса). если делать через 2 ФМ, то там понятно, 2 select по каждой таблице и фетч из курсора.
вопрос. если я залью все данные в 1 локальную таблицу, то я не смогу сделать select из этой таблицы насколько мне сказали во всяком случае, а значит и открыть курсор.
вопрос, как мне имея 1 локальную таблицу с залитыми данными выливать пакетами для БВ, да и вообще как это делать?
если можно пример кода плиз.

смотрел ФМ RSAX_BIW_GET_SEGM. в нем есть какието сегменты.
но я по коду не понимаю, как разделяется все по пакетам.
вижу только LOOP по таблице и сравнение на максимальный размер пакета. а дальше выход из программы, а вот при 2ом входе (2ой пакет пошел) по идее ведь заново идет LOOP по всей таблице..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, июн 07 2008, 14:30 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 05 2007, 15:53
Сообщения: 73
Или торможу, или не понял вопроса.
А кто мешает в своем функциональном модуле сделать сразу выборку из 2 таблиц?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, июн 07 2008, 14:40 
Специалист
Специалист

Зарегистрирован:
Чт, май 31 2007, 15:46
Сообщения: 119
выборку сделать и залить их в локальную таблицу могу. не могу понять как сделать выборку из этой локальной таблицы..
т.е. с существующими таблицами
OPEN CURSOR ...
select .................

дальше
FETCH NEXT FROM CURSOR и т.д.

а вот понять как из локальной выборку делать.. не могу
LOOP AT и т.д.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, июн 07 2008, 14:51 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 05 2007, 15:53
Сообщения: 73
Ничего не понимаю. Локальная таблица - это что? Internal (внутренняя)? Вы не можете делать выборку из внутренней?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, июн 07 2008, 20:39 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, авг 10 2005, 09:24
Сообщения: 1023
Axel написал(а):
выборку сделать и залить их в локальную таблицу могу. не могу понять как сделать выборку из этой локальной таблицы..
т.е. с существующими таблицами
OPEN CURSOR ...
select .................

дальше
FETCH NEXT FROM CURSOR и т.д.

а вот понять как из локальной выборку делать.. не могу
LOOP AT и т.д.


Если не абапер (а видно, что не абапер), то проще залить свою внутреннюю таблицу в таблицу БД, и уже потом из нее курсором читать.

Особенно это хорошо, когда вычисления идут долго - можно посмотреть, что же все таки рассчиталось...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 09 2008, 14:03 
Специалист
Специалист

Зарегистрирован:
Чт, май 31 2007, 15:46
Сообщения: 119
а не курсором можно это сделать? если будет кусочек кода - разберусь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 09 2008, 14:29 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 02 2004, 09:20
Сообщения: 152
Пол: Женский
Ну если данных не критично много, можно же и без курсоров, за один раз все передать, не разбивая по пакетам.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 09 2008, 17:28 
Специалист
Специалист

Зарегистрирован:
Чт, май 31 2007, 15:46
Сообщения: 119
много..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 09 2008, 21:29 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, авг 10 2005, 09:24
Сообщения: 1023
Axel написал(а):
а не курсором можно это сделать? если будет кусочек кода - разберусь.


Мы не ищем легких путей, верно?

Если данных много - просто процесс не вместится в отведенный размер памяти и будет дамп...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 10 2008, 10:19 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
Эту тему предварительно смотрели?
http://sapboard.ru/forum/viewtopic.php ... ht=#246297

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 10 2008, 10:37 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, апр 12 2006, 12:43
Сообщения: 863
Откуда: СССР
Пол: Мужской
Axel написал(а):
а вот понять как из локальной выборку делать.. не могу
LOOP AT и т.д.

Если необходимые данные уже в той таблице по которой LOOP, то ничего делать не надо, эта таблица и будет передана в BW.
Этот цикл предполагается для того, чтобы что-то поменять или добавить в выбранные FETCH-ем данные.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 10 2008, 11:23 
Специалист
Специалист

Зарегистрирован:
Чт, май 31 2007, 15:46
Сообщения: 119
т.е. я правильно понимаю, что при инициализации ФМ я все данные заливаю в E_T_DATA, а дальше САП сам разбивает ее по пакетам?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 10 2008, 11:48 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, апр 12 2006, 12:43
Сообщения: 863
Откуда: СССР
Пол: Мужской
Axel написал(а):
т.е. я правильно понимаю, что при инициализации ФМ я все данные заливаю в E_T_DATA, а дальше САП сам разбивает ее по пакетам?

Да правильно.
Code:
    FETCH NEXT CURSOR s_cursor
      INTO CORRESPONDING FIELDS
      OF TABLE lt_key
     PACKAGE SIZE s_s_if-maxsize.

PACKAGE SIZE передается через интерфейс ФМ из BW.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 20 2008, 10:33 
Специалист
Специалист

Зарегистрирован:
Чт, май 31 2007, 15:46
Сообщения: 119
ну в общем я понял в целом. необходимо создавать локальную таблицу пакета (программы). и в нее заливать данные, а потом из нее фетчить курсором.
спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 20 2008, 15:19 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, май 26 2005, 11:36
Сообщения: 651
Откуда: Киев-Москва
Для простых запросов подойдет и таблица - но тогда смысла нет экстрактор делать на основе ФМ. Кто-то должен эту таблицу заполнять. Или же отслеживать первый запуск экстрактора, формировать таблицу, потом её же читать - получается достаточно неудобно. У нас ребята на проекте тоже начинали с заливки из заполненной таблицы. Но когда оказалось, что в таблице лежали данные, устаревшие на пару месяцев, и был отключен (для отладки) функционал, обновляющий таблицу, сделал вывод, что лучше напрямую читать данные в ФМ экстракта без промежуточных костылей. Это еще один источник ошибок.
Кроме таблицы, можно нацелить курсор на сцепку таблиц или ракурс, а потом пройтись по внутренней таблице и довязать отсутствующие атрибуты или что-то посчитать.

_________________
Рисую потоки данных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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