ABAP / SAP: старый код RFC, выполняемый после транспортировки. Обновить нужно? - PullRequest
0 голосов
/ 05 ноября 2018

Я изменил abap-код (функция RFC) в системе SAP под названием TE1.

Я перенес изменения в систему TQ1.

Теперь я вызываю RFC, но кажется, что sap stills выполняет старый код.

Я скопировал + вставил обе версии кода из TE1 и TQ1 и сравнил их с помощью инструмента сравнения.

Они оба равны. Мои изменения были перенесены из TE1 в TQ1.

Требуется ли специальный шаг для активации моего нового кода abap rfc?

Я использую PyRFC в качестве клиентской библиотеки

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

У нас была такая же проблема с одним из наших RFC FM. Причина была в том, что соединение оставалось открытым после того, как оно было установлено. В этом случае двоичные файлы не обновляются в контексте RFC. Просто перезапустите соединение, и все должно работать как нужно.

0 голосов
/ 07 декабря 2018

Это известная проблема: https://github.com/SAP/PyRFC/issues/89

Цитирую вопрос:

После завершения скрипта Python соединение должно быть установлено автоматически закрыт и инициализация SAP NW RFC SDK. Вот что происходит под хаб.

Интерпретаторы Python и экземпляры PyRFC используют один и тот же SDK SAP NW RFC экземпляр lib и когда удаленный включенный функциональный модуль (RFM) вызывается в первый раз, метаданные RFM кэшируются внутри SAP NW RFC SDK. Когда 2-й вызов того же RFM запрашивается из Python / PyRFC, SAP NW RFC SDK возвращает метаданные из кэша, а не повторное чтение из системы ABAP, сохранение одного раунда Python / ABAP и некоторая производительность, особенно в случае сложных RFM. Если RFM за это время подпись изменилась, кэшированные метаданные RFM не изменился и Python "видит" старый код ABAP.

Я надеюсь, что решение, дружественное к разработчику, будет использовано в будущем.

0 голосов
/ 06 ноября 2018

Нет необходимости что-либо активировать. Это должно быть хорошо, как вы перевозите его. Вы можете попробовать это;

  • Переместите все снова. (Включая другие задачи того же запроса)
  • Проверьте поле назначения в вашем вызове, чтобы увидеть, если вы звоните в правильную систему
  • Очистить буфер => TCode / $ sync
...