Asset-Herausgeber

Fehler bei der Verarbeitung der Vorlage.
The following has evaluated to null or missing:
==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 128, column 37]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 128, column 21]
----
1<#-- used @ Veranstaltung-Detailseite Intro 
2 used @ Publikation-Detailseite Intro 
3--> 
4 
5<#-- 
6Web content templates to display teaser on thema detail page 
7 
8Generic template for detail pages Intro / Teaser element 
9--> 
10<#-- 
11Display the current page title 
12--> 
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
14<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
15 
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" /> 
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMPublicationCarousel.ftl" /> 
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" /> 
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" /> 
20 
21 
22<#-- 
23 renders the Intro for nearly all Pages 
24 TODO: remove Share? (was in the designs, but not anymore?) 
25 TODO: check if languageSelect/filter are working (js) 
26 
27 - portletId 
28 - data = { 
29 "media": string (src from image), 
30 "category": string, 
31 "title": string, 
32 "author": string, 
33 "subheadline": string, 
34 "copy": string, 
35 "filter": { 
36 "id": string, 
37 "name": string, 
38 "entries": Array<Object> ({key:value}), 
39 }, 
40 "languageSelect": { 
41 "id": string, 
42 "name": string, 
43 "entries": Array<Object> ({key:value}), 
44 }, 
45 "meta": { 
46 "pos"; string (top/bottom) 
47 "date": string, 
48 "hash": string, 
49 "info": string, (url) 
50 }, 
51 "share" : { 
52 "login": string, 
53 "print": string, 
54 "mail": string, 
55 "multishare": string?? (tbd) 
56
57 - AMMetadata: macro 
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content 
59
60--> 
61 
62<#assign 
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
64 
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() 
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") 
67 
68 themeDisplay = ServiceContext.getThemeDisplay() 
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
70 
71 languageId = themeDisplay.getLocale() 
72 groupId = themeDisplay.getScopeGroupId() 
73 currentUrl = themeDisplay.getURLCurrent() 
74 
75 layout = themeDisplay.getLayout() 
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
77/> 
78 
79<#setting locale="${languageId}"> 
80 
81<#-- get article from url --> 
82 
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! > 
84 
85 
86<#if entry?has_content> 
87 
88 <#if entry.resourcePrimKey??> 
89 <#assign primaryKey = entry.resourcePrimKey?number > 
90 <#elseif entry.classPK??> 
91 <#assign primaryKey = entry.classPK?number > 
92 </#if> 
93 
94 <#assign 
95 jsonString = FrontendService.article.getWebcontent(primaryKey) 
96 json = FrontendService.json.parseAsJson(jsonString) 
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds() 
98 
99 title = entry.getTitle(languageId) 
100 data = { 
101 "title": title 
102
103 /> 
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" /> 
105 
106 <#if hasContent('untertitel', languageId, json)> 
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } > 
108 </#if> 
109 
110 <#if hasContent('beschreibung', languageId, json)> 
111 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } > 
112 </#if> 
113 
114 <#-- fill meta data --> 
115 <#assign meta = {} /> 
116 
117 <#-- PUBLIKATIONEN DETAIL --> 
118 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
119 
120 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)> 
121 <#assign 
122 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first") 
123 /> 
124 
125 <#if coverBildString?has_content> 
126 <#assign 
127 coverBild = FrontendService.json.parseAsJson(coverBildString) 
128 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) 
129 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid ) 
130 data = data + { "media": linkToDMT, "meta" : dMTJsonObject } 
131 /> 
132 <#if dMTJsonObject.altText?? > 
133 <#assign data = data + {"alt" : dMTJsonObject.altText} /> 
134 </#if> 
135 <#if dMTJsonObject.quelle??> 
136 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } /> 
137 </#if> 
138 </#if> 
139 <#-- uncomment to display pdf cover as Intro Image 
140 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)> 
141 <#assign 
142 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first") 
143 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/> 
144 <#if fileEntry?has_content> 
145 <#assign 
146 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay) 
147 data = data + { "media": linkToThumbnail } 
148 /> 
149 </#if> 
150 --> 
151 </#if> 
152 
153 <#assign 
154 meta = meta + { "orderInfo": "true" } 
155 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!"" 
156 /> 
157 
158 
159 
160 <#if hasContent('erscheinungsdatum', languageId, json)> 
161 <#assign 
162 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
163 /> 
164 <#if erscheinungsdatum?has_content > 
165 <#assign 
166 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId ) 
167 meta = meta + { "date": erscheinungsdatumFormatted } 
168 /> 
169 </#if> 
170 </#if> 
171 
172 <#if verbundJournalArticle?has_content> 
173 <#assign 
174 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey) 
175 verbundJson = FrontendService.json.parseAsJson(verbundJsonString) 
176 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first") 
177 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first") 
178 /> 
179 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" /> 
180 <#assign meta = meta + { "laufendenummer": laufendenummer } > 
181 
182 <#if coverImg?has_content && coverImg.url?has_content > 
183 <#assign meta = meta + { "coverImg": coverImg.url } > 
184 </#if> 
185 </#if> 
186 
187 
188 <#if meta?has_content> 
189 <#assign data = data + {"meta": meta } > 
190 </#if> 
191 
192 </#if> 
193 <#-- PUBLIKATIONEN DETAIL END --> 
194 
195 
196 <#-- VERANSTALTUNGEN DETAIL --> 
197 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
198 <#assign 
199 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!"" 
200 links = [] 
201 /> 
202 <#if availablelanguages?has_content && friendlyUrl?has_content> 
203 <#if (availablelanguages?size > 1) > 
204 <#list availablelanguages as language> 
205 <#assign 
206 defaultLanguage = "de_DE" 
207 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage) 
208 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale 
209 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId) 
210 
211 link = { 
212 "key": language!defaultLanguage, 
213 "value": linkLocale.getDisplayLanguage(languageId), 
214 "url": "/c/portal/update_language?p_l_id=" + 
215 layout.plid + "&redirect=" + langFriendlyUrl + 
216 "&languageId=" + language 
217
218 /> 
219 <#if language == languageId> 
220 <#assign link = link + { "selected": "true" } > 
221 </#if> 
222 <#assign links = links + [link]> 
223 </#list> 
224 <#assign 
225 data = data + { 
226 "languageSelect": { 
227 "id": "languageSelectRedirect", 
228 "name": "languageselectRedirect", 
229 "entries": links, 
230 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar") 
231
232
233 /> 
234 </#if> 
235 </#if> 
236 </#if> 
237 
238 <#if hasContent('erscheinungsdatum', languageId, json)> 
239 <#assign 
240 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first") 
241 meta = meta + { "start": startdate?date.iso, "end": "" } 
242 /> 
243 </#if> 
244 
245 <#if hasContent('startdatum', languageId, json)> 
246 <#assign 
247 startdate = getValueForLanguage('startdatum', languageId, json, "first") 
248 meta = meta + { "start": startdate?date.iso, "end": "" } 
249 /> 
250 </#if> 
251 
252 <#if hasValue('einfuehrungText', locale, json)> 
253 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } > 
254 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")> 
255 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } > 
256 </#if> 
257 
258 <#if hasContent('endedatum', languageId, json)> 
259 <#assign 
260 enddate = getValueForLanguage('endedatum', languageId, json, "first") 
261 meta = meta + { "end": enddate?date.iso } 
262 /> 
263 </#if> 
264 
265 <#if hasContent('startzeit', languageId, json)> 
266 <#assign 
267 startzeit = getValueForLanguage('startzeit', languageId, json, "first") 
268 /> 
269 <#if startzeit?has_content > 
270 <#assign meta = meta + { "startzeit": startzeit } /> 
271 </#if> 
272 </#if> 
273 
274 <#if hasContent('endezeit', languageId, json)> 
275 <#assign 
276 endezeit = getValueForLanguage('endezeit', languageId, json, "first") 
277 meta = meta + { "endezeit": endezeit } 
278 /> 
279 </#if> 
280 
281 <#if hasContent('ortWCSKASDEORT', languageId, json)> 
282 <#assign 
283 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first")) 
284 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number 
285 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!"" 
286 /> 
287 <#if ortWCSKASDEORTWebContent?has_content > 
288 <#assign 
289 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!"" 
290 /> 
291 <#if ortWCSKASDEORTTitle?has_content > 
292 <#assign 
293 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle } 
294 /> 
295 </#if> 
296 </#if> 
297 </#if> 
298 
299 
300 <#if hasContent('veranstaltungsnummer', languageId, json)> 
301 <#assign 
302 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first") 
303 meta = meta + { "verauuid": verauuid } 
304 /> 
305 </#if> 
306 
307 
308 <#if (data.meta)?has_content > 
309 <#assign meta = data.meta /> 
310 </#if> 
311 
312 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)> 
313 <#assign 
314 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first") 
315 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution") 
316 /> 
317 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} > 
318 
319 
320 <#if mediaData.meta?? && mediaData.meta.quelle??> 
321 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } /> 
322 </#if> 
323 </#if> 
324 
325 
326 <#if meta?has_content> 
327 <#assign data = data + {"meta": meta } > 
328 </#if> 
329 
330 <#-- END fill meta data --> 
331 
332 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)> 
333 <#assign 
334 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json) 
335 authors = [] 
336 /> 
337 <#list journalArticles as articleString> 
338 <#assign article = FrontendService.json.parseAsJson(articleString) /> 
339 <#if article?has_content && article?is_hash && article.classPK??> 
340 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" /> 
341 <#if articleDereferenced?has_content > 
342 <#assign 
343 author = "" 
344 articlePrimaryKey = articleDereferenced.classPK?number 
345 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey) 
346 articleJson = FrontendService.json.parseAsJson(articleJsonString) 
347 /> 
348 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" /> 
349 <#if hasValue('anredetitel', languageId, articleJson)> 
350 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " "> 
351 </#if> 
352 <#if hasValue('vorname', languageId, articleJson)> 
353 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " "> 
354 </#if> 
355 <#if hasValue('nachname', languageId, articleJson)> 
356 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " "> 
357 </#if> 
358 
359 <#attempt> 
360 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" > 
361 <#recover> 
362 <#assign href = "#" > 
363 </#attempt> 
364 <#if href?has_content && href != "#" && href != "/_404"> 
365 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'> 
366 </#if> 
367 
368 <#assign authors = authors + [author?trim]> 
369 </#if> 
370 </#if> 
371 </#list> 
372 <#if authors?has_content> 
373 <#assign data = data + { "author": authors?join(", ") } > 
374 </#if> 
375 </#if> 
376 
377 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") > 
378 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! > 
379 <#if categories?has_content && categories[0]?has_content > 
380 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
381 </#if> 
382 
383 <#if hasContent('ausgebucht', languageId, json)> 
384 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }> 
385 </#if> 
386 
387 <#if hasContent('storniert', languageId, json)> 
388 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }> 
389 </#if> 
390 
391 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") > 
392 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! > 
393 <#if categories?has_content && categories[0]?has_content > 
394 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
395 </#if> 
396 <#else> 
397 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! > 
398 <#if categories?has_content && categories[0]?has_content > 
399 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } > 
400 </#if> 
401 </#if> 
402 
403 
404 <#assign 
405 languages = [] 
406 /> 
407 
408 <#attempt> 
409 <#if json["document_pdfDMTBASICDOCUMENT"]?? > 
410 <#if availablelanguages?has_content> 
411 <#list availablelanguages as pdf_language> 
412 <#assign 
413 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first") 
414 docRef = FrontendService.json.parseAsJson(docRefJson) 
415 /> 
416 <#if docRef?is_hash && pdf_language != languageId > 
417 <#assign 
418 lang = FrontendService.language.getLocaleByKey(pdf_language)!"" 
419 docGroupId = docRef["groupId"]?number 
420 docUuid = docRef["uuid"] 
421 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale ) 
422 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject ) 
423 /> 
424 <#if lang?has_content> 
425 <#assign 
426 languages = languages + [ 
427
428 "key": pdf_language, 
429 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(), 
430 "url": dMTLink 
431 }] 
432 /> 
433 </#if> 
434 </#if> 
435 </#list> 
436 </#if> 
437 </#if> 
438 <#recover> 
439 </#attempt> 
440 
441 <#if (languages?size > 0)> 
442 <#attempt> 
443 <#assign 
444 data = data + { "languageSelect": { 
445 "id": "languageSelect", 
446 "name": "languageselect", 
447 "entries": languages, 
448 "documents": "", 
449 "button": "true" 
450 }} 
451 /> 
452 <#recover> 
453 </#attempt> 
454 </#if> 
455 
456 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" /> 
457 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)} 
458 
459 <#if data.meta?has_content> 
460 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()> 
461 <div>  
462 <div id="publicationVerbundPagination"> 
463 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg /> 
464 </div> 
465 </div> 
466 </#if> 
467 </#if> 
468 
469<#elseif (editmode?? && editmode)> 
470 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl /> 
471</#if> 

