☰
SAP现金订单全流程实战:从配置、收款到对账避坑指南
2026/10/2 13:45:48 网站建设 项目流程

简介:这是一份SAP现金销售(现金订单)业务处理流程设计方案,面向销售、仓库、财务等业务人员及SAP实施顾问,用于规范现金销售从订单创建、发货过账到开票清账的全过程,并将标准销售与现金销售分离,通过自动交货、后台过账等设计提升效率与准确性。资源为单个PDF文档,大小756KB,共1个文件。文档不仅给出BV订单类型、BVN行项目类别、ZP计划行类别、移动类型Z01、定价过程ZKD04/ZKD05、开票类型BV及现金科目确定等关键配置思路,还对比了与传统手工现金销售的区别,附录目录结构清晰、包含文件编号与版本信息,便于实际项目参考落地。已有100人学习下载,适合正在实施或优化SAP SD模块现金销售流程的读者快速掌握要点。

1. 现金订单不是“先开票后收款”,而是现金流驱动的快销场景

SAP 里的“现金订单”,在 FICO 和 SD 模块交界处,通常指的是“现金销售(Cash Sale)”业务:客户先付款、后提货,或者在提货同时完成收款结算,而不是传统赊销那种“开单 -> 发货 -> 开票 -> 收款”的信用链条。对应到 SAP 系统里,常见做法是用销售订单类型 OR(现金销售)+ 结算类型“立即结算(Immediate Settlement)” + 收款过账 F-29 或 F-28 组合实现。整套流程设计的关键在于:订单创建时就要触发收入确认,不做应收挂账,收款与发货在财务视角上同时完成。

为什么要单独梳理一套处理流程,而不是直接走标准赊销?因为自营门店、加油站、电商自提点这类业务,交易笔数大、单笔金额小、客户不固定,如果每一单都走“开发票 -> 生成应收 -> 收款清账”,财务月结时会产生大量未清项,对账成本极高。现金订单就是把“开单和收款”绑定在一次操作里,牺牲掉赊销的灵活性,换来账务的即时清晰。这套方案适合零售快销、服务类即时结算、内部员工购买等场景,也适合需要严控应收账款的企业。下面按“配置 -> 前台操作 -> 对账 -> 踩坑 -> 进阶”这条线,把一套能直接复现的现金订单流程拆开讲。

2. 现金订单的骨架:从销售订单类型到财务过账的链路配置

2.1 销售订单类型与项目类别:为什么不能用标准 OR 直接跑

现金销售在标准 SAP 里自带订单类型 OR,但多数项目不会直接启用标准配置,而是复制 OR 新建一个 ZOR 之类的自定义类型。原因很简单:标准的 OR 是给“现提现货”设计的,它的默认计划行类别、交货类型、开票类型都是按“立即提货”预设的,一旦你的场景里掺了“先付款、后发货”“预付定金、余款提货”这类变体,标准 OR 根本撑不住。

创建 ZOR 的主路径是后台配置:复制销售订单类型 OR 为 ZOR,销售凭证类型建议选择“现金销售(Cash Sale)”,这会直接影响系统对后续步骤的默认值判断,比如是否允许立即结算、是否强制在订单层做收货、是否要求付款承诺(Payment Guarantee)。项目类别上,用标准项类别 TAN(标准项目)或者复制自建 ZTAN,计划行类别用 CS(现金销售计划行)或者自定义的 ZCS。这里的核心参数是“计划行类别的‘结算类型’字段”:选了“立即结算”后,系统在创建订单保存的那一刻就尝试生成会计凭证,而不是等到开票或发货。

配置对象事务码关键字段常见取值
销售订单类型VOV8销售凭证类型OR 复制为 ZOR
项目类别VOV4项目类别组TAN 复制为 ZTAN
计划行类别VOV6结算类型立即结算 / 发货时结算
开票类型VOV8开票类型F2 复制为 ZF2

这里最容易翻车的一点:计划行类别的结算类型选了“立即结算”,但开票类型没有同步改成“现金销售开票”,系统保存订单时会报“没有找到现金销售的开票类型”或者干脆把销售凭证挂在“待开票”里,月底一看全是未开票的销售。我的习惯是创建 ZOR 时直接把开票类型一并复制改成 ZF2,并在收款计划里把“付款卡/现金/银行转账”三类支付方式都配置进去。

2.2 定价过程与科目确定:收入科目、税码、现金折扣怎么落

