Skip to Content
Product Information
Author's profile photo Tony Yan

探究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 发票过账

借:销售收入 (对抵)

销售成本

贷:销售收入 (对抵)

发出商品


 

以上为本人总结的销售模块发出商品科目的使用方法,并未完全覆盖所有销售流程,如三方交易等业务模式仍未覆盖到。

希望对大家有所帮助,如果有什么想法欢迎您留言讨论或提问。谢谢。

Assigned Tags

      6 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Jingjue Wang
      Jingjue Wang

      Hi Tony,

      我们项目正在做发出商品配置,请问可以提供一份下面这步详细的操作说明吗?我们对Cloud里的增强 不太熟悉,不知道怎么来匹配增强代码和需求代号,导致定价过程ZC01一直无法生效。

       

      在“自定义字段和逻辑”里创建BADI增强。通过需求代号进行和routine number匹配。

       

      感谢!

      Author's profile photo Tony Yan
      Tony Yan
      Blog Post Author

      增强标识符别用initial, 改个特定的字符串比如“ZC01”, 两边都改对应一下。

      Author's profile photo Jingjue Wang
      Jingjue Wang

      Hi Tony,

       

      我把两边的增强标识符都改成了992,销售订单定价分析里消息显示:不满足条件(不满足需求 3000002),是不是我这边代码写错了呀?

      我代码是这样的,销售订单行项目里,项目类别未TAN。

      IF item_attributes-salesdocumentitemcategory eq'TAN'.

      CHECK item_attributes-costdeterminationisrequired = 'X'.

      pricingrequirementisfulfilled = 'X'.

      EXIT.

      ENDIF

       

       

      Author's profile photo Tony Yan
      Tony Yan
      Blog Post Author

      从代码上看应该没什么问题。

      把IF去掉看看能不能成功。

      Author's profile photo Jingjue Wang
      Jingjue Wang

      Hi Tony,

       

      谢谢Tony老师,代码确实没什么问题,之前报错可能是因为我早上调整代码以后没有退出系统重进,所以代码调整发布后估计没有生效。

      按照我们改的这个代码做出来的效果是:

      TAN:标准销售订单,会使用发出商品科目记账。

      其他类型:借贷项凭证等,会将ZC01-发出商品计价条件屏蔽掉,开票时仅有主营业务收入、应收账款、增值税科目。

       

      还有我们在Tony老师方案的基础上做了点调整,可能是我们项目比较特别,我们VAX/VAY这个一般修改不仅用在了移动类型601上,还用于了643、673等移动类型。但是我们只需要在销售订单这里使用发出商品,所以我们是在GBB里面新增了两个一般修改Z04/Z05,来配置发出商品科目,并把601上的VAX/VAY改成了Z04/Z05,目前测试来看是满足我们的要求的。

      这里供大家参考吧。

      Author's profile photo Tony Yan
      Tony Yan
      Blog Post Author