Product Information
探究S/4HANA Cloud销售模块中发出商品科目的使用方法
在S/4HANA Cloud中,销售模块与财务模块的集成有很多,以最佳实践中的库存销售(BD9)为例,会在出库交货单过账和发票开具时,触发产生会计凭证,实现自动记账。
其会计凭证分录如下:
1. 出库过账(Post goods issue),物料凭证移动类型601
借:销售成本
贷:库存商品
2. 发票过账(Billing release to accounting)
借:客户(应收账款)
贷:销售收入
应缴税费-销项税
以上是SAP标准的销售记账方式,不需要额外的配置。但是在国内,很多企业对于已经发出但尚未确认销售收入的商品成本,会习惯于使用“发出商品”科目进行核算。即企业对于发出的商品,当销售交货后,并不直接计入销售成本转而计入发出商品,而在销售发票开具之后,再计入收入与成本。以此保证收入与成本在同期完成。
对此类非标准需求Cloud不建议大家使用,如果可以的话尽量说服客户选用标准的记账方式。虽然OP对于发出商品科目的处理方式可以有多种,但是在Cloud版本里,我们可以做的改动有限,如果非得要使用的话,那么本文跟大家一起探究一下如何在Cloud里实现使用发出商品科目。
声明:以下方案与代码均是基于个人经验总结的内容,并不是SAP标准最佳实践交付内容。
配置步骤
1. 设置定价条件类型 (SSCUI : 101120)
参考条件类型 PCIP 复制一个自定义条件类型,其余信息不更改,将“控制数据2”中的“应计”勾选。
下文中以ZC01代表该自定义条件类型。
2. 在定价中定义需求(SSCUI : 102627)
由于ZC01与普通的成本字段不同,在某些特定的凭证中我们并不需要ZC01出现,如贷项凭证,所以需要自定义需求。
3. 编辑需求代码 (自定义字段和逻辑)
参考原内部价格条件PCIP的需求逻辑,调整一些与发出商品科目有冲突的凭证类型,使ZC01条件在某些条件中不激活。
具体代码逻辑不再叙述,详见下边代码及注释。
————————————————————————————————————
IF item_attributes-salesdocumentitemcategory eq ‘CRN’. “Consignment return credit memo
CHECK item_attributes-costdeterminationisrequired = ‘X’.
pricingrequirementisfulfilled = ‘X’.
EXIT.
ENDIF.
CHECK doc_attributes-salessddocumentcategory ne 'K'. "Credit memo request
CHECK doc_attributes-salessddocumentcategory ne 'O'. "Credit memo
CHECK doc_attributes-salessddocumentcategory ne 'L'. "Debit memo request
CHECK doc_attributes-salessddocumentcategory ne 'P'. "Debit memo
CHECK doc_attributes-salessddocumentcategory ne 'S'. "Credit memo cancellation
CHECK doc_attributes-companycode ne space. "Company code
CHECK item_attributes-valuationarea ne space. "Valuation area
CHECK item_attributes-plant ne space. "Plant
CHECK item_attributes-costdeterminationisrequired = 'X'.
CHECK item_attributes-salesdocumentitemcategory ne 'TAX'. "Non stock item
CHECK item_attributes-salesdocumentitemcategory ne 'TAXN'. "Non stock free
CHECK item_attributes-salesdocumentitemcategory ne 'TAD'. "Service item
CHECK item_attributes-salesdocumentitemcategory ne 'TADN'. "Service item free
pricingrequirementisfulfilled = 'X'.
————————————————————————————————————
4. 定义科目代码 (SSCUI : 102175)
此配置定义自定义记账码,用于收入确认时,将发出商品转成本。
5. 设置定价程序(SSCUI : 101117)
复制标准定价过程Y13101,并将原PCIP条件替换为ZC01,在“利息” (翻译不准确,其实应该理解为应计,Accrual)填上自定义的记账码 Z01。
需求选用第2步中定义的需求编号。
6. 自动科目确定MM (SSCUI : 100297)
此配置确定出库交货和退货入库的自动记账配置。
a. 交货出库过账 601/602 :
将GBB / VAX 对应总账科目借贷方改为发出商品科目, 使其在发货时计入发出商品科目。
将GBB / VAY 对应总账科目借贷方改为发出商品科目,此项对应部分含科目分配的订单。
b. 退货入库
此处配置实现在退货发生时,对销售成本反记账。
新增一般修改 Z03,维护借贷方科目为销售成本科目。
7. 自动科目确定SD (SSCUI : 100297)
此处配置实现销售开票时转出发出商品,计入销售成本。
新增科目代码Z01相应配置,将总账科目选发出商品科目,应计选销售成本科目。
若有其他收入确定配置涉及Z01,一并相应更改。
8. 移动类型自定义 (SSCUI : 103170)
此处配置实现退货过账时计入销售成本,配合6.b 配置。
a. 更改移动类型 653 654 (对应简易退货, Scope item BDD)
将VAX / VAY 对应科目修改更改为自定义的Z03,特殊库存的我这里并没有做更改 。
b. 更改移动类型 657/658 & 419/420 (对应加速退货, Scope item BKP)
657/658 自有库存退货过账,计入销售成本。
419/420 非自有退货库存经过质检变为自有库存,在这里计入销售成本。
通过以上配置,实现新的自动记账规则如下:
i. 库存销售流程 (BD9)
1. 出库过账(Post goods issue)
借:发出商品
贷:库存商品
2. 发票过账(Billing release to accounting)
借:客户(应收账款)
销售成本
贷:销售收入
应缴税费-销项税
发出商品
ii. 销售简易退货 (BDD)
1. 退货入库过账(653)
借:库存商品
贷:销售成本
2. 退货贷项凭证过账
借:销售收入
应缴税费-销项税
贷:客户(应收账款)
iii. 销售加速退货 (BKP)
1. 退货入库过账-自有库存(657)
借:库存商品
贷:销售成本
2. 检测入库过账-自有库存 (419)
借:库存商品
贷:销售成本
3. 退货贷项凭证过账
借:销售收入
应缴税费-销项税
贷:客户(应收账款)
4. 原货发回客户 (658)
借:销售成本
贷:库存商品
5. 免费换货发回客户
5.1 出库过账
借:发出商品
贷:库存商品
5.2 发票过账
借:销售收入 (对抵)
销售成本
贷:销售收入 (对抵)
发出商品
以上为本人总结的销售模块发出商品科目的使用方法,并未完全覆盖所有销售流程,如三方交易等业务模式仍未覆盖到。
希望对大家有所帮助,如果有什么想法欢迎您留言讨论或提问。谢谢。
我们项目正在做发出商品配置,请问可以提供一份下面这步详细的操作说明吗?我们对Cloud里的增强 不太熟悉,不知道怎么来匹配增强代码和需求代号,导致定价过程ZC01一直无法生效。
在“自定义字段和逻辑”里创建BADI增强。通过需求代号进行和routine number匹配。
感谢!
增强标识符别用initial, 改个特定的字符串比如“ZC01”, 两边都改对应一下。
Hi Tony,
我把两边的增强标识符都改成了992,销售订单定价分析里消息显示:不满足条件(不满足需求 3000002),是不是我这边代码写错了呀?
我代码是这样的,销售订单行项目里,项目类别未TAN。
IF item_attributes-salesdocumentitemcategory eq'TAN'.
CHECK item_attributes-costdeterminationisrequired = 'X'.
pricingrequirementisfulfilled = 'X'.
EXIT.
ENDIF
从代码上看应该没什么问题。
把IF去掉看看能不能成功。
Hi Tony,
谢谢Tony老师,代码确实没什么问题,之前报错可能是因为我早上调整代码以后没有退出系统重进,所以代码调整发布后估计没有生效。
按照我们改的这个代码做出来的效果是:
TAN:标准销售订单,会使用发出商品科目记账。
其他类型:借贷项凭证等,会将ZC01-发出商品计价条件屏蔽掉,开票时仅有主营业务收入、应收账款、增值税科目。
还有我们在Tony老师方案的基础上做了点调整,可能是我们项目比较特别,我们VAX/VAY这个一般修改不仅用在了移动类型601上,还用于了643、673等移动类型。但是我们只需要在销售订单这里使用发出商品,所以我们是在GBB里面新增了两个一般修改Z04/Z05,来配置发出商品科目,并把601上的VAX/VAY改成了Z04/Z05,目前测试来看是满足我们的要求的。
这里供大家参考吧。
赞