1

我在读取交换参数的返回值时遇到问题。我在传递和读出表格和简单字段方面经验丰富,但我没有得到这个返回值。

图像显示了结果(“Ergebnis”= 结果)。它是一个自定义 RFC。

结果在 SE37

这是代码。sap-connector 有点“包裹”。执行 RFC 后,我想读出交换值,但它返回“0”而不是“150”。

            rfcFunction = connector.CreateFunction("Z_SOME_CUSTOM_RFC")
            With rfcFunction
                .SetValue("I_WERKS", "4711")
                .SetValue("I_MATNR", "1234")
                .SetValue("I_CHARG", "")
            End With
            connector.Execute(rfcFunction) ' This wrapper actually calls the invoke-function
            Return rfcFunction.GetDecimal("E_ZQM_QTY_FULL_UNIT")

出了什么问题?

4

3 回答 3

0

你试过 rfcFunction.GetDecimal("Ergebnis") 吗?

于 2016-02-17T16:17:27.253 回答
0

据我所知.NET 连接器,尝试使用

rfcFunction.Invoke(someDestination) 

而不是connector.Execute(rfcFunction),

于 2016-02-17T18:39:50.587 回答
0

我猜你的问题是材料编号(I_MATNR)。当您使用SE37事务测试您的函数时,SAP 将自动调用CONVERSION_EXIT注册在MATNR' 的域上。

在我的系统中,材料1234被转换为000000000000001234. 但是当您使用 RFC 调用函数时,您需要自己在客户端 (.Net) 或服务器 (ABAP) 上转换它。尝试使用000000000000001234作为I_MATNR参数再次调用您的函数。

此外,如果您正在使用 RFC 处理更复杂的函数调用,我想向您介绍SharpSapRfc,它是我使用了一段时间的 NCo 3 的 OSS 包装器。

它在处理表和结构时会派上用场,因为它会自动映射到类和列表。存储库中有一些示例(全部使用 C#)。

using (SapRfcConnection conn = new PlainSapRfcConnection("your-sap-con"))
{
    var result = conn.ExecuteFunction("Z_SOME_CUSTOM_RFC", new {
        I_WERKS = "4711",
        I_MATNR = "1234".
        I_CHARG = ""
    });

    decimal result = result.GetOutput<decimal>("E_ZQM_QTY_FULL_UNIT");
}
于 2016-04-12T14:56:34.963 回答