简介这是一份面向SAP系统销售与分销SD模块用户的退换货流程操作手册主要服务于企业销售顾问及相关业务人员旨在规范退货与换货场景下的系统操作与业务处理。文档涵盖退货订单创建、退货提单生成、退货入库及退款开票等完整环节也细致讲解了换货过程中的退货订单、退运提单、收货过账、库存类型调整、换货出库与发货跟踪等步骤有助于读者理解并落地执行SAP SD模块的核心退换货操作。资源共1个doc文档压缩包约422KB内容结构清晰、目录完整便于按流程查阅。已有88人学习下载适合正在使用SAP或准备优化退换货流程的企业员工参考。借助手册中的标准化步骤业务人员可有效减少操作差错、缩短处理周期同时提升客户满意度降低企业运营风险手册亦强调销售顾问保持专业态度、维护公司形象有助于统一服务标准。1. SD退换货流程操作手册到底在管什么事SAP顾问接手“SD退换货流程操作手册”这类资料整理时容易被VA01一张退货订单的表象带偏。退换货实际是跨越订单、交货、库存过账、开票四个环节的综合流程后台任何一段配置断裂前端就表现为贷项凭证金额不对、退货无法入冻结库存、免费换货单带出价格。2021到2022年退换货量明显上涨这类问题在SAP运维中尤为集中手册的价值正是把订单类型、项目类别、退回原因、移动类型和单据流的对应关系固化下来。这篇按SD退换货的完整链路走一遍适合SAP业务顾问、ABAP开发以及负责FICO与SD协同的运维人员对照排查。2. 拆开SD退换货流程订单类型、项目类别与单据流要理解退换货先得理解SAP销售单据的骨架订单类型控制单据整体走向项目类别控制每一行的具体行为。SAP SD里退货不是简单把销售订单数量改成负数而是用一套独立单据类型支撑。标准配置中订单类型RE是退货订单专用类型RET是退货行项目类别REN是免费换货行项目类别。这套设计的好处是退货与普通销售完全隔离会计过账、库存移动、信用检查各有各的规则不会互相污染。2.1 退换货订单类型与项目类别怎么定订单类型用VOV8维护项目类别用VOV6查看、VOV9批量复制。VOV8里RE类型的页签控制着销售区域、文本策略、信用范围、开票计划其中最关键的“交货类型”默认指向LR退货交货“开票类型”指向RE退货贷项凭证。项目类别确定则是在VOV7里维护它决定用户录入RE订单时系统给行项目补什么默认项目类别。项目里我通常不建议直接改标准RE而是复制出一个ZRET再做调整。原因是标准类型在系统升级或传输其他请求时容易被覆盖自定义类型则保留了单独的命名空间、权限对象和条件记录。复制时重点检查两个字段销售单据类型页签里的“交货类型”以及开票页签里的“开票类型”。这两处填错后面VL01N找不到交货类型、VF01找不到开票类型整个退货流会在第二步就断掉。2.2 退回原因代码怎么维护和落库退回原因的主数据表是TVGR在IMG路径“销售与分销-销售-销售单据-销售活动-退货单-退回原因”下维护也可以用SE16N直接改表。退回原因不只是给业务填的文本备注它参与三件事决定退回物料收货后进冻结库存还是非限制库存决定是否联动质量通知单以及决定贷项凭证的定价条件类型。运维排错时遇到“货到了仓库却过不了账”十有八九是退回原因没有在后台分配对应的移动类型映射。维护退回原因代码时要同时维护它的账户分配类型和物品移动映射。举例来说原因代码“Z01-客户拒收”如果对应651移动类型那MIGO收货时会直接进非限制库存如果对应652则进冻结库存等待质检。很多项目的遗漏点在于退回原因维护了但项目类别确定里没有把这个原因代码挂上去录单界面可能根本看不到原因字段。排查时先查TVGR确认主数据再回VA02行项目页签看“退回原因”能否输入。2.3 VBFA表如何用一条链串起订单、交货、开票单据流的核心存储表是VBFA退货订单、交货单、物料凭证、贷项凭证之间的前后关联全部写在这里。它同时记录前置单据类型VBTYP_V和后继单据类型VBTYP_N其中H代表交货单、M代表物料凭证、L代表开票凭证。排查“流程走到哪一步断了”时直接按退货单号查VBFA的后继记录比逐张VA03、VL03N、VF03去点快得多。用ABAP查一段退货单据流的代码可以这样写DATA: lt_vbfa TYPE TABLE OF vbfa. CLEAR lt_vbfa. SELECT vbeln posnr vgtyp vgbel vgpos vbtyp_n FROM vbfa INTO CORRESPONDING FIELDS OF TABLE lt_vbfa WHERE vbelv lv_return_order AND vbtyp_n IN (C, H, M, L). LOOP AT lt_vbfa INTO DATA(ls_vbfa). WRITE: / ls_vbfa-vgbel, ls_vbfa-vgpos, ls_vbfa-vbtyp_n. ENDLOOP.这里lv_return_order是VA01创建的退货订单号VBF A按前置单号vbelv过滤DISTINCT不是必须的因为业务上同一张退货单可以有多个交货和开票看输出时注意不要被重复记录干扰。参数说明IN后面的C代表关联的后续销售订单H是交货单M是MIGO物料凭证L是开票凭证。如果结果里缺少M说明退货还没做收货过账缺少L说明贷项凭证没生成。用这个思路能把一张退货单的完整生命周期压缩成几行输出排查效率高很多。3. SD退换货流程操作从VA01到VF01的完整动作退换货的单据操作至少涉及五个事务代码VA01创建退货订单、VL01N创建退货交货、MIGO收货过账、VF04检查开票到期清单、VF01开贷项凭证。实务里最后开票不一定走VL01N可以直接参照订单生成但物流在途的企业大多把交货单作为库存移动的触发单据。这一章按一条完整路径写读者可以照着在自己系统里走一遍。3.1 VA01创建退货订单字段和选项创建退货订单用VA01订单类型选RE或自定义ZRET。抬头维护客户、销售区域、PO号行项目维护物料、数量、批次、退回原因。其中批次字段在启用批次管理的物料上必须输入否则后续MIGO收货参照不到库存。退回原因字段如果界面上看不到先回VOV8检查订单类型的字段状态组而不是硬改屏幕变式。一个可以直接套用的录单示例如下订单类型RE 售达方100001 售达方PORMA20220101 物料P-1001 数量10 退回原因Z01客户拒收 批次LOT2021011 项目类别RET系统自动带出保存后系统返回退货单号。如果行项目自动带出的类别不是RET而是TAN或TAS这类标准销售项目类别说明VOV7里RE订单类型没有绑定退货专用项目类别确定规则必须回后台补配置。即使强行保存后面VL01N和MIGO也无法按退货流程处理。3.2 MIGO退货收货移动类型不是随便选退货收货的移动类型有651、652、653三者的差异在库存状态和质检控制上。多数企业把652设为默认因为退回货物是否合格需要质检部门确认。三者的对比如下移动类型库存状态使用场景适用注意651非限制使用库存退回可直接上架销售免检直接可用652冻结库存退回必须质检后转正式库存常用默认值配合631释放到非限制库存653冻结库存冻结退回收货业务不启用批次管理启用批次时不要使用MIGO操作时事务类型选A01收货移动类型填652参照凭证填VL01N创建的退货交货单号。数量、批次和交货单保持一致工厂和库存地点在抬头里维护。过账后物料进入冻结库存。这里三个高频报错批次不一致会提示批次错误库存地点和交货单不一致会提示无法确定存储位置参照凭证填成退货订单而不是交货单会生成第二张重复收货。如果希望把MIGO的动作自动化可以调BAPI_GOODSMVT_CREATE参数示例如下DATA: ls_header TYPE bapi2017_gm_head_01, lt_item TYPE TABLE OF bapi2017_gm_item_create, lt_return TYPE TABLE OF bapiret2. ls_header-pstng_date sy-datum. ls_header-doc_date sy-datum. ls_header-move_type 652. 退货到冻结库存 APPEND VALUE #( material P-1001 plant 1000 stge_loc 0001 move_type 652 entry_qnt 10 ) TO lt_item. CALL FUNCTION BAPI_GOODSMVT_CREATE EXPORTING goodsmvt_header ls_header goodsmvt_code 01 TABLES goodsmvt_item lt_item return lt_return.注意BAPI里抬头和行项目的move_type必须一致plant和stge_loc不能为空entry_qnt按交货单剩余数量填写。返回值lt_return里如果有E类型消息优先检查物料状态和批次而不是重复提交。3.3 VF01开贷项凭证金额从哪里来退货流程走到VF01系统生成贷项凭证。开票金额不是从MIGO来的而是来自退货订单的定价条件所以前面订单上PR00等条件是否带入正确直接决定最终金额。如果退货订单上的价格在VA02里被退回原因改写或者条件记录丢失VF01会开出金额偏小或为零的凭证。开票前先走VF04开票到期清单按销售区域、客户筛出到期交货单点“个别开票”把交货行的数量和价格带到贷项凭证。VF04里看不到交货单时先确认交货单是否已发货过账未过账的交货单不会进开票清单这是最容易被忽略的前提。3.4 VA03与VF03核对单据流状态开票完成后用VA03打开退货订单切到“后续单据”页签交货单、物料凭证、贷项凭证应完整排开。每行状态变成“已完成”才算闭环。贷项凭证显示“未过账”就进VF02改记账状态物料凭证数量对不上则回MIGO查参照凭证。批量对账时不逐个点VA03直接查VBRK和VBRP按VGBEL字段反查退货单号把所有贷项状态一次拉出来这个技巧在月结前特别实用。4. 换货流程的两种典型处理方式与参数选择换货是退货的延伸。业务上两种常见做法免费补发新货或退款后重新开单。SAP SD里对应REN免费换货行项目和RET退货行项目。选择哪种取决于定价和库存客户已经付过款的产品换货不需要第二次收款使用REN并把价格强制设为零客户要求退款则走RET收货和贷项凭证把款项退回去。4.1 免费换货退货单上加一个REN行项目免费换货的做法是在同一张退货订单里同时维护RET和REN两个行项目。RET行负责把坏货收回REN行负责补发新货。REN项目类别在后台配置里交货类型是LF也就是免费交货VL01N创建交货单时不会检查销售价格只触发免费发货。补发货物的成本在成本对象上归集不在销售开票环节体现。创建REN行的方式是复制RET行然后手动把项目类别改成REN。复制后必须检查定价条件REN行绑定的定价过程应有一个强制价格为零的条件类型如果后台没配系统会沿用RET行的价格导致免费换货单上带出价格。在VOV6里查看REN项目类别页签中定价类型应设置为F表示该行项目免费。交付类型LF和开票类型RE的搭配也在这个画面里确认。4.2 退款不换货贷项凭证直接完成如果客户只要退款那么RET行收货后直接VF01开贷项凭证即可。此时没有补发动作也就不会生成第二张交货单。开票类型在标准配置里通常是RE退货贷项凭证也有企业统一用G2普通贷项凭证区分财务科目具体映射在订单类型RE的开票页签维护。这个流程最短但财务侧要注意贷项凭证是否参与信用更新避免客户信用额度被重复扣减。4.3 部分退货部分换货怎么拆实际业务里经常是退回五件两件退款三件补发。典型做法是同一张退货订单两行一行RET数量三件一行REN数量两件各行挂不同退回原因。仓库一次收货完成财务按行分别处理。换货行的新批次在VA02里修改不能沿用旧批次因为旧批次对应的是退回的坏货。只有验收地点不同、财税要求强制分离时才拆成两张退货单否则一张单多行是最优方式。5. 退换货流程落地后的验证与排错流程上线后问题最集中的在月末对账。我的习惯是固定跑两个检查一个对账报表一个手工抽单。对账报表直接统计VBFA里后继类型为M和L的记录快速发现货收了票没开、票开了货没到的订单。可以用CDS视图实现AbapCatalog.sqlViewName: ZSD_RET_CHK AbapCatalog.compiler.compareFilter: true AccessControl.authorizationCheck: #NOT_REQUIRED EndUserText.label: 退货流程单据流检查 define view ZSD_RETURN_CHECK as select from vbak as h inner join vbfa as f on f.vbelv h.vbeln where h.auart RE and f.vbtyp_n in (M, L) };视图把退货抬头表VBAK和单据流表VBFA关联统计退货订单的后继记录。AbapCatalog.sqlViewName是底层SQL视图名称部署后在SE11能看到同名数据库视图AccessControl.authorizationCheck: #NOT_REQUIRED表示不强制启用CDS访问控制适合内部运维直接查询。后续使用建议按创建日期再加过滤条件避免全量扫描VBAK影响报表性能。5.1 三个高频错误定位第一个高频错误是“找不到定价过程”。先到VOV8看订单类型RE的定价过程再到VOV6看RET和REN项目类别的定价类型确认RVAALU等标准定价过程没有被覆盖或删除。第二个是“贷项凭证金额为零”。检查退货订单行项目的PR00条件是否存在再看退回原因是否设置了覆盖价格的条件类型两者有一个失效都会导致金额为零。第三个是“批次未找到”。确认物料主数据的批次管理状态核对VA01和MIGO输入批次是否完全一致包括前后空格。5.2 用报表把问题前置给运维人员的实操做法是每周跑一次VBFA后继单缺失清单对照清单处理“已收货但未开票”的订单统一在VF02里补记账或做凭证冲销。用这种前置检查代替用户提单后再定位能避免月底自动开票时一次性爆发错误。本文还有配套的精品资源点击获取