点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我遇到以下问题:
我使用以下代码创建了一个Programm:
EXEC SQL PERFORMING loop_output。 选择b1.BLART,b1.BELNR,b1.BUKRS,b1.BUDAT,b1.XBLNR,b1.STGRD INTO:从BKPF b1开始 内部联接 ( SELECT BLART,BUKRS,XBLNR 从BKPF 在哪里BUKRS =:BUKREIS AND(BUDAT> =:VON或:VON ='00000000') AND(BUDAT <:BIS OR:BIS ='00000000') AND BLART ='RG' AND LENGTH(TRIM(XBLNR))> 1 AND STGRD ='' 按BLART,BUKRS,XBLNR分组 拥有计数(*)> 1 )b2 开1 = 1 AND b1.BLART = b2.BLART 与b1.BUKRS = b2.BUKRS 与b1.XBLNR = b2.XBLNR ORDER BY b1.BLART,b1.BELNR,b1.BUKRS,b1.BUDAT,b1.XBLNR ENDEXEC。
我想向表BSEG添加另一个联接。 添加JOIN后,将发生错误,例如"数据库中不存在对象(表,视图索引等)"。 所以我写了一个小测试:
REPORT ZFI_TEST。 资料:wa的BEGIN OF BUKRS型BSEG-BUKRS, BELNR类型BSEG-BELNR, wa的结尾。 执行SQL PERFORMING loop_output。 选择b1.BUKRS,b1.BELNR INTO:wa 来自bkpf b1 ENDEXEC。 FORM loop_output。 写:/wa-BELNR,'', wa-BUKRS。 ENDFORM。
如果我参考表BKPF,则一切正常。 只是将表名更改为BSEG会给我一个错误。
我该怎么做才能加入BSEG表,或者如何通过仅将SUBSELECT分组来使用ABAP和SELFJOIN解决问题。
谢谢。
Joachim
不是吗
从BKPF AS b1中选择...。
编辑:不忽略我,错过了'EXEC SQL'位。 我会回应托马斯的问题:为什么要使用本机,并尝试将其与Open SQL一起使用。
我怀疑您的问题与BSEG是集群表有关,因此在数据库级别上的存储方式有所不同。 如果同一条语句适用于openSQL,那么绝对是问题所在。
编辑2:
我没有合适的系统来检查,但您始终可以转到
SE11->实用程序->数据库对象->显示
要查看BSEG在数据库级别上的外观。
您的DBMS是什么?
为什么要使用本机SQL而不是Open SQL?
您应将BELNR,BUDAT和BUKRS作为关键字段。
同意。
BSEG是一个"聚集表"(在论坛上搜索以获取更多信息),这意味着它在数据库中不存在。 如果我没有记错的话,实际的表是RFBLG,但是属性字段是通过SAP算法压缩的。
因此,您将无法使用本机SQL访问它们。 而是使用Open SQL。
PS:BSEG的许多字段在索引表BSID,BSIS,BSIK,BSAD等中都是重复的,它们不是聚簇表。
一周热门 更多>