Текущее время: Пт, июн 20 2025, 18:53

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: ABAP вызов FoX-функции
СообщениеДобавлено: Ср, сен 03 2008, 17:05 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
Коллеги, всем приятного вечера!
:?: Есть необходимость вызова FoX-функции из ABAP-модуля, с передачей (присвоением) значений переменных. Можно ли это реализовать(Вызов и присвоение переменных, видимых в FoX)? И, если можно, как реализовать дальнейшее сохранение измененных данных (что называется SAVE_DATA в WAD)?
Заранее спасибо всем небезучастным :wink:
Система BW 7.0


Последний раз редактировалось Шамрик Чт, сен 04 2008, 11:53, всего редактировалось 1 раз.

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

Зарегистрирован:
Пт, мар 25 2005, 17:17
Сообщения: 133
В 7-ке придется создать последовательность планирования (переменные указать в фильтре) и включить ее в цепочку процессов. Цепочку запускать через ФМ RSPC_API_CHAIN_START. Отдельного сохранения не требуется.

В 3.5 можно напрямую вызвать функцию планирования через ФМ API_SEMBPS_FUNCTION_EXECUTE.

Переменные можно определить через EXIT, значения передать с помощью EXPORT TO MEMORY ID или через таблицу БД.


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

Зарегистрирован:
Ср, окт 03 2007, 18:16
Сообщения: 27
А вообще в 7 при запуске глобальной последовательности лучше использовать варианты. При экспорте в память и таблицы значений переменных нужно хорошо подумать над разрешением коллизий (пользователь в параллельном режиме запускает последовательности и т.д.)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 11 2008, 11:37 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
Ярослав написал(а):
В 7-ке придется создать последовательность планирования (переменные указать в фильтре) и включить ее в цепочку процессов. Цепочку запускать через ФМ RSPC_API_CHAIN_START. Отдельного сохранения не требуется.

Переменные можно определить через EXIT, значения передать с помощью EXPORT TO MEMORY ID или через таблицу БД.

Ярослав, спасибо большое за совет - мысль очень здравая :)
Возник небольшой вопросик: не удается передать данные в Expert Routine. Так, код в классе:
Code:
  DATA: NUMA TYPE I VALUE 222.
  EXPORT NUMA FROM NUMA TO MEMORY ID 'ZVAR'.

и код в Expert Routine:
Code:
  DATA: NUMA TYPE I,
            VALI TYPE I.
  VALI = 0.
  import NUMA TO VALI from memory id 'ZVAR'.

не присваивает переменной VALI значения 222. Переменная 'ZVAR' создана в Modeller'е как Функция (если я правильно понял, что это). :oops:


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

Зарегистрирован:
Пт, мар 25 2005, 17:17
Сообщения: 133
Надо так:
Code:
  DATA: NUMA TYPE I VALUE 222.
  EXPORT NUMA TO MEMORY ID 'ZVAR'.

и код в "Expert Routine":
Code:
  DATA: NUMA TYPE I.
  import NUMA from memory id 'ZVAR'.

Тип данных и имя должны строго совпадать.


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

Зарегистрирован:
Пт, мар 25 2005, 17:17
Сообщения: 133
Шамрик написал(а):
Переменная 'ZVAR' создана в Modeller'е как Функция (если я правильно понял, что это). :oops:

Переменных создавать не нужно. MEMORY ID - это просто метка в памяти, она генерируется непосредственно при экспорте.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 11 2008, 12:10 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
Такая запись:
Code:
  DATA: NUMA TYPE I VALUE 222.
  EXPORT NUMA TO MEMORY ID 'ZVAR'.

вызывает ошибку "EXPORT var_1 ... var_n TO MEMORY ... is not supported in the OO context. Use EXPORT name_1 from var_1 ... name_n from var_n TO MEMORY ... instead. from var_n TO MEMORY ... instead."
Если записать с " FROM NUMA ", класс отрабатывает нормально, а Routine после import выдает sy-subrc = 4.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 11 2008, 12:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, окт 11 2005, 12:10
Сообщения: 687
Откуда: Москва
Пол: Мужской
Прошу прощения за сообщение не совсем по теме:
А можете подкинуть материальчик по EXPORT .. TO MEMORY ID ..? Понимаю, что гугль поможет, но есть вопрос:
Этот MEMORY ID он уникален для системы? пользователя? контекста (то бишь коннекта)?