现金订单的定价过程可以直接复制标准 RVACCA(适用于成本核算的定价过程)或 RVAUSA,但有几个字段必须单独调。第一是定价过程中的“现金折扣(Cash Discount)”条件类型,比如 SKF 或 SKTO,现金销售通常不设置账期,所以现金折扣要么不配,要么配一个“当日支付 2% 折扣”的规则。这个不是财务要求的,而是业务上“先付款后提货”模式下的一种促销手段。

第二是科目确定,这是现金订单和赊销最本质的差别。赊销的记账是“借:应收账款,贷:收入/销项税”,而现金销售在系统里的标准记账是“借:现金/银行,贷:收入/销项税”。这个差异在后台的“科目确定(OBYC / VKOA)”里体现:你需要为这个订单类型对应的“现金销售(Cash Sale)”分配独立的收入科目、销项税科目和现金科目。具体路径是后台 -> 销售和分销 -> 基本功能 -> 科目分配 -> 收入账户确定,把“现金销售”对应的条目配置出来,否则系统会默认走到应收科目,结算时就变成应收账款而不是现金科目。

税码这块也要单独说,现金销售开票常用的税码是 X1(17% 销项税)或 F1(0% 税),但项目里经常出现“订单保存成功了,但税码没带出来”的问题。原因是定价过程中税码确定条件类型 TAX 的“计算类型”没有配置“按工厂和客户确定税码”,需要在定价过程里查 TAX 条件类型的“金额/公式”字段,填上“Tax Code Derivation”(税率确定公式)。改完定价过程后必须重新做“条件类型 -> 税码”的确定配置(事务码 OVK1 / FQ 系列)。

2.3 发货、开票与交货:现金订单发货时的那道“收款校验”闸门

现金订单在发货环节最大的特点是系统会检查“付款承诺(Payment Guarantee)”状态。所谓付款承诺,就是订单创建时如果结算类型是“立即结算”,系统会虚拟记一笔“现金收款”,同时在交货单创建的时候去校验这笔收款是否已经过账、金额是否匹配。如果你做了“先收款、后发货”的流程,那么在 VL01N 创建交货单时,系统会因为“没有付款承诺”而直接弹错。

这道校验逻辑归“交货类型”和“装运点/收货点”配置管,核心字段在后台 -> 后勤执行 -> 装运 -> 交货 -> 定义交货类型,找到你的交货类型(标准 LF,复制成 ZLF 也行),字段“检查付款承诺”要勾上。这个勾一勾上,VL01N 保存时系统会去读销售订单的付款承诺状态,如果没找到,直接红字报错。反过来,如果交货类型里这个字段不勾,那“先收款后发货”的控制就是一句空话,业务员可以先交货再收款,财务月底对账时又是一堆烂账。

常见做法的收尾一步是“开票”环节:现金销售的开票在 VF01 里生成,但很多项目里,因为订单保存时已经产生了收入记账,财务就不再对现金订单执行 VF01 开票,而是直接以订单保存产生的会计凭证作为收入确认依据。这种做法减少了冗余凭证,但审计上需要额外说明:“收入以订单保存时点确认,不以开票时点确认。”如果审计不接受这种口径,那就要回到“订单保存时不做收入记账、只在开票时记账”的流程,计划行类别里把“结算类型”改成“发货时结算”即可。

3. 从 VA01 到 F-29:现金订单前台操作的标准动作

3.1 创建现金销售订单:VA01 带订单类型 ZOR,注意付款卡与付款方式

前台操作从 VA01 开始,创建销售订单时输入订单类型 ZOR,售达方和送达方如果客户是“一次性客户”则输入一个统驭客户编号(比如标准的一次性客户 999999),否则输入正常客户主数据。行项目里维护物料、数量、价格,价格会自动带出定价过程里的条件。回车进入计划行视图后,检查“结算类型”是否为“立即结算”,这个字段如果变灰不可改,说明订单类型参数设置正确;如果可改但被改成了“无”,那订单保存后系统不会做任何财务记账。

保存订单后,系统提示“销售订单已保存,会计凭证 4900000015 已生成”之类的话,这就是现金销售和赊销的第一肉眼差异:赊销的 VA01 保存后不会有会计凭证提示,现金销售必须出现这个提示。如果没出现,大概率是计划行类别里的结算类型选错了。

* 前台操作序列(事务码顺序) VA01 -> 创建销售订单,输入 ZOR -> 行项目维护物料/价格/数量 -> 计划行页签检查结算类型 -> 保存,确认有会计凭证生成提示 F-29 -> 现金收款过账,输入客户/金额/利润中心 -> 过账后产生银行/现金科目凭证 VL01N -> 按销售订单创建交货单,确认付款承诺通过 VL02N -> 发货过账,产生物料移动凭证 VF01 -> 开票(可选,取决于流程设计)

