c# - 如何使用 .Net 中的 IRFC 函数将多个表传递给 SAP

标签 c# asp.net sap-dotnet-connector

我将 3 个表传递给在 SAP 上创建订单的 IRfcFunction。 当我尝试调试这个程序时,它没有给出任何错误信息, 但这并没有在 SAP 上创建任何订单。

我正在寻找解决此问题的任何帮助或提示。 感谢您的宝贵时间。

IRfcFunction orderDetails = _rfcDest.Repository.CreateFunction(strBapi);

RfcStructureMetadata metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_PART");

IRfcStructure structPartners = metaData.CreateStructure();
            structPartners.SetValue("PARTN_ROLE", "SP");
            structPartners.SetValue("PARTN_NUMB", "110024");

            IRfcTable tblPartner = orderDetails.GetTable("PARTNERS");
            tblPartner.Append(structPartners);

            structPartners = metaData.CreateStructure();
            structPartners.SetValue("PARTN_ROLE", "SH");
            structPartners.SetValue("PARTN_NUMB", "110005");


            tblPartner.Append(structPartners);
            orderDetails.SetValue("PARTNERS", tblPartner);



            metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_COND");
            IRfcStructure structConditions = metaData.CreateStructure();
            structConditions.SetValue("ITM_NUMBER", "10");
            structConditions.SetValue("COND_TYPE", "PR00");
            structConditions.SetValue("COND_VALUE", "30");
            structConditions.SetValue("CURRENCY", "USD");

            IRfcTable tblConditions = orderDetails.GetTable("CONDITIONS");
            tblConditions.Append(structConditions);
            orderDetails.SetValue("CONDITIONS", tblConditions);

            metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_ITEM");
            IRfcStructure structItems = metaData.CreateStructure();
            structItems.SetValue("MATERIAL", "F500");
            structItems.SetValue("TARGET_QTY", "3");

            IRfcTable tblItems = orderDetails.GetTable("ITEMS");
            tblItems.Append(structItems);
            orderDetails.SetValue("ITEMS", tblItems);

            RfcSessionManager.BeginContext(_rfcDest);
            orderDetails.Invoke(_rfcDest);

            IRfcStructure bapiTable = orderDetails.GetStructure("RETURN");

            RfcSessionManager.EndContext(_rfcDest);

最佳答案

IRfcFunction orderDetails = _rfcDest.Repository.CreateFunction(strBapi);

RfcStructureMetadata metaData = _rfcDest.Repository.GetStructureMetadata  ("ZBAPI_A_STRU_ORDER_CREATE_PART");

IRfcStructure structPartners = metaData.CreateStructure();
        structPartners.SetValue("PARTN_ROLE", "SP");
        structPartners.SetValue("PARTN_NUMB", "0011001234");

        IRfcTable tblPartner = orderDetails.GetTable("PARTNERS");
        tblPartner.Append(structPartners);

        structPartners = metaData.CreateStructure();
        structPartners.SetValue("PARTN_ROLE", "SH");
        structPartners.SetValue("PARTN_NUMB", "0011567890");


        tblPartner.Append(structPartners);
        orderDetails.SetValue("PARTNERS", tblPartner);



        metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_COND");
        IRfcStructure structConditions = metaData.CreateStructure();
        structConditions.SetValue("ITM_NUMBER", "10");
        structConditions.SetValue("COND_TYPE", "PR00");
        structConditions.SetValue("COND_VALUE", "30");
        structConditions.SetValue("CURRENCY", "USD");

        IRfcTable tblConditions = orderDetails.GetTable("CONDITIONS");
        tblConditions.Append(structConditions);
        orderDetails.SetValue("CONDITIONS", tblConditions);

        metaData = _rfcDest.Repository.GetStructureMetadata("ZBAPI_A_STRU_ORDER_CREATE_ITEM");
        IRfcStructure structItems = metaData.CreateStructure();
        structItems.SetValue("MATERIAL", "F500");
        structItems.SetValue("TARGET_QTY", "3");

        IRfcTable tblItems = orderDetails.GetTable("ITEMS");
        tblItems.Append(structItems);
        orderDetails.SetValue("ITEMS", tblItems);

        RfcSessionManager.BeginContext(_rfcDest);
        orderDetails.Invoke(_rfcDest);

        IRfcStructure bapiTable = orderDetails.GetStructure("RETURN");

        RfcSessionManager.EndContext(_rfcDest);

关于c# - 如何使用 .Net 中的 IRFC 函数将多个表传递给 SAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8157561/

相关文章:

c# - 如何从 4 个单词的名字中拆分名字和姓氏?在 C# 中并在 Mysql 中使用它进行查询

biztalk - SAP Connector 3.0 和使用适配器服务

c# - 如何在 Excel 中聚焦或选择单元格

javascript - 后端 Web 开发与前端 Web 开发的 future

c# - 无法正确绑定(bind) DataGrid 和 ObservableCollection

javascript - 如何将 Jsonstring 反序列化为 C# listObject

azure - 将 Azure SAP 或 SharePoint 连接器连接到 OnPremise 失败

c# - 可以将 Visual Studio 2017 与 SAP .NET 连接器 3.0 一起使用吗?

c# - 如何构建UDP数据包但不发送它

c# - Linux:Mono 安装和错误