项目终于快结束了,博主终于要结束这长达近9个月的非人类生活了。从愚人节一直干到圣诞节,哎[转]分享一个多重公司间交易的设计方案

 

先不说这个烂项目了,项目里面没啥SD的东西,基本上啥功能都没有使用,只有一个比较有特色的东西拿来给大家分享一下,那就是多重公司间交易。

 

所谓多重,那就是客户来找A公司买东西,A从B买,B从C买,C从D买……为啥会有这种奇葩的卖货方式?跟公司的性质有关,当然也有很多时候是为了避税等情况考虑。用在Global公司的时候多一些,国内公司也有这么搞的。

 

如果是2家公司,可以使用的方式很多,在一个Client内,可以用跨公司销售,如果不在同一个Client内,也可以考虑用第三方销售或者独立采购的方式。如果增加到3家公司,那么SAP的标准功能就不支持了,一般比较容易想到的是,用2家公司的方式,再加一个STO来解决。可是如果再加第4家呢?后面再有呢?

 

博主提供了一个一劳永逸的解决方案。[转]分享一个多重公司间交易的设计方案

 

国内的公司,特别是没使用过SAP的公司,一般都有一个癖好,那就是会要求公司间交易必须在系统上做出库入库,即使实物没有进来。这都是拜国内的ERP公司所赐,财务体现成本必须要经过库存。不过也罢,博主这个方案完美支持国内公司这种BT的癖好……

 

其实呢,方案也很简单,就是在交货单创建完成后,通过Output触发一个IDoc,自动创建一张STO。嗯,就是这样。完事了?嗯,再补充点吧。

 

先解释一下为啥是通过交货单触发STO而不是销售订单。公司间交易比较容易的办法是创建STO,而并非SO+PO这种模式。那么STO呢,相当于省掉了一张SO,在收货方跟PO没什么区别,就是PO+GR+IV,而在发货方就只有DN+BILLING。这样一来,如果想在发货方再去触发跟第3个公司之间的交易,是没有SO的。如果想做成通用的,那么就在DN上有这个信息,所以要通过DN来触发STO,然后这个STO的DN里面再判断,如果还需要继续采购,再触发STO,子子孙孙无穷匮也……具体看下图。

[转]分享一个多重公司间交易的设计方案

这样就解决了吗?当然不是,不然博主也不会发这么一篇文章滥竽充数了。因为不是所有的产品,所有的情况下都要做公司间交易,那么就需要判断,在什么情况下需要做。而这个判断,是可以通过标准功能来实现的。

 

前面讲过装运点确定,复习一下。装运点,可以用来做交货单拆分的关键因素。确定装运点,需要得到订单上面的装运条件,和物料主数据销售/工厂视图上的装载组。装运条件的来源优先级依次是:手工在订单上指定/订单类型配置/客户主数据销售视图。而物料主数据上面的装载组,虽然位于销售/工厂视图,但是其实存储于MARC上,也就是只跟工厂相关。

 

回头看下需求。一般来说就是在A公司,某些产品多半时候都要去跟B公司采购,特殊情况下,这些产品可能直接在A公司直接销售。以此类推,应该都是一样的。再有一种情况,就是某客户跟A公司买某些产品,就都要从B公司采购。总之,要么从业务类型上,要么从客户上,要么从物料上就应该能够确定是否需要做公司间采购。这样方案就出来了。

 

先说物料,既然是在工厂视图上面,那么就可以通过一个物料在不同的工厂来设置不同的装载组,比如在A01工厂,该物料设置成需要采购,在A02工厂,设置成不需要采购。那么工厂如何确定呢?排除手工在订单指定的情况,工厂确定来源于:1客户物料主数据,2客户主数据销售视图,3物料主数据销售视图1. 一般公司很少用客户物料主数据,而客户主数据上指定交货工厂一般不太符合业务实际需要。多半是物料主数据销售视图上面指定一个。这样的话,可以根据不同的销售组织+分销渠道的组合来设置一个交货工厂,换句话说,指定了交货工厂,就相当于指定了这个物料的装载组了。

 

