You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SAP DI API获取新建销售订单DocEntry并添加运费?

SAP DI API:获取销售订单DocEntry并插入运费到RDR3

获取刚创建的销售订单DocEntry

当你通过DI API成功创建销售订单后,无需额外查询,直接从创建时使用的SalesOrder对象中读取DocEntry属性即可。DI API在调用Add()方法成功提交订单后,会自动将生成的DocEntry赋值给该对象的对应属性。

示例代码(C#):

SAPbobsCOM.SalesOrders oSalesOrder = (SAPbobsCOM.SalesOrders)company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oOrders);
// 填充销售订单必要字段
oSalesOrder.CardCode = "C0001";
oSalesOrder.Lines.ItemCode = "I0001";
oSalesOrder.Lines.Quantity = 10;
oSalesOrder.Lines.Add();

int addResult = oSalesOrder.Add();
if (addResult == 0)
{
    // 成功创建后直接获取DocEntry
    int docEntry = oSalesOrder.DocEntry;
    Console.WriteLine($"新销售订单DocEntry:{docEntry}");
}
else
{
    // 处理创建失败逻辑
    SAPbobsCOM.CompanyService companyService = company.GetCompanyService();
    SAPbobsCOM.ILogger logger = companyService.GetLogger();
    Console.WriteLine($"创建失败:{logger.GetLastErrorDescription()}");
}

向RDR3表插入运费数据

拿到DocEntry后,使用DI API的Recordset对象执行INSERT语句,直接写入RDR3表(该表存储销售订单特殊行数据,含运费)。需注意RDR3的核心字段:

  • DocEntry:对应目标销售订单的DocEntry
  • LineNum:特殊行行号,运费行通常设为0
  • LineType:行类型标识,运费对应值为"F"(部分SAP版本需用枚举值BoSpecialLineType.slt_Freight,可通过查询现有RDR3数据确认)
  • Freight:运费金额

示例代码(C#):

if (addResult == 0)
{
    int docEntry = oSalesOrder.DocEntry;
    SAPbobsCOM.Recordset oRecordset = (SAPbobsCOM.Recordset)company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
    
    string insertSql = $"INSERT INTO RDR3 (DocEntry, LineNum, LineType, Freight) VALUES ({docEntry}, 0, 'F', 150.00)";
    try
    {
        oRecordset.DoQuery(insertSql);
        Console.WriteLine("运费已成功添加");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"插入运费失败:{ex.Message}");
    }
}

注意事项

  • 确保DI API版本与SAP Business One版本兼容,避免字段或枚举值差异
  • 确认当前用户拥有RDR3表的写入权限
  • 若需设置运费税码等额外属性,可在INSERT语句中添加对应字段(如TaxCode)

内容的提问来源于stack exchange,提问作者PatriceJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 13:32:37