Ein kleines Programm um die Tabelle ZT – Kurzarbeitergeld Zeitdaten – aus dem Abrechnungsergebnis zu lesen. Der Report erstellt eine ALV-Ausgabe mit den Tagen und Stunden, an denen Kurzarbeit gemacht wurde, pro Tag und Mitarbeiter.
Der Report muss in den Eigenschaften mit der logischen Datenbank PNP versehen werden.
*&---------------------------------------------------------------------*
*& Report zxxxxy_kug_stunden
*&
*&---------------------------------------------------------------------*
*& Dies ist ein Report von hr-manager.de
*& Fragen hierzu bitte an reports@hr-manager.de
*&---------------------------------------------------------------------*
report zxxxxy_kug_stunden.
tables: pernr.
infotypes: 0002, 0008, 0014, 0015. " Berechtigung
types: begin of lty_rt.
types: pernr type pernr-pernr.
types: vorna type p0002-vorna.
types: nachn type p0002-nachn.
types: period type selperio.
types: begda type begda.
types: tgart type tgart_d.
types: anzkt type p decimals 2. "Kalendertage
types: anzat type p decimals 2. "Arbeitstage
types: anzas type p decimals 2. "Arbeitsstunden
types: end of lty_rt.
data: lt_result type table of lty_rt.
data: wa_result type lty_rt.
data: lv_begp like qppnp-pabrp, "payroll-period PP-YYYY
lv_begj like qppnp-pabrj. "from selection-screen-input
data: lv_endp like qppnp-pabrp, "payroll-period PP-YYYY
lv_endj like qppnp-pabrj. "from selection-screen-input
data: lv_ausgabe(6) type c.
data: lt_py_result type table of payde_result.
data: wa_py_result type payde_result.
data: lt_zt type hrpayde_zt.
data: wa_zt type pc20m.
data: gr_functions type ref to cl_salv_functions. "symbolleiste
data: gr_table type ref to cl_salv_table. "klasse
data: gr_display type ref to cl_salv_display_settings. "displayeinstellungen
data: gr_columns type ref to cl_salv_columns_table."spaltenmanipulation
data: gr_column type ref to cl_salv_column_table.
data: color type lvc_s_colo. "farbe
data: gr_sorts type ref to cl_salv_sorts. "sortierung
data: gr_agg type ref to cl_salv_aggregations. "aggregation
data: gr_filter type ref to cl_salv_filters. "filter
data: gr_layout type ref to cl_salv_layout. "layout
data: key type salv_s_layout_key.
start-of-selection.
get pernr.
lv_ausgabe = sy-datum(6). "immer aktuellstes Ergebnis
lv_begj = pn-begda(4).
lv_begp = pn-begda+4(2).
lv_endj = pn-endda(4).
lv_endp = pn-endda+4(2).
refresh lt_py_result.
call function 'HR_GET_PAYROLL_RESULTS'
exporting
pernr = pernr-pernr
permo = '01'
pabrj = lv_begj
pabrp = lv_begp
pabrj_end = lv_endj
pabrp_end = lv_endp
* INPER_LST = lv_ausgabe
inper_act = lv_ausgabe
actual = 'X'
* WAERS =
* ARCH_TOO =
tables
result_tab = lt_py_result
exceptions
no_results = 1
error_in_currency_conversion = 2
t500l_entry_not_found = 3
period_mismatch_error = 4
t549q_entry_not_found = 5
internal_error = 6
wrong_structure_of_result_tab = 7
others = 8.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
loop at lt_py_result into wa_py_result.
loop at wa_py_result-nat-zt into wa_zt.
rp-provide-from-last p0002 space sy-datum sy-datum.
move: pernr-pernr to wa_result-pernr,
p0002-vorna to wa_result-vorna,
p0002-nachn to wa_result-nachn.
move wa_py_result-evp-fpbeg to wa_result-begda.
wa_result-period = wa_result-begda(6).
move wa_zt-posid to wa_result-begda+6(2).
move-corresponding wa_zt to wa_result.
append wa_result to lt_result.
clear wa_result.
clear wa_zt.
endloop.
clear wa_py_result.
endloop.
end-of-selection.
* Ausgabe
cl_salv_table=>factory( importing r_salv_table = gr_table
changing t_table = lt_result ).
gr_columns = gr_table->get_columns( ).
gr_columns->set_optimize( abap_true ).
try.
gr_column ?= gr_columns->get_column( 'TGART' ).
gr_column->set_short_text( 'Feiertag' ).
gr_column->set_medium_text( 'Feiertag' ).
gr_column->set_long_text( 'Feiertag' ).
catch cx_salv_not_found. "#EC NO_HANDLER
endtry.
try.
gr_column ?= gr_columns->get_column( 'ANZKT' ).
gr_column->set_short_text( 'Kalendert.' ).
gr_column->set_medium_text( 'Kalendertage' ).
gr_column->set_long_text( 'Kalendertage' ).
catch cx_salv_not_found. "#EC NO_HANDLER
endtry.
try.
gr_column ?= gr_columns->get_column( 'ANZAT' ).
gr_column->set_short_text( 'Arbeitst.' ).
gr_column->set_medium_text( 'Arbeitstage' ).
gr_column->set_long_text( 'Arbeitstage' ).
catch cx_salv_not_found. "#EC NO_HANDLER
endtry.
try.
gr_column ?= gr_columns->get_column( 'ANZAS' ).
gr_column->set_short_text( 'Arbeitsst.' ).
gr_column->set_medium_text( 'Arbeitsstunden' ).
gr_column->set_long_text( 'Arbeitsstunden' ).
catch cx_salv_not_found. "#EC NO_HANDLER
endtry.
try.
gr_column ?= gr_columns->get_column( 'PERIOD' ).
gr_column->set_short_text( 'Abrper.' ).
gr_column->set_medium_text( 'Abrechnungsperiode' ).
gr_column->set_long_text( 'Abrechnungsperiode' ).
catch cx_salv_not_found. "#EC NO_HANDLER
endtry.
* Symbolleiste wird eingeblendet
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).
gr_display = gr_table->get_display_settings( ).
gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
gr_display->set_list_header( 'KUG Stunden/ Tage' ).
* gr_display->set_fit_column_to_table_size( abap_true ).
* Layout (Layoutänderungen abspeicherbar)
gr_layout = gr_table->get_layout( ).
key-report = sy-repid.
gr_layout->set_key( key ).
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
gr_layout->set_default( abap_true ).
* Anzeige Tabelle *
gr_table->display( ).
Kostenloses Muster ohne Gewährleistung
Sie können diesen Report gerne als Vorlage für Ihren eigenen Report verwenden. Wir übernehmen keine Haftung für die Funktionalität oder die Richtigkeit der Ergebnisse.