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 ????
DATA: msgstr TYPE string.
DATA: message TYPE symsg.
DATA: lv_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(pn) INTO 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_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-period_wage02 = lf_lgbet.
CLEAR: lf_lgbet, lf_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_cockpit) WITH
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.