【SAP-PS笔记】项目交货之基于销售订单VL01N交货

本文介绍了一种基于销售订单行项目进行发货的新方法,适用于销售型项目系统流程。通过特定配置,可在销售订单中直接创建发货单,实现物料发货与开票流程的分离,提高业务流程透明度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

PS顾问可能都清楚,在销售型项目上的物料需要发货至客户时,如涉及交货一般常用CNS0创建项目交货单,将项目下的物料发货至客户。
因此我们设计销售型项目系统流程时,一般使用以下流程:
1、销售订单创建,且创建一行,该行物料代表整个项目,用于开票确认收入
2、项目下挂接物料(成品、半成品及原材料)需求及发生其他成本
3、项目下物资生产入库或采购入库,通过MIGO+281/221领用至项目或CNS0+VL02N发货至客户。
4、基于项目发货情况或里程碑开票,确认收入

但是往往客户在实施PS之前,特别是销售部门人员,都对销售-生产-发货这套业务流程及系统操作比较熟悉,在使用PS之后,通过CNS0创建交货单(该交货单并不基于销售订单行项目,与销售订单无直接关联),导致SD的一些报表无法追踪交货情况,销售人员也无法知道哪些物料需要交货,交货进度,是否可以开票等信息……
那我们能通过销售订单行项目,对项目下物料进行交货吗?答案是可以的。

如使用销售订单交货的业务流程:
1、 创建销售订单,销售订单首行代表整个项目用于开票确认收入,不交货只开票;销售订单第二行开始,挂接项目需交货物料,不开票只交货。
2、 项目下挂接非交货行物料及发生其他成本
3、 发货项物资入库,通过VL01N基于销售订单创建交货单并发货过账
4、 基于项目发货情况或里程碑开票,确认收入

系统配置

要实现在项目类销售的销售订单中通过基于销售订单交货,需要做如下的配置改动(配置基本都在SD模块,针对PS顾问可知悉并要求SD模块配合)。另外针对项目订单首行开票行的配置,与正常销售项目配置并无不同,在此不再进行说明,不过可通过销售订单下挂接物料,自动创建项目和网络的系统操作,后续有空可介绍。
下面只说明发货行的配置调整:
1、 新建或增改销售订单项目类别,建议新建,设置特殊库存Q,且不与发票及订单不相关
在这里插入图片描述

2、 新增或修改计划行类别,科目分配类型调整为Q。
在这里插入图片描述

移动类型:可使用601的移动类型,但是可能调整对于Q库存的交货科目,因为原则上不会直接进项目成本而非主营业务成本或销售成本。
请求/装配:如果希望销售订单发货行触发需求勾选,如果希望需求通过PS触发就不勾选,建议勾选,使用销售订单直接触发发货行项目的生产或采购,这样需求与供给才是闭环。

3、 新增/修改需求分类,建议新增,其中科目分配类型修改成Q
在这里插入图片描述
上述为重点配置调整,其他配置如销售订单行项目类别分配至销售订单,计划行类型分配至行项目类别,需求分类分配至需求类,需求类分配至项目类别等配置都是SD顾问的常规配置不做说明。

系统演示:

上述配置完成后,即可实现基于销售订单行项目进行发货,效果如下:
1、创建项目销售订单,首行为开票行,下面为发货行。
在这里插入图片描述

2、查看MD04,发货行已产生需求,该需求为项目库存Q的需求
在这里插入图片描述

3、运行MRP后,产生计划订单
在这里插入图片描述

4、计划订单转生产订单,同时生产订单同样是带Q,包括生产订单下的需求需求,全部带Q
在这里插入图片描述
在这里插入图片描述

5、生产订单入库,系统自动101+Q入库,产生项目库存
在这里插入图片描述

6、VL01N创建交货单,可拣配发料
在这里插入图片描述

7、交货单发货过账后,在VA03中查询发货行凭证,能看到对应交货信息
在这里插入图片描述

8、查询项目成本报表,可看到对应的物料成本已过账至WBS。(注:下图并未修改移动类型601+Q对应的科目,故成本进到了主营业务成本6401*的科目,最佳的方案是修改成对应项目成本的科目,主营业务成本的确认应基于项目结果分析)
在这里插入图片描述

### 关于 ABAP 中 VL02N 内向交货的相关 BAPI 及其使用 在 SAP 的业务流程中,VL02N 是用于更改内向交货单的标准事务代码。虽然官方文档并未直接提供针对 VL02N 的特定 BAPI,但在实际开发过程中可以利用一些通用的 BAPI 来实现类似的逻辑操作。 以下是基于已有资料和专业知识整理的内容: #### 常见的内向交货更新相关 BAPI 1. **`BBP_INB_DELIVERY_CHANGE`**: 这是一个常用的函数模块,专门用于修改内向交货单的信息[^3]。它允许开发者通过编程方式调整交货头数据以及项目级别的细节。 2. **`BAPI_DELIVERY_SAVE`**: 此函数主要用于保存已有的交货记录变更。尽管它的功能较为基础,但它能够满足大部分场景下的需求[^1]。 3. **`BAPI_TRANSACTION_COMMIT` 和 `BAPI_TRANSACTION_ROLLBACK`**: 在执行任何涉及数据库写入的操作之后,通常需要调用这些事务提交/回滚接口来确保数据一致性[^2]。 #### 示例代码展示如何使用上述 BAPI 修改内向交货单 下面是一段完整的 ABAP 代码片段,演示了如何运用 `BBP_INB_DELIVERY_CHANGE` 函数完成对现有内向交货条目的编辑工作: ```abap DATA: ls_header TYPE bapiinhd, lt_items TYPE STANDARD TABLE OF bapiindt, ls_return TYPE bapiret2. " 设置头部信息 (假设我们已经知道要修改的具体交货编号)" ls_header-delivery = '12345678'. ls_header-shipping_point = 'NEW_SHIPPING_POINT'. APPEND INITIAL LINE TO lt_items ASSIGNING FIELD-SYMBOL(<fs_item>). <fs_item>-itemnumber = '000010'. " 物品号 <fs_item>-quantity = '2.000'. " 新数量 MODIFY lt_items INDEX 1. CALL FUNCTION 'BBP_INB_DELIVERY_CHANGE' EXPORTING is_inb_delivery_header = ls_header IMPORTING et_return = ls_return[] TABLES it_inb_delivery_detail= lt_items. IF NOT ls_return[] IS INITIAL. LOOP AT ls_return INTO DATA(ls_single_return). WRITE: / ls_single_return-message, ls_single_return-type. ENDLOOP. ENDIF. ``` 此脚本首先定义了一些必要的变量并初始化它们;接着指定了目标交货及其新属性值;最后调用了指定的功能模块来进行实际的数据更新过程,并处理可能返回的消息列表以便进一步分析错误情况或者确认成功状态。 --- ### 注意事项 - 上述例子仅作为参考模板,在真实环境中应用前需根据具体业务需求做适当调整。 - 如果遇到复杂定制化的要求,则可能还需要额外考虑其他辅助类别的 API 或者自定义扩展程序的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP-Zhan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值