上面的步骤里,F-29 不是总账里的“现金日记账”,而是 SAP 标准的“现金收款”过账事务码。F-29 界面很像 F-02,但它的核心不一样:它带“未清项处理”逻辑,可以把你前面虚拟记的“付款承诺”在过账时真正兑现掉。如果你创建订单后直接跑 VL01N 发货,付款承诺已经存在;再用 F-29 过一笔银行收款,这笔收款会去清掉那张“销售凭证对应的虚拟应收”,而不是再挂一个新应收。这就是现金销售“不产生应收”的秘密。

3.2 现金收款过账的三种方式:F-29、F-28、F-02 的取舍

现金订单的收款过账有三条路:F-29 现金收款、F-28 手工清账、F-02 总账凭证,三者的适用场景差异明显。F-29 是最贴合现金销售的方式:它一次操作同时完成“收款过账”和“清账”,而且界面里直接显示销售订单的账户和金额,不容易串户。F-28 是清账事务码,适合先有未清项再收款,但现金销售本身不产生未清项,所以 F-28 在纯现金订单流程里用得少,更多是处理赊销转现金这种混合场景。

F-02 是最不推荐的方式,除非你是财务专家并且清楚知道科目。因为 F-02 需要手工输入借贷科目、利润中心、文本,任何一步输错都会导致月底对账的时候“凭证能过但报表不平”。我在项目里见过一个同事用 F-02 做现金收款,把“银行存款-人民币”输成了“银行存款-美元”,金额差了三倍,月底银行余额调节表怎么都对不上,最后只好冲销重做。

提示:如果项目上线初期业务量不大、财务团队对 SAP 不熟练,优先锁定“VA01 + F-29”这条链路,把 F-28 和 F-02 的权限全部收回。减少操作路径,就减少了月末对账时“路径差异导致的数据差异”。

3.3 发货、过账与报表核对:一张现金订单的完整状态流转

一张现金订单从创建到完成,在 SAP 里的状态流转是这样的:销售订单状态(已交货/已开票/已结算) -> 交货单状态(已拣配/已发货/已过账) -> 会计凭证状态(已生成/已清账/已冲销)。业务上常见的目标状态是:销售订单“已结算”、交货单“已发货”、会计凭证“已过账且已清账”。

-- 用 SE16N / SE16 查看表结构时,核心查看字段参考 VBAK-VBELN 销售订单号 VBUK-LIFSK 交货状态 VBUK-ABRVK 开票状态 VBUK-BSTNK 客户参考 VBAP-POSNR 行项目号 VBAP-PSTYV 项目类别 VBEP-ETENR 计划行号 VBEP-SETYP 结算类型 ACDOCA-AWSYS 来源系统 ACDOCA-AWTYP 参考交易类型 ACDOCA-AWKEY 参考凭证关键字

做流程验证的时候,最直接的方法是看“销售订单 -> 环境 -> 显示会计凭证(环境菜单里的‘会计凭证’)”,确认凭证里借贷方向是不是“借:现金/银行,贷:收入/销项税”。如果是“借:应收账款”,说明定价过程或科目确定没走对。另一个快速核对报表是 FBL3N(总账科目行项目)或 FBL5N(客户行项目),输入客户编号和期间,如果这个客户只有一个一次性凭证且已清账,说明整个流程是健康的。

4. 对账与月末差异分析:现金订单为什么会对不平

4.1 现金、收入、税三要素的两类差异来源

现金订单月结对账的核心是“三表一致”:银行/现金日记账余额、收入科目余额、销项税科目余额,三张表必须各自等于业务系统里的现金收款总额、含税销售额、税额。实际对账时出现的差异,第一类来自“记账时点不一致”——业务员先做了 VA01 生成会计凭证,但实际收款隔天才到账,现金流和收入流出现一天的时差;第二类来自“税额尾差”——比如单价 3.67 元,数量 3 个,含税金额 11.01 元,系统按行项目分别计算税额再合计,和整单按含税总额计算税额差几分钱,月底就是平不了。

差异来源典型现象解决路径
记账时点差异日结单收款笔数与银行流水差几笔启用 SAP 的“收款承诺 + 事后清账”模式
税额尾差月末销项税科目差 0.01~2 元配置“税额取整规则”为按行项目计算或按整单计算
收入确认漏记VA01 保存后没有会计凭证提示检查计划行类别“结算类型”是否立即结算
客户主数据串户一次性客户被多笔订单共用检查“一次性客户账户”的统驭科目设置

4.2 用 FBL5N 和 S_ALR_87012356 做现金订单的月度体检

