Auswertung KUG nach Tagen und Stunden- Tabelle ZT im Abrechnungsergebnis

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.

close

Wollen Sie ab sofort per Mail über neue Beiträge informiert werden? Dann tragen Sie sich in unsere Mailingliste ein.

2 Anmerkung zu “Auswertung KUG nach Tagen und Stunden- Tabelle ZT im Abrechnungsergebnis

  1. Mathias Gloss

    Hi Armin,

    ich würde dir für die Zukunft empfehlen, ein paar Funktionen zu benutzen. Das tut nicht weh und macht das Programm übersichtlicher. Normal reichen eigentlich 1-3 globale Tabellen zusammen mit den eh schon globalen Selektionsfeldern für einen Report.

    Und die Namenskonventionen der einigermaßen aktuellen SAP Programme (da gibt es leider nicht so viel im HR-Umfeld) würden das ganze auch etwas strukturierter machen.

    Ich hoffe, dass dir die beiden Tips in der Zukunft auch etwas weiterhelfen – so wie mir auch dein Blog das ein oder andere Mal schon geholfen hat 🙂

    LG, Mathias

    Antworten
    1. Armin Bittner

      Hallo Mathias,
      danke für Deine Anregung. Ich neige dazu, Bewährtes wiederzuverwenden. Das verstellt bestimmt manchmal den Blick für Verbesserungspotential.
      Viele Grüße,
      Armin

      Antworten

Schreibe einen Kommentar zu Mathias Gloss Antworten abbrechen

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.