16.2.11

SAP Note 22432 - HR (Switz.): RPLQSTC0 printing retro. acc. runs

Symptom:

UKSymptom
Problems with the withholding tax list in the case of retroactive accounting runs.

  • The Tax Office has problems with the list if retroactive accounting runs (perhaps over several periods) are grouped together with the current period.
  • The Tax Office wants each month in a quarter to be listed separately in the list.
  • In the case of retroactive accounting runs, the complete amount should be listed and not merely the difference between the last accounting run that was submitted and the current accounting run.
  • For each employee, the tax amount to be submitted should be clearly discernible.
  • If a retroactive payroll run occurs over and beyond the start of the period to be evaluated, then a fixed percentage rate in infotype 0038 is not evaluated correctly during the calculation of withholding tax.

For example: for a fixed deduction of 4.5% for a retroactive run (period 02 corrected period 01), the value 13.5% is displayed for evaluation of period 02.

Cause and prerequisites

Up to now, the values were always written into one line (added together) if the employee was active without interruption.

Solution
Since the Tax Adaptation Act of 1995, only smaller companies (up to a maximum of 10 employees liable to pay withholding tax) are allowed to submit an accounting run performed for a whole quarter. Because of this, a separate line is now written for each individual accounting run.
Furthermore, retroactive accounting runs for individual periods are also listed individually if you enter the value 'FR' in the parameter "F/FO/FR/I". The result of this may be a longer list, but this list will be much clearer and easier to read.

As an advance correction, insert the lines marked YSCK117919 below into program RPLQSTC0:

*.................................externe Tabellen......................
TABLES:
T001, "Buchungskreise
T001P, "Buchungskreis/Werk/Betriebsteil
T5C1O, "Kantone/Gemeinde
T5C1Y, "Bezugsprovisionen
T5C2A, "QSt Text SteuerpflichtYSCK108458
T5C2B, "QSt Steuergrundlagen "YSCK108458
T5C2C, "QSt Steuerpflicht "YSCK108458
T5C2D, "QSt Steuerberechnung "YSCK108458
T5C2F, "QSt Steuerkantone "YSCK117919
T5C2H, "QSt Steuersaetze "YSCK108458
T5C2I, "QSt Abrechnungsnummer"YSCK108458
T502T. "Familienstand
*.................................Parameter............................


:::::::::::::::::::::
PROVIDE * FROM P0006 BETWEEN PN/BEGDA AND PN/ENDDA. "YSCK108458
CHECK P0006-ANSSA EQ '1'. "YSCK108458
MOVE-CORRESPONDING P0006 TO ZWORT. "YSCK108458
IF ZWORT-BEGDA LT PN/BEGDA. "YSCK108458
ZWORT-BEGDA = PN/BEGDA. "YSCK108458
ENDIF. "YSCK108458
IF ZWORT-ENDDA GT PN/ENDDA. "YSCK108458
ZWORT-ENDDA = PN/ENDDA. "YSCK108458
ENDIF. "YSCK108458
ZWORT1-BEGDA = ZWORT-BEGDA. "YSCK108458
ZWORT1-ENDDA = ZWORT-ENDDA. "YSCK108458
PROVIDE QSTPF KANTO GEMND "YSCK108458
FROM P0038 BETWEEN ZWORT1-BEGDA AND ZWORT1-ENDDA."YSCK108458
MOVE-CORRESPONDING P0038 TO ZWORT. "YSCK108458
PERFORM RE5C2F USING P0038-KANTO. "YSCK117919
IF T5C2F-LAND1 NE ZWORT-LAND1. "Wohnsitz im Ausland?"YSCK117919
CLEAR ZWORT-STATE. "YSCK117919
ENDIF. "YSCK117919
IF ZWORT-BEGDA LT ZWORT1-BEGDA. "YSCK108458
ZWORT-BEGDA = ZWORT1-BEGDA. "YSCK108458
ENDIF. "YSCK108458


:::::::::::::::::::::

--------------->CAUTION:<----------------------------------------------
The fields STPFZULA and STPFZULARR do not yet exist in 2.1. You will also notice here that the lines with YSCK114091 are missing.
Therefore, 3 lines are marked *P21 below. These lines are not required in 2.1; you can omit them completely or mark them as comment lines by placing an asterisk in the first column.
-----------------------------------------------------------------------
FORM EXTRACT.
DATA: "YSCK117919
PACK2 TYPE P DECIMALS 2. "Hilfsfeld Betrag "YSCK117919
CHECK: ZWREC-BETRAG NE 0 OR
ZWREC-BETRAGRR NE 0 OR
ZWREC-STPFZULA NE 0 OR "YSCK114091
ZWREC-STPFZULARR NE 0 OR "YSCK114091
ZWREC-STPFLOHN NE 0 OR
ZWREC-STPFLOHNRR NE 0.
PACK2 = ZWREC-BETRAG + ZWREC-BETRAGRR. "YSCK117919
IF PACK2 EQ 0. "YSCK117919
PACK2 = ZWREC-STPFZULA + ZWREC-STPFZULARR. "*P21"YSCK117919
IF PACK2 EQ 0. "*P21"YSCK117919
PACK2 = ZWREC-STPFLOHN + ZWREC-STPFLOHNRR. "YSCK117919
CHECK: PACK2 NE 0. "YSCK117919
ENDIF. "*P21"YSCK117919
ENDIF. "YSCK117919
IF ZWREC-AHVNR+7(3) = '000'.
ZWREC-PERSON = ZWREC-PERNR.
ELSE.


:::::::::::::::::::::
ENDSELECT.
ENDFORM. "RE5C2D. "YSCK108458
*-------------------------------------------------------"neu"YSCK117919
* FORM RE5C2F "YSCK117919
*-----------------------------------------------------------"YSCK117919
* Lesen der Tabelle T5C2F "YSCK117919
*-----------------------------------------------------------"YSCK117919
* --> 5C2F_KANTO Kanton "YSCK117919
*-----------------------------------------------------------"YSCK117919
FORM RE5C2F USING 5C2F_KANTO. "YSCK117919
CHECK: T5C2F-KANTO NE 5C2F_KANTO. "YSCK117919
CLEAR T5C2F. "YSCK117919
SELECT SINGLE * FROM T5C2F WHERE KANTO EQ 5C2F_KANTO. "YSCK117919
ENDFORM. "RE5C2F. "YSCK117919
*-------------------------------------------------------"neu"YSCK108458
* FORM RE5C2I *
*---------------------------------------------------------------------*
* Lesen der Tabelle T5C2I *


:::::::::::::::::::::

FORM ST.
CLEAR ST.
LOOP AT ST.
IF ST-QSTPF NE '0' AND "YSCK108458
ST-QSTPF NE '1'. "YSCK108458
ZWQST-GEMND = ST-GEMND.
ZWQST-KANTO = ST-KANTO.
ZWQST-QSTTAB = ST-QSTAB.
** UNPACK ST-QSPRO TO ZWQST-QSTPROZ. "YSCK102542
ZWQST-QSTPROZ = ST-QSPRO. "YSCK102542
** UNPACK ST-QSBTR TO ZWQST-QSTBETR. "YSCK102542
ZWQST-QSTBETR = ST-QSBTR. "YSCK102542
IF CD_TABLE-SRTZA NE 'A' "Rueckrechnung ? "YSCK117919
OR ( ST-BEGDA < PN/BEGDA AND "YSCK117919
VERSION NE 'FR' ). "YSCK117919
ZWQST-QSTPROZ = 0. "YSCK117919
ZWQST-QSTBETR = 0. "YSCK117919
ENDIF. "YSCK117919
EXIT. "erste Angabe uebernehmen,
"da Abrechnung ohne Split
ELSE. "YSCK117919
ZWQST-GEMND = ST-GEMND. "YSCK117919
ZWQST-KANTO = ST-KANTO. "YSCK117919
ENDIF.
ENDLOOP.
ENDFORM. "ST.


:::::::::::::::::::::
FORM ZWQST-BEARB.
* init Felder
SORT ZWQST.
CLEAR: ZWQST, ZWREC.
* Zwischenrecord erstellen und ausgeben
LOOP AT ZWQST.
* Suchen Beschaeftigungszeit
CLEAR: TAB-BPER, ZW-BPBEG, ZW-BPENDNEU.
LOOP AT TAB-BPER WHERE JJMM = ZWQST-JJMM.
IF ZW-BPBEG CO ' 0'.
ZW-BPBEG = TAB-BPER-APBEG. "Beginn
ENDIF.
ZW-BPENDNEU = TAB-BPER-APEND. "Ende
ENDLOOP.
LOOP AT ZWORT WHERE BEGDA LE ZW-BPBEG "YSCK108458
AND ENDDA GE ZW-BPENDNEU. "YSCK108458
EXIT. "YSCK108458
ENDLOOP. "AT ZWORT "YSCK108458
IF ZW-BPBEG CO ' 0'.
IF VERSION = 'FO' AND "Rueckr.nicht zeigen ?
SW-AKTIVAP = 'X'. "und aktiv ?
ZW-BPBEG = ZW-JJMM-VON. "--> alles auf Beginn
ZW-BPBEG+6(2) = '01'.
ZW-BPEND = ZW-BPBEG.
ELSE.
ZW-BPBEG = ZWQST-JJMM. "--> echte Periode zeigen
** zw-bpbeg+6(2) = 'RR'. "YSCK117919
ZW-BPBEG+6(2) = '01'. "YSCK117919
ZW-BPEND = ' RR'.
ZW-BPENDNEU = ZWQST-JJMM.
ZW-BPENDNEU+6(2) = '01'.
ENDIF.
ENDIF.
* Gruppenbruch testen


:::::::::::::::::::::
ADD ZWQST-STPFLOHNRR TO ZWREC-STPFLOHNRR.
ADD ZWQST-STPFZULARR TO ZWREC-STPFZULARR. "YSCK114091
ZW-BPEND = ZW-BPENDNEU. "YSCK117919
ENDLOOP.
* ev. zuletzt vorhandene Daten uebernehmen
IF ZWREC-BUKRS NE SPACE
OR ZWREC-AHVNR NE SPACE.
ZWREC-KZLAST = 'X'.
PERFORM EXTRACT.
CLEAR ZWREC.
ENDIF.
ENDFORM. "ZWQST-BEARB.
*---------------------------------------------------------------------*
* FORM ZWQST-FUELLEN *

No comments:

Post a Comment