VBUK/VBUP changes in S4 HANA

参考note 2198647及其中的cookbook
在SAPERP中,SD事务文档的状态值并不保存在文档表本身中,而是保存在表VBUK(用于header)和VBUP(用于item)中。,但是到了S4HANA,这两个表被简化了,SD事务文档的状态值现在存储在文档表本身中。销售订单的状态被放到了VBAK和VBAP,Delivery的状态被放到了LIKP和LIPS,Billing的状态被放到了VBRK,(billing没有item状态)
VBUK的字段:
在这里插入图片描述
VBUP的字段:
在这里插入图片描述

VBUK和VBUP被清空了,但表结构还在,虽然表结构还在,由此变化带来了很多custom code的调整,以下是可能需要调整的n种情况,请对号入座。

调整:
对VBUK/VBUP的读写操作都需要适应这个变化,增强的字段也要在其它表上创建。同时,相应的 views, LDBs (logical databases), search helps, domains, and TABUs都需要做出调整。

一种特殊情况是在其它表或结构中用其作为字段的检查表,特别是在利用检查表的屏幕和report中。要检查这些类型的使用,以避免功能的损失。通常会在屏幕上做VBELN/POSNR的否决检查,如果建立了下列设置,则否决检查是有效的:

  • 检查表VBUK或VBUP是否在结构字段或表字段中列出

  • 在这个字段的外键处设置了“check required”标志

  • 屏幕字段中设置的外键标志指向该字段

  • Case 1 取具体的状态字段时不用再去VBUK/VBUP表取了,改为一步从VBAK/VBAP表取。状态字段可以参看最开始的两张图
    在这里插入图片描述

  • Case 2 之前按结构或表来取VBUK或VBUP,这种情况可以用VBAP/VBAK表取完以后再MOVE-CORRESPONDING(move 表时如果加上keep target lines可以不清空原内容,在基本出增加,有点类似select append corresponding to)
    其中字段需要用取接口IF_SD_DOC_OBJECT的静态属性,如vbobj = IF_SD_DOC_OBJECT=> SALES_DOCUMENT/DELIVERY/INVOICE
    在这里插入图片描述

  • Case 3.这种应该是只取一个文档表(文档表的意思就是,订单/DELIVERY/INVOICE,也可以理解成凭证对象类型)的情况,很简单了就,该取哪个表就取哪个表。
    在这里插入图片描述
    在这里插入图片描述

  • Case 4 这种是相对第3种情况 ,取多种文档表或者不清楚文档类型时,需要使用函数来读取数据:
    单条:SD_VBUK_READ_FROM_DOC
    多条:SD_VBUK_READ_FROM_DOC_MULTI (mass-enabled for multiple documents)
    某一Header的一条item数据或全部item数据:SD_VBUP_READ_FROM_DOC (can return one dedicated item of a dedicated document or all items of a document
    多条Header的多条item数据:SD_VBUP_READ_FROM_DOC_MULTI (mass-enabled for multiple documents) o returns all items for a list of VBELNs if only IT_VBUK_KEY is filled o returns all items requested in a list of VBELN-POSNR pairs if only IT_VBUP_KEY is filled
    这时如果能确定文档类型就可以填充I_VBTYP和I_VBOBJ,这样可以快速确定取哪个表
    在这里插入图片描述
    在这里插入图片描述

  • Case 5 使用VBUK/VBUP来判断某一凭证是否存在,这种情况也可以用函数来做
    在这里插入图片描述

  • Case6 如果VBUK是用来使用VBELN确定VBTYP或是VBOBJ,需要注意VBOBJ并没有MOVE到VBAK中,这时可以用类CL_SD_DOC_CATEGORY_UTIL的静态方法IS_ANY_SALES, IS_ANY_DELIVERY, and IS_ANY_INVOICE来判断,也可以直接用函数SD_VBUK_READ_FROM_DOC来取,这里两个字段都会返回。
    在这里插入图片描述
    在这里插入图片描述

  • Case7 对VBUK/VBUP的插入操作都不能再有了,如果原来VBUK/VBUP有增强字段,注意把逻辑加上
    在这里插入图片描述

  • Case8 对VBUK/VBUP的更新操作要改为对应的文档表,如果不确定是哪个文档表,就要分别都试一下…(汗),直到试到为止。
    在这里插入图片描述

  • Case 9 对VBUK/VBUP的删除操作。因为状态与文档表在一起了,所以这里很少会有删除的操作,之前对VBUK/VBUP的删除操作可以注释掉了。
    在这里插入图片描述

  • Case10 使用了VBUK/VBUP的DDIC View, 下图是一些被简化(删除)了的标准视图,代码做相应调整就好。
    在这里插入图片描述
    还有一些CDS相关的,个人认为作用不大,很难用到,暂时不考虑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值