[隐藏]
SD开发中经常会涉及到以下几张表:
• VBAK – 销售订单头表
• VBAP – 销售订单行项目表
• LIKP – 发货单头表
• LIPS – 发货单行项目表
• VBRK – 会计凭证头表
• VBRP – 会计凭证行项目表
• VBFA – 凭证流表
在读取以上SD表时,为提高数据读取效率,应遵循以下几条准则:
1, 通过销售订单查询发货单 (前续凭证):
错误代码:
1 |
SELECT FROM lips WHERE vgbel = ... |
正确代码:
1 2 3 4 5 |
SELECT FROM vbfa WHERE VBELV = ... AND VBTYP_N = 'J' SELECT FROM lips WHERE vbeln = vbfa-vbeln AND posnr = vbfa-posnn |
2, 通过发货单查询发票凭证(前续凭证)
错误代码:
1 |
SELECT FROM vbrp WHERE vgbel = ... |
正确代码:
1 2 3 4 5 |
SELECT FROM vbfa WHERE vbtyp_n = 'M' AND vbelv = ... SELECT FROM vbrp WHERE vbeln = vbfa-vbeln AND posnr = vbfa-posnn |
3, 通过销售订单查询发票凭证(前续凭证)
错误代码:
1 |
SELECT FROM vbrp WHERE aubel = ... |
正确代码:
1 2 3 4 5 |
SELECT FROM vbfa WHERE vbtyp_n = 'M' AND vbelv = ... SELECT FROM vbrp WHERE vbeln = vbfa-vbeln AND posnr = vbfa-posnn |
4, 查询凭证流数据
在凭证流表VBFA中,可以通过前续凭证查找后续凭证,但是通过后续凭证查找前续凭证是没有意义的,因为前续凭证都直接保存在凭证表中(lips,vbrp等)。VBFA表的主键如下:
字段VBTYP_N的固定值可以在domain中查看,如下:
所以,错误代码:
1 |
SELECT vbelv FROM vbfa WHERE vbeln ... |
正确代码:
1 2 3 |
SELECT vgbel FROM lips WHERE vbeln = ...; or SELECT vgbel FROM vbrp WHERE vbeln = ...; or SELECT aubel FROM vbrp WHERE vbeln = ... |
5, 通过发货单读取shipping unit
错误代码:
1 2 |
SELECT FROM vepo WHERE vbtyp = 'J' AND vbeln = i_lips-vbeln |
正确代码:
1 2 3 4 |
SELECT FROM vbfa WHERE vbtyp_n = 'X' AND vbelv = i_lips-vbeln SELECT FROM vepo WHERE venum = vbfa-vbeln |
详细也可以参照NOTES:185530
以上。
发表评论