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

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


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

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


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

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