创建一个物料.NET Connector SAP

时间:2012-02-17 17:01:20

标签: c# .net sap

请告诉我有人做过这件事。我试图通过.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()时,它不会创建一个材质,它不会抛出异常,它什么都不做。很明显,我没有做正确的事情,因为我没有丝毫的想法。有人请帮忙!

2 个答案:

答案 0 :(得分:2)

目前我无法访问SAP系统,但据我所知,您必须在事务范围内调用bapi,例如创建材料后调用BAPI_TRANSACTION_COMMIT。但也许.net连接器有另一种方法......

希望这有帮助。

答案 1 :(得分:0)

您需要根据输出类型从函数中获取值。下面是输出类型的示例。 (表)

    function.Invoke(rfcDest);

    IRfcTable TableResult = function.GetTable("TAG_NAME_OR_METADATA_NAME");