Asset-Herausgeber

Das HLPF fand 2021 unter der Ägide des Wirtschafts- und Sozialrates der Vereinten Nationen (ECOSOC) statt. Es gilt als die zentrale Plattform der Vereinten Nationen (VN) für die Überprüfung der Agenda 2030 und ihrer 17 Nachhaltigkeitsziele (Sustainable Development Goals, SDGs). Jedes Jahr werden exemplarisch einige dieser SDGs für eine nähere Betrachtung ausgewählt (siehe Graphik). Eine verbesserte Datengrundlage erlaubt es inzwischen, die Entwicklung der SDGs umfassend und global zu messen. Die aktuellen Charts des Statistikbüros des VN geben dabei allerdings für 2021 ein ernüchterndes Bild ab:[1] keines der 17 Ziele ist momentan auf globaler Ebene auf Erfolgskurs, wobei Ziel 3 (Gesundheit), Ziel 7 (Energie) und Ziel 9 (Infrastruktur) noch die beste Bilanz abliefern. Besondere Problemfälle stellen die Ziele 2 (Ernährung), 11 (nachhaltige Städte) und 13 (Klima) dar, die weit abgefallen zurückliegen. Die Lage stellt sich erwartungsgemäß weitaus besser in den Industriestaaten dar, jedoch liegen auch dort rund die Hälfte der SDGs hinter den Erwartungen zurück. Manche von den VN veröffentlichen Zahlen stellen noch die Situation vor der COVID-19-Krise dar, sodass weitere Verschlechterungen zu erwarten sind.

