Показаны сообщения с ярлыком FM. Показать все сообщения
Показаны сообщения с ярлыком FM. Показать все сообщения

среда, 3 сентября 2014 г.

Delta Extractor RSAX_BIW_GET_DATA_SIMPLE vs RSAX_BIW_GET_DATA

Давеча тут понадобилось написать экстрактор с дельтой на основе FM. В частности, по ценовым условиям для заказа на закупку. ( KONV ).

Стандартного экстрактора не оказалось, на сбыт есть (KOMV), а на закупку нет.
В общем есть два модуля,
RSAX_BIW_GET_DATA_SIMPLE - full
RSAX_BIW_GET_DATA - full \ delta

Но в общем пофиг, можно и 1м обойтись, там gereric дельта тоже нормально цепляется.
Тем более что он проще и привычней.

Со вторым вышло посложней,

  • У него побольше параметров и некоторые называются по другому, т.е. вместо  I_DSOURCE параметр  I_ISOURCE
  • Необходимо сделать коррекцию, иначе на заработает (взято с sdn)
UPDATE roosource

SET delta 'E'

exmethod 'F1'

WHERE oltpsource '[source_name]'.
  • Да, перед коррекцией не забудьте сделать generic delta, т.к. после оной пропадает имя ФМ и структура из RSO2
  • Не заработает т.к. вызывает фм с другими параметрами в частности с I_DSOURCE
  • Дальше есть параметр  E_T_[source_name] - почему то при тестировании в RSA3 система ожидает что данные будут возвращены именно в него, а при нормальной работе данные идут через e_t_data, если подебажить, то видно что идут разные вызовы.
В общем попробовать я попробовал, но мой выбор RSAX_BIW_GET_DATA_SIMPLE

UPD1. Поле указанное в generic delta передается автоматически, значение см.в RSA7

UPD2. Не забывайте про Safety Interval Upper\Lower Limit. А то без них если система видит что дата в RSA7 совпадает с текущей, то не вызывает даже экстрактор


четверг, 19 августа 2010 г.

Ещё пять минут ...

Задачи бывают разные и выполняются они разное время... и иногда случается ситуация, когда процесс тупо не успевает отработать... просто не хватает таймаута

Почему это произошло - это безусловно отдельный вопрос... понятно, что можно договорится с базисом на какое время об увеличении оного... Можно что-нить пооптимизировать (индексы, логику, ABAP ежли есть), но есть и альтернативный путь...

Сбросить счетчик процесса можно программными средствами... вызов спец.функцию

* сбрасываем счетчик timeout
CALL FUNCTION 'TH_REDISPATCH'.

Либо, если Вам и этого не дозволено, то можете зайти в debug процесса, и пустить процесс дальше... - счетчик будет процесса обнулен.