我是ABAP的新手。我已经创建了四个表(Z588B,Z588T,ZFINALTABLE),我想使用函数构建器中的sql进行填充。
[首先,我尝试加入这些表T588B,T588T,并收到此错误”“对于池表群集表和投影视图,不允许加入”。
因此,我创建了临时表来存储T588B,T588T表中的数据,因此我可以使用临时表Z588B,Z588T联接到所需的输出字段ZFINALTABLE中。
我能够用我需要的数据填充Z588B,Z588T,但是使用这些临时表的JOIN没有返回任何数据。
这是我所做的。
1)使用SE37“ Z_BAPI_TESTP_FM”创建的功能模块
2)在导入选项卡中,我定义了参数。
MANDT TYPE ZTESTPA30-MANDT Client
USERG TYPE ZTESTPA30-USERG User group
3)我使用se11创建的声明的临时表>
Z588B LIKE Z588B Temp Structure for T588B Z588T LIKE Z588T Temp Structure for T588T Z582S LIKE Z582S Temp Structure for T582S ZFINALTABLE LIKE Z588BTEST Temp Structure for ZFINALTABLE
4)在源代码中输入了我的sql查询。
FUNCTION Z_BAPI_TEST_FM. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(MANDT) TYPE ZTESTPA30-MANDT *" VALUE(USERG) TYPE ZTESTPA30-USERG *" EXPORTING *" VALUE(RETRUN) TYPE BAPIRET2 *" TABLES *" ZPA30 STRUCTURE ZPA30 *" Z588B STRUCTURE Z588B *" Z588T STRUCTURE Z588T *" Z582S STRUCTURE Z582S *" Z588BTEST STRUCTURE Z588BTEST *"---------------------------------------------------------------------- TABLES: Z588B, Z588T, ZFINALTABLE. select MANDT USERG MNTYP MENUE INFTY INTO CORRESPONDING FIELDS OF TABLE Z588B from T588B CLIENT SPECIFIED WHERE MANDT = MANDT AND USERG = USERG AND MNTYP = 'I'. select MANDT SPRSL MNTYP MENUE DTEXT INTO CORRESPONDING FIELDS OF TABLE Z588T from T588T CLIENT SPECIFIED WHERE MANDT = MANDT AND MNTYP = 'I' AND SPRSL = 'EN'. Select a~MANDT AS MANDT a~USERG AS USERG a~MNTYP AS MNTYP a~MENUE AS MENUE a~INFTY AS INFTY b~SPRSL AS SPRSL b~DTEXT As DTEXT INTO CORRESPONDING FIELDS OF TABLE ZFINALTABLE FROM Z588B AS a LEFT JOIN Z588T AS b ON a~MNTYP = b~MNTYP. ENDFUNCTION.
能够为给定的参数将数据加载到Z588B,Z588T上,但是具有联接的最终sql不会返回ZFINALTABLE表中的数据。
您能告诉我为什么最后一个使用JOIN的sql不返回ZFINALTABLE中的任何数据吗?
我是ABAP的新手。我创建了四个表(Z588B,Z588T,ZFINALTABLE),希望使用函数构建器中的sql进行填充。首先,我尝试加入这些表T588B,T588T,并获得此表...
如果使用JOIN,将导致性能问题。请尝试使用BINARY SEARCH。然后将所有数据追加到FINAL TABLE中。
我只是将Jagger的宝贵评论转化为将来的访问者的答案。