Internationale AGB

BADI      
Implementierungsname   Z_HRPAYCHERCI0
Interface-Name   IF_EX_HRPAYCHERCI0
Name zur Implementierung   ZCL_IM__HRPAYCHERCI0

Transaktion:        PC00_M02_LERCI0_CE        

Mit dieser Transaktion kann man eine Internationale AGB erzeugen.

 

Hier ein Beispiel:        

Nach dem man auf ausführen geklickt hat unbedingt einen PDF Drucker auswählen für die Druckansicht.

Beispiel Coding

  METHOD if_ex_hrpaycherci0~get_output_structure.
* Klasse:               ZCL_IM__HRPAYCHERCI0
* Methode:              GET_OUTPUT_STRUCTURE
* Definitionsname:      HRPAYCHERCI0 (SE18)
* Implementierungsname: Z_HRPAYCHERCI0(SE19)

*Report: RPLERCIC0_CE (Transaktion 'PC00_M02_LERCI0_CE')
*Reportklasse: HRCHCE30
*Verarbeitungsklasse: CL_HRPAYCH_ERCI
*Formulare PDF: HR_CH_ERCI_01_DE, HR_CH_ERCI_01_FR, HR_CH_ERCI_01_IT
*BAdI: HRPAYCHERCI0
*DDIC Struktur: HRPAYCHERCI_OUTPUT
*Datenelemente: P02_ERCI* (Anzahl ca. 88)