月度体检我一般看三张报表:FBL5N(客户行项目明细)、S_ALR_87012356(客户余额审计报表)、FAGLL03(总账科目行项目)。S_ALR_87012356 是 SAP 标准的客户审计报表,可以把所有客户的未清项余额按“已清/未清”列出来,现金订单业务的未清项理论上应该是零,只要列出任何一条未清项,就是流程出问题的信号。

* FBL5N 的核心筛选输入(以现金订单为例) * 客户:一次性客户编号或范围 * 期间:当月 001~当月 012 * 行项目显示:只显示未清项目(去掉“未清项目”选择框) S_ALR_87012356 -> 客户余额审计报表 * 关键参数:客户、公司代码、科目类型(D 客户) * 输出解读:未清项目余额 = 0 为理想状态

实际操作中,如果发现 FBL5N 里有未清项目,不要急着冲销,先用“环境 -> 显示会计凭证”看这笔凭证是怎么产生的。80% 的情况是某笔订单的手工收款走成了 F-02 而不是 F-29,或者开票类型选择错误导致系统在开票时又生成了一张应收。这种时候,冲销原凭证并重新走 F-29 是效率最高的做法,比在未清项上硬清账干净。

4.3 增值税科目余额与现金流的勾稽关系怎么验

增值税科目对不平,前面提到“尾差”,但尾差通常可以通过配置解决。后台路径“财务会计 -> 总账会计 -> 税务 -> 计算”,里面有“税码的取整规则”和“按行项目计算的税额”两个开关。如果业务对发票金额精度要求高,建议开启“按行项目计算税额”,这样每个行项目税额单独取整,整单税额是行项目税额之和,和发票上的税额一致;如果按整单计算税额,SAP 会用总含税金额减去整单净额得出税额,两种计算结果在含税单价不是整数时必然差几分钱。

另一个常被忽略的点是“销项税科目与税码的对应关系”在科目确定里的映射。现金销售订单如果用了 X1 税码,科目确定里必须存在“X1 对应销项税科目 2221001010”的记录;如果财务在总账里手工做过“借:银行,贷:应交税费-销项税”的补记凭证,那月末这个科目还会有余额,对账时差异就不是来自销售订单而是来自手工凭证。遇到这种情况,先跑表 FAGLL03 看这个销项税科目借贷发生额明细,把所有手工凭证挑出来单独核对。

5. 避坑与常见问题:现金订单实施中的 5 个典型“翻车”现场

5.1 订单保存后没有生成会计凭证

这是现金订单实施里最常被问到的“玄学”问题:同样的操作用户、同样的订单类型,有的订单保存后有会计凭证,有的没有。原因是计划行类别的“结算类型”字段只在“有物料可用性检查且计划行存在”时生效,如果行项目里计划行被删掉、或者项目类别变成了“免费项目(gift)”,结算类型就不起作用。解决方法是去 VOV6 检查该订单类型的计划行类别设置,确认对应的计划行类别号(比如 0004 计划行)的“结算类型”字段是“立即结算”,同时确认 VBAP-PSTYV 的项目类别是指向这个计划行的,不是指向其他计划行。

* 排查顺序(事务码) VOV8 -> 销售订单类型 -> 找 ZOR -> 查看“计划行确定” -> 确认项目类别与计划行类别映射正确 VOV6 -> 计划行类别 -> 查“结算类型”字段值 -> 应为“立即结算”或“发货时结算”

5.2 设置“立即结算”后,VA01 保存直接报错“科目确定错误”

报错信息通常是“消息 V1602:科目确定错误(请检查销售订单的科目分配)”。这背后的原因是你在定价过程里放了“收入科目确定”条件类型 KOFI 或 KOFK,但对应的科目确定“销售/普通、现金销售/普通”配置不完整。路径是 VKOA,按“应用 -> 科目确定过程 -> 销售组织/分销渠道/产品组”维度维护。这个错最坑的是:赊销订单保存完全正常,只有 ZOR 报错,因为赊销走的是“应收”配置,你配了;现金销售走的是“现金”配置,你漏了。

5.3 VL01N 创建交货单时报错“没有付款承诺”

典型场景是“按订单发货时系统提示物料不可用、交货单不能保存”,或者“保存时报错:付款没有保障”。前面提过,交货单类型里“检查付款承诺”字段勾选以后才会触发校验。但更隐蔽的问题是:这个校验是“只要有任何一个付款承诺条目”就通过,还是“付款承诺金额必须等于订单金额”才通过?标准行为是后者,金额对不上照样报错。解决方案是在定价过程中配置“付款承诺”条件类型,把它的金额设置为和订单总额一致,不要手工改小;如果业务上允许部分预付,那要改用“定金”流程,而不是现金销售。