Die Idee der eingangs erwähnten VNRs ist nicht nur, dass Mitgliedsstaaten gegenüber der internationalen Gemeinschaft Rechenschaft ablegen, welche konkreten Maßnahmen sie ergriffen haben, um die SDGs voranzutreiben; sondern es soll auch ein globaler Lernprozess damit angestoßen werden. Deutschland war nach 2016 bereits das zweite Mal vertreten und hatte mit Angela Merkel die vermutlich promineste Rednerin aller VNR-Präsentationen.

"Zukunft sichern, statt zu verbrauchen"

Mit diesem Slogan fasste Bundeskanzlerin Angela Merkel in einer Videobotschaft zusammen, was für sie Nachhaltigkeit im Kern bedeutete. Sie betonte, dass Nachhaltigkeit als politisches Leitprinzip für die Bundesregierung äußerste Priorität genieße, gab aber unumwunden zu, dass Deutschland vor großen Herausforderungen und Schwierigkeiten stünde, die notwendigen Transformationen in allen Lebensbereichen umzusetzen. Wir alle müssten erheblich ehrgeiziger und entschlossener handeln, um die Agenda 2030 noch zu erreichen. Deutschland möchte durch höhere Etappenziele Klimaneutralität bereits 2045 (also fünf Jahre vor dem Ziel des Europäischen Green Deals) erreichen. Diese Anstrengungen würden sich letztlich bezahlt machen. In ihrem Beitrag erwähnte sie auch das historische Urteil des Bundesverfassungsgerichts vom 29. April 2021, das einen stärkeren Klimaschutz im Hinblick auf die Generationengerechtigkeit fordert.

