как сбросить пароль через BAPI в среде CUA - PullRequest
0 голосов
/ 30 января 2020

Привет. В настоящее время я занимаюсь разработкой приложения C# с разъемом sapnco 3. Мне интересно, могу ли я вызвать BAPI в CUA, и этот BAPI передаст детали в дочернюю систему. Это поле доступно через функциональный модуль тестирования (поле «RF C target sys»), но оно недоступно напрямую в стандартных BAPI при доступе из sapnco.

RFC target sys:

В ABAP разработчики могут использовать

call function 'BAPI_USER_CHANGE' destination '<TARGET_SYS>'

Могу ли я использовать нечто подобное в библиотеке sapnco?

IRfcFunction rfcs = rfcDest.Repository.CreateFunction("BAPI_USER_CHANGE");

Кто-нибудь знает, как этого можно достичь?

Основная цель - сбросить пароли пользователей на исходные через приложение (BAPI) -> CUA -> ChildSystem

Без прямого доступа к дочерним системам.

Edit1: изменен заголовок

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Хорошо, я обнаружил, что то, чего я хотел достичь, невозможно с помощью sapnco.

Но в SAP я создал функциональный модуль, который вызывает функциональный модуль и использует DESTINATION 'target_sys' для запуска в конечной системе. Так я добился того, чего хотел. Вызывая мой Z_FUNC_MODULE из sapnco, я передаю переменную target_sys, и FN вызывается в дочерней системе CUA.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 11 февраля 2020

Хм, похоже, вы еще не полностью поняли значение «RF C target sys».

В SE37 «RF C target sys» вы вводите имя RF C пункт назначения, который предоставляет сведения о том, в какой системе SAP вы хотите выполнить функциональный модуль. Эти детали затем определяются в SM59, где вы можете указать такие параметры, как имя хоста, номер системы, клиент, пользователь, пароль, язык и т. Д. c.

В библиотеке NCo вы делаете то же самое с помощью класса RfcDestinationManager , Здесь вы определяете параметры (имя хоста, номер системы, клиент, пользователь, пароль, язык и т. Д. c.) Целевой системы, в которой вы хотите выполнить функциональный модуль.

Итак, строка

"RF C target sys: TARGET_SYS"

в SE37 соответствует строке типа

RfcDestination myDest = RfcDestinationManager.GetDestination("TARGET_SYS");

в вашей. NET программе.

И строка кода ABAP, подобная

call function 'BAPI_USER_CHANGE' destination 'TARGET_SYS'

, будет тогда соответствовать некоторому. NET коду, подобному

RfcDestination targetSys = RfcDestinationManager.GetDestination("TARGET_SYS");
IRfcFunction bapiUserChange = targetSys.Repository.CreateFunction("BAPI_USER_CHANGE");
targetSys.Invoke(bapiUserChange);

Примечание: настройка входных значений и обработка ошибок здесь опущены.

...