5.4 F-29 现金收款时找不到销售订单参考

F-29 界面输入客户、金额、过账日期后,如果找不到销售订单,这个问题的根源是客户主数据里的“统驭科目”设置错误。现金销售的一次性客户在客户主数据里要设置统驭科目为“现金/银行”相关的清算科目,而赊销客户统驭科目是“应收账款”。标准的一次性客户用一个科目(通常是 999999/000001),你不能让现金销售订单和赊销订单共用一个一次性客户编号,否则 F-29 的“未清项选择”会去应收账款的未清项里找人,当然找不到。

5.5 月末发出商品/收入确认差异:现金订单与标准订单混用的后果

业务团队很难完全按“这个客户必须现金、那个客户必须赊销”来操作,经常是同一个客户今天现金付款、明天要求挂账。如果现金订单和赊销订单混用同一个客户,客户主数据里的统驭科目会来回切换,SAP 会报“客户统驭科目不一致”之类的问题,严重时 VA01 保存直接失败。我的建议是:一个客户主数据固定一个统驭科目,如果这个客户两种模式都要有,就在客户主数据里设“现金销售专用统驭科目”,并在销售订单类型层面做“付款方式/结算类型”的强制检查——用 ZOR 的订单自动带出现金销售标记,赊销客户不许走 ZOR。

5.6 特别提醒:不要乱动“付款承诺”与“应收借款项”的清账逻辑

最后一条算血泪经验:有同事为了消除 FBL5N 里一堆未清项,直接在 F-28 里把现金销售虚拟应收和一笔银行收款做“手工清账”,结果清账后发现“付款承诺”没被清零,导致 VL01N 发货时报“付款承诺已存在但已清账”的混合状态,单据卡死。清账逻辑上,现金销售的凭证生成时,系统内部会标记“该凭证为现金销售自动生成”,F-29 过账时会自动找这笔凭证清账,不需要人工干预。遇到未清项,先分析它是怎么产生的,再决定冲销还是手工清账,不要无脑 F-28。

6. 进阶玩法:用收入确认时点控制,把现金订单从零售复制到项目型业务

现金订单不止能处理“一手交钱一手交货”,它背后的“结算时点控制”机制可以延伸出三种变体。第一种是“收款时点控制”:订单创建时不记账,F-29 收款时才记账,这用于“先预售、后提货”的场景——在计划行类别里把结算类型改成“收款时结算”,并在定价过程中挂一个“收款条件”来触发记账。第二种是“开票时点控制”:订单创建和发货都不记账,VF01 开票时才生成收入凭证,这适用于“先发货、后开票、票到付款”的政府客户或大企业客户,他们不接受未开票先收款。第三种是“发货时点控制”:订单创建时不记账、发货过账时记账,这个适合物流有签收单、财务以物流签收作为收入确认依据的企业。

* 三种常见变体的结算类型设置 * 立即结算:VA01 保存即记账(标准现金销售) * 收款时结算:F-29 过账时生成收入凭证(预售业务) * 发货时结算:VL02N 发货过账时生成收入凭证(签收确认收入) * 配置入口:VOV6 -> 计划行类别 -> 结算类型 * 三种取值的实际效果要看“销售订单类型”里的“结算类型增强”是否放开

进阶落地时最常见的做法是把“现金销售”和“基于收货的发票”结合:VA01 创建现金订单时不记账,交货单过账后由 WM 或 QM 环节触发一个“事件”,系统根据事件自动开票并记账。这种设计需要启用 SD 的“后续计费计划(Billing Plan)”功能,把收入确认从“订单保存”挪到“事件完成”。它不是标准的“现金订单 V2.0”内容,但属于同一套机制上的延伸,适合想做“项目型现金业务”的企业。

最后说下验证方法:上线的验收不应该只看“走通一笔”。我会在项目里做三笔测试:第一笔,正常现金订单,全流程 VA01 -> F-29 -> VL01N -> 发货过账,验证收入科目、税额、库存减少三同步;第二笔,现金订单发货后第二天客户退货,验证退货单创建、收款冲销、库存退回三个动作是否一致;第三笔,客户要求“先付定金、后提货”,验证部分付款与尾款清账的金额匹配。三笔都通过,这套流程才算稳。做现金订单这几年,我最大的习惯就是“每次上线前必测退款”,因为现金订单最怕的不是收不到钱,而是退了钱单据还挂着账面——希望这篇文章帮你在实施路上少踩几个我之前踩过的坑。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询