Skip to content

Instantly share code, notes, and snippets.

@antelio
Created December 5, 2011 17:18
Show Gist options
  • Save antelio/1434427 to your computer and use it in GitHub Desktop.
Save antelio/1434427 to your computer and use it in GitHub Desktop.
SQL "*" for Inner join
DATA: wa_anek TYPE anek,
tb_anek TYPE TABLE OF anek,
wa_anep TYPE anep,
tb_anep TYPE TABLE OF anep,
tb_anep_fields TYPE TABLE OF string,
tb_anek_fields TYPE TABLE OF string.
INITIALIZATION.
DATA: l_string TYPE string.
IF tb_anek_fields[] IS INITIAL.
DATA: tb_dfies TYPE TABLE OF dfies,
wa_dfies TYPE dfies.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'ANEK'
TABLES
dfies_tab = tb_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
LOOP AT tb_dfies INTO wa_dfies.
CONCATENATE 'K~' wa_dfies-fieldname INTO l_string.
APPEND l_string TO tb_anek_fields.
ENDLOOP.
ENDIF.
IF tb_anep_fields[] IS INITIAL.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'ANEP'
TABLES
dfies_tab = tb_dfies
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
LOOP AT tb_dfies INTO wa_dfies.
CONCATENATE 'P~' wa_dfies-fieldname INTO l_string.
APPEND l_string TO tb_anep_fields.
ENDLOOP.
ENDIF.
START-OF-SELECTION.
CHECK tb_anek_fields[] IS NOT INITIAL.
SELECT (tb_anek_fields) FROM ( anek AS k
INNER JOIN anla AS a ON a~mandt = k~mandt
AND a~bukrs = k~bukrs AND a~anln1 = k~anln1 AND a~anln2 = k~anln2
INNER JOIN anep AS p ON k~mandt = p~mandt
AND k~bukrs = p~bukrs AND k~anln1 = p~anln1 AND k~anln2 = p~anln2
AND k~gjahr = p~gjahr AND k~lnran = p~lnran )
INTO TABLE tb_anek
WHERE a~mandt = sy-mandt AND a~anln1 IN s_anln1
AND k~budat IN s_budat AND a~anlkl IN r_anlkl AND p~afabe = '01'.
CHECK tb_anep_fields[] IS NOT INITIAL.
SELECT (tb_anep_fields) FROM ( anek AS k
INNER JOIN anla AS a ON a~mandt = k~mandt
AND a~bukrs = k~bukrs AND a~anln1 = k~anln1 AND a~anln2 = k~anln2
INNER JOIN anep AS p ON k~mandt = p~mandt
AND k~bukrs = p~bukrs AND k~anln1 = p~anln1 AND k~anln2 = p~anln2
AND k~gjahr = p~gjahr AND k~lnran = p~lnran )
INTO TABLE tb_anep
WHERE a~mandt = sy-mandt AND k~budat IN s_budat AND a~anlkl IN r_anlkl
AND p~afabe = '01' AND p~zujhr = '0000' AND p~zucod = '0000'
AND a~anln1 IN s_anln1.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment