Хочу вывести шапку в алв отчете, но не получается.
Вроде все правильно, но выходит ошибка «No callback program passed»
Code:
data: repid like sy-repid.
data: fieldcat type slis_t_fieldcat_alv with header line.
data: keyinfo type slis_keyinfo_alv.
data: color type slis_t_specialcol_alv with header line.
data: layout type slis_layout_alv.
data: print type slis_print_alv.
data: sort type slis_t_sortinfo_alv with header line.
data: gt_events type slis_t_event.
data: gt_top_of_page type slis_t_listheader.
start of selection.
perform list_output.
form list_output.
perform list_input.
perform prl_fieldcat.
perform fill_events.
loop at bestand.
on change of bestand-obkt or bestand-lifnr.
move-corresponding bestand to header.
append header.
endon.
bestand-farbe = color[].
modify bestand.
endloop.
layout-coltab_fieldname = 'FARBE'.
layout-group_change_edit = 'X'.
print-no_print_listinfos = 'X'.
clear keyinfo.
keyinfo-header01 = 'LIFNR'.
keyinfo-item01 = 'LIFNR'.
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
exporting
i_callback_program = repid
is_layout = layout
it_fieldcat = fieldcat[]
i_default = 'X'
i_save = 'A'
i_tabname_header = 'HEADER'
i_tabname_item = 'BESTAND'
it_events = gt_events[]
is_keyinfo = keyinfo
is_print = print
it_sort = sort[]
tables
t_outtab_header = header
t_outtab_item = bestand.
endform. " LIST_OUTPUT
*---------------------------------------------------------------------*
* FORM TOP_OF_PAGE *
*---------------------------------------------------------------------*
form top_of_page.
data:
ls_top_of_page like line of gt_top_of_page,
l_low_dat_txt(8), l_high_dat_txt(8).
refresh gt_top_of_page.
clear gt_top_of_page.
ls_top_of_page-info = 'Отчет по кап ремонту'.
ls_top_of_page-typ = 'S'.
append ls_top_of_page to gt_top_of_page.
clear ls_top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = gt_top_of_page[]
exceptions
others = 1.
write: at (sy-linsz) sy-pagno.
endform.
*---------------------------------------------------------------------*
* FORM FILL_EVENTS *
*---------------------------------------------------------------------*
form fill_events.
data:
ll_events like line of gt_events.
refresh gt_events.
clear gt_events.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = gt_events[]
exceptions
list_type_wrong = 1
others = 2.
read table gt_events with key name = 'TOP_OF_PAGE'
into ll_events.
if sy-subrc = 0.
ll_events-form = 'TOP_OF_PAGE'.
modify gt_events from ll_events index sy-tabix.
endif.
endform. " FILL_EVENTS
*---------------------------------------------------------------------*
* Form PRL_FIELDCAT *
*---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form prl_fieldcat.
refresh fieldcat.
clear fieldcat.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = repid
i_internal_tabname = 'HEADER'
i_inclname = repid
changing
ct_fieldcat = fieldcat[]
exceptions
inconsistent_interface = 1
program_error = 2
others = 3.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = repid
i_internal_tabname = 'BESTAND'
i_inclname = repid
changing
ct_fieldcat = fieldcat[]
exceptions
inconsistent_interface = 1
program_error = 2
others = 3.
clear fieldcat.
fieldcat-fieldname = 'OBKT'.
fieldcat-tabname = 'HEADER'.
fieldcat-ref_tabname = 'AUFK'.
fieldcat-ref_fieldname = 'AUFNR'.
fieldcat-ref_tabname = 'T52B5'.
fieldcat-ref_fieldname = 'PONAM'.
fieldcat-outputlen = 12.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'OBKT_NAM'.
fieldcat-tabname = 'HEADER'.
fieldcat-ref_tabname = 'AUFK'..
fieldcat-ref_fieldname = 'KTEXT'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'LIFNR'.
fieldcat-tabname = 'HEADER'.
fieldcat-ref_tabname = 'LFA1'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'LIF_NAM'.
fieldcat-tabname = 'HEADER'.
clear fieldcat.
fieldcat-fieldname = 'BELNR_'. "Документ
fieldcat-tabname = 'BESTAND'.
fieldcat-ref_tabname = 'BSAK'.
fieldcat-ref_fieldname = 'BELNR'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'BUDAT1'. "Дата документа
fieldcat-tabname = 'BESTAND'.
fieldcat-ref_tabname = 'BSAK'.
fieldcat-ref_fieldname = 'BUDAT'.
append fieldcat.
clear fieldcat.
fieldcat-fieldname = 'RMWWR'. "Сумма с НДС
fieldcat-tabname = 'BESTAND'.
fieldcat-ref_tabname = 'BSAK'.
fieldcat-ref_fieldname = 'DMBTR'.
fieldcat-do_sum = 'X'.
append fieldcat.
endform. " PRL_FIELDCAT
*--------------------------------------------------------------------- *
* Form LIST_INPUT *
*--------------------------------------------------------------------- *
* Переброска данных в таблицу *
*-------------------------------------------------------------------- *
form list_input.
loop at kapr.
if kapr-knttp = 'P'.
bestand-obkt = kapr-posid.
bestand-obkt_nam = kapr-spp_nam.
elseif kapr-knttp = 'Z'.
bestand-obkt = kapr-aufnr.
bestand-obkt_nam = kapr-ktext.
endif.
bestand-lifnr = kapr-lifnr.
bestand-lif_nam = kapr-lif_nam.
bestand-budat1 = kapr-budat.
read table opl with key awkey = kapr-awkey.
bestand-belnr_ = opl-belnr_.
bestand-awkey = opl-awkey.
append bestand.
endloop.
sort bestand by obkt lifnr awkey.
endform. " LIST_INPUT