Nach der Botschaft der Kanzlerin erfolgten Einlassungen der parlamentarischen Staatssekretärinnen Maria Flachsbarth (Bundesministerium für wirtschaftliche Zusammenarbeit und Entwicklung) und Rita Schwarzelühr-Sutter (Bundesministerium für Umwelt, Naturschutz und nukleare Sicherheit). Frau Dr. Flachsbarth äußerte, dass die COVID-19-Krise uns lehre, unsere Ambitionen zu vergrößern, statt sie zu verringern. Die Krise müsste als Chance verstanden werden. Auf Bitte des Schweizer Botschafters ging sie nochmal vertieft auf das deutsche Lieferkettengesetz ein, welches einen Beitrag Deutschlands zu einer gerechteren und nachhaltigeren Globalisierung sei. Größere deutsche Unternehmen hätten künftig eine sich auf die gesamte Lieferkette erstreckende Sorgfaltspflicht und eine Verantwortung, die Einhaltung von Menschenrechten und Umweltstandards bei ihren Geschäftspartnern zu prüfen. Frau Schwarzelühr-Sutter merkte an, dass die Hitzewellen und die Flutkatastrophe in Deutschland Weckrufe seien, die Belastungsgrenzen der Erde nicht weiter zu überschreiten. Sie erinnerte auch daran, dass sich das Zeitfenster für eine vergleichsweise kostengünstige Umsetzung von Nachhaltigkeitsmaßnahmen bald schließe. Daher dürfe man diesen politisch günstigen Moment nicht verstreichen lassen.