再说装运条件。如果业务模式比较简单,只通过物料本身就可以区分是否要做公司间采购,那么装运条件就可以省了。如果有些客户有要求,那么可以在客户主数据上面设置一些装运条件。如果是某些业务有要求,那么也可以在订单类型上面设置默认的装运条件。实在不行,还可以在创建订单的时候,通过手工修改装运条件或者交货工厂来实现区分。

 

这样一来,一个订单上面可能有很多行,有的属于自有的,有的属于要公司间采购的,它们会确认到不同的装运点,在交货单创建的时候,自然就拆分开来了。

 

有了按装运点拆分好的交货单,那么是否创建STO就容易多了。做一个自定义表,基本上只需要以装运点为主键设计就好了,按装运点来确定这个STO的供应商、税码、采购组织、采购组等信息,至于物料、工厂、库存地,直接跟交货单一样就好了。做一个按装运点维护的输出类型,在这个输出类型里面写好程序,调用自定义表的信息,STO就可以创建好啦。

 

这样一来,不管你有1次,还是2次、N次公司间交易,就通通可以通过配置自定义表以及装运点确定来实现了。

 

最后还有一个小问题,那就是交货单跟它所自动创建出来的STO如何去关联呢?

 

目前博主有2个可行方案。

 

首先在做STO的时候,一定在STO的抬头找个字段把交货单号记录下来。一般是使用您的/我的参考或者汇总号等。2个方案都需要写这个字段,这个很容易。但是这个只是实现了从STO到交货单的关联,如果想通过交货单号去查找STO,放在哪个字段,都不是EKKO的主键,找起来效率很低。那么怎么办呢?

 

方案1:在交货单上面做个增强,设置一个跟STO号码段一样的开发号码段。每创建一个需要做STO的交货单,就自动读取这个号码段,写在交货单抬头的某个字段上(建议用外部交货单号字段),然后STO需要配置成外部给号,这样两边就连起来了。

 

方案2:也是博主比较喜欢的方案,就是在STO保存的时候,再做一个OUTPUT,直接写VBFA表。不要一看到直接写表就嗤之以鼻了。VBFA表里面,允许的非SD的凭证,就只有采购订单了,这个单是完全可以写到VBFA的。而且这个表跟其他表又没什么关联关系,写进去非常安全。好处就是,在交货单的凭证流里面就可以看到这个STO,而且点显示的话可以显示哦。如果不是对这种开发控制非常严格的话,墙裂建议用这种方式。

 

贴个图瞅瞅


[转]分享一个多重公司间交易的设计方案
[转]分享一个多重公司间交易的设计方案
第一张销售订单是A公司对外的订单,根据不同的公司间内部供应商,分了1和2两张交货单,分别创建了2个STO,以及还有一些无库存管理的物料,形成了第三张交货单,可以看见这个交货单的发货过账是一个服务确认。没有产生STO。

第二张图是第一张图里面1号STO的销售方B公司的凭证流,可以看见这个STO的交货单又触发了另外一张STO,即B公司对C公司采购。

 

好了,先说到这吧,这个方案里面其实主要用到了交货工厂、装运点的确定(实际还有库存地点确定),做了一个IDoc STO的开发以及一个很简单的更新VBFA表的开发。就酱,有问题欢迎大家讨论,下次

相关文章:

  • 2022-01-25
  • 2021-11-26
  • 2021-10-05
  • 2021-09-21
  • 2021-12-20
  • 2022-01-01
  • 2022-12-23
  • 2021-12-01
猜你喜欢
  • 2021-04-03
  • 2022-01-23
  • 2021-12-23
  • 2021-04-26
  • 2021-08-13
  • 2022-12-23
相关资源
相似解决方案