Donnerstag, 29. September 2011

ABAP - Abrechnungsergebnisse lesen per Funktionsbaustein

Es gibt ja einige Funktionsbausteine die Abrechnungsergebnisse lesen. Jeder hat aber so seine Eigenheiten, die man kennen sollte.

HRCM_PAYROLL_RESULTS_GET

    CALL FUNCTION 'HRCM_PAYROLL_RESULTS_GET'
      EXPORTING
        PERNR                    = WA_ITAB-PERNR
        BEGDA                    = BEGQ "Selektion Begda
        ENDDA                    = ZHIGH " 31.12.9999
     IMPORTING
       SUBRC                    = ZSUBC
*       MOLGA                    =
       PAYROLL_RESULT_TAB       = PAYROLL_RESULT_TAB
              .
=> hat die Eigenheit, auch internationale Ergebnisse zu lesen. Dafür ist EVP leer, die Verwaltungsdaten sind in der Struktur INTER gespeichert. Liest auch nur A-Ergebnisse und diese nur dann, wenn das Auszahlungsdatum! (PC261-PAYDT) im selektierten Datumsbereich liegt.
Das kann zu Problemen führen wenn ein Monat nach ENDDA mit Rückrechnung abgerechnet wurde, also beispielsweise Einstellung 01.06.2011, Endda 30.06.2011, Abrechnung Monat 06/ 2011 aber erst in 07/2011, etwa wegen verspätet eingereichter Unterlagen. In diesem Fall ist das Auszahlungsdatum im Juli, das Juniabrechnungsergebnis wird nicht berücksichtigt.
Lösung: immer bis 31.12.9999 lesen und dann mit
    DELETE PAYROLL_RESULT_TAB WHERE INTER-VERSC-FPEND > ENDQ.
überzählige Abrechnungsergebnisse löschen.

HR_GET_PAYROLL_RESULTS

  CALL FUNCTION 'HR_GET_PAYROLL_RESULTS'
    EXPORTING
      PERNR                               = PERNR-PERNR
*    PERMO                               = 01
      PABRJ                               = PNPPABRJ
      PABRP                               = PNPPABRP
*   PABRJ_END                           =
*   PABRP_END                           =
*   INPER_LST                           =
   INPER_ACT                           = ZABRP
    ACTUAL                              = 'X'
*   WAERS                               =
*   ARCH_TOO                            =
    TABLES
      RESULT_TAB                          = PAYROLL_RESULT_TAB
   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.
*    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
 => hier kann man sowohl A als auch P und O lesen. Über INPER_ACT und INPER_LST kann man die Auswahl der berücksichtigten Rückrechnungen feinsteuern. Um das Ergebnis von oben zu erzielen müssen Sie INPER_ACT auf 999912 setzen sowie ACTUAL auf 'X' (nur A-Ergebnisse). Die Fürperiode wird durch PABRJ/ PABRP und PABRJ_END / PABRP_END bestimmt. Der Funktionsbaustein funktioniert auch international.


Kommentare:

  1. Hi,

    mit welchem Parameter frage ich denn 'O' ab?

    AntwortenLöschen
    Antworten
    1. Hallo,

      hierzu sollten Sie den Parameter ACTUAL nicht belegen - dann werden in der Ergebnistabelle auch die O-Ergebnisse geliefert so vorhanden.

      Viele Grüße

      Armin Bittner

      Löschen