Текущее время: Сб, июн 21 2025, 16:15

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


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

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


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

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