Erwartungsgemäß kamen von den beiden Vertreterinnen der deutschen Zivilgesellschaft kritischere Töne und Forderungen nach einem ehrgeizigeren Engagement auf nationaler und internationaler Ebene. Die strukturellen Ursachen von Ungleichheit und Rassismus müssten bekämpft, internationale Steuervermeidung begrenzt und universeller Zugang zu Impfstoffen gesichert werden. Deutschland müsse Verantwortung übernehmen für seinen Beitrag zur Klima- und Biodiversitätskrise.

Die Deutsche Nachhaltigkeitsstrategie[2]

Grundlage der deutschen VNR und Leitmotiv der Einlassungen der drei Rednerinnen der Bundesregierung war die 2021 durchgeführte Fortschreibung der Deutschen Nachhaltigkeitsstrategie (DNS), die im März verabschiedet wurde. Tatsächlich stellt auch der schriftliche Bericht, der dieses Jahr für Deutschland beim HLPF eingereicht wurde, im Großen und Ganzen lediglich eine Zusammenfassung der zeitnah entstandenen aktuellen DNS dar.

Die erste Nachhaltigkeitsstrategie Deutschlands wurde 2002 verabschiedet und wurde seitdem mehrfach weiterentwickelt im Sinne eines "lebenden Dokuments." Seit 2015 ist sie vollständig mit den 17 Zielen der Agenda 2030 verknüpft, die jetzt als Grundlage dienen. Für jedes SDG werden dabei Maßnahmen auf drei Wirkungsebenen beschrieben: (i) Maßnahmen mit Wirkungen in Deutschland, (ii) Maßnahmen, die durch Deutschland durchgeführt werden mit weltweiter Wirkung und zuletzt (iii) weltweite Maßnahmen mit deutscher Beteiligung. Ein Novum in der Fortschreibung der DNS von 2021 ist die Einführung von sechs Transformationsbereichen, die nach Ansicht der Bundesregierung von besonderer Relevanz sind, um Fortschritte bei der Umsetzung von Agenda 2030 zu erzielen und die mehrere SDGs betreffen mit besonderer Betonung auf deren Wechselwirkungen (siehe Tabelle). Getreu des Multi-Akteursansatzes fand die Entwicklung der DNS unter breiter Einbindung von Politik, Wissenschaft, Wirtschaft, Gewerkschaften und Verbänden in einem "Gemeinschaftswerk Nachhaltigkeit" statt.

