Текущее время: Ср, июл 23 2025, 17:35

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


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

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


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

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