如何在 CUA 环境中通过 BAPI 重置密码?

How to reset a password via BAPI in a CUA environment?

我目前正在使用 SAP NCo 3 开发 C# 应用程序。 我想知道我是否可以将 BAPI 调用到 CUA 中,并且此 BAPI 会将详细信息传递给子系统。

此字段可通过测试功能模块(字段“RFC 目标系统”)使用,但在从 SAP NCo 访问时无法直接在标准 BAPI 中使用。

在 ABAP 中,开发人员可以使用:

call function 'BAPI_USER_CHANGE' destination '<TARGET_SYS>'

我可以在 NCo 库中使用类似的东西吗?

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

有人知道如何实现吗?

主要目的是通过App(BAPI) --> CUA --> ChildSystem将用户密码重置为初始密码

无法直接访问子系统。

嗯,看来你还没有完全理解"RFC target sys"的意思。

在 SE37 "RFC target sys" 中输入 RFC 目标的名称,它提供了有关要在哪个 SAP 系统中执行功能模块的详细信息。然后在 SM59 中定义这些详细信息,您可以在其中指定主机名、系统号、客户端、用户、密码、语言等参数。

在 NCo 库中,您可以通过 Class RfcDestinationManager 执行相同的操作。在这里您可以定义要在其中执行功能模块的目标系统的参数(主机名、系统号、客户端、用户、密码、语言等)。

所以行

"RFC 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);

注:这里省略了输入值的设置和错误处理。

好的,所以我发现仅使用 sapnco 无法实现我想要实现的目标。

但是,在 SAP 中我创建了功能模块,它调用功能模块并在终端系统中使用 DESTINATION 'target_sys' 到 运行。这样我就实现了我想要的。通过从 sapnco 调用我的 Z_FUNC_MODULE 我传递变量 target_sys 并且在 CUA 的子系统中调用 FN。

希望这对某人有所帮助。