创建材质.NET连接器SAP

nvbavucw  于 2023-07-01  发布在  .NET
关注(0)|答案(2)|浏览(126)

拜托告诉我是有人干的。我正在尝试通过.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()时,它不会创建材质,也不会抛出异常,它什么都不做。很明显我做错了什么事,因为我根本不知道是什么。快来人啊!

tvz2xvvm

tvz2xvvm1#

我目前还没有访问SAP系统的权限,但据我所知,你必须在事务范围内调用bapi,例如。创建材质后调用BAPI_TRANSACTION_COMMIT。但也许.net连接器有另一种方法。。
希望这能帮上忙。

pu82cl6c

pu82cl6c2#

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

function.Invoke(rfcDest);

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

相关问题