_________________
Глаза боятся, а руки крюки


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 11 2008, 12:43 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
G написал:
Прошу прощения за сообщение не совсем по теме:
А можете подкинуть материальчик по EXPORT .. TO MEMORY ID ..? Понимаю, что гугль поможет, но есть вопрос:
Этот MEMORY ID он уникален для системы? пользователя? контекста (то бишь коннекта)?

Это то, что помогло в итоге:
https://www.sdn.sap.com/irj/sdn/thread?threadID=752784
https://www.sdn.sap.com/irj/sdn/thread?threadID=402891.
http://help.sap.com/saphelp_nw04/helpda ... ameset.htm

Теперь по теме:
EXPORT .. TO MEMORY ID .. действителен в пределах ABAP'а, т.е. в моём случае класс заводил свою переменную в памяти, а Рутина пыталась считать свою. Для использования памяти SAP'а требуется использовать так:
Code:
DATA NUMA(32) TYPE C.
GET PARAMETER ID 'ZVAR' field NUMA.

SET PARAMETER ID 'ZVAR' field NUMA.

Once u log out this memory is cleared. :wink:

Теперь мой вопрос, надеюсь, закрыт :lol: Спасибо всем за советы!!!


Последний раз редактировалось Шамрик Пт, сен 12 2008, 13:16, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, сен 12 2008, 09:58 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 07 2008, 14:57
Сообщения: 69
Погорячился я с закрытием вопроса :evil: .
Если запускать DTP "для отладки", то переменная (GET PARAMETER ) в трансформации нормально устанавливается в значение, занесенное ABAP'ом. Если же запустить в "Экстракция и обработка одновременно", то значение параметра не считывается, так и равно 0.
EXPORT .. TO MEMORY ID в обоих случаях ничего не устанавливает...
Я в прострации... :oops:


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

Зарегистрирован:
Пт, окт 21 2005, 09:24
Сообщения: 832
Откуда: от верблюда...тоже:)
Пол: Мужской
Шамрик написал(а):
Погорячился я с закрытием вопроса :evil: .
Если запускать DTP "для отладки", то переменная (GET PARAMETER ) в трансформации нормально устанавливается в значение, занесенное ABAP'ом. Если же запустить в "Экстракция и обработка одновременно", то значение параметра не считывается, так и равно 0.
EXPORT .. TO MEMORY ID в обоих случаях ничего не устанавливает...
Я в прострации... :oops:

Воспользуйтесь новыми фичами программерскими...ведь сионя день программиста - юзайте SHARE OBJECT :)

SHMA – разработка SHARE OBJECT.
SHMM - Мониторинг SHARE OBJECT.

Сохранение данных в SHARE OBJECT.

DATA: handle TYPE REF TO ZCL_AREA, - share object
save_data TYPE REF TO ZCL_SHARE_ROOT. – Класс для хранения

handle = ZCL_AREA=>attach_for_write( ). Запрос на запись, блокировка

CREATE OBJECT save_data AREA HANDLE handle. Создание инстанции с ссылкой на область

handle->set_root(save_data ). Установка корневого объекта для области памяти

SELECT SINGLE * FROM likp.

save_data ->set_likp( likp ).

handle->detach_commit( ). Сохранение данных в область памяти, снятие блокировки

Получение данных из SHARE OBJECT.

DATA: handle_m TYPE REF TO ZCL_AREA,
data TYPE REF TO ZCL_SHARE_ROOT.

handle_m = ZCL_AREA=>attach_for_read( ). Запрос на чтение из области, блокировка

likp = handle_m->root->get_likp( ).

handle_m->detach( ). Снятие блокировки

Во как :)

_________________
а подпись...а подписи не будет :)


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

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


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

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


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

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