Текущее время: Пт, июл 18 2025, 12:33

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


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: RFC Function с динамическими параметрами
СообщениеДобавлено: Пн, июл 14 2014, 17:40 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, сен 10 2008, 11:30
Сообщения: 95
Подскажите пожалуйста, есть ли какая нибудь возможность написать вызов RFC-функции с динамической передачей параметров?
Понятно, что PARAMETER-TABLE использовать нельзя, но может есть еще какой способ ?
Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RFC Function с динамическими параметрами
СообщениеДобавлено: Пн, июл 14 2014, 20:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
jaroslav_iv: пакуйте в XML или в свой строковый контейнер. Потом можно сделать архивацию. И передавать просто как бинарную таблу со строкой фиксированной длины

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RFC Function с динамическими параметрами
СообщениеДобавлено: Вт, июл 15 2014, 10:07 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, сен 10 2008, 11:30
Сообщения: 95
Простите, не понял, что вы имеете ввиду. На удаленных системах редактировать функции никак нельзя.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RFC Function с динамическими параметрами
СообщениеДобавлено: Вт, июл 15 2014, 11:13 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Баловство это, конечно... :?

Если речь идет о SAP-SAP соединении, можете покопать в сторону использования ФМ FUNCTION_IMPORT_INTERFACE & RS_TESTREPORT_GENERATE.
В конечном варианте у вас выйдет что-то вроде такого:
Code:
* 1. Генерация программы
  PERFORM prog_generate USING    [имя_ФМ]
                        CHANGING l_report.
  IF l_report IS INITIAL.
*   MSG: ошибка генерации программы
    CONTINUE.
  ENDIF.
...

* 2. Установка параметров вызова ФМ (параметр/таблица)
  PERFORM parameter_set IN PROGRAM (l_report)
                        USING [имя_параметра]
                              [тип_параметра: (I)mport, (C)hanging]
                              [значение_параметра].
...

* 3. Вызов ФМ (динамика)
  PERFORM function_call IN PROGRAM (l_report) IF FOUND.
...

* 4. Считывание параметров возврата
  PERFORM parameter_table_get IN PROGRAM (l_report)
    USING [имя_параметра]
          [значение_параметра]
    IF FOUND.

Для реализации первого шага вам и понадобятся указанные модули.
Смысл тривиален - динамическая генерация программы вызова. Просто имеющаяся функциональность немного облегчит жизнь.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: RFC Function с динамическими параметрами
СообщениеДобавлено: Вт, июл 15 2014, 11:34 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, сен 10 2008, 11:30
Сообщения: 95
Спасибо, тоже сделал пока через генерацию. Только я генерирую просто Include с вызовом нужной функции.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RFC Function с динамическими параметрами
СообщениеДобавлено: Вт, июл 15 2014, 11:47 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
jaroslav_iv: а, так у вас фиксированный интерфейс с одной стороны и хочется дергать функции с другой динамически? Ну тогда да.. Присоединяюсь к генерации. Но это - моветон
А так, я предлагал сделать 1 ФМ, в который передавать бинарную таблу. На клиенте таблу упаковывать, на вызываемой стороне - распаковывать. Ну а дальше - по нуждам.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RFC Function с динамическими параметрами
СообщениеДобавлено: Вт, июл 15 2014, 18:58 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
собственно вот пример на днях публиковал, генерация не требуется

_________________
Изображение Попытка не пытка


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RFC Function с динамическими параметрами
СообщениеДобавлено: Ср, июл 16 2014, 11:43 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, сен 10 2008, 11:30
Сообщения: 95
DKiyanov: В вашем примере я не нашел именно динамического вызова RFC функции на удаленной системе. Нигде нет слова Destination. А использовать PARAMETER-TABLE для RFC-вызова неполучится. Так что не так все просто.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RFC Function с динамическими параметрами
СообщениеДобавлено: Пт, авг 22 2014, 09:49 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 01 2004, 07:44
Сообщения: 174
Цитата:
пакуйте в XML или в свой строковый контейнер.


Функциональный модуль
Code:

FUNCTION ztest.
  IMPORTING
   VALUE(i_parameters) TYPE XSTRING.

  DATA: lf_param_1 TYPE string,
            lf_param_2 TYPE i,
            lt_table_1    TYPE any_type_tab.

  TRY.
*     Get import parameters -------------------------------------------------------------&
       IMPORT param_1 = lf_param_1
                   param_2 = lf_param_2
              table_1    = lt_table_1
                   ...
              FROM DATA BUFFER i_parameters.

*     Main logic ------------------------------------------------------------------------&
      .....

    CATCH cx_sy_import_format_error cx_sy_import_mismatch_error.
  ENDTRY.

ENDFUNCTION.


Вызов ФМ
Code:
  DATA lf_params TYPE xstring.

  TRY.
*     Define input parameters ---------------------------------------------------------------&
       EXPORT param_1 = ...
                   param_2 = ...
              table_1   = ...
          TO DATA BUFFER lf_params.

*    Call function ---------------------------------------------------------------------------&
     CALL FUNCTION 'ZTEST' DESTINATION 'DEST_TEST'
        EXPORTING
      i_parameters = lf_params.

    CATCH cx_sy_export_buffer_no_memory cx_sy_export_no_shared_memory.
  ENDTRY.

_________________
Жизнь прекрасна! Если правильно подобрать антидепрессанты...


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

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


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

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


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

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