SAP免费交货全解析:从销售订单到财务过账的完整流程与配置清单
客户跟我说给我开张100件的单单价写成0就行我一般会先反问一句你打算让系统怎么记账在很多刚接手SAP的企业里销售、仓库和财务对免费交货的理解差距非常大。销售觉得免费就是把价格清零仓库觉得免费就是正常出货财务却盯着应收、收入和库存成本三个账本。真正在系统里跑过一遍之后你会发现SAP里的免费交货根本不是一个简单字段的事它牵扯到单据流、条件技术、科目确定、信贷检查、交货成本甚至仓库和质检的处理方式。这篇文章就围绕SAP免费交货这个主题把整套逻辑和实践经验拆开讲适合正在做SD模块实施、供应链管理或者刚接触SAP后勤业务的朋友参考也适合被销售免费单搞到头大的财务同事看看门道。1. 免费交货到底动了哪条主线从销售订单到交货过账的完整单据流免费交货在SAP里最常见的触发场景有这么几类免费样品、促销赠品、客户索赔补货、内部领用、破损重发以及常见的买十送一这类数量赠送。很多刚入行的顾问容易犯一个错误——只在销售订单行项目里把净价值改成0结果交货单照常创建、发货过账也正常但到了开票环节发现应收账款挂在账上收不回来或者财务那边价格差异一堆。原因很简单免费不是把价格设置为0这个动作而是系统通过一套组合标记识别出这个行项目是免费的从而在后续每个环节走完全不同的处理路径。1.1 销售订单行项目的免费标记理解在VA01创建销售订单时行项目类别是个关键入口。系统里的行项目类别有很多常见的有TAN标准项目、TANN后续免费项目等。免费交货的核心标识是行项目类别里免费货物这个勾选标记。一旦这个标记被打上系统会把这个行项目视为免费交货后续定价过程、复制控制、交货和开票都会有所变化。这个标记在很多项目里没有被正确维护结果就是行项目虽然单价写0但系统内部依然把它当作正常销售订单一路走到应收。这里有个容易混淆的点免费样品和赠送性质的行项目往往用的是独立的行项目类别比如TAN对应的免费变体。我在项目里见过有人直接用标准TAN行项目然后把定价条件改成0价格这种方案在系统层面是不推荐的因为后续交货成本分摊、信贷限额计算、物料价值更新都会用错误的状态去处理。正确做法是让免费这件事在数据结构上被识别出来而不是靠人为去改价格。1.2 交货单和发货过账后面的凭证流销售订单的免费行项目复制到交货单之后从VL01N创建外向交货开始系统就已经用不同的逻辑来对待它。这里最关键的在于免费标识会影响到移动类型。正常销售发货过账时用的是601移动类型库存会从非限制库存发到销售成本同时过账到收入相关的科目。免费交货通常也走601但在交货成本更新和物料价值更新的科目上会有差异——免费行项目不会产生收入所以库存价值一方面要转出另一方面对应的抵消科目往往是费用类科目而不是销售成本科目。单据流的另一端是开票。免费交货的开票有个常见做法是VF01创建贷项凭证或免费发票很多项目会配置无偿后续交货或贷项凭证免费的发票类型。甚至有一些企业用借项凭证来处理免费交付这就需要在复制控制里明确设置好。如果复制控制没有做对用户可能根本创建不了免费发票或者创建出来的发票类型不对导致FI那边记账科目错误。还有一个典型的异常是开免费发票时系统带出MM的物料成本结算单据也就是说免费交货免费不是完全脱离价值流的物料的库存价值依然要结转。1.3 免费标识对复制控制的连锁影响配置里值得认真检查的一处是销售订单到交货单、交货单到开票单据的复制控制。每一层复制控制里都有很多字段其中价格字段的选择决定了交货单和发票里的价格来源。对免费交货来说价格复制字段通常应该设置为空或不复制价格这样发票里的定价条件才能基于订单重新计算而不是直接把交货单里的条件复制过去。如果价格复制字段没有调整交货单可能会带着0价格条件到开票时仍然能从订单上读取到正确的免费条件这时候问题还不大但一旦用户手动改过交货单价格就会出现明明是免费单开票却有金额的情况。我个人建议在项目上做免费交货配置时从行项目类别、定价过程、复制控制、科目确定四个点一起看缺一个都可能在某一环出岔子。这张网在系统里叫凭证流但实际上免费交货的凭证流是一条被特殊标记过的支线。2. 条件技术里的隐藏门道为什么价格填0不是免费交货SAP免费交货如果只说业务操作而不讲条件技术等于只学了个壳。SD模块的价格计算是在定价过程Pricing Procedure里完成的免费交货的独家武器是条件类型尤其是跟免费标记绑定的定价逻辑。很多人把条件类型PR00手动改成0其实绕开了整套条件技术系统里的价格历史、价格确定、条件记录全部失联以后统计报表都看不明白。2.1 免费条件类型PM00与PR00的根本差异在标准SAP里PR00是基础价格用于常规销售定价而PM00这类免费货物条件类型是专门为免费交货准备的。PM00的金额计算通常是数量×0也就是单价为零但它仍然会完整参与定价过程保留定价记录这样在订单、交货、开票环节都能看到一致的价格历史。如果你直接改PR00为0条件记录会丢失价格来源而PM00是从配置上就定义为免费价格逻辑上自洽。还有一个重要细节免费行项目的定价过程不一定走完整销售定价。很多项目的定价过程里会有按行项目类别调用不同定价过程的机制——即定价过程确定。系统通过销售组织、单据类型、客户主数据、行项目类别等信息找到对应的定价过程。所以免费行项目如果走了一个没有PM00条件的定价过程就会出现系统报错或者价格确定异常。我的操作习惯是先用表头查看定价过程确定的条件组合看看免费行项目类别是否走到了预期定价过程再检查条件类型是否存在。2.2 折扣率和促销价格在免费单上的副作用免费交货还容易踩第二个坑折扣条件。假设一个客户有常年的折扣率条件比如数量折扣KA00或者客户折扣K007免费行项目如果也参与这些折扣计算系统可能算出负的净价值——这显然是荒谬的。因为免费交货的根本原则是价格为零成本照转收入不确认。如果还自动加一个折扣就变成了负数收入在报表里会出现负价差异之类的诡异条目。在SAP标准的免费交货配置里通常会把免费货物行项目的价值字段设置为F免费这样定价过程中的某些条件可以跳过或不应用。但我见过不少项目没有充分清理定价步骤里的需求Requirement导致折扣除非被正确排除。这里我非常建议在定价过程里给免费行项目设置一个通用的需求例程比如VOFM例程让所有与数量折扣、促销折扣相关的条件步骤跳过执行。否则促销活动和免费样品叠加时价格会变得不可控。对比维度正常销售行项目免费交货行项目行项目类别TAN等标准类别免费类别如TAN免费变体基础价格条件PR00可带具体单价PM00/免费条件单价为0折扣条件处理正常参与通常会通过需求例程跳过净价值计算数量×单价-折扣附加费净值为0后续开票生成应收、确认收入免费发票/贷项凭证不确认收入科目确定收入类科目费用类科目如样品费、促销费信贷检查按订单价值更新信贷通常不参与或按成本价更新2.3 手工让价格变0和真正的免费条件差在哪手工把价格改成0看着操作很快但在系统里埋了不少雷。第一销售订单里的条件记录会保留原来的价格只是净价值字段被手动改写后续任何重新确定价格的动作都可能把它打回原形。第二报表和分析工具如COPA里无法准确分类管理层想看这个月样品成本多少都查不出来。第三开票时如果参照了错误的定价过程可能会重新读取条件记录直接开出有金额的发票。说白了手工改0是治标不治本免费交货必须在主数据和条件技术层面就承认这个货是送的。3. 最容易被账务牵连的三处细节税、授信和交货成本免费交货走到财务这里问题就集中爆发了。销售会觉得免费是业务的事财务却说账上每一分钱都得有出处。实际上免费交货在SAP里牵涉到三大块财务逻辑销项税、信贷限额和交货成本。这三块如果不提前梳理等到月结对账的时候就是一场混战。3.1 免费交货和销项税不要想当然地以为免税很多企业默认免费的东西不用开发票所以不涉及税。这个认知在系统里是站不住脚的。增值税处理的关键在于税条件类型MWST在定价过程中的行为它是怎么被确定的以及免费交货行项目金额为0时税基是多少。在一些国家或地区的税务规则里免费赠品可能被视同销售需要按同期同类产品的售价核定销项税。也就是说就算你账上没确认收入税局可能仍然认为你发生了应税行为。从SAP配置角度这取决于企业所在税制以及自定义税务程序的规则。有的项目做法是免费交货行项目也参与税计算但因为净价值为0税额为0另一种做法是对免费送货单独设置税码税基按公允价值或者参考原订单价格来计算。这已经不单单是SD的问题必须让财务税务的同事参与进来否则配置做得再漂亮申报的时候对不上一样是麻烦。我在项目上就遇过财务在月结对账时发现免费交货产生了0税额的发票但仓库这边的物料出库价值却被计入了费用两边的差异对不上查了半天才发现是税条件在免费行项目上被错误地禁用了。3.2 免费交货要不要吃信贷限额一个明显的分歧点信贷检查Credit Check是SD里一个老生常谈但又很容易被忽略的环节。免费交货不产生应收账款按道理不占用客户信贷额度。但问题在于系统对信贷检查的更新方式是多个维度控制的订单价值、交货价值、未清订单价值可以分别设置。很多企业的信贷主数据里设置的是按销售订单价值更新信贷也就是创建一张100万的免费订单也会吃掉100万信贷额度。这对客户来说绝对不可接受——他明明只是要了样品凭什么占掉额度反过来有些企业希望把免费交货也纳入信贷检查目的是防止客户恶意囤积免费样品之后再大规模退货或者套取赠品。这个设计没有绝对标准但必须明确配置而不是让系统默认按标准情况去处理。免费行项目的信贷更新可以用不完全更新或排除成本价格等方式控制我一般建议至少把订单价值中的免费部分做特殊处理要么完全不更新要么只按库存成本更新这样既防滥用又不影响正常授信。3.3 交货成本在免费交货上的分摊逻辑免费交货虽然不确认收入但仓库发货、运输仍然有成本。SAP的交货成本如运费、保险费是在交货单上记录的之后通过分摊到行项目。如果免费行项目价值为0那么运费怎么分摊标准逻辑里货运行项目可以按重量、体积或者值来分摊免费行项目往往被排除在按值分摊的范围之外否则分母为0会导致分摊异常。我踩过的一个坑是免费交货也带了较高的运费结果费用被分摊到其他正常销售行项目上导致某些订单的毛利被严重拉低。后来在配置里单独定义一个交货成本行项目类别或给免费行项目设置不参与按值分摊的标志情况才好转。这个细节很少有人会在蓝图阶段想到但一旦量起来差异非常明显。所以涉及免费交货流程的方案评审一定要把交货成本这一层也拉进来一起看。4. 免费交货的跨模块联动库存、质检和仓库管理的检查点免费交货表面上只是个销售流程实际上它同时牵动着MM的库存管理、QM的质检锁定、WM/EWM的仓库执行。很多项目上线后出现免费交货单在仓库执行不了或者质检环节不放行就是因为没有提前梳理这几个跨模块的联动点。4.1 库存移动与估值逻辑免费出库不等于库存消失发货过账时SI商品库存转到什么科目是财务入账的核心。免费交货的库存出库通常是移动类型601但因为行项目免费它不会往销售成本-收入对应的方向记账而是走到一个费用类科目比如样品费用或促销费用。这个科目在科目确定Account Determination里的分配逻辑基于物料销售组织行项目类别的组合。如果你的免费交货是给客户的免费样品建议单独维护一个物料组和对应的科目分配不要让免费出库和正常销售出库共用同一个成本科目否则时间一长费用分析里样品和广告促销就混在一起管理者看报表时根本说不清楚钱花哪去了。另一个值得提醒的点是免费交货要不要移动平均价的问题库存出库时免费行项目按当前移动平均价结转库存价值这个价值就是免费出库的费用金额。如果物料价格波动大一个月里赠品的费用差异也会很大财务在做预算时要提前知道这个波动机制否则月月被价格差异惊到。4.2 质检放行对免费交货的影响如果物料启用了质量检验QM不管是来料检验还是出货检验免费交货单在创建交货单时可能触发质检冻结。一旦库存被冻结在质检状态仓库就不能直接发货。很多人以为免费交货就是仓库拿货直接给客户完全忘了质检环节结果交货单做出来仓库拣配时发现物料被锁在冻结库存里只能干等质检放行。解决方案通常有两个方向一是对免费交货这种不计收入的出库业务上允许从非限制库存直接发运需要在物料主数据或工厂层面设定质检参数二是让销售订单的免费行项目复制到交货单时系统判断为不需要质检放行。第二个方向需要很谨慎因为免费交货不代表货物不需要质量保障尤其是药品、食品、电子元件等领域任何出库品都必须经过质检。这里要强调的是配置上可以做例外但业务上的质量红线不能放松。4.3 WM/EWM仓库执行的特殊处理如果你的仓库启用了WM或EWM免费交货单到了仓库执行层还需要看仓位策略和拣配策略有没有特殊定义。有些仓库的拣配策略是按波次和体积优化免费行项目如果量小且混在正常订单里可能会被合并在同一拣配单里。这个本身没问题但如果免费交货需要单独批次或单独包装比如样品要有独立包装、独立标识仓库策略就得预先配置好。在EWM里外向交货的仓库过程类型决定了后续的拣配、装运、过账动作。免费交货如果不设置独立的仓库过程类型就会沿用标准销售交货的过程从而可能在装运环节触发承运商集成或打包手续费。这些细节一旦漏了免费交货在仓库层面就会变成特事特办仓库为了执行一张免费单不得不线下人工处理效率和合规性都打折扣。5. 实战中踩过的坑免费交货单的后续处理与异常排查免费交货在项目上线之后不太会像蓝图阶段那样有专人天天盯着配置真正考验人的是运维期的排查能力。这里分享几个我在实际项目里遇到过的典型问题和排查思路很多问题如果只盯着当前报错看根本找不到根源。5.1 免费订单产生的成本为零/价格差异到底该怎么查常见现象免费交货单发货过账之后物料账期出现价格差异过账或者COPA报表里出现了成本却没有任何收入。第一个排查点永远是行项目类别的免费标识是否真的生效。我的做法是直接查VA03的行项目明细看看免费货物字段接着看定价过程的调用顺序确认PM00条件的出现再查一下科目确定键值确认过账的科目是费用还是收入。这三步走完基本上问题就已经定位了。还有一种情况是免费交货在物料账上产生了数量差异库存数量发了100但物料账的价值变动只反映了一部分。这种问题往往是行项目类别的数量更新标记出了问题——免费行项目因为勾选了免费标识数量更新字段也出现了变体导致物料价值更新被跳过。审批时如果严格核对物料凭证会看到凭证里物料价值量字段没有更新。解决办法是检查物料类型和行项目类别的组合确保免费出库仍然按数量正常更新只是金额记到费用科目。5.2 免费交货的退货和换货处理比你想的更麻烦客户退货后你换一个新的给他这种免费换新在系统里怎么走最常见的错误做法是直接建一张免费交货单发出去然后把退回来的货扔进非限制库存。但这样库存数量可能没按一对一替换逻辑处理账实容易不符。更稳妥的做法是走完整的退货订单订单类型RE→退货交货→收货→替换交货的顺序替换部分用免费交货标识或后续免费项目来处理这样退货的数量和免费补发的数量有完整的凭证流关联财务和仓库都能追溯。我建议在蓝图阶段就把免费换新和客户索赔拆成两个不同流程来设计。客户索赔可能伴随着收入冲销或借项凭证而免费换新仅仅是实物替换两者混在一起往往导致后续审计说不清楚。A公司当年就是把这两种场景混在一个免费交货流程里结果审计要求提供每一张免费单对应的客户投诉记录整个团队加班找了一个月才补完。5.3 批量促销场景下的免费交货处理建议促销赠品比如买10送1在实际业务里往往是整单级别的促销不是单个行项目的免费。SAP里有多种实现方式有的通过促销计划功能有的通过后续免费项目TANN有的通过免费交货行项目独立管理。如果处理量不大手工在订单里加一个免费行项目也还行但如果促销活动覆盖几千个客户一定要上系统化的方案。我给一个简单的选型建议数量赠送使用后续免费项目或独立免费行项目价值促销使用价格条件如折扣条件免费样品使用单独订单类型或行项目类别。三者的记账结果完全不同选错的话报表数据都是歪的。具体选哪个一定要在项目蓝图评审时让销售、财务、仓储三方一起确认而不是由SD顾问自己拍板。6. 配置一个稳妥的免费交货流程前你需要过一遍这份清单如果你现在正准备在公司配置免费交货流程无论你是顾问、关键用户还是ITBP下面这份清单是按项目落地的顺序整理的每一条背后都有实际项目教训的影子。照着做至少能避开80%的常见坑。6.1 端到端配置和验证清单先看配置层面的完整链路行项目类别明确免费标识是否勾选以及对应的订单类型、交货类型、开票类型是否都配置了匹配关系。定价过程确定免费行项目走哪个定价过程过程中是否有PM00/免费条件是否排除折扣条件。条件记录PM00有没有可用的条件记录或者是否要通过例程自动生成0价格。科目确定免费交货的过账科目是否正确指向费用类科目是否排除收入科目。复制控制销售订单到交货单、交货单到发票的复制规则里价格字段的设置是否禁用价格复制。信贷检查免费行项目的信贷更新规则是否符合业务预期。交付相关免费交货的交货成本分摊、WM/EWM的仓库过程类型是否有独立策略。税处理免费交货行项目税码、税条件是否与税务要求一致。配置做完之后一定要做一份完整的用户测试脚本。测试用例至少覆盖创建免费订单、复制交货单、创建免费发票、发货过账、查看FI凭证、查看COPA成本记录、查看信贷余额变化。每一个环节都要截图留存尤其是有异常过账的情况。6.2 上线之后最容易返工的三个隐性需求许多免费交货流程在配置时只顾及了开单发货上线后才发现还漏了几件事。第一个是管理报表需求销售总监大概率会问这个月送出去多少货花了多少成本如果免费交货没有独立的品类标记报表就做不出来。第二个是物料批次和追溯食品、药品行业必须支持免费交货的批次记录否则质监抽查就完蛋。第三个是销售返利与佣金有些企业给销售人员的提成是按有效销售额计算的免费交货如果被算进业绩就会引发薪酬争议。这三件事在蓝图阶段往往无人提及但到了月结或者季度业绩核算时就会集中爆发。我的经验是在免费交货流程评审时主动把免费出库成本统计报表免费交货批次溯源免费交货是否计入销售业绩这三问抛给业务部门。哪怕对方回答暂时不需要你也应该把方案设计里预留好扩展的可能性。6.3 从顾问角度说的最后一句实在话免费交货不是一个SD模块内部就能闭环的配置。我见过太多项目把免费交货当成销售模块的一个小选项结果财务说科目不对仓库说数量对不上审计问凭证不完整。真正稳健的方案需要SD、MM、FI、CO甚至QM、WM的顾问坐在一起把免费这个词背后每个部门的理解先对齐再动手配置。从这个角度看免费交货反而是检验一个企业后台流程成熟度的试金石——它不产生收入却逼着你把成本、库存、税收、信控这些底账全部理清楚。我在实际项目里养成了一个习惯每做一个免费交货流程都会在测试清单最后加一项跑一次完整的月结模拟专门看看免费交货在CO月结和物料账期结算里有没有异常。很多问题只有到了月结这一步才会冒出来。如果你正要动这个流程别只盯着订单能不能打出来多想想它进账本之后的三个月里会不会一直让你睡不踏实。