找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
SAP亦橙网 首页 SAP技术 查看内容

VBUK/VBUP changes in S4 HANA

2023-12-26 10:57| 发布者: 亦书| 查看: 149| 评论: 0

摘要: VBUK/VBUP changes in S4 HANA参考note2198647及其中的cookbook在SAPERP中,SD事务文档的状态值并不保存在文档表本身中,而是保存在表VBUK(用于header)和VBUP(用于item)中。,但是到了S4HANA,这两个表被简化了,SD事 ...
 

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相关的,个人认为作用不大,很难用到,暂时不考虑

 

特别声明:文章或部分素材来源于网络,仅供SAPERP从业伙伴们交流学习使用,如果侵犯了您的权益,请联系网站管理人员删减!


路过

雷人

握手

鲜花

鸡蛋
返回顶部