请告诉我有人做过这件事。我试图通过.NET Connector 3.0与SAP连接。我可以使用远程函数调用来读取数据,但我无法弄清楚如何编写任何内容,例如创建或编辑材质。通过一些研究,我已经确定BAPI_MATERIAL_SAVEDATA是我需要使用的rfc,但不能为我的生活弄清楚如何。这是我正在尝试的:
function = destination.Repository.CreateFunction("BAPI_MATERIAL_SAVEDATA");
IRfcStructure structure = function.GetStructure("HEADDATA");
structure.SetValue("material", "000000000000000888");
structure.SetValue("ind_sector", "U");
structure.SetValue("matl_type", "ERSA");
structure.SetValue("basic_view", "X");
structure = function.GetStructure("CLIENTDATA");
structure.SetValue("matl_group", "01");
structure.SetValue("base_uom", "EA");
structure = function.GetStructure("CLIENTDATAX");
structure.SetValue("matl_group", "X");
structure.SetValue("base_uom", "X");
function.Invoke(destination);
我根据各种VB和ABAP示例将它拼凑在一起。问题是它什么也没做。当调用function.Invoke()
时,它不会创建一个材质,它不会抛出异常,它什么都不做。很明显,我没有做正确的事情,因为我没有丝毫的想法。有人请帮忙!
答案 0 :(得分:2)
目前我无法访问SAP系统,但据我所知,您必须在事务范围内调用bapi,例如创建材料后调用BAPI_TRANSACTION_COMMIT。但也许.net连接器有另一种方法......
希望这有帮助。
答案 1 :(得分:0)
您需要根据输出类型从函数中获取值。下面是输出类型的示例。 (表)
function.Invoke(rfcDest);
IRfcTable TableResult = function.GetTable("TAG_NAME_OR_METADATA_NAME");