EKPOEKBE 和 LIPS 做 JOIN 的问题

作者:ABAP老白 约 2 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Basis, Data Engineering, SD, 开发, 数据工程, 系统管理, 销售分销

[ ABAP老白 ](javascript:void\(0\);)

在STO交货的时候,有时候需要把表EKPO/EKBE和LIPS JOIN起来取数,但是有个问题,EKPO-EBELP是5位数,EKBE-

BUZEI是4位数,而LIPS-POSNR是6位数!都不一样!

直接JOIN的话肯定是错误的。平常的做法就是先取一个表,然后用其他方法再取第二个表,但是,这样做导致程序复杂、性能差、维护难。

讲究一点的办法是借表取数,就是引入第三个表,这个表就相当于催化剂,使得SQL的效率大大提升。

创建一个透明表:

EKPOEKBE 和 LIPS 做 JOIN 的问题 - 封面图
EKPOEKBE 和 LIPS 做 JOIN 的问题 - 封面图

塞进去数据:

EKPOEKBE 和 LIPS 做 JOIN 的问题 - 封面图
EKPOEKBE 和 LIPS 做 JOIN 的问题 - 封面图

然后程序这样写:

EKPOEKBE 和 LIPS 做 JOIN 的问题 - 封面图
EKPOEKBE 和 LIPS 做 JOIN 的问题 - 封面图

妥了。

其他的借表取数的例子还有:

SELECT ... FROM EBAN WHERE EBELN =...

换成:

SELECT ... FROM EKET WHERE EBELN =...
SELECT ... FROM EBAN WHERE BANFN = EKET-BANFN...
SELECT ... FROM VBAK WHERE KUNNR = ...

换成:

SELECT ... FROM VBAKPA WHERE KUNDE = ...
SELECT ... FROM VBAK WHERE VBELN = VBKPA-VBELN...
SELECT ... FROM AFKO WHERE RSNUM = ...

换成:

SELECT ... FROM RESB WHERE RSNUM = ...
SELECT ... FROM AFKO WHERE AUFRN = RESB-AUFNR...

有时候,取数的表虽然多了,但是取数的效率却大大提升了。

EKPOEKBE 和 LIPS 做 JOIN 的问题 - 封面图
EKPOEKBE 和 LIPS 做 JOIN 的问题 - 封面图
ABAP老白

关于作者:ABAP老白

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「EKPOEKBE和LIPS做JOIN的问题.md」整理生成,仅用于内部技术分享与学习交流。