* ERSTELLT:
* 13.05.2020   Michel Regotz
*
* AENDERUNGEN:
* 13.05.2020  2000001079 AGB International  Michel Regotz  erstellt
*--------------------------------------------------------------------
* Hier werden alle Ziffer 1-28 befüllt, wenn notwendig.
* Zusätzlich wird noch die Fusszeile des Formulares befüllt.
*--------------------------------------------------------------------
*Sprache prüfen und setzten ????


    DATAmsgstr             TYPE string.
    DATAmessage            TYPE symsg.

    DATAlv_precention TYPE ddtext.



    LOOP AT i0600 ASSIGNING FIELD-SYMBOL(<fs_0600>WHERE begda <= refda AND endda >= refda.
      "=======================================================================
      " TAAREMI3 13.05.2020 Header: Ist schon befüllt keine Anpassung
      "=======================================================================
      "LANGU*NACHN*VORNA*PERNR*NAHVN*PSTLZ*ORT01*STRAS*GBDAT
      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 1: Art des Arbeitsverhältnisses
      "=======================================================================
      "schriftliches oder mündliches Arbeitsverhältniss / Schriftlicher
      " Arbeitsvertrag Reiter 1
      IF <fs_0600>-written_contract IS INITIAL.
        output-oral_contract <fs_0600>-written_contract.
      ELSE.
        output-written_contract <fs_0600>-written_contract.
      ENDIF.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 1: Art des Arbeitsverhältnisses
      "=======================================================================
      "1 Vollzeitbeschäftigung / Vollzeitbeschäftigung Reiter 1
      output-fulltime <fs_0600>-fulltime.
      "2 Heimarbeitsverhältnis / Heimarbeitsverhältnis Reiter 1
      output-homeoffice <fs_0600>-homeoffice.
      "3 Aushilfs-/Abrufarbeitsvertrag / Aushilfstelle Reiter 1
      output-helpworker <fs_0600>-helpworker.
      "4 Teilzeitbeschäftigung / Teilzeitbeschäftigung Reiter 1
      output-parttime <fs_0600>-parttime.
      "5 Lehrverhältnis / Lehrverhältnis Reiter 1
      output-apprentice <fs_0600>-apprentice.
      "6 Temporätarbeitsvertrag -> Fled 2a ausfüllen / Temporärarbeitsverhältnis Reiter 1
      output-shortrun <fs_0600>-shortrun.
      "Folgende Felder existieren nicht in der Internationalen AGB
      "<fs_0600>-workoncall
      "<fs_0600>-seasonal.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 2: Dauer des Arbeitsverhältnisses
      "=======================================================================
      "Dauer des Arbeitsverhältnis von / Eintrittsdatum Reiter 1
      output-hire_date <fs_0600>-hire_date.
      "Dauer des Arbeitsverhältnis bis / Austrittsdatum Reiter 1
      output-fire_date <fs_0600>-fire_date.
      "Befristet oder Unbefristet / aus Feld Arbeitverhältniss Reiter 1
      CASE <fs_0600>-contract_type.
        WHEN 'U'.
          output-ctunl 'X'"Unbefristet
        WHEN 'L'.
          output-ctlim 'X'"Befristet
        WHEN OTHERS.
      ENDCASE.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 2a: Dauer des Arbeitsverhältnisses
      "=======================================================================
      "Solche Fälle gibt es bei der Swisscom nicht bleibt immer leer
      "SHORTRUN_FROM01*SHORTRUN_TO01*SHORTRUN_FROM02*SHORTRUN_TO02
      "*SHORTRUN_FROM03SHORTRUN_TO03*SHORTRUN_FROM04*SHORTRUN_TO04
      "*SHORTRUN_FROM05*SHORTRUN_TO05*SHORTRUN_FROM06*SHORTRUN_TO06

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 3: Tätig als
      "Tätig als. / Funktionsbezeichnung Reiter 1
      "=======================================================================
      output-job_title <fs_0600>-futxt.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 4: Normalarbeitszeit im Betrieb
      " (Stunden pro Woche)
      "/ Vertragliche Normalarbeizeit Reiter1
      "=======================================================================
      output-oper_wostd <fs_0600>-wostd.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 5: Durchschnittliche Arbeitszeit des
      " Arbeitsnehmer(Stunden pro Woche) / IT0007 - Arbeitsstunden pro Woche
      "=======================================================================
      LOOP AT i0007 ASSIGNING FIELD-SYMBOL(<fs_0007>)
        WHERE begda <= refda AND endda >= refda .
        output-pers_wostd <fs_0007>-wostd.
      ENDLOOP.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 6: Durchschnittliche Arbeitszeit des
      " Arbeitsnehmer(Tage pro Woche) / immer Fix 5
      "=======================================================================
      output-pers_woday 5.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 7: Unterlag ddes Arbeitsverhältnis einem
      " Gesamtarbeitvertrag
      " Kader immer nein der Rest Ja / MK 15 und 20 = Nein
      "=======================================================================
      LOOP AT i0001 ASSIGNING FIELD-SYMBOL(<fs_0001>)
        WHERE begda <= refda AND endda >= refda .
        CASE <fs_0001>-persk.
          WHEN '15'.
            output-work_cont_yes_no '02'"Kein GAV
          WHEN '20'.
            output-work_cont_yes_no '02'"Kein GAV
          WHEN OTHERS.
            output-work_cont_yes_no '01'"hat GAV
            output-work_contract 'Swisscom AG'.
        ENDCASE.
      ENDLOOP.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 8: AHV Ausgleichskasse des Betriebs
      " / Fix immer Agrapi
      "=======================================================================
      output-versges 'Agrapi'.
      "output-aknr = '100'." Ausgleichskassennr wird bei der Swisscom nicht v.
      "output-zwnr = '200'." Zweigstelle wird bei der Swisscom nicht verwendet

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 9: Kündigung durch
      " / Kündigung durch Reiter 2
      "   G=Arbeitgeber
      "   N=Arbeitnehmer
      " /Gekündigt am Reiter 2 + Gekündigt zum Reiter 2
      "=======================================================================
      CASE <fs_0600>-terminat_by.
        WHEN 'G'"Arbeitgeber
          output-term_by_employer 'X'.
        WHEN 'N'"Arbeitnehmer
          output-term_by_employee 'X'.
        WHEN OTHERS.
          "mache nichts
      ENDCASE.
      "am
      output-terminat_when <fs_0600>-terminat_when.
      "per
      output-terminat_on <fs_0600>-terminat_on.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 10: Form der Kündigung
      " / Kündigungsform Reiter 2
      "=======================================================================
      CASE <fs_0600>-written_terminat.
        WHEN 'X'"schriftlich
          output-hire_written 'X'.
        WHEN ''"mündlich
          output-hire_oral 'X'.
        WHEN OTHERS.
          "mache nichts
      ENDCASE.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 11: Dauer der gesetzlichen oder
      " Vertraglichen Kündigungsfrist
      " / Kündigungsfrist AN oder AG steht immer das gleiche drin Reiter 2
      "=======================================================================
      SELECT SINGLE ktext FROM t547t INTO output-notice_period_tx
        WHERE sprsl langu AND
              kdgfr <fs_0600>-notice_period_ee.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 12: Verhinderung an der Arbeitsleistung im
      " Zeitpunkt der Kündigung oder während der Kündigungsfrist
      " / Reiter 2 Verhindert durch Verhindert von Verhindert bis
      "=======================================================================
      "JA / Nein bei Verhindert durch
      CASE <fs_0600>-prevention.
        WHEN ''"Nein
          output-prevented_no 'X'.
        WHEN OTHERS."Ja
          output-prevented_yes 'X'.
          "Text von Verhindert durch aus dem Wertebereich der Domaine
          CALL FUNCTION 'GET_TEXT_DOMVALUE'
            EXPORTING
              domname   'P02_PREVENTION'
              domvalue  CONV domvalue_l<fs_0600>-prevention )
              langu     langu
            IMPORTING
              txt       lv_precention
            EXCEPTIONS
              not_found 1
              OTHERS    2.
          IF sy-subrc <> 0.
            TRY.
                MESSAGE e028(pnINTO msgstr.
                MOVE-CORRESPONDING sy TO message.
                message_handler->add_message(
                  EXPORTING
                    message message
                ).
              CATCH cx_hrpa_violated_assertion .

            ENDTRY.
          ELSE.
            output-prevention_text lv_precention.
          ENDIF.
          "Verhindert von
          output-prevented_from <fs_0600>-prevented_from.
          "Verhindert bis
          output-prevented_to <fs_0600>-prevented_to.
      ENDCASE.
      " teilweise verhindert existiert bei der Swisscom nicht.
      "output-PREVENTED_PART

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 13: Grund der Kündigung
      " / Reiter 2 Kündigungsgrund Zeile 1-3
      "=======================================================================
      output-terminat_reason1 <fs_0600>-terminat_reason1.
      output-terminat_reason2 <fs_0600>-terminat_reason2.
      output-terminat_reason3 <fs_0600>-terminat_reason3.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 14: letzter geleisteter Arbeitstag
      " / Wird bei der Swisscom nicht verwendet
      "=======================================================================
      "output-LAST_WORKED_DAY

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 15: Lie Lohnzahlung erfolgte bis am
      " / Reiter 2 Bezahlt bis
      "=======================================================================
      output-paid_until <fs_0600>-paid_until.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 16: Durchschnittlicher AHV-pflichtiger
      " Bruttomonatslohn während der letzten 12 Monate
      " / Lese Abrechnungsresultate der letzten 12 Monate
      "=======================================================================
      "output-PERIOD_WAGE01 6 Monate wird bei der Swisscom nicht verwendet
      "output-PERIOD_WAGE03 15 Monate wird bei der Swisscom nicht verwendet
      "output-PERIOD_WAGE04 24 Monate wird bei der Swisscom nicht verwendet

      DATA(lf_monate'-11'.

      DATA(lf_lgbetzcl_hrpa_agb=>get_payroll_result(
                                iv_pernr <fs_0600>-pernr
                                iv_fire_date <fs_0600>-fire_date
                                iv_langu langu
                                iv_monate lf_monate ).

      output-period_wage02 lf_lgbet.

      CLEARlf_lgbetlf_monate.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 17: Durchschnittlicher AHV-pflichtiger
      " Bruttomonatslohn während der letzten 60 Monate (letzen 5 Jahre)
      " / Lese Abrechnungsresultate der letzten 60 Monate
      "=======================================================================
      lf_monate '-59'.

      lf_lgbet zcl_hrpa_agb=>get_payroll_result(
                                iv_pernr <fs_0600>-pernr
                                iv_fire_date <fs_0600>-fire_date
                                iv_langu langu
                                iv_monate lf_monate ).

      output-monthly_salary lf_lgbet.

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 18: In Ziff. 16 und 17 nicht enthaltene
      " Naturalleistungen
      " / Wird bei der Swisscom nicht verwendet
      "=======================================================================
      "output-meal = 'X'. "Mahlzeit wird bei der Swisscom nicht verwendet
      "output-meal_salary = 3. wird bei der Swisscom nicht verwendet
      "output-accommodation = 'X'. "Unterkunft wird bei der Swisscom nicht verwendet
      "output-accommod_salary = 4.wird bei der Swisscom nicht verwendet

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 19: Abgangsentschädigung
      " / Immer fix Nein
      "=======================================================================
      output-leav_sal_yes_no '02'.
      "output-LEAV_SALARY wird bei der Swisscom nicht verwendet
      "output-LEAV_SALARY_WAGE wird bei der Swisscom nicht verwendet

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 20: Ferienentschädigung
      " / Immer fix Nein
      "=======================================================================
      output-vacat_pay_yes_no '02'.
      "output-VACATION_SALARY  wird bei der Swisscom nicht verwendet
      "output-VACATION_SAL_TG wird bei der Swisscom nicht verwendet
      "output-VACATION_SAL_WAG wird bei der Swisscom nicht verwendet

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 21: kompensierte Stunden
      " / Immer fix Nein
      "=======================================================================
      output-overtime_yes_no '02'.
      "output-OVERTIME_PAY wird bei der Swisscom nicht verwendet
      "output-OVERTIME_SAL_WAG wird bei der Swisscom nicht verwendet

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 22: Verzicht auf Ansprüche aus Arbeitsvert.
      " / Immer fix Nein
      "=======================================================================
      output-renunciat_yes_no '02'.
      "output-REASON_RENU_TXT1 wird bei der Swisscom nicht verwendet
      "output-REASON_RENU_TXT2 wird bei der Swisscom nicht verwendet

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 23: Bezieht der Arbeitnehmer in anderen
      " Leistungen
      " / Immer fix Nein
      "=======================================================================
      output-other_achievmen '02'.
      "output-OTHER_ACHIV_TXT1 wird bei der Swisscom nicht verwendet
      "output-OTHER_ACHIV_TXT2 wird bei der Swisscom nicht verwendet

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 24: Ferien
      " / Wird bei der Swisscom nicht verwendet
      "=======================================================================
      "output-VACATION
      "output-ABSENCE_FROM_A01
      "output-ABSENCE_TO_A01

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 25: Krankheit
      " / Wird bei der Swisscom nicht verwendet
      "=======================================================================
      "output-SICK
      "output-ABSENCE_FROM_B01
      "output-ABSENCE_TO_B01

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 26: Unfall
      " / Wird bei der Swisscom nicht verwendet
      "=======================================================================
      "output-ACCIDENT
      "output-ABSENCE_FROM_C02
      "output-ABSENCE_TO_C02

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 27: Militär-, Zivil-, Zivilschutzdienst
      " / Wird bei der Swisscom nicht verwendet
      "=======================================================================
      "output-ARMY_PROTECTION
      "output-ABSENCE_FROM_D02
      "output-ABSENCE_TO_D02

      "=======================================================================
      " TAAREMI3 13.05.2020 Ziffer 28: andere Absenzen
      " / Wird bei der Swisscom nicht verwendet
      "=======================================================================
      "output-OTHER_ABSENCE
      "output-ABSENCE_FROM_E02
      "output-ABSENCE_TO_E02

      "=======================================================================
      " TAAREMI3 13.05.2020 Fusszeile: Name Vorname / Firma des Arbeitgebers
      "=======================================================================
      SELECT SINGLE pernr AS lf_pernr FROM pa0105 INTO @DATA(lf_pernr)
        WHERE usrid @sy-uname AND
              subty '0001' AND
              begda <= @sy-datum AND
              endda >= @sy-datum.

      SELECT SINGLE ename FROM pa0001 INTO @DATA(lf_ename)
        WHERE pernr @lf_pernr AND
              begda <= @sy-datum AND
              endda >= @sy-datum.

      CONCATENATE lf_ename ',' INTO output-cad_contact.
      output-cad_adr01 'Swisscom (Schweiz) AG'.

      "=======================================================================
      " TAAREMI3 13.05.2020 Fusszeile: Datum
      "=======================================================================
      output-cad_prndt sy-datum.

      "=======================================================================
      " TAAREMI3 13.05.2020 Fusszeile: Adresse (Strasse, Nummer, PLZ, Ort)
      "=======================================================================
      output-cad_adr02 'HR Advisory'.
      output-cad_adr03 'Postfach'.
      output-cad_city  '3050 Bern'.

      "=======================================================================
      " TAAREMI3 13.05.2020 Hilfsfelder
      " / Werden nicht angedruckt
      "=======================================================================
      "output-cad_comnr = Kommunikationsnummer der Kontaktperson
      "output-cad_adr04 = Anschriftext
      "output-currency = Zahlungswährung
      "output-persid_int = tenschische Personalnummer der Zentralen Person (ab ELM 4.0)
      "output-persid_ext = Externe Personen ID
      "output-lcount = Hilfsfeld zum Zählen der Zeilen
      "output-pernr_i = Arbeitgeberbescheinigung: Ausgabe der Personalnummer

    ENDLOOP.

      "=======================================================================
      " TAAREMI3 13.05.2020 Erfolgsmeldung
      " / Erfolgsmeldungen werden in der Fehlerliste angezeigt
      "=======================================================================

    TRY.
        MESSAGE s003(zhr_lv_cockpitWITH
        output-nachn
        output-vorna
        INTO msgstr.
        MOVE-CORRESPONDING sy TO message.
        message_handler->add_message(
          EXPORTING
            message message
        ).
      CATCH cx_hrpa_violated_assertion .

    ENDTRY.

    "Muster einbau Meldung

*message-msgty = 'W'.
*message-msgid = 'PN'.
*message-msgno = '16'.
*message-msgv1 = 'TEST 1'.
*message-msgv2 = 'TEST 2'.
*message-msgv3 = 'TEST 3'.
*message-msgv4 = 'TEST 4'.
*MESSAGE S016(pn) WITH 'a_molga' INTO msgstr.

*    TRY.
*        MESSAGE w005(pn) INTO msgstr.
*        MOVE-CORRESPONDING sy TO message.
*        message_handler->add_message(
*          EXPORTING
*            message = message
*        ).
*      CATCH cx_hrpa_violated_assertion .
*
*    ENDTRY.



  ENDMETHOD.

        search this website

Regotz Michel