Seit 2017 wurden der DNS sogenannte Schlüsselindikatoren als Steuerinstrumente hinzugefügt, die 2021 nochmals erweitert wurden und nunmehr 75 Indikatoren und Ziele in 31 Bereichen beinhalten. Diese werden im Zweijahresrhythmus vom Bundesamt für Statistik erhoben und veröffentlicht.[3] Die von der Bundesregierung definierten DNS-Schlüsselindikatoren stehen dabei beispielhaft für Themen, die für Deutschland von herausragender Bedeutung sind.[4] Bemerkenswert ist, dass hierdurch die DNS in gewisser Weise objektiv messbar gemacht wurde und sich definitiv davon wegbewegt hat, eine Ansammlung politischer Willensbekundungen zu sein. Ein Problem ist jedoch, dass diese nationalen Indikatoren meist nur für Deutschland erhoben werden und daher der internationale Vergleich fehlen kann. Interessanterweise beschloss die Bundesregierung in ihrer diesjährigen VNR als Gradmesser der SDG-Umsetzung die eigenen, nationalen Indikatoren der DNS für ihre Berichterstattung zu verwenden und nicht die offizielle, normierte Indikatorenmatrix der Agenda 2030.[5] Dies wurde damit begründet, dass die internationalen Indikatoren im deutschen Fall für ein spezifisches nationales Monitoring, aus dem auch politische Handlungserfordernisse abgeleitet werden können, zu generisch erscheinen. Die 231 internationalen SDG-Indikatoren werden freilich vom Bundesamt für Statistik zusätzlich zu den 75 DNS-Indikatoren und weiteren 100 EU-Indikatoren erhoben, was wahrlich eine Mammutaufgabe ist.

Infolge des Feedbacks einer internationalen Peer-Review unter der Leitung der ehemaligen UNDP-Chefin Helen Clark im Jahr 2018 wurde die institutionelle Architektur zur Umsetzung der Deutschen Nachhaltigkeitsstrategie neu gestaltet. Seit 5. Juni 2018 tagt der Staatssekretärausschuss für nachhaltige Entwicklung unter Leitung des Chefs des Bundeskanzleramts, und achtet als zentrales Steuerungsorgan darauf, dass das Leitprinzip Nachhaltigkeit ressortübergreifend Anwendung findet. Die Rolle des fraktionsübergreifenden Parlamentarischen Beirats für nachhaltige Entwicklung (PBnE) mit seinen 17 ordentlichen Mitglieder besteht darin, das Thema Nachhaltigkeit in den Deutschen Bundestag hineinzutragen.[6]

Insgesamt muss man festhalten, dass die DNS über die Jahre inhaltlich stark an Substanz gewonnen hat und sich die Vorstellungen über eine Politik der Nachhaltigkeit stark konkretisiert haben. Besonders hervorzuheben sind die enormen Fortschritte in der Ausarbeitung von statistischen Kennzahlen und deren systematische Erhebung, um Erfolge und Rückschläge bei den SDGs künftig messbar zu machen. Dies ist auch in der diesjährigen VNR im Vergleich mit der Präsentation von 2016 erkennbar, wo es noch eine dürftige Datengrundlage und keine Angaben zu institutionellen und prozeduralen Aspekten von Nachhaltigkeitspolitik gab. Auch konnten laut Indikatorenbericht 2021 des Bundesamtes für Statistik gegenüber 2015 bei vielen Kennzahlen deutliche Fortschritte erzielt werden, beispielsweise bei der Erhaltung und nachhaltigen Nutzung der biologischen Vielfalt und bei den Bruttoentwicklungsausgaben für medizinische Forschung und grundlegende Gesundheitsversorgung.[7]

Freiwillige Staatenberichte im Vergleich

Neben Deutschland präsentierten 41 weitere Staaten freiwillige Berichte. Die drei skandinavischen Länder Schweden, Dänemark und Norwegen traten mit besonders starken VNRs an und führten aus, wie ihre SDGs Eingang in alle nationalen Strategiedokumente gefunden haben. Alle drei Staaten (wie auch Japan) nutzten in den VNRs im Gegensatz zu Deutschland die offiziellen internationalen Indikatoren der Agenda 2030. Dänemark und Norwegen standen zudem in einem engen Kontakt im Rahmen eines "Peer-Dialogs," der gedacht war, sich wechselseitig Feedback zu erteilen. Beide Länder verfolgen einen ähnlichen Ansatz in ihren VNRs und stellen für jedes einzelne der 17 Ziele der Agenda 2030 der Beurteilung der Regierung zum Stand der Umsetzung eine unabhängige Beurteilung der Zivilgesellschaft gegenüber, die erwartungsgemäß pessimistischer ausfällt.

In den mündlichen Einlassungen zeigte sich vor allem Dänemark selbstkritisch am eigenen Konsummuster und -verhalten und sah sich mit unangenehmen Fragen von Vertretern der Zivilgesellschaft konfrontiert. Dänemarks Regierung war besonders darauf stolz, wie engagiert das dänische Parlament in Sachen Agenda 2030 sei. Einem parteiübergreifenden parlamentarischen Netzwerk für die SDGs (wohl das Pendant zum deutschen PBnE) gehörten demnach 74 der 179 Abgeordneten an. Auch würden alle Gesetzesvorschläge nunmehr auf ihre Nachhaltigkeit überprüft, wie es auch in Deutschland gemäß §44 der Gemeinsamen Geschäftsordnung der Bundesministerien ebenfalls vorgesehen ist. Norwegen stellte die besondere Rolle von Innovationen und des Privatsektors, inklusive Start-ups, sowie die Mobilisierung der Jugend für die SDGs in den Vordergrund. Schweden misst dem Multi-Akteursansatz besondere Bedeutung zu. In keiner anderen VNR waren mehr Akteure aus allen Teilen der Gesellschaft zu Wort gekommen. Auf europäischer Seite nutzte Spanien vor allem die Gelegenheit, im Rahmen des HLPF seine Frontline Workers zu ehren.

Keine selbstkritischen Töne waren in der chinesischen VNR zu hören. Die Regierung nutzte den Anlass, um die Erfolge der Kommunistischen Partei anlässlich ihres 100-jährigen Bestehens zu zelebrieren. Die Neue Seidenstraße wurde dabei als monumentaler Beitrag zur Agenda 2030 gefeiert.

Wie jedes Jahr gab es auch 2021 eine Reihe der sogenannten Voluntary Local Reviews (VLRs), die sub-staatlichen Akteuren die Möglichkeit einräumen, ihre lokalen Maßnahmen und Strategien zur Umsetzung der Agenda 2030 vorzustellen. Dieses Mal waren unter anderem die Städte Tokyo, Stockholm und Helsinki vertreten. In der Vergangenheit haben aus Deutschland die Städte Bonn (2020), Stuttgart (2020), Mannheim (2019) und das Land Nordrhein-Westfalen in New York präsentiert; und es bleibt zu hoffen, dass sich künftig weitere deutsche lokale Akteure hierfür finden.

Ausblick HLPF 2022

Aufgrund von Reisebeschränkungen fanden Veranstaltungen im Rahmen des HLPF meist in einer Art Hybridformat statt; die VNRs waren rein virtuell. Die Situation stellte die Veranstalter vor technische Herausforderungen und die Hoffnung war groß, dass man 2022 zu einem traditionellen Treffen vor Ort zurückkehren können wird.

Es ist auch bedauerlich, dass die Vereinigten Staaten bislang bei den VNRs nicht vertreten waren, jedoch gaben in der Vergangenheit einige Städte wie New York VLRs ab. Die Hoffnung ist, dass sich die neue US-Regierung bald an diesem multilateralen Prozess beteiligen möchte.

Anlässlich des HLPFs werden regelmäßig auch diejenigen Stimmen lauter, welche die Schwächen des Forums und des VNR-Mechanismus anprangern und grundlegende Reformen fordern, beispielsweise die Gründung eines UN-Nachhaltigkeitsrates. Der HLPF Review, ein Reformprozess der Mitgliedstaaten, nahm in der Tat einige der Kritikpunkte auf, ohne jedoch den "großen Wurf" liefern zu wollen. Ab 2022 werden somit eine Reihe von kleineren Veränderungen im HLPF eintreten. Beispielsweise möchte man die Schnittstelle zwischen den debattierten Umsetzungsstrategien und der Wissenschaft stärken und die Wechselwirkungen der SDGs untereinander genauer beleuchten. Als Reaktion darauf, dass VNRs von vielen Ländern als reine Public Diplomacy Maßnahme angesehen werden und weit entfernt sind von einer ernsthaften Auseinandersetzung mit den Problemen der SDG Umsetzung, haben sich die Mitgliedsstaaten selbst verpflichtet, künftig auch ihre Herausforderungen in den Vordergrund zu rücken und mehr Mittel zur Umsetzung zu mobilisieren.

 

Den Länderbericht inklusive Grafiken finden Sie hier als PDF.

 

 

 


[1] Sustainable Development Goals Progress Chart 2021, Statistics Division, Department of Economic and Social Affairs, United Nations (https://unstats.un.org/sdgs/report/2021/progress-chart-2021.pdf).

[2] Eine ausführliche Analyse und Bewertung der DNS finden sie im KAS Monitor Nachhaltigkeit Nr. 1 vom März 2021 (verfasst von Sabina Wölkner und Gisela Elsner) (https://www.kas.de/documents/252038/11055681/Monitor+Nachhaltigkeit%2C+1-2021%2C+Deutsche+Nachhaltigkeitsstrategie+2021.pdf/919b1e59-8aca-e17c-2d04-347c89b59498?version=1.0&t=1617110029188)

[3] Beispiel für einen DNS-Schlüsselindikator für SDG 1 ist "materielle Deprivation" sowie "erhebliche materielle Deprivation," wobei mit dem Phänomen der Mangel an bestimmten Gebrauchsgütern und der unfreiwillige Verzicht auf ausgewählte Konsumgüter aus finanziellen Gründen beschrieben wird.

[4] Deutsche Nachhaltigkeitsstrategie, Weiterentwicklung 2021, herausgegeben von der Bundesregierung Deutschlands, Seite 93. (https://www.bundesregierung.de/resource/blob/998006/1873516/3d3b15cd92d0261e7a0bcdc8f43b7839/2021-03-10-dns-2021-finale-langfassung-nicht-barrierefrei-data.pdf?download=1)

[5] Beispiel für einen offiziellen SDG-Indikator für SDG 1 ist "Anteil der Bevölkerung, der unter der internationalen Armutsgrenze lebt."

[6] Deutsche Nachhaltigkeitsstrategie, Weiterentwicklung 2021, Seite 85

[7] Nachhaltige Entwicklung in Deutschland, Indikatorenbericht 2021, Statistisches Bundesamt (Destatis), März 2021
(https://nachhaltige-entwicklung-deutschland.github.io/open-sdg-site-starter/assets/publications/reports/de/2021.pdf)

Asset-Herausgeber

Kontakt

Sebastian Borchmeyer

Sebastian Borchmeyer bild
Monitor Nachhaltigkeit
Vereinte Nationen
30. März 2021
Jetzt lesen

comment-portlet

Asset-Herausgeber

Über diese Reihe

Die Konrad-Adenauer-Stiftung ist in rund 110 Ländern auf fünf Kontinenten mit einem eigenen Büro vertreten. Die Auslandsmitarbeiter vor Ort können aus erster Hand über aktuelle Ereignisse und langfristige Entwicklungen in ihrem Einsatzland berichten. In den "Länderberichten" bieten sie den Nutzern der Webseite der Konrad-Adenauer-Stiftung exklusiv Analysen, Hintergrundinformationen und Einschätzungen.