如何使用Sap Connector返回交换参数

时间:2016-02-17 16:10:50

标签: .net vb.net sap saprfc sap-connector

我在阅读exchange-parameter的返回值时遇到了问题。 我在传递和阅读表格和简单领域方面经验丰富,但我没有得到这个回报值。

图像显示结果(" Ergebnis" =结果)。 这是一个自定义的RFC。

Result in 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")

出了什么问题?

3 个答案:

答案 0 :(得分:0)

你试过rfcFunction.GetDecimal(“Ergebnis”)吗?

答案 1 :(得分:0)

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

rfcFunction.Invoke(someDestination) 

而不是connector.Execute(rfcFunction)

答案 2 :(得分: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");
}