最近有个需求 需要对交货单超过限额的时候,进行分割。 不要发票合并
如何disable发票分割invoice split
在MAX ONE公司目前的业务实践中,同一个客户在同一张销售订单中的物料有不同的销售区域,所以,客服下单的时候,会去把从客户主数据中带过来的销售区域手工改掉。
但是问题就来了,根据SAP的标准,如果在同一销售订单中,item的销售区域不同,那么,在发票中,就会根据不同的销售区域把不同的发票拆分掉。而财务则不干了,因为在他们看起来,即使item属于不同的销售区域,但是客户的要求就是一张销售订单就生成一张发票,于是,客服和财务就吵起来,并且找到我何慕雄来解决了。
我听了他们的介绍,微笑地告诉他们说,这个是SAP的标准,而且,不但是sales district销售区域,而且其他相关的类似的field,如price group, customer group和price list type等都可以引起发票的分割。
那么,如何解决这个问题呢?其实啊,方法也有两种,一种就是叫客服在下单的时候不要用sales district销售区域的罗,但是,这个建议给马上否定了,因为他们是用sales district销售区域来做报告reporting的,所以这个方案就行不通了。
那么,就用另外一个方法了,就是改系统配置和做一些小的开发了。
首先,在T CODE VOFM中选择data transfer – billing document, 然后是双击7,并且把7复制并重新命名为9XX,并叫ABAPer进去修改,不让系统基于price group来拆分。
大概的CODE 如下:
FORM DATEN_KOPIEREN_6XX. * Kopfdaten * VBRK-xxxxx = .... VBRK-BZIRK = KUAGV-BZIRK. <--- insert VBRK-KDGRP = KUAGV-KDGRP. <--- insert VBRK-KONDA = KUAGV-KONDA. <--- insert VBRK-REGIO = KUAGV-REGIO. <--- insert VBRK-PLTYP = KUAGV-PLTYP. <--- insert ... ENDFORM
关于code的详情,可以看SAP OSS NOTE 36832.
如果disable发票分割invoice split,那么,我就说一下,在SAP中,到底是什么情况会造成发票分割的吧。首先,如果发票有分割invoice split的话,我们可以去billing document中去看发票分割的分析,这个发票分析是在R/3 3.0以后才有的,而在3.0前要分析这个发票分割是很痛苦的,要通过debug等才可以做到的。
那么,该如何看到这个发票分割的分析呢?
在输入命令VF01后,如果该发票要分割,则highlight要分割的两张发票,然后按split analysis的按键,你就可以看到split analysis啦,如下图,你可以看到因为不同的price group, 所以,系统会分割成为了两张发票。
以上的这个是在VF01创建BILLING的命令里面看分割的分析,如果在修改和显示中,则可以在VF02/VF03的命令中,你可以在Environment中看到这个分割的分析。
在发票分析中,我们可以看到很多不同的原因造成发票分割,这些不同的原因可以大概分为以下这三大类,下面,我将会一一的叙述。
第一, 在header抬头中的field不一致。一般来说,这个说起来也合理,如果是header抬头中的field的值不一样的话,系统确实会分开。
但是,现在的问题是系统的header的值一般是由客户主数据中带过来的,而这些header的值也会复制到item行项目里面,而用户是可以在item行项目中修改这些header的值的,如果在item行项目里面修改了这些值,造成item与item之间,或者是item与header之间的值不一样,那么发票就会被分割了。
举个例子吧,在销售订单中,付款条件terms of payment同时在header抬头和item行项目中存在,而付款条件在发票billing中只有header抬头;那么如果在销售订单中,header和item的付款条件不一致的话,那么发票就一定会分割了。而是否所有的header的field的值不同都会分割呢?呵呵,基本上都是吧,而且这里有很多的header的值都是隐藏的,都是在销售订单或者是发票中看不到的。当然了,还有少数几个值是不会因为分割的,这些值如下。其实啊,这些值也是没有必要分割的,像发票的净值啊,税额啊,创建者啊,创建时间啊等等,有什么分割的意义呢?所以SAP对这些抬头header的值是不分割的,而其他全部都分割的。 VBRK-KNUMV Number of the document condition VBRK-NETWR 发票(订单)净值 VBRK-MWSBK 订单的税额Tax amount in document currency VBRK-VBELN 发票号码Billing Document VBRK-RFBSK Status for transfer to accounting VBRK-ERNAM 发票的创建者Name of Person who Created the Object VBRK-AEDAT 发票的修改时间Changed On VBRK-ERDAT 发票的创建时间Date on Which Record Was Created VBRK-ERZET.
第二, 如果抬头的partner伙伴不一样的话,发票也会进行分割的。要注意的是,这里指的是抬头header的伙伴关系,而不是行项目item的伙伴关系;为什么要强调这一点呢,因为无论是销售订单还是在发票,partner都是在抬头或者是行项目中存在的;而发票分割只针对抬头的伙伴。而要注意的除了销售订单和发票以后,如果发票是根据发货单delivery来创建的,那么,发货单delivery的partner伙伴也要一致,否则如果发货单的partner不一致的话,发票也会分割的。
第三个会分割的原因就是配置,configuration的设置了,我在如何disable发票分割invoice split中说过,我们可以通过配置configuration来修改发票分割的。俗话说诲人不倦,我下面再详细说一下。
首先,在T CODE VOFM中选择data transfer – billing document, 然后是双击3 single invoice,并且把3复制并重新命名为9XX,并叫ABAPer进去修改。
大概的CODE 如下:
FORM DATEN_KOPIEREN_6XX. * Kopfdaten * VBRK-xxxxx = .... VBRK-BZIRK = KUAGV-BZIRK. <--- insert VBRK-KDGRP = KUAGV-KDGRP. <--- insert VBRK-KONDA = KUAGV-KONDA. <--- insert VBRK-REGIO = KUAGV-REGIO. <--- insert VBRK-PLTYP = KUAGV-PLTYP. <--- insert ... ENDFORM
关于code的详情,可以看SAP OSS NOTE 36832.
其次修改改系统配置,菜单就是SPRO-Sales and Distribution – Billing – Billing Documents – Maintain Copy Control for Billing Documents – Copying Control: Delivery Document to Billing Document , 你可以选择 source delivery type是LF, target billing type是F2,然后你可以选择item category是TAN等,然后,你就可以选择Data VBRK/VBRP中的那些requirement, 这个requirement是用来控制invoice split发票分割的,你就可以在Data VBRK/VBRP中填入你刚才在VOFM中新建立的routine9XX.做完了这个配置后,系统就会按照你的要求进行发票分割了。