通过DI-API添加支票付款主表项的Outgoing Payments时CFWId不生效
SAP DI-API:支票付款Outgoing Payments现金流ID不生效问题解决
针对你遇到的支票付款(CHK)模式下CashFlowLineItemID不生效的问题,核心原因是支票付款的现金流配置逻辑和银行转账不同,不能直接通过PrimaryFormItems设置,需要绑定到CheckPayment子对象上。
修改后的代码示例
// 先获取现金流ID int cfwId = Int32.Parse(row["CFWId"].ToString()); if (row["PaymentMen"].ToString() == "BTR") { oPay.PrimaryFormItems.PaymentMeans = PaymentMeansTypeEnum.pmtBankTransfer; oPay.PrimaryFormItems.CashFlowLineItemID = cfwId; } else if (row["PaymentMen"].ToString() == "CHK") { oPay.PrimaryFormItems.PaymentMeans = PaymentMeansTypeEnum.pmtChecks; // 关键:创建支票付款子对象并绑定现金流ID CheckPayment oCheck = oPay.CheckPayments.Add(); oCheck.CashFlowLineItemID = cfwId; // 补充支票必填字段(根据你的SAP配置调整) oCheck.CheckNumber = row["CheckNo"].ToString(); // 支票号 oCheck.BankCode = row["BankCode"].ToString(); // 银行代码 oCheck.AccountCode = oPay.PrimaryFormItems.AccountCode; // 关联同GL科目 }
原因说明
SAP DI-API中:
- 银行转账(BTR)的现金流直接关联主付款项
PrimaryFormItems,设置其CashFlowLineItemID即可生效 - 支票付款(CHK)的现金流属于支票子对象的属性,必须在
CheckPayment实例中指定CashFlowLineItemID,主项的设置会被忽略,最终默认使用系统配置的现金流
额外注意事项
- 确保
CheckPayment的所有必填字段都已正确赋值,否则SAP会静默跳过自定义配置,使用默认值 - 验证后台现金流配置:确认你指定的
CFWId对应的现金流条目,允许关联支票付款类型
内容的提问来源于stack exchange,提问作者riggs
相关产品推荐
相关产品推荐

