我在阅读exchange-parameter的返回值时遇到了问题。 我在传递和阅读表格和简单领域方面经验丰富,但我没有得到这个回报值。
图像显示结果(" Ergebnis" =结果)。 这是一个自定义的RFC。
这是代码。 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")
出了什么问题?
答案 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");
}