Tablo Birleştirme Join SAP Abap 7/31/2016

3 Tabloyu Birleştirip ( Join) ALV ile Sorgu Yapacağız.
Öncelikle SE38 'den Yeni Bir Proje Oluşturuyoruz.
Projenin Adı : ZMM_DM4 yazıyorum.

LİPS Tablosu :
MAKT Tablosu :
İNTERNAL table oluşturuyoruz :
* İNTERNAL Table oluştururuyorum :
DATA : BEGIN OF ITAB_OUT OCCURS 0,
vkorg LIKE LIKP-VKORG,
erdat LIKE LIKP-ERDAT,
vstel LIKE LIKP-VSTEL,
MEINS LIKE LIPS-MEINS,
NTGEW LIKE LIPS-NTGEW,
maktx LIKE makt-MAKTX,
END OF ITAB_OUT.
ALV DETAYLARI VE SORGU KODLARI :
* >>> ALV
type-pools: slis.
data : er_layout type slis_layout_alv,
er_fieldcat type slis_t_fieldcat_alv,
er_sp_group type slis_t_sp_group_alv,
e_save(1) type c,
e_variant like disvariant,
er_events type slis_t_event,
ex_fieldcat type slis_t_fieldcat_alv,
ex_sp_group type slis_t_sp_group_alv,
ex_layout type slis_layout_alv,
ex_events type slis_t_event.
data: gt_list_top_of_page type slis_t_listheader.
data: user_command type slis_formname value 'USER_COMMAND'.
* <<< ALV
selection-screen begin of block b1 with frame title text-001.
SELECT-OPTIONS : S_ERDAT FOR LIKP-ERDAT, S_VKORG FOR LIKP-VKORG,
S_VSTEL FOR LIKP-VSTEL.
selection-screen end of block b1.
start-of-selection.
perform get_data.
IF ITAB_OUT[] IS NOT INITIAL.
perform write_data tables itab_out
using 'ITAB_OUT'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_data .
SELECT * into CORRESPONDING FIELDS OF table ITAB_OUT
from LIKP
INNER JOIN LIPS on LIPS~VBELN eq LIKP~VBELN
INNER JOIN MAKT on MAKT~MATNR eq LIPS~MATNR
where LIKP~ERDAT in s_erdat
AND LIKP~VSTEL in S_VSTEL
AND LIPS~MTART eq 'FERT'
AND VKORG in S_VKORG.
endform. " get_data
*&--- AND LIPS~MTART EQ--------------------------------*
*& Form write_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form write_data tables outtab type table
using i_internal_tabname .
perform e03_eventtab_build using er_events[].
perform e04_comment_build using gt_list_top_of_page[].
perform get_format using i_internal_tabname.
perform alv_alv tables outtab.
endform. " write_alv
*---------------------------------------------------------------------*
* FORM e03_eventtab_build *
*---------------------------------------------------------------------*
* degistirme *
*---------------------------------------------------------------------*
* --> E03_LT_EVENTS *
*---------------------------------------------------------------------*
form e03_eventtab_build using e03_lt_events type slis_t_event.
data: ls_event type slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = e03_lt_events.
read table e03_lt_events with key name = slis_ev_top_of_page
into ls_event.
if sy-subrc = 0.
move 'SAYFA_BASI' to ls_event-form.
append ls_event to e03_lt_events.
endif.
endform. "e03_eventtab_build
*---------------------------------------------------------------------*
* FORM e04_comment_build *
*---------------------------------------------------------------------*
* ayarlanabilir *
*---------------------------------------------------------------------*
* --> E04_LT_TOP_OF_PAGE *
*---------------------------------------------------------------------*
form e04_comment_build using e04_lt_top_of_page type slis_t_listheader.
data: ls_line type slis_listheader.
free : e04_lt_top_of_page.
data : _tarih(10).
data : _saat(10).
clear ls_line.
ls_line-typ = 'H'.
ls_line-key = 'Rapor :'.
ls_line-info = sy-title.
append ls_line to e04_lt_top_of_page.
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Kullanici'.
ls_line-info = sy-uname.
ls_line-info+35(10) = sy-tcode.
append ls_line to e04_lt_top_of_page.
clear ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Tarih'.
write sy-datum to _tarih dd/mm/yyyy.
write sy-uzeit to _saat .
ls_line-info = _tarih.
ls_line-info+20(10) = _saat.
append ls_line to e04_lt_top_of_page.
clear ls_line.
endform. "e04_comment_build
*---------------------------------------------------------------------*
* FORM get_format *
*---------------------------------------------------------------------*
* degistir *
*---------------------------------------------------------------------*
form get_format using i_internal_tabname .
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = i_internal_tabname
i_inclname = sy-repid
CHANGING
ct_fieldcat = er_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
others = 3.
perform fieldcat_modify using er_fieldcat[].
endform. " get_format
*&---------------------------------------------------------------------*
*& Form FIELDCAT_MODIFY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ER_FIELDCAT[] text
*----------------------------------------------------------------------*
form fieldcat_modify using u_er_fieldcat type slis_t_fieldcat_alv.
data: xs_fieldcat type slis_fieldcat_alv.
loop at u_er_fieldcat into xs_fieldcat.
case xs_fieldcat-fieldname.
when 'CB'.
xs_fieldcat-key = 'X'.
xs_fieldcat-seltext_l = 'SÇ'.
xs_fieldcat-ddictxt = 'L'.
xs_fieldcat-checkbox = 'X'.
* xs_fieldcat-edit = 'X'.
xs_fieldcat-emphasize = 'C500'. "stun renklendirme
when 'AKONT'.
xs_fieldcat-seltext_l = 'Ana Hesap'.
xs_fieldcat-ddictxt = 'L'.
xs_fieldcat-edit = 'X'.
endcase.
xs_fieldcat-reptext_ddic = xs_fieldcat-seltext_l.
xs_fieldcat-seltext_m = xs_fieldcat-seltext_l.
xs_fieldcat-seltext_s = xs_fieldcat-seltext_l.
modify u_er_fieldcat from xs_fieldcat.
endloop.
endform. "fieldcat_modify
*&---------------------------------------------------------------------*
*& Form alv_alv
*&---------------------------------------------------------------------*
form alv_alv tables outtab type table.
er_layout-zebra = 'X'.
er_layout-colwidth_optimize = 'X'.
* ER_LAYOUT-BOX_FIELDNAME = 'SEL'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = user_command
i_buffer_active = space
i_bypassing_buffer = 'X'
is_layout = er_layout
it_fieldcat = er_fieldcat[]
it_special_groups = er_sp_group
i_save = 'A'
is_variant = e_variant
it_events = er_events[]
TABLES
t_outtab = outtab.
endform. " alv_alv
*&---------------------------------------------------------------------*
*& Form sayfa_basi
*&---------------------------------------------------------------------*
form sayfa_basi.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = ' '
it_list_commentary = gt_list_top_of_page.
endform. " sayfa_basi
*---------------------------------------------------------------------*
* FORM user_command
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
data : fields like sval occurs 1 with header line.
data : popup_title(50).
data : l_grid type ref to cl_gui_alv_grid.
data : row_table type lvc_s_row occurs 1 with header line.
data : l_ucomm like sy-ucomm.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_grid.
l_ucomm = '&REFRESH'.
CALL METHOD l_grid->set_function_code
CHANGING
c_ucomm = l_ucomm.
case r_ucomm.
when '&DATA_SAVE' .
endcase.
rs_selfield-refresh = 'X'.
endform. " USER_COMMAND
*---------------------------------------------------------------------*
* FORM pf_status_set
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
form pf_status_set using rt_extab type slis_t_extab.
data: rt_extabw type slis_extab.
set pf-status 'STANDARD' excluding rt_extab.
set titlebar 'STANDARD'.
endform.
" FILL_DATA
SONUÇ :
Yorum Yapmak için formu doldurup gönderiniz.