Quando várias tabelas SAP estão logicamente unidas, é sempre recomendável utilizar um inner join para ler os dados delas. Isso reduz a carga na rede.
Vamos pegar um exemplo de 2 tabelas, zairln e zflight. A tabela zairln tem o campo airln, que é o código da companhia aérea, e o campo lnnam, que é o nome da companhia aérea. A tabela zflight tem o campo airln, o código da companhia aérea, e outros campos que contêm os detalhes dos voos operados por uma companhia aérea.
Dado que essas 2 tabelas estão logicamente unidas pelo campo airln, é recomendável utilizar o inner join.
Selecionar a airln a lnnam b fligh b cntry na tabela int_airdet
De zairln como a inner join zflight como b em a airln = b airln.
Para restringir os dados conforme o critério de seleção, pode-se adicionar uma cláusula where ao inner join anterior.
Digamos que temos 2 tabelas VBAP e VBAK. Elas são as seguintes.
Conteúdo de VBAK.
VBELN ERDAT ERNAM AUART
1001 20021011 10 12
1002 20021012 12 12
1003 20021011 13 14
Conteúdo de VBAP.
VBELN POSNR MATNR MATKL
1001 10 12 12
1002 13 12 14
1002 10 1 1
Agora temos VBELN como chave para essas duas tabelas. Portanto, escrevemos a consulta de seleção como
SELECT vbak~vbeln
vbak~erdat
vbak~ernam
vbak~auart
vbap~posnr
vbap~matnr
vbap~matkl
INTO TABLE tbl_values
FROM vbak JOIN vbap ON vbap vbeln = vbak vbeln.
A saída será
VBELN ERDAT ERNAM AUART POSNR MATNR MATKL
1001 20021011 10 12 10 12 12
1002 20021012 12 12 13 12 14
1002 20021012 12 12 10 1 1
Saudações,
Srinivas
<b>* recompensa por respostas úteis *</b>