Bezeichnung des AlgorithmusXEN_Resolution_Planning
KurzbezeichnungAbleitung des Typ des Geschäfts für Resolution Planning
Verbale Beschreibung/Beispiele

Der Algorithmus iteriert über verschiedene Kriterien, die für die Zuordnung von Eventualverbindlichkeiten, Kapitalinstrumenten und Eventualverbindlichkeiten in die durch SRB/EBA vorgegebene Liability data structure maßgeblich sind.

Sind die Kriterien der Zuordnung erfüllt, so wird ein neuer Datensatz auf der Tabelle RP_Resolution_Planning erzeugt. Bei der Tabelle werden auch die entsprechenden Wertarten hinterlegt.

Ein Geschäftsfall kann in mehrere Kategorien fallen, in diesem Fall werden für einen Geschäftsfall mehrere Datensätze auf der Entität RP_Resolution_Planning mit den entsprechend aufgeschlüsselten Werten hinterlegt.

Zudem wird hier jede Emission auf alle unterschiedlichen Investoren aufgeteilt (mittels GI_Geschaeftsfall_Investor); auch der Teil der Emission, dessen Investoren nicht bekannt sind, wird hier hinterlegt. Der Investor wird in AI_Einheitennummer_ID hinterlegt, seine Gegenparteiklasse unter RP05_Resolution_Planning_Gegenparteiklasse_Code.

Die hinterlegten Werte sind (pro Wertart) disjunkt.

Die folgenden Wertarten werden der Tabelle GFW_Geschaeftsfall_Wert entnommen und nach RP01_Resolution_Planning_Kategorie_Code, RP03_Insolvenzrang_Code und AI_Einheitennummer_ID (die den Investor/Gläubiger enthält) aufgeschlüsselt in RPW_Resolution_Planning_Wert hinterlegt:

Es ist zu beachten, dass in manchen Fällen (u.A. Derivate, Garantien, Eigenkapitalinstrumente) auch auf andere Wertarten von GFW_Geschaeftsfall_Wert zurückgegriffen wird, die oben nicht aufgelistet sind. Dies liegt daran, dass in den Liability Data Report- sowie EBA-ITS on Resolution Planning-Templates unter "Outstanding nominal amount" unterschiedliche Wertarten abhängig vom Instrument-Typ zu verstehen sind. Somit entsprechen die Werte, die auf RPW_Resolution_Planning_Wert als "Ausstehender Nominalwert" + "Zinsabgrenzung Haben (Kundensicht)" dargestellt werden, dem "Outstanding nominal amount" gem. Spezifikation des Liability Data Report/EBA-ITS on Resolution Planning.

Siehe auch Beispiele für XEN_Resolution_Planning 

Kommt vor in/wird verwendet für

AI_Resolution_Planning_ID

RP01_Resolution_Planning_Kategorie_Code

RP03_Insolvenzrang_Code

RP05_Resolution_Planning_Gegenparteiklasse_Code

Formale Beschreibung
//Beginn Hauptfunktion

FUNKTION XEN_Resolution_Planning (AI_Mandant MA, AI_Geschaeftsfall_ID gfId, AI_Stichtag_Datum repDate, AI_Kons_ID konsId)

	geschaeftsfallkategorie = SELEKTIERE GF.GF00_Geschaeftsfallkategorie_Code VON GF_Geschaeftsfall
	ifrs_kennzeichen = SELEKTIERE MO.MO04_IFRS_Kennzeichen VON MO_Meldeobjekt MIT MO.AI_Kons_ID ISTGLEICH konsId
	WENN(ifrs_kennzeichen ISTGLEICH WAHR) DANN
		bilanzseite = SELEKTIERE GF.GFA171_Bilanzseite_IFRS_Code VON GF_Geschaeftsfall
		eigenkapitalklassifikation = SELEKTIERE GF.GF178_bilanzielle_Eigenkapitalklassifikation_IFRS_Code VON GF_Geschaeftsfall
	SONST
		bilanzseite = SELEKTIERE GF.GFA109_Bilanzseite_local_GAAP_Code VON GF_Geschaeftsfall
		eigenkapitalklassifikation = SELEKTIERE GF.GFA136_bilanzielle_Eigenkapitalklassifikation_NGAAP_Code VON GF_Geschaeftsfall
	ENDE
	verwaltung_kundengelder = SELEKTIERE GF.GF179_Verwaltung_Kundengelder_Kennzeichen VON GF_Geschaeftsfall
	systemanbieter = SELEKTIERE GF.GF180_Verbindlichkeit_Systemanbieter_Kennzeichen VON GF_Geschaeftsfall
	hfs = SELEKTIERE GK.GK04_Zur_Veräußerung_gehalten_Kennzeichen VON GK_Geschaeftsfall_Konsolidierungssicht
	short = SELEKTIERE GF.GF40_Short_Position_Kennzeichen VON GF_Geschaeftsfall
	treuhand = SELEKTIERE GF.GF15_Treuhandvermoegen_Code VON GF_Geschaeftsfall
	nachrangigkeit = SELEKTIERE GF.GF05_Nachrangigkeit_Code VON GF_Geschaeftsfall
	ursprungslaufzeit = SELEKTIERE GF.GFA83_Ursprungslaufzeit_Code VON GF_Geschaeftsfall
	garantieart = SELEKTIERE GF.GF204_Garantieart_Code VON GF_Geschaeftsfall
	restlaufzeit = SELEKTIERE GF.GFA181_Restlaufzeit_Rueckzahlung_Code VON GF_Geschaeftsfall
	rang = SELEKTIERE GF.GF199_Insolvenzrang_Code VON GF_Geschaeftsfall
	hbv = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Höhe der Besicherung der Verbindlichkeit (HBV)" VON GF_Geschaeftsfall
	wertpapierklassifikation = SELEKTIERE WM.WM15_Wertpapierklassifikation_gem_FinRep_Code VON WM_Wertpapier_MS VON GF_Geschaeftsfall
	inhaber = SELEKTIERE KR.AI_Einheitennummer_ID VON KR_Kundenrollen MIT KR.AI_Rolle_Code ISTGLEICH "Direkte Gegenpartei gem. FinRep (GF)" VON GF_Geschaeftsfall
	institutsart = SELEKTIERE EM.EMA69_Art_des_Instituts_Code VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH inhaber
	bil_konsolidierungskreis = SELEKTIERE EM.EMA78_Bilanzieller_Konsolidierungskreis_Kennzeichen VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH inhaber
	rechtstraeger = SELEKTIERE EM.EMA68_Rechtstraeger_Kennzeichen VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH inhaber
	kmu = SELEKTIERE EM.EM47_SME_gem_BaSAG_Kennzeichen MIT EM.AI_Einheitennummer_ID ISTGLEICH inhaber
	ona = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Ausstehender Nominalwert (ONA)" VON GF_Geschaeftsfall
	zh = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Zinsabgrenzungen Haben (Kundensicht) (ZH)" VON GF_Geschaeftsfall
	nbw = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Netto-Buchwert inkl. Zinsabgrenzungen (NBW)" VON GF_Geschaeftsfall
	nbwez = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Netto-Buchwert exkl. Zinsabgrenzungen (NBWEZ)" VON GF_Geschaeftsfall
	zhb = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Zinsabgrenzungen Haben (bilanziell) (ZHB)" VON GF_Geschaeftsfall
	ndgg = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Nettoverbindlichkeiten aus Derivaten (inkl. geschätzter Glattstellungsbeträge) (NDGG)" VON GF_Geschaeftsfall
	ndan = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH " Nettoverbindlichkeiten aus Derivaten (nach Maßgabe der aufsichtlichen Netting-Bestimmungen) (NDAN)" VON GF_Geschaeftsfall
    ndas = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH " Nettoverbindlichkeiten aus Derivaten (nach Aufrechnung von Sicherheiten) (NDAS)" VON GF_Geschaeftsfall
	nn = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Nominale (NN)" VON GF_Geschaeftsfall
	ruel = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Der Emission zugeordnete Rücklagen (RUEL)" VON GF_Geschaeftsfall
	einheitennummer_mandant = SELEKTIERE MA.MA09_Einheitennummer_ID VON MA_Mandant
    za_eligible = SELEKTIERE GF.GF243_Zinsabgrenzung_MREL_berücksichtigungsfähig VON GF_Geschaeftsfall


    // Bestimmung Typen und Rang

	typ_gedeckt = "r0110 - Covered deposits (BRRD art. 44/2/a) (R0110)"
	rang_gedeckt = "Rank 8 - Ranking in insolvency (master scale)"

	typ_besichert = "r0120 - Secured liabilities - collateralized part (BRRD art. 44/2/b) (R0120)"
	rang_besichert = "Rank 10 - Ranking in insolvency (master scale)"

	typ_nachrang = "r0370 - Subordinated liabilities (not recognised as own funds) (R0370)"	
	rang_nachrang = "Rank 4 - Ranking in insolvency (master scale)"

	//typ_cet1 wird erst innerhalb der Iteration definiert
	rang_cet1 = "Rank 1 - Ranking in insolvency (master scale)"
 
	typ_at1_fk = "Additional Tier 1 capital o/w (part of) subordinated liabilities recognised as own funds (R0521)"
	rang_at1 = "Rank 2 - Ranking in insolvency (master scale)"

	typ_t2_fk = "Tier 2 Capital o/w (part of) subordinated liabilities recognised as own funds (R0531)"
	rang_t2 = "Rank 3 - Ranking in insolvency (master scale)"

	//Verarbeitung von Verbindlichkeiten
	WENN(eigenkapitalklassifikation ISTGLEICH "Kein Eigenkapital (KEI)" UND bilanzseite ISTGLEICH "Passiv in der Bilanz (PAS)") DANN

		gboz = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "gedeckter Betrag ohne zeitliche Begrenzung (GBOZ)" VON GF_Geschaeftsfall
		gbozd = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "gedeckter Betrag ohne zeitliche Begrenzung nach ausländischem Recht (GBOZD)" VON GF_Geschaeftsfall
		a1c_relevant = SELEKTIERE GF.GF138_VERA_A1c_relevant_Kennzeichen VON GF_Geschaeftsfall
		//Fall einer Treuhandeinlage, deren gedeckte Beträge auf Einzelkonten dargestellt werden
		WENN(a1c_relevant ISTGLEICH FALSCH) DANN
			underlyings = SELEKTIERE ALLE GB.AI_Geschaeftsfall_ID2 VON GB_Geschaeftsfall_Beziehung MIT (GB01_Beziehungsart_Code ISTGLEICH "Mitglieder-Geschäftsfall-Beziehung (MB)" UND GB.AI_Geschaeftsfall_ID ISTGLEICH gfId)
			ITERIERE underlying VON (0, Max(underlyings))
				a1c_relevant_u = SELEKTIERE GF.GF138_VERA_A1c_relevant_Kennzeichen VON GF_Geschaeftsfall MIT GF.AI_Geschaeftsfall_ID ISTGLEICH underlying
				gboz_u = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "gedeckter Betrag ohne zeitliche Begrenzung (GBOZ)" VON GF_Geschaeftsfall MIT GF.AI_Geschaeftsfall_ID ISTGLEICH underlying
				WENN(a1c_relevant_u ISTGLEICH WAHR) DANN
					gboz = gboz + gboz_u
				ENDE
			ITERATION ENDE
		ENDE

		WENN(geschaeftsfallkategorie ISTGLEICH "Derivate (Q)") DANN
			typ = "r0330 - Balance sheet liabilities arising from derivatives (Close-Out Amounts) (R0330)"
			Neue_Datensaetze(gfId, typ, rang, ndan, 0, nbw, 0, 0, WAHR) 
		SONST 
			//Gedeckter Teil der Verbindlichkeit
			WENN(gboz + gbozd > 0) DANN

				wert_gedeckt_ona = MIN(ona, gboz + gbozd)
	            WENN(zh >= 0) DANN
    		        wert_gedeckt_zh = MIN(zh, gboz + gbozd - wert_gedeckt_ona)
			    SONST
					//Spezialfall: negative Zinsen - diese werden weiter unten im Algorithmus verarbeitet
				    wert_gedeckt_zh = 0
      			ENDE
	            wert_gedeckt_nbw = nbw * (wert_gedeckt_ona + wert_gedeckt_zh ) / (ona+zh)

            	Neue_Datensaetze(gfId, typ_gedeckt, rang_gedeckt, wert_gedeckt_ona, wert_gedeckt_zh, wert_gedeckt_nbw, 0, FALSCH)
		
				ona = ona - wert_gedeckt_ona 
				zh = zh - wert_gedeckt_zh 
				nbw = nbw - wert_gedeckt_nbw 
			ENDE

			//Besicherter Teil der Verbindlichkeit
			WENN(hbv > 0) DANN
				wert_besichert_ona = MIN(ona, hbv)
	            WENN(zh >= 0) DANN
					wert_besichert_zh = MIN(zh, hbv - wert_besichert_ona)
				SONST
					//Spezialfall: negative Zinsen
					WENN(wert_besichert_ona <= ona + zh) DANN
						//Negative Zinsen werden - sofern ein Teil der Verbindlichkeit unbesichert ist - erst im Abschnitt des XEN für "uncollateralized secured liabilities" verarbeitet
						wert_besichert_zh = 0
					SONST
						//Wenn die Verbindlichkeit voll- oder überbesichert ist, sind negative Zinsen bereits an dieser Stelle zu berücksichtigen
						wert_besichert_zh = ona - wert_besichert_ona + zh
					ENDE
				ENDE
				wert_besichert_nbw = nbw * (wert_besichert_ona + wert_besichert_zh) / (ona+zh)

				Neue_Datensaetze(gfId, typ_besichert, rang_besichert, wert_besichert_ona , wert_besichert_zh, wert_besichert_nbw, hbv, FALSCH)
				
				ona = ona - wert_besichert_ona 
				zh = zh - wert_besichert_zh 
				nbw = nbw - wert_besichert_nbw
			ENDE

			WENN(treuhand ISTGLEICH "Treuhandvermögen mit Aussonderungsrecht (B)") DANN
				typ = "r0140 - Fiduciary liabilities, if protected in insolvency (BRRD art. 44/2/d) (R0140)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, FALSCH)

			SONST WENN(geschaeftsfallkategorie ISTGLEICH "Einlagen (L)" UND verwaltung_kundengelder ISTGLEICH WAHR) DANN
				typ = "r0130 - Client liabilities, if protected in insolvency (BRRD art. 44/2/c) (R0130)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, FALSCH)

			//Behandlung von Sonstigen Passiva aus Zwischenkonten bzw. Schwebender Verrechnung
			SONST WENN(geschaeftsfallkategorie ENTHAELT ("Sonstige Aktiva/Passiva aus Zwischenkonten (T)", "Sonstige Aktiva/Passiva aus Schwebender Verrechnung (U)")) DANN
				WENN(verwaltung_kundengelder ISTGLEICH WAHR) DANN 
					typ = "r0130 - Client liabilities, if protected in insolvency (BRRD art. 44/2/c) (R0130)"
					Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, FALSCH)
				SONST WENN(systemanbieter ISTGLEICH WAHR) DANN 
					typ = "r0161 - System (operator) liabilities < 7 days (BRRD art. 44/2/f) (R0161)"
					Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, FALSCH)
				SONST WENN(institutsart ENTHAELT ("Kreditinstitut, das die CRR-Definition (Art 4 Abs 1 Nr. 1 CRR) erfüllt (1)", "Wertpapierfirma nach Art 4 Abs 1 Nr 2 CRR (9)") UND bil_konsolidierungskreis ISTGLEICH FALSCH) DANN
					typ = "r0150 - Institution liabilities < 7 days (BRRD art. 44/2/e) (R0150)"
					Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, FALSCH)
				SONST
					typ = "r0400 - Residual liabilities (R0400)"
					Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, WAHR)
				ENDE

			SONST WENN(geschaeftsfallkategorie ENTHAELT ("Einlagen (L)") UND systemanbieter ISTGLEICH WAHR UND restlaufzeit ENTHAELT ("keine Frist (KF)", "1 Tag (1T)", "1 Tag < 1 Woche (1Tk1W)")) DANN
				typ = "r0161 - System (operator) liabilities < 7 days (BRRD art. 44/2/f) (R0161)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, FALSCH)

	
			SONST WENN(institutsart ENTHAELT ("Kreditinstitut, das die CRR-Definition (Art 4 Abs 1 Nr. 1 CRR) erfüllt (1)", "Wertpapierfirma nach Art 4 Abs 1 Nr 2 CRR (9)") UND ursprungslaufzeit ENTHAELT ("keine Frist (KF)", "1 Tag (1T)", "1 Tag < 1 Woche (1Tk1W)") UND bil_konsolidierungskreis ISTGLEICH FALSCH) DANN
				typ = "r0150 - Institution liabilities < 7 days (BRRD art. 44/2/e) (R0150)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, FALSCH)

			SONST WENN(geschaeftsfallkategorie ISTGLEICH "Einlagen (L)" UND nachrangigkeit ENTHAELT ("Vorrangig (V)") UND (rechtstraeger ISTGLEICH FALSCH ODER kmu ISTGLEICH WAHR)) DANN
				typ = "r0310 - Deposits, not covered but preferential (BRRD art. 108) (R0310)"			
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, WAHR)

			SONST WENN(hbv => 0) DANN
				typ = "r0340 - Uncollateralized secured liabilities (R0340)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, WAHR)

			SONST WENN(hfs ISTGLEICH WAHR) DANN
				typ = "r0400 - Residual liabilities (R0400)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, WAHR)

			SONST WENN(geschaeftsfallkategorie ISTGLEICH "Einlagen (L)" UND nachrangigkeit ENTHAELT ("Vorrangig (V)")) DANN
				typ = "r0320 - Deposits, not covered and not preferential (R0320)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, WAHR)

			SONST WENN(short ISTGLEICH FALSCH UND wertpapierklassifikation ISTGLEICH "Strukturierte Schuldverschreibungen (ST)" UND nachrangigkeit ENTHAELT ("Vorrangig (V)")) DANN
				typ = "r0350 - Structured notes (R0350)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, WAHR)

			SONST WENN(nachrangigkeit ISTGLEICH "Nicht bevorrechtigt (B)") DANN
				typ = "r0365 - Senior non-preferred liabilities (R0365)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, WAHR)

			SONST WENN(nachrangigkeit ENTHAELT ("Nachrangkapital (N)", "Ergänzungskapital (E)")) DANN

				 at1_gf = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "AT1-anrechenbarer Anteil (AT1)" UND GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId) 
				 t2_gf = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "T2-anrechenbarer Anteil (T2)" UND GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId)

				   WENN(t2_gf > 0) DANN
					  rang_restmenge = rang_t2
				   SONST WENN(at1_gf > 0) DANN
					  rang_restmenge = rang_at1
				   SONST
					  rang_restmenge = rang_nachrang
				   ENDE

				WENN(geschaeftsfallkategorie ENTHAELT ("Wertpapier (H)", "Investmentfonds (I)", "Verbriefung (J)") UND bilanzseite ISTGLEICH "Passiv in der Bilanz (PAS)" UND short ISTGLEICH FALSCH) DANN	

					//Iteration über die Investoren 					
					investoren = SELEKTIERE ALLE AI_Geschaeftsfall_Investor_ID VON GI_Geschaeftsfall_Investor MIT GI.AI_Geschaeftsfall_ID ISTGLEICH gfId

					ITERIERE investor VON 0 BIS Max(investoren)
						einheit = SELEKTIERE GI.AI_Einheitennummer_ID VON GI_Geschaeftsfall_Investor MIT (GI.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GI.AI_Geschaeftsfall_ID ISTGLEICH gfId)
						
						// Eigene gehaltene Anteile werden im LDR nicht dargestellt
						WENN(einheit UNGLEICH einheitennummer_mandant) DANN

							//Bestimmung Gegenparteilklasse
							WENN(einheit UNGLEICH NULL) DANN
								gegenparteiklasse = XEN_Zuordnung_Gegenparteiklasse(MA, einheit, repDate)
							SONST
								boersenotiert = SELEKTIERE WM.WMA14_boersenotiert_Kennzeichen VON WM_Wertpapier_MS VON GF_Geschaeftsfall
								WENN(boersenotiert ISTGLEICH WAHR) DANN
									gegenparteiklasse = "c009x - Non identified, listed on an exchange platform (C009X)"
								SONST
									gegenparteiklasse = "c010x - Non-identified, not listed on an exchange platform (C010X)"
								ENDE
							ENDE

							anteil = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "gehaltener Anteil der Emission (GAE)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)

							ona_pro_investor = ona * anteil/100
							zh_pro_investor = zh * anteil/100
							nbwez_pro_investor = nbwez * anteil/100
							zhb_pro_investor = zhb * anteil/100

							at1 = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "AT1-anrechenbarer Anteil (AT1)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
							t2 = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "T2-anrechenbarer Anteil (T2)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
							mrel = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "MREL-anrechenbarer Anteil (MREL)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
							imrel = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "Intern MREL-anrechenbarer Anteil (IMREL)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId) 
							afak = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "Anteil des Finanzierungsbeitrags (anderer Konzerneinheiten)(AFAK)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)

							WENN(za_eligible ISTGLEICH WAHR) DANN
      							mrelb = (ona_pro_investor + zh_pro_investor) * mrel/100
					   	    	imrelb = (ona_pro_investor + zh_pro_investor )*  imrel/100
							SONST
								mrelb = ona_pro_investor * mrel/100
								imrelb = ona_pro_investor * imrel/100
							ENDE							

							fak_pro_investor = ona_pro_investor * afak/100
									
							// Datensatz für AT1
							Neuer_Datensatz(gfId, typ_at1_fk, gegenparteiklasse, rang_at1, einheit, ona_pro_investor * at1/100, 0, nbwez_pro_investor * at1/100, 0, 0, MIN(mrelb, ona_pro_investor * at1/100), MIN(imrelb, ona_pro_investor * at1/100), 0)                                    
							mrelb = mrelb - MIN(mrelb, ona_pro_investor * at1/100)
							imrelb = imrelb - MIN(imrelb, ona_pro_investor * at1/100)

							// Datensatz für T2							
							Neuer_Datensatz(gfId, typ_t2_fk, gegenparteiklasse, rang_t2, einheit, ona_pro_investor * t2/100, 0, nbwez_pro_investor * t2/100, 0, 0, MIN(mrelb, ona_pro_investor * t2/100), MIN(imrelb, ona_pro_investor * t2/100), 0)          							
							mrelb = mrelb - MIN(mrelb, ona_pro_investor * at1/100)
							imrelb = imrelb - MIN(imrelb, ona_pro_investor * t2/100)
							
													
							// Datensatz, der nicht EM-anrechenbar ist							
							Neuer_Datensatz(gfId, typ_nachrang, gegenparteiklasse, rang_restmenge, einheit, ona_pro_investor - ona_pro_investor * (at1+t2)/100, zh_pro_investor, nbwez_pro_investor - nbwez_pro_investor * (at1+t2)/100 + zhb_pro_investor, fak_pro_investor, 0, mrelb, imrelb, 0) 

						ENDE
					ITERATION ENDE

				SONST

					gegenpartei = SELEKTIERE EM.AI_Einheitennummer_ID VON EM_Einheit_MS VON KR_Kundenrollen MIT KR.AI_Rolle_Code ISTGLEICH "Gegenpartei gem. FinRep (GF)" VON GF_Geschaeftsfall

					at1 = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "AT1-anrechenbarer Anteil (AT1)" UND GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
					t2 = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "T2-anrechenbarer Anteil (T2)" UND GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
					mrel = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "MREL-anrechenbarer Anteil (MREL)" UND GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
					imrel = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "Intern MREL-anrechenbarer Anteil (IMREL)" UND GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
					afak = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "Anteil des Finanzierungsbeitrags (anderer Konzerneinheiten) (AFAK)" UND GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId)


				    WENN(za_eligible ISTGLEICH WAHR) DANN
						mrelb = (ona + zh) * mrel/100
						imrelb = (ona + zh)*  imrel/100
					SONST
						mrelb = mrel/100 * ona
						imrelb = imrel/100 * ona
					ENDE					

					fak = afak/100 * ona

					gegenparteiklasse = XEN_Zuordnung_Gegenparteiklasse(MA, gegenpartei, repDate)

					// Datensatz für AT1
					Neuer_Datensatz(gfId, typ_at1_fk, gegenparteiklasse, rang_at1, gegenpartei, ona * at1/100, 0, nbwez * at1/100, 0, 0, MIN(mrelb, ona * at1/100), MIN(imrelb, ona * at1/100), 0)      
					mrelb = mrelb - MIN(mrelb, ona * at1/100)
					imrelb = imrelb - MIN(imrelb, ona * at1/100)

					// Datensatz für T2							
					Neuer_Datensatz(gfId, typ_t2_fk, gegenparteiklasse, rang_t2, gegenpartei, ona * t2/100, 0, nbwez * t2/100, 0, 0, MIN(mrelb, ona * t2/100), MIN(imrelb, ona * t2/100), 0) 
					mrelb = mrelb - MIN(mrelb, ona * t2/100)
					imrelb = imrelb - MIN(imrelb, ona * t2/100)

					// Datensatz der nicht EM-anrechenbar ist									
					Neuer_Datensatz(gfId, typ_nachrang, gegenparteiklasse, rang_restmenge, gegenpartei, ona - ona * (at1+t2)/100, zh, nbwez - nbwez * (at1+t2)/100 + zhb, fak, 0, mrelb, imrelb, 0)

				ENDE
	
			SONST
				typ = "r0360 - Senior unsecured liabilities (R0360)"
				Neue_Datensaetze(gfId, typ, rang, ona, zh, nbw, 0, WAHR)
			ENDE
		ENDE


    //Verarbeitung von (relevanten) Eigenkapitalinstrumenten
	SONST WENN(eigenkapitalklassifikation ENTHAELT ("Gezeichnetes Kapital (KAP)", "Eigenkapitalkomponente zusammengesetzter Finanzinstrumente (EKZ)", "Instrumente ohne Stimmrechte gem. § 26a BWG (SB1)", "Sonstige begebene Eigenkapitalinstrumente (SB2)", "Sonstige begebene Eigenkapitalinstrumente (SB)")) DANN
		
		//Bestimmung Typ für CET1 (hängt von der Eigenmittelklassifikation des Instruments ab)

		WENN(eigenkapitalklassifikation ENTHAELT ("Gezeichnetes Kapital (KAP)") DANN
			typ_cet1 = "r0511 - Common Equity Tier 1 Capital o/w capital instruments/share capital (R0511)"	
		SONST WENN(eigenkapitalklassifikation ENTHAELT ("Eigenkapitalkomponente zusammengesetzter Finanzinstrumente (EKZ)", "Instrumente ohne Stimmrechte gem. § 26a BWG (SB1)", "Sonstige begebene Eigenkapitalinstrumente (SB2)", "Sonstige begebene 	Eigenkapitalinstrumente (SB)")) DANN
			typ1_cet1 = "r0512 - Common Equity Tier 1 Capital o/w instruments ranking pari passu with ordinary Shares (R0512)"
		ENDE

		//Iteration über Investoren, bei der die Datensätze generiert werden

		WENN(geschaeftsfallkategorie ENTHAELT ("Wertpapier (H)", "Investmentfonds (I)", "Verbriefung (J)") UND bilanzseite ISTGLEICH "Passiv in der Bilanz (PAS)" UND short ISTGLEICH FALSCH) DANN	
					
			investoren = SELEKTIERE ALLE AI_Geschaeftsfall_Investor_ID VON GI_Geschaeftsfall_Investor MIT GI.AI_Geschaeftsfall_ID ISTGLEICH gfId

			ITERIERE investor VON 0 BIS Max(investoren)

				einheit = SELEKTIERE GI.AI_Einheitennummer_ID VON GI_Geschaeftsfall_Investor MIT (GI.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GI.AI_Geschaeftsfall_ID ISTGLEICH gfId)
				anteil = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "gehaltener Anteil der Emission (GAE)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND 			GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
				cet1 = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "CET1-anrechenbarer Anteil (CET1)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND 			GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
				at1 = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "AT1-anrechenbarer Anteil (AT1)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND 			GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
				t2 = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "T2-anrechenbarer Anteil (T2)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND 			GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
    			mrel = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "MREL-anrechenbarer Anteil (MREL)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND 			GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
 				imrel = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "Intern MREL-anrechenbarer Anteil (IMREL)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND 			GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)

				nbwez_pro_investor = nbwez * anteil/100
				ruel_pro_investor = ruel * anteil/100
				mrelb = mrel/100 * (nbwez_pro_investor + ruel_pro_investor)
				imrelb = imrel/100 * (nbwez_pro_investor + ruel_pro_investor)
				
				WENN(einheit UNGLEICH einheitennummer_mandant) DANN

					//Bestimmung Gegenparteiklasse

					WENN(einheit UNGLEICH NULL) DANN
						gegenparteiklasse = XEN_Zuordnung_Gegenparteiklasse(MA, einheit, repDate)
					SONST
						boersenotiert = SELEKTIERE WM.WMA14_boersenotiert_Kennzeichen VON WM_Wertpapier_MS VON GF_Geschaeftsfall
						WENN(boersenotiert ISTGLEICH WAHR) DANN
							gegenparteiklasse = "c009x - Non identified, listed on an exchange platform (C009X)"
						SONST
							gegenparteiklasse = "c010x - Non-identified, not listed on an exchange platform (C010X)"
						ENDE
					ENDE
					
					// Datensatz für CET1 
					Neuer_Datensatz(gfId, typ_cet1, gegenparteiklasse, rang_cet1, einheit, nbwez_pro_investor * cet1/100 + ruel_pro_investor, 0, nbwez_pro_investor * cet1/100, 0, 0, MIN(mrelb, nbwez_pro_investor * cet1/100), MIN(imrelb, nbwez_pro_investor * cet1/100), 0)       					
					mrelb = mrelb - MIN(mrelb, nbwez_pro_investor * cet1/100)
 					imrelb = imrelb - MIN(imrelb, nbwez_pro_investor * cet1/100)

					// Datensatz für AT1
					Neuer_Datensatz(gfId, typ_at1_fk, gegenparteiklasse, rang_at1, einheit, nbwez_pro_investor * at1/100, 0, nbwez_pro_investor * at1/100, 0, 0, MIN(mrelb, nbwez_pro_investor * at1/100), MIN(imrelb, nbwez_pro_investor * at1/100), 0)      
					mrelb = mrelb - MIN(mrelb, nbwez_pro_investor * at1/100)
					imrelb = imrelb - MIN(imrelb, nbwez_pro_investor * at1/100)

					// Datensatz für T2							
					Neuer_Datensatz(gfId, typ_t2_fk, gegenparteiklasse, rang_t2, einheit, nbwez_pro_investor * t2/100, 0, nbwez_pro_investor * t2/100, 0, 0, MIN(mrelb, nbwez_pro_investor * t2/100), MIN(imrelb, nbwez_pro_investor * t2/100), 0) 
					
				ENDE
			ITERATION ENDE
		ENDE
	
	//Verarbeitung von Derivaten, die aktiv, unter oder nicht in der Bilanz sind
	SONST WENN(geschaeftsfallkategorie ISTGLEICH "Derivate (Q)") DANN
		typ = "r0330 - Balance sheet liabilities arising from derivatives (Close-Out Amounts) (R0330)"
		Neue_Datensaetze(gfId, typ, rang, ndan, 0, zhb, 0, 0, WAHR) 
	
	//Verarbeitung von erhaltenen Garantien (diese sind insbesondere in Z04.00 auszuweisen)
	SONST WENN (geschaeftsfallkategorie ISTGLEICH "Erhaltene Garantien (AC)")  
		imrel = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Investor_Wert MIT (GFW.AI_Wertart_Code ISTGLEICH "Intern MREL-anrechenbarer Anteil (IMREL)" UND GFW.AI_Geschaeftsfall_ID ISTGLEICH gfId) 
		WENN(garantieart ISTGLEICH "Emission") DANN
			typ = "Issuance"
		SONST WENN(garantieart ISTGLEICH "Gegenpartei") DANN
			typ = "Counterparty"
		SONST WENN(garantieart ISTGLEICH "Unbeschränkt") DANN
			typ = "Unlimited"
		SONST WENN(garantieart ISTGLEICH "Sonstige") DANN
			typ = "Other"
		ENDE
		Neue_Datensaetze(gfId, typ, NULL, nn, 0, 0, 0, nn * imrel/100, FALSCH) 
	ENDE

FUNKTIONSENDE


//Hilfsfunktion, mittels derer neue Datensätze auf RP_Resolution_Planning angelegt werden. 

//Diese Funktion legt einen oder im Fall von emittierten Wertpapieren mehrere Datensätze auf den Entitäten RP_Resolution_Planning und RPW_Resolution_Planning_Wert an.
FUNKTION Neue_Datensaetze(gfId, typ, rang, Wert_ONA, Wert_ZH, Wert_NBW, Wert_HBV, r0210_Kennzeichen)

	//Liabilities to institutions or entities that are part of the same resolution group
	typ_same_res_group = "r210 - liabilities to institutions or entities that are part of the same resolution group (R0210)"
	typ_vor_RG=typ
	za_eligible = SELEKTIERE GF.GF243_Zinsabgrenzung_MREL_berücksichtigungsfähig VON GF_Geschaeftsfall


	boersenotiert = SELEKTIERE WM.WMA14_boersenotiert_Kennzeichen VON WM_Wertpapier_MS VON GF_Geschaeftsfall
	short = SELEKTIERE GF.GF40_Short_Position_Kennzeichen VON GF_Geschaeftsfall
	ifrs_kennzeichen = SELEKTIERE MO.MO04_IFRS_Kennzeichen VON MO_Meldeobjekt MIT MO.AI_Kons_ID ISTGLEICH konsId
	WENN(ifrs_kennzeichen ISTGLEICH WAHR) DANN
		bilanzseite = SELEKTIERE GF.GFA171_Bilanzseite_IFRS_Code VON GF_Geschaeftsfall
	SONST
		bilanzseite = SELEKTIERE GF.GFA109_Bilanzseite_local_GAAP_Code VON GF_Geschaeftsfall
	ENDE

	WENN(geschaeftsfallkategorie ENTHAELT ("Wertpapier (H)", "Investmentfonds (I)", "Verbriefung (J)") UND bilanzseite ISTGLEICH "Passiv in der Bilanz (PAS)" UND short ISTGLEICH FALSCH) DANN	
		
		investoren = SELEKTIERE ALLE AI_Geschaeftsfall_Investor_ID VON GI_Geschaeftsfall_Investor MIT GI.AI_Geschaeftsfall_ID ISTGLEICH gfId
		
		ITERIERE investor VON 0 BIS Max(investoren)

			einheit = SELEKTIERE GI.AI_Einheitennummer_ID VON GI_Geschaeftsfall_Investor MIT (GI.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GI.AI_Geschaeftsfall_ID ISTGLEICH gfId)
			anteil = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "gehaltener Anteil der Emission (GAE)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
			institutsart_investor = SELEKTIERE EM.EMA69_Art_des_Instituts_Code VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH einheit
			land_investor = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH einheit

			mrel = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "MREL-anrechenbarer Anteil (MREL)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
			imrel = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "intern MREL-anrechenbarer Anteil (IMREL)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)
			afak = SELEKTIERE GIW.Wert VON GIW_Geschaeftsfall_Investor_Wert MIT (GIW.AI_Wertart_Code ISTGLEICH "Anteil des Finanzierungsbeitrags anderer Konzerneinheiten (AFAK)" UND GIW.AI_Geschaeftsfall_Investor_ID ISTGLEICH investor UND GIW.AI_Geschaeftsfall_ID ISTGLEICH gfId)

			WENN(za_eligible ISTGLEICH WAHR) DANN
				mrelb = (Wert_ONA + Wert_ZH) * anteil/100 * mrel/100
				imrelb = (Wert_ONA + Wert_ZH) * anteil/100 * imrel/100
			SONST
				mrelb = Wert_ONA * anteil/100 * mrel/100
				imrelb = Wert_ONA * anteil/100 * imrel/100
           	ENDE

			

			//Bestimmung Gegenparteiklasse

			WENN(einheit UNGLEICH NULL) DANN
				gegenparteiklasse = XEN_Zuordnung_Gegenparteiklasse(MA, einheit, repDate)
			SONST
				boersenotiert = SELEKTIERE WM.WMA14_boersenotiert_Kennzeichen VON WM_Wertpapier_MS VON GF_Geschaeftsfall
				WENN(boersenotiert ISTGLEICH WAHR) DANN
					gegenparteiklasse = "c009x - Non identified, listed on an exchange platform (C009X)"
				SONST
					gegenparteiklasse = "c010x - Non-identified, not listed on an exchange platform (C010X)"
				ENDE
			ENDE

			//Generierung der Datensätze
			WENN(einheit UNGLEICH einheitennummer_mandant) DANN
				rolle_einheit = SELEKTIERE EM.EMA93_Rolle_in_Resolution_Group_Code VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH einheit
				WENN(r0210_Kennzeichen ISTGLEICH WAHR UND rolle_einheit ISTGLEICH "Unternehmen innerhalb der Resolution Group außer der Resolution Entity (RG)" UND nachrangigkeit ISTGLEICH "Vorrangig (V)" UND institutsart_investor IN ("Kreditinstitut, das die CRR-Definition (Art 4 Abs 1 Nr. 1 CRR) erfüllt (1)", "Wertpapierfirma nach Art 4 Abs 1 Nr 2 CRR (9)", "Kreditinstitut, das CRR-Definition eines Kreditinstituts nicht erfüllt, jedoch ein national Kreditinstitut gemäß § 1a BWG darstellt (CRR-FI) (2)", "Finanzholdinggesellschaft nach Art 4 Abs 1 Nr. 20 CRR (6)", "gemischte Finanzholdinggesellschaft nach Art 4 Abs 1 Nr 21 CRR (7)") UND land_investor IN ("EU_GR")) DANN
					//Anm.: MREL sollte in diesem Fall immer = 0 sein
					Neuer_Datensatz(gfId, typ_same_res_group, typ_vor_RG, gegenparteiklasse, rang, einheit, Wert_ONA * anteil/100, Wert_ZH * anteil/100, Wert_NBW * anteil/100, Wert_ONA * afak/100 * anteil/100, Wert_HBV * anteil/100, 0 , 0 , 0)     	   
				SONST WENN(typ ISTGLEICH typ_gedeckt ODER typ ISTGLEICH typ_besichert) DANN
                	Neuer_Datensatz(gfId, typ, typ_vor_RG, gegenparteiklasse, rang, einheit, Wert_ONA * anteil/100, Wert_ZH * anteil/100, Wert_NBW * anteil/100, Wert_ONA * afak/100 * anteil/100, Wert_HBV * anteil/100, 0 , 0, 0)
				SONST
					Neuer_Datensatz(gfId, typ, typ_vor_RG, gegenparteiklasse, rang, einheit, Wert_ONA * anteil/100, Wert_ZH * anteil/100, Wert_NBW * anteil/100, Wert_ONA * afak/100 * anteil/100, Wert_HBV * anteil/100, Wert_ONA * anteil/100 * mrel/100, Wert_ONA * anteil/100 * imrel/100, 0)
				ENDE
			ENDE

		ITERATION ENDE

	//Andere Verbindlichkeiten 
	SONST

		inhaber = SELEKTIERE EM.AI_Einheitennummer_ID VON EM_Einheit_MS VON KR_Kundenrollen MIT KR.AI_Rolle_Code ISTGLEICH "Gegenpartei gem. FinRep (GF)" VON GF_Geschaeftsfall
		Gegenparteiklasse = XEN_Zuordnung_Gegenparteiklasse(MA, inhaber, repDate)
		rolle_einheit = SELEKTIERE EM.EMA93_Rolle_in_Resolution_Group_Code VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH inhaber   		
		land = SELEKTIERE EM.EMA48_Land_fuer_Meldezwecke_Code VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH inhaber
 		institutsart = SELEKTIERE EM.EMA69_Art_des_Instituts_Code VON EM_Einheit_MS MIT EM.AI_Einheitennummer_ID ISTGLEICH inhaber 
 		ndas = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH " Nettoverbindlichkeiten aus Derivaten (nach Aufrechnung von Sicherheiten) (NDAS)" VON GF_Geschaeftsfall
  		ndgg = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Nettoverbindlichkeiten aus Derivaten (inkl. geschätzter Glattstellungsbeträge) (NDGG)" VON GF_Geschaeftsfall  
		mrel = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "MREL-anrechenbarer Anteil (MREL)" VON GF_Geschaeftsfall
		imrel = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "intern MREL-anrechenbarer Anteil (IMREL)" VON GF_Geschaeftsfall
   		afak = SELEKTIERE GFW.Wert VON GFW_Geschaeftsfall_Wert MIT GFW.AI_Wertart_Code ISTGLEICH "Anteil des Finanzierungsbeitrags anderer Konzerneinheiten (AFAK)" VON GF_Geschaeftsfall  			
 

		WENN(za_eligible ISTGLEICH WAHR) DANN
			mrelb = (Wert_ONA + Wert_ZH) * mrel/100
			imrelb = (Wert_ONA + Wert_ZH)*  imrel/100
		SONST    
			mrelb = Wert_ONA * mrel/100
			imrelb = Wert_ONA * imrel/100
		ENDE

		WENN(typ_vor_RG ISTGLEICH "r0330 - Balance sheet liabilities arising from derivatives (Close-Out Amounts) (R0330)") DANN
			Wert_GGB = MAX(ndgg-ndas,0)
		SONST
			Wert_GGB = 0
		ENDE
		
		WENN(r0210_Kennzeichen ISTGLEICH WAHR UND rolle_einheit ISTGLEICH "Unternehmen innerhalb der Resolution Group außer der Resolution Entity (RG)" UND nachrangigkeit ISTGLEICH "Vorrangig (V)" UND institutsart IN ("Kreditinstitut, das die CRR-Definition (Art 4 Abs 1 Nr. 1 CRR) erfüllt (1)", "Wertpapierfirma nach Art 4 Abs 1 Nr 2 CRR (9)", "Kreditinstitut, das CRR-Definition eines Kreditinstituts nicht erfüllt, jedoch ein national Kreditinstitut gemäß § 1a BWG darstellt (CRR-FI) (2)", "Finanzholdinggesellschaft nach Art 4 Abs 1 Nr. 20 CRR (6)", "gemischte Finanzholdinggesellschaft nach Art 4 Abs 1 Nr 21 CRR (7)") UND land IN ("EU_GR")) DANN
		//Anm.: MREL sollte in diesem Fall immer = 0 sein              
			WENN(typ_vor_RG ISTGLEICH "r0330 - Balance sheet liabilities arising from derivatives (Close-Out Amounts) (R0330)") DANN
                Wert_ONA = Wert_GGB
            ENDE
			Neuer_Datensatz(gfId, typ_same_res_group, typ_vor_RG, gegenparteiklasse, rang, inhaber, Wert_ONA, Wert_ZH, Wert_NBW, Wert_ONA * afak/100, Wert_HBV, 0 , 0, Wert_GGB)
   		SONST WENN(typ ISTGLEICH typ_gedeckt ODER typ ISTGLEICH typ_besichert) DANN
        	Neuer_Datensatz(gfId, typ, typ_vor_RG, gegenparteiklasse, rang, inhaber, Wert_ONA, Wert_ZH, Wert_NBW, Wert_ONA * afak/100, Wert_HBV, 0 , 0, Wert_GGB)
		SONST
			Neuer_Datensatz(gfId, typ, typ_vor_RG, gegenparteiklasse, rang, inhaber, Wert_ONA, Wert_ZH, Wert_NBW, Wert_ONA * afak/100, Wert_HBV, mrelb, imrelb, Wert_GGB)
		ENDE

	ENDE
FUNKTIONSENDE

	
FUNKTION Neuer_Datensatz(Geschäftsfall-ID, Typ, Typ_vor_RG, Gegenparteiklasse, Rang, Gläubiger, Wert_ONA, Wert_ZH, Wert_NBW, Wert_FAK, Wert_HBV, Wert_MRELB, Wert_IMRELB, Wert_GGB)

	id = EINDEUTIGE_ID()
	ERSTELLE NEUEN RP_Resolution_Planning UND SETZE:
		SETZE AI_Resolution_Planning_ID = id
		SETZE AI_Geschaeftsfall_ID = Geschäftsfall-ID 
		SETZE AI_Einheitennummer_ID = Gläubiger
		SETZE RP01_Resolution_Planning_Kategorie_Code = Typ
		SETZE RP03_Insolvenzrang_Code = Rang
 		SETZE RP05_Resolution_Planning_Gegenparteiklasse_Code = Gegenparteiklasse
  		SETZE RP07_Resolution_Planning_Kategorie_vor_Resolution_Group_Code = Typ_vor_RG
 
	ENDE
	WENN(Wert_ONA != 0) DANN
		ERSTELLE NEUEN RPW_Resolution_Planning_Wert UND SETZE:
			SETZE AI_Resolution_Planning_ID = id
			SETZE AI_Wertart_Code = "Ausstehender Nominalwert (ONA)"
			SETZE Wert = Wert_ONA
		ENDE
	ENDE
	WENN(Wert_ZH !=0) DANN 
		ERSTELLE NEUEN RPW_Resolution_Planning_Wert UND SETZE:
			SETZE AI_Resolution_Planning_ID = id
			SETZE AI_Wertart_Code = "Zinsabgrenzungen Haben (Kundensicht) (ZH)"
			SETZE Wert = Wert_ZH
		ENDE
	ENDE
	WENN(Wert_NBW !=0) DANN 	
		ERSTELLE NEUEN RPW_Resolution_Planning_Wert UND SETZE:
			SETZE AI_Resolution_Planning_ID = id
			SETZE AI_Wertart_Code = "Netto-Buchwert inkl. Zinsabgrenzungen (NBW)"
			SETZE Wert = Wert_NBW
		ENDE
	ENDE
	WENN(Wert_FAK != 0) DANN
		ERSTELLE NEUEN RPW_Resolution_Planning_Wert UND SETZE:
			SETZE AI_Resolution_Planning_ID = id
			SETZE AI_Wertart_Code = "Finanzierungsbeitrag (anderer Konzerneinheiten) (FaK)"
			SETZE Wert = Wert_FAK
		ENDE
	ENDE
	WENN(Wert_HBV != 0) DANN	
		ERSTELLE NEUEN RPW_Resolution_Planning_Wert UND SETZE:
			SETZE AI_Resolution_Planning_ID = id
			SETZE AI_Wertart_Code = "Höhe der Besicherung der Verbindlichkeit (HBV)"
			SETZE Wert = Wert_HBV
		ENDE
	ENDE
	WENN(Wert_MRELB != 0) DANN
		ERSTELLE NEUEN RPW_Resolution_Planning_Wert UND SETZE:
			SETZE AI_Resolution_Planning_ID = id
			SETZE AI_Wertart_Code = "MREL-anrechenbarer Betrag (MRELB)"
			SETZE Wert = Wert_MRELB
		ENDE
	ENDE
	WENN(Wert_IMRELB != 0) DANN
		ERSTELLE NEUEN RPW_Resolution_Planning_Wert UND SETZE:
			SETZE AI_Resolution_Planning_ID = id
			SETZE AI_Wertart_Code = "Intern MREL anrechenbarer Betrag (IMRELB)"
			SETZE Wert = Wert_IMRELB
		ENDE
	ENDE
 	WENN(Wert_GGB != 0) DANN
		ERSTELLE NEUEN RPW_Resolution_Planning_Wert UND SETZE:
			SETZE AI_Resolution_Planning_ID = id
			SETZE AI_Wertart_Code = "Geschätzter Glattstellungsbetrag (GGB)"
			SETZE Wert = Wert_GGB
		ENDE
	ENDE   
	RUECKGABE = id
FUNKTIONSENDE