{"id":143145,"date":"2026-08-27T03:02:34","date_gmt":"2026-08-27T01:02:34","guid":{"rendered":"https:\/\/news.abusizz.ch\/sap-aktie-wie-lautet-die-prognose-fuer-2027\/"},"modified":"2026-08-27T03:02:34","modified_gmt":"2026-08-27T01:02:34","slug":"sap-aktie-wie-lautet-die-prognose-fuer-2027","status":"publish","type":"post","link":"https:\/\/news.abusizz.ch\/en\/sap-aktie-wie-lautet-die-prognose-fuer-2027\/","title":{"rendered":"SAP Aktie: Wie lautet die Prognose f\u00fcr 2027?"},"content":{"rendered":"<div>\n<div id=\"attachment_91037\" style=\"width: 1010px\" class=\"wp-caption aligncenter\">\n<p id=\"caption-attachment-91037\" class=\"wp-caption-text\">Die SAP Aktie profitiert vom starken Cloud-Gesch\u00e4ft, muss die hohen Erwartungen im KI-Sektor bis 2027 aber erst in steigende Gewinne \u00fcbersetzen. (KI-Symbolbild: ftd.de-Redaktion, Codex-Bildmodell)<\/p>\n<\/div>\n<p>SAP w\u00e4chst weiter zweistellig. Im 2. Quartal legte der aktuelle Cloud-Auftragsbestand w\u00e4hrungsbereinigt um 26 Prozent zu, der freie Cashflow stieg auf rund 3 Milliarden Euro. Gleichzeitig dr\u00fccken die Zuk\u00e4ufe Dremio und Prior Labs den operativen Ausblick 2026 um mehr als 100 Millionen Euro.<\/p>\n<p>Der Blick auf 2027 f\u00e4llt deshalb n\u00fcchterner aus. Das Cloud-Gesch\u00e4ft tr\u00e4gt, doch Datenprodukte und k\u00fcnstliche Intelligenz m\u00fcssen die hohen Erwartungen erst in Gewinn \u00fcbersetzen. Nach der j\u00fcngsten Kurserholung bleibt trotz positiver Analystenurteile weniger Spielraum.<\/p>\n<p>Der Xetra-Schlusskurs vom Montag, 24. August 2026, betr\u00e4gt 187,20 Euro. Am Freitag waren es 188,12 Euro. Rechnerisch ergibt sich ein Minus von 0,49 Prozent.<\/p>\n<p>\u00a0<\/p>\n<div class=\"chartwrapper\" id=\"chartwrapper\" data-chartid=\"6a8edba17edab\"><\/div>\n<p>    <script id=\"tvChartLoader\" async src=\"https:\/\/unpkg.com\/lightweight-charts@4.2.0\/dist\/lightweight-charts.standalone.production.js\"><\/script><\/p>\n<p>    <script id=\"declarations\">\n    var chartid = \"6a8edba17edab\";\n    function renderTV(kursData, chartData,companyName,currency, chartHeight, chartWidth, code, exchange, kursDate, hidetitle, hidelegend, chartid) {      \n    \tconsole.log(\"render chart with id\", document.querySelector(`[data-chartid=\"${chartid}\"]`));\n        let width = chartWidth?chartWidth:600;\n        let ratio = 2\n        let height = chartHeight?chartHeight:(width\/ratio);\n        document.querySelector(`[data-chartid=\"${chartid}\"]`).style.height = chartHeight +50\n        document.querySelector(`[data-chartid=\"${chartid}\"]`).style.width = chartWidth<\/p>\n<p>        \/\/ formatter for x achis dates\n        function customXAchsisFormetter(timePoint, tickMarkType, locale) {\n            let formatOptions = {};\n            const date = new Date(timePoint);<\/p>\n<p>            if(tickMarkType <=1){\n                formatOptions = {day: \"numeric\", month: \"short\",year: \"numeric\",}\n\n            }else{\n                formatOptions = {day: \"numeric\", month: \"short\",year: \"numeric\",}\n            }\n            \/\/ from given date we should use only as UTC date or timestamp\n            \/\/ but to format as locale date we can convert UTC date to local date\n            const localDateFromUtc = new Date(\n                date.getUTCFullYear(),\n                date.getUTCMonth(),\n                date.getUTCDate()\n            );\n\n            return localDateFromUtc.toLocaleString(locale, formatOptions);\n        }\n\n        \/\/create buttons\n        function createSimpleSwitcher(items, activeItem, activeItemChangedCallback) {\n            var switcherElement = document.createElement(\"div\");\n            switcherElement.classList.add(\"switcher\");\n\n            var intervalElements = items.map(function (item) {\n                var itemEl = document.createElement(\"button\");\n                itemEl.innerText = item;\n                itemEl.classList.add(\"switcher-item\");\n                itemEl.classList.toggle(\"switcher-active-item\", item === activeItem);\n                itemEl.addEventListener(\"click\", function () {\n                    onItemClicked(item);\n                });\n                switcherElement.appendChild(itemEl);\n                return itemEl;\n            });\n\n            function onItemClicked(item) {\n                if (item === activeItem) {\n                    return;\n                }\n\n                intervalElements.forEach(function (element, index) {\n                    element.classList.toggle(\"switcher-active-item\", items[index] === item);\n                });\n\n                activeItem = item;\n\n                activeItemChangedCallback(item);\n            }\n\n            return switcherElement;\n        }\n        \/\/ loading: true or false\n        function handleAsyncUI(loading){\n            var IntervalButtons = document.getElementsByClassName(\"switcher-item\");\n             for(var i = 0; i < IntervalButtons.length; i++){\n                IntervalButtons[i].disabled = loading;\n             } \n             var chart = document.getElementsByClassName(\"tv-lightweight-charts\")[0];\n             if(loading){\n            \n            chart.style[\"display\"] = \"flex\"\n            chart.style[\"align-items\"] = \"center\"\n            chart.style[\"justify-content\"] = \"center\"\n\n            var loadingIndicator = document.createElement(\"div\");\n            loadingIndicator.classList.add(\"loader\");\n            \/\/loadingIndicator.innerText = \"Loading\";\n            loadingIndicator.id =\"loadingIndicator\"\n            chart.appendChild(loadingIndicator);\n             }else{\n            document.getElementById(\"loadingIndicator\").remove();\n            chart.style[\"display\"] = null\n            chart.style[\"align-items\"] =null\n            chart.style[\"justify-content\"] = null\n             }\n\n        }\n        var intervals = [\"1M\",\"3M\",\"6M\",\"1Y\",\"3Y\",\"5Y\"];\n        var seriesesData = new Map([\n            [\"1M\", []], \/\/ 1m (interval daten?), 3m, 6m, 1y, 3y, 5y\n            [\"3M\", []],\n            [\"6M\", []],\n            [\"1Y\", chartData],\n            [\"3Y\", []],\n            [\"5Y\", []],\n        ]);\n        var switcherElement = createSimpleSwitcher(intervals, intervals[3], syncToInterval);\n        var chartElement = document.createElement(\"div\");\n        const chart = LightweightCharts.createChart(chartElement, {\n            width: width,\n            height: height,\n            rightPriceScale: {\n                scaleMargins: {\n                    top: 0.2,\n                    bottom: 0.2,\n                },\n                borderVisible: false,\n            },\n            timeScale: {\n                borderVisible: false,\n                lockVisibleTimeRangeOnResize: true,\n\n                rightOffset:1,\n                tickMarkFormatter:customXAchsisFormetter\n\n            },\n            grid: {\n                horzLines: {\n                    color: \"#eee\",\n                    visible: false,\n                },\n                vertLines: {\n                    color: \"#ffffff\",\n                },\n            },\n            crosshair: {\n                horzLine: {\n                    visible: false,\n                    labelVisible: false\n                },\n                vertLine: {\n                    visible: true,\n                    style: 0,\n                    width: 2,\n                    color: \"rgba(80, 50, 25, 0.1)\",\n                    labelVisible: false,\n                }\n            },\n            handleScroll: {\n                mouseWheel: false,\n                pressedMouseMove: false,\n                horzTouchDrag: false,\n                vertTouchDrag: false\n            },\n            handleScale: {\n                axisPressedMouseMove: false,\n                mouseWheel: false,\n                pinch: false,\n            },\n        });\n        var areaSeries = null;\n        var positionDIV = document.querySelector(`[data-chartid=\"${chartid}\"]`)\n        positionDIV.appendChild(chartElement);\n        positionDIV.appendChild(switcherElement);\n        function httpGetAsync(theUrl, callback) {\n            var xmlHttp = new XMLHttpRequest();\n            xmlHttp.onreadystatechange = function () {\n                if (xmlHttp.readyState == 4 &#038;&#038; xmlHttp.status == 200)\n                    callback(xmlHttp.responseText);\n            }\n            xmlHttp.open(\"GET\", theUrl, true); \/\/ true for asynchronous \n            xmlHttp.send(null);\n        }\n        function formatDate(date) {\n            \n            var month = \"\" + (date.getMonth()+1);\n            var day = \"\" + date.getDate();\n            var year = date.getFullYear();\n\n            if (month.length < 2) \n                month = \"0\" + month;\n            if (day.length < 2) \n                day = \"0\" + day;\n            return [year, month, day].join(\"-\");\n        }\n        function getTimeframe(interval){\n            let from = null;\n            let to = formatDate(new Date());\n            switch (interval) {\n                case \"1M\": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;\n                case \"3M\": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;\n                case \"6M\": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;\n                case \"1Y\": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;\n                case \"3Y\": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;\n                case \"5Y\": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;\n                default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));\n                \n                }\n            return {from:from, to:to}\n        }\t\n        \/\/ what happens on button click\n        function syncToInterval(interval) {\n            if (areaSeries &#038;&#038; seriesesData.get(interval).length <=0) {\n                console.log(\"GETTING REMOTE DATA\")\n\n                chart.removeSeries(areaSeries);\n                areaSeries = null;\n                let apiToken = \"za1j116n2273ab1vxukuh6\"\n                let timeframe = getTimeframe(interval)\n                let filter = \"adjusted_close\"\n                handleAsyncUI(true)\t\t\t\t\t\t\n                httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n                    let newData = []\n                    newData = JSON.parse(res)\/\/.map(el=>newData.push({time:el.date, value:el.close}))\n                    \/\/ newData = newData.map(el=>{\n                    \/\/     console.log(el.time.year)\n                    \/\/     console.log(el.time.month)\n                    \/\/     console.log(el.time.day)\n                    \/\/     console.log(el)\n                    \/\/     console.log(new Date(el.time.year, el.time.month-1, el.time.day));\n                    \/\/     return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n                    console.log(\"newData\")\n                    console.log(newData)\n                    seriesesData.set(interval, newData)\n                    areaSeries = chart.addAreaSeries({\n                        topColor: \"rgba(33, 108, 173, 0.56)\",\n                        bottomColor: \"rgba(33, 108, 173, 0.04)\",\n                        lineColor: \"rgba(33, 108, 173, 1)\",\n                    lineWidth: 2,\n                });\n                kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value\n                areaSeries.setData(seriesesData.get(interval));\n                chart.timeScale().fitContent();\n                handleAsyncUI(false)\t\n                    })\n            }else{\n                console.log(\"GETTING LOADED DATA\")\n                if(areaSeries){\n                    console.log(\"DELETING  LOADED DATA FROM CHART\")\n                    chart.removeSeries(areaSeries);\n                    areaSeries = null;\n                }\n                kursData = seriesesData.get(interval)[seriesesData.get(interval).length-1].value\n                areaSeries = chart.addAreaSeries({\n                topColor: \"rgba(33, 108, 173, 0.56)\",\n                bottomColor: \"rgba(33, 108, 173, 0.04)\",\n                lineColor: \"rgba(33, 108, 173, 1)\",\n                lineWidth: 2,\n            });\n            areaSeries.setData(seriesesData.get(interval));<\/p>\n<p>            chart.timeScale().fitContent();\n            }<\/p>\n<p>        }\n        \/\/ data interval at startup\n        syncToInterval(intervals[3]);\n        \/\/ Name and Kurs as Text in legend<\/p>\n<p>        var watermark = document.createElement(\"img\")\n        watermark.classList.add(\"watermark\")\n        watermark.setAttribute(\"src\", \"https:\/\/api.leeway.tech\/leeway-sign.png\")\n        var testA = document.querySelector(`[data-chartid=\"${chartid}\"]`)\n        var testB = document.querySelector(`[data-chartid=\"${chartid}\"]`).getBoundingClientRect();\n        var test =  testA.getElementsByTagName(\"canvas\")[0].getBoundingClientRect();\n        watermark.style.position = \"absolute\";\n        watermark.style.width = \"90px\";\n        watermark.style.height = \"30px\";\n        watermark.style.display = \"block\";\n        \/\/watermark.style.z-index = \"1000000\";\n        watermark.style.bottom = \"0\";\n        watermark.style.right = \"10px\";<\/p>\n<p>        let linkLW = document.createElement(\"a\")\n        linkLW.href=\"https:\/\/www.ftd.de\/leeway-tech\";\n        linkLW.target = \"_blank\";\n        linkLW.appendChild(watermark)\n        \/\/ append to DOM<\/p>\n<p>        \/\/div-chartwrapper -> div -> div ->  table  -> tr ->  td td -> div\n        const myElementA = document.querySelector(`[data-chartid=\"${chartid}\"]`);\n        let myElementB = myElementA.childNodes[0]\n        let myElementC = myElementB.childNodes[0]\n        let myElementD = myElementC.childNodes[0]\n        let myElementE = myElementD.childNodes[0]\n        let myElementF = myElementE.childNodes[1]\n        let myElementG = myElementF.childNodes[0]\n        myElementG.appendChild(linkLW);<\/p>\n<p>        if(hidelegend == \"false\"){\n            console.log(\"SHOW LEGEND!\")\n            var legend = document.createElement(\"div\");\n            legend.classList.add(\"legend\");\n            var offsets = document.querySelector(`[data-chartid=\"${chartid}\"]`).getBoundingClientRect();\n            var chartwrapperTop = offsets.top;<\/p>\n<p>            var legendHeight = height *-1\n            if(legendHeight>-210){legendHeight = -210;}\n            legend.style.top = legendHeight*1.2  + \"px\"\n            positionDIV.appendChild(legend);<\/p>\n<p>            if(hidetitle == \"false\"){\n                var firstRow = document.createElement(\"div\");\n                firstRow.classList.add(\"titleText\");\t<\/p>\n<p>            }<\/p>\n<p>            var secondRow = document.createElement(\"div\");\n            secondRow.classList.add(\"secondRow\");\t<\/p>\n<p>            if(kursData !== null){\n                if(hidetitle == \"false\"){\n                    firstRow.innerText = companyName\n                    legend.appendChild(firstRow);\n                }<\/p>\n<p>                secondRow.innerText = kursDate +\": \" + Number(kursData).toFixed(2) + \" \"+currency;\n                 legend.appendChild(secondRow);\n            }else{\n                if(hidetitle == \"false\"){\n                    firstRow.innerText = companyName\n                    legend.appendChild(firstRow);\n                }<\/p>\n<p>                legend.appendChild(secondRow);\n            }<\/p>\n<p>            \/\/ cursor moving and handling third row of legend\n            chart.subscribeCrosshairMove((param) => {\n                if (param.time) {\n                    let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n                    let currentDate = new Date(param.time).toLocaleDateString(\"de-DE\", options)\n                    const price = param.seriesData.get(areaSeries).value;\n                    secondRow.innerText = currentDate + \":  \" + price.toFixed(2) + \" \"+(currency?currency:\" \");\n                }\n            else {\n                secondRow.innerText = kursDate +\": \" + Number(kursData).toFixed(2) + \" \"+currency;<\/p>\n<p>            }\n            });<\/p>\n<p>        }<\/p>\n<p>    }\n    function httpGetAsync(theUrl, callback) {\n            var xmlHttp = new XMLHttpRequest();\n            xmlHttp.onreadystatechange = function () {\n                if (xmlHttp.readyState == 4 && xmlHttp.status == 200)\n                    callback(xmlHttp.responseText);\n            }\n            xmlHttp.open(\"GET\", theUrl, true); \/\/ true for asynchronous \n            xmlHttp.send(null);\n        };\n    function getTimeframe(interval){\n            let from = null;\n            let to = formatDate(new Date());\n            switch (interval) {\n                case \"1M\": from = formatDate(new Date(Date.now() - 31 * 24 * 60 * 60 * 1000)); break;\n                case \"3M\": from = formatDate(new Date(Date.now() - 93 * 24 * 60 * 60 * 1000)); break;\n                case \"6M\": from = formatDate(new Date(Date.now() - 186 * 24 * 60 * 60 * 1000)); break;\n                case \"1Y\": from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000)); break;\n                case \"3Y\": from = formatDate(new Date(Date.now() - 1116 * 24 * 60 * 60 * 1000)); break;\n                case \"5Y\": from = formatDate(new Date(Date.now() - 1860 * 24 * 60 * 60 * 1000)); break;\n                default:from = formatDate(new Date(Date.now() - 372 * 24 * 60 * 60 * 1000));<\/p>\n<p>                }\n            return {from:from, to:to}\n        };\n        function formatDate(date) {<\/p>\n<p>            var  month = \"\" + (date.getMonth()+1);\n            var   day = \"\" + date.getDate();\n            var   year = date.getFullYear();<\/p>\n<p>            if (month.length < 2) \n                month = \"0\" + month;\n            if (day.length < 2) \n                day = \"0\" + day;\n\n            return [year, month, day].join(\"-\");\n        };\n    <\/script><br \/>\n    <script id=\"main\"><\/p>\n<p>    var scriptTV = document.querySelector(\"#tvChartLoader\");\n    scriptTV.addEventListener(\"load\", function() {\n        var chartid = \"6a8edba17edab\";<\/p>\n<p>        var companyName = \"SAP SE\";\n        if(companyName.length <=0){\n        companyName = \"SAP - XETRA\";\n        }\n        var code = \"SAP\";\n        var exchange = \"XETRA\";\n        var currency =\"EUR\";\n        var kursData = null;\n        var kursDataDate = null;\n        var chartHeight = \"\";\n        var chartWidth = \"250\"\n        var hidetitle = \"false\"\n        var hidelegend = \"false\"\n        let apiToken = \"za1j116n2273ab1vxukuh6\"\n        chartWidth = document.querySelector(`[data-chartid=\"${chartid}\"]`).offsetWidth\n        var chartData = [];\n        var timeframe = getTimeframe(\"1Y\");\n        var filter = \"adjusted_close\";\n        \n        httpGetAsync(\"https:\/\/api.leeway.tech\/api\/v1\/public\/historicalquotes\/\"+encodeURIComponent(code+\".\"+exchange)+\"?apitoken=\"+apiToken+\"&#038;filter=\"+filter+\"&#038;from=\"+timeframe.from+\"&#038;to=\"+timeframe.to, function (res) {\t\n            let newData = null;\n             chartData = newData = JSON.parse(res)\n            \/\/ chartData =  chartData.map(el=>{return{value:el.value, time:el.time, timestamp:new Date(el.time.year, el.time.month-1, el.time.day).getTime()}})\n             kursData = chartData[chartData.length-1].value\n             let options = { weekday: \"short\", year: \"numeric\", month: \"numeric\", day: \"numeric\" };\n             kursDataDate = chartData[chartData.length-1].time\n             let kursDate = new Date(kursDataDate.split(\"-\")[0], Number(kursDataDate.split(\"-\")[1])-1, kursDataDate.split(\"-\")[2]).toLocaleDateString(\"de-DE\", options)<\/p>\n<p>             renderTV(kursData,chartData,companyName,currency, Number(chartHeight), Number(chartWidth), code, exchange, kursDate, hidetitle, hidelegend, chartid)\n        });\n    });\n<\/script><\/p>\n<h3>Wie hat sich der SAP-Kurs zuletzt entwickelt?<\/h3>\n<p>Vom 27. Juli bis zum 24. August 2026 stieg der Xetra-Schlusskurs von 151,28 auf 187,20 Euro. Das ergibt 23,74 Prozent Kursrendite. Dividenden sind nicht enthalten.<\/p>\n<p>Binnen 1 Woche gewann die Aktie 4,24 Prozent, \u00fcber 2 Wochen waren es 4,41 Prozent. Die kurzen Fenster zeigen die j\u00fcngste Erholung. Sie sind kein langfristiger Renditeerwartungswert.<\/p>\n<h4>Kursentwicklung der SAP-Aktie bis zum Xetra-Schluss am 24. August 2026<\/h4>\n<table>\n<thead>\n<tr>\n<th>Zeitraum<\/th>\n<th>Startschlusskurs<\/th>\n<th>Endschlusskurs<\/th>\n<th>Kursver\u00e4nderung<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>1 Woche<\/th>\n<td>179,58 Euro am 17. August 2026<\/td>\n<td>187,20 Euro<\/td>\n<td>plus 4,24 Prozent<\/td>\n<\/tr>\n<tr>\n<th>2 Wochen<\/th>\n<td>179,30 Euro am 10. August 2026<\/td>\n<td>187,20 Euro<\/td>\n<td>plus 4,41 Prozent<\/td>\n<\/tr>\n<tr>\n<th>1 Monat<\/th>\n<td>151,28 Euro am 27. Juli 2026<\/td>\n<td>187,20 Euro<\/td>\n<td>plus 23,74 Prozent<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Gegenstand ist hier die SAP SE Namensaktie ohne Nennbetrag. Sie wird auf Xetra unter SAP in Euro gehandelt (ISIN <a href=\"https:\/\/www.ftd.de\/aktien\/sap-se\/\" target=\"_blank\" rel=\"noopener\">DE0007164600<\/a>). Ein <a href=\"https:\/\/www.ftd.de\/boerse\/aktien\/sap-hauptversammlung-2026-cloud-dynamik-und-reltio-deal-im-fokus\/\" target=\"_blank\" rel=\"noopener\">ftd.de-Beitrag zur SAP- Hauptversammlung<\/a> liefert eine zus\u00e4tzliche Einordnung.<\/p>\n<h3>Aktuelle Kursziele reichen von 164 bis 215 Euro<\/h3>\n<p>Laut <a href=\"https:\/\/www.finanzen.net\/nachricht\/aktien\/analystenurteil-sap-aktie-steigt-analysten-ueberwiegend-fuer-kauf-potenzial-aber-begrenzt-00-15885087\" target=\"_blank\" rel=\"noopener\">finanzen.net<\/a> lag das TipRanks-Mittel am 18. August bei 193,92 Euro. 11 Kaufvoten standen 2 Halteempfehlungen und einem Verkauf gegen\u00fcber. Vom best\u00e4tigten Schlusskurs bis zum Mittel sind es rechnerisch plus 3,59 Prozent.<\/p>\n<p>Goldman Sachs nannte 215 Euro, UBS 164 Euro und JPMorgan 175 Euro. Ein zweiter, breiterer <a href=\"https:\/\/www.boursorama.com\/cours\/consensus\/1zSAP\/\" target=\"_blank\" rel=\"noopener\">FactSet-Konsens bei Boursorama<\/a> kam bei 30 Analysten auf ein Medianziel von 199,03 Euro. Kursziele sind Sch\u00e4tzungen, keine Zusagen.<\/p>\n<h4>Aktuelle Analystenbilder f\u00fcr die SAP-Aktie<\/h4>\n<table>\n<thead>\n<tr>\n<th>Quelle oder Institut<\/th>\n<th>Kursziel<\/th>\n<th>Einordnung<\/th>\n<th>Stand<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>Goldman Sachs<\/th>\n<td>215 Euro<\/td>\n<td>oberes Einzelziel<\/td>\n<td>18. August 2026<\/td>\n<\/tr>\n<tr>\n<th>TipRanks-Mittel<\/th>\n<td>193,92 Euro<\/td>\n<td>14 Voten<\/td>\n<td>18. August 2026<\/td>\n<\/tr>\n<tr>\n<th>FactSet-Median<\/th>\n<td>199,03 Euro<\/td>\n<td>30 Analysten<\/td>\n<td>18. August 2026<\/td>\n<\/tr>\n<tr>\n<th>JPMorgan<\/th>\n<td>175 Euro<\/td>\n<td>neutral<\/td>\n<td>18. August 2026<\/td>\n<\/tr>\n<tr>\n<th>UBS<\/th>\n<td>164 Euro<\/td>\n<td>Kaufen<\/td>\n<td>18. August 2026<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Prognose: Wo steht die SAP-Aktie 2027?<\/h3>\n<p>Das Basisszenario der Redaktion reicht von 176 bis 201 Euro. Grundlage ist der <a href=\"https:\/\/www.sap.com\/investors\/en\/financial-documents-and-events\/consensus.html\" target=\"_blank\" rel=\"noopener\">Visible-Alpha-Median auf der SAP-Investorenseite<\/a> von 8,38 Euro non-IFRS-Ergebnis je Aktie f\u00fcr 2027. Multipliziert mit einem Kurs-Gewinn-Verh\u00e4ltnis (KGV) von 21 bis 24 entstehen 175,98 bis 201,12 Euro.<\/p>\n<p>Im Bull-Szenario werden 8,51 Euro und ein KGV von 24 bis 26 angesetzt. Das ergibt 204,24 bis 221,26 Euro. Im Bear-Szenario f\u00fchren 8,17 Euro und ein KGV von 19 bis 21 zu 155,23 bis 171,57 Euro. Die EPS-Werte sind Konsens-Minimum, Median und Maximum; die KGV-B\u00e4nder sind redaktionelle Annahmen ohne Wahrscheinlichkeitsgewichtung.<\/p>\n<h4>Szenarien f\u00fcr die SAP-Aktie 2027<\/h4>\n<table>\n<thead>\n<tr>\n<th>Szenario<\/th>\n<th>Kurskorridor 2027<\/th>\n<th>Voraussetzungen<\/th>\n<th>Risiken<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>Bull<\/th>\n<td>204 bis 221 Euro<\/td>\n<td>Konsens-Maximum von 8,51 Euro EPS wird erreicht; KGV bleibt bei 24 bis 26; Cloud- und KI-Produkte halten das Wachstum hoch<\/td>\n<td>Investitionen k\u00f6nnten die Marge l\u00e4nger belasten; Ein niedrigeres Bewertungsniveau w\u00fcrde den Korridor dr\u00fccken<\/td>\n<\/tr>\n<tr>\n<th>Basis<\/th>\n<td>176 bis 201 EUR<\/td>\n<td>Visible-Alpha-Median von 8,38 Euro EPS; Redaktionelles KGV von 21 bis 24; Cloud-Ausblick und Cashflow werden weitgehend erreicht<\/td>\n<td>Konsens kann sich bis 2027 \u00e4ndern; Cloud-Auftragsbestand k\u00f6nnte st\u00e4rker als erwartet nachlassen<\/td>\n<\/tr>\n<tr>\n<th>Bear<\/th>\n<td>155 bis 172 EUR<\/td>\n<td>Konsens-Minimum von 8,17 Euro EPS; Redaktionelles KGV von 19 bis 21<\/td>\n<td>Zuk\u00e4ufe belasten Gewinn und Marge l\u00e4nger; Schw\u00e4cheres Cloud-Wachstum trifft auf sinkende Bewertung<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Das 2. Quartal best\u00e4tigt das Cloud-Wachstum<\/h3>\n<p>In den <a href=\"https:\/\/www.sap.com\/investors\/en\/financial-documents-and-events\/recent-results.html\" target=\"_blank\" rel=\"noopener\">SAP-Zahlen zum 2. Quartal<\/a> stieg der Cloud-Umsatz um 22 Prozent auf 6,281 Milliarden Euro. Die Cloud ERP Suite, eine Produktfamilie f\u00fcr zentrale Unternehmensprozesse wie Finanzen, Einkauf und Personal, wuchs um 25 Prozent auf 5,525 Milliarden Euro.<\/p>\n<p>Der aktuelle Cloud-Auftragsbestand erreichte 22,929 Milliarden Euro. W\u00e4hrungsbereinigt waren das 26 Prozent mehr. Der freie Cashflow nahm um 27 Prozent auf 3,002 Milliarden Euro zu. Der Konzern erwartet f\u00fcr 2026 weiter rund 10 Milliarden Euro.<\/p>\n<h3>Dremio und Prior Labs erweitern die Daten- und KI-Schicht<\/h3>\n<p>Die im Juli \u00fcbernommene Tochter <a href=\"https:\/\/news.sap.com\/2026\/07\/sap-completes-dremio-acquisition\/\" target=\"_blank\" rel=\"noopener\">Dremio<\/a> betreibt eine offene Data-Lakehouse-Plattform. Sie soll SAP- und Fremddaten f\u00fcr Analysen und KI nutzbar machen, ohne sie vorher zu verschieben oder umzuwandeln.<\/p>\n<p><a href=\"https:\/\/news.sap.com\/2026\/07\/sap-completes-prior-labs-acquisition\/\" target=\"_blank\" rel=\"noopener\">Prior Labs<\/a> bleibt als eigenst\u00e4ndige Tochtergesellschaft organisiert. Das Unternehmen entwickelt Basismodelle f\u00fcr strukturierte Tabellendaten. SAP will \u00fcber 4 Jahre mehr als 1 Milliarde Euro investieren. Kurzfristig steigen damit die Kosten. Ob der Zukauf Wert schafft, zeigt sich erst an zus\u00e4tzlichen Produkten und Ums\u00e4tzen.<\/p>\n<h3>Die Bewertung verlangt 2027 weiteres Gewinnwachstum<\/h3>\n<p>Der auf der SAP-Seite ver\u00f6ffentlichte <a href=\"https:\/\/www.sap.com\/investors\/en\/financial-documents-and-events\/consensus.html\" target=\"_blank\" rel=\"noopener\">Visible-Alpha-Konsens<\/a> erwartet f\u00fcr 2027 im Median 44,990 Milliarden Euro Umsatz, 13,593 Milliarden Euro operativen Gewinn und 8,38 Euro Ergebnis je Aktie. Das sind Sch\u00e4tzungen externer Analysten, keine SAP-Prognose.<\/p>\n<p>Beim Schlusskurs von 187,20 Euro entspricht der EPS-Median rechnerisch einem KGV von 22,34. Damit liegt die Aktie mitten im Basiskorridor. H\u00f6here Kurse brauchen entweder mehr Gewinn als heute erwartet oder ein dauerhaft h\u00f6heres Bewertungsniveau.<\/p>\n<h3>Margen, Integration und R\u00fcckk\u00e4ufe bestimmen den Puffer<\/h3>\n<p>SAP senkte wegen Dremio und Prior Labs die Spanne f\u00fcr den non-IFRS-Betriebsgewinn 2026 auf 11,8 bis 12,2 Milliarden Euro. Die <a href=\"https:\/\/www.sap.com\/investors\/en\/financial-documents-and-events\/recent-results.html\" target=\"_blank\" rel=\"noopener\">Quartalsmitteilung<\/a> beziffert die Verw\u00e4sserung durch beide Zuk\u00e4ufe auf mehr als 100 Millionen Euro. Zudem soll das Wachstum des Cloud-Auftragsbestands leicht nachlassen.<\/p>\n<p>Kapital flie\u00dft zugleich an Aktion\u00e4re zur\u00fcck. In der zweiten <a href=\"https:\/\/www.sap.com\/investors\/en\/stock\/share-buy-back\/2026.html\" target=\"_blank\" rel=\"noopener\">R\u00fcckkauftranche<\/a> erwarb SAP bis 14. August 5.128.529 Aktien f\u00fcr 840,9 Millionen Euro. R\u00fcckk\u00e4ufe st\u00fctzen das Ergebnis je Aktie, ersetzen aber keine erfolgreiche Integration und kein organisches Wachstum.<\/p>\n<h3>Fazit: SAP muss Cloud-St\u00e4rke in steigende Gewinne \u00fcbersetzen<\/h3>\n<p>Cloud-Wachstum und freier Cashflow sind stark. Im Kurs steckt jedoch bereits ein gro\u00dfer Teil des erwarteten Gewinnanstiegs. Deshalb bleibt der Basiskorridor mit 176 bis 201 Euro vergleichsweise eng.<\/p>\n<p>Der n\u00e4chste messbare Pr\u00fcfpunkt sind die <a href=\"https:\/\/www.sap.com\/investors\/de\/financial-documents-and-events\/events.html\" target=\"_blank\" rel=\"noopener\">SAP-Zahlen zum 3. Quartal am 21. Oktober 2026<\/a>. Entscheidend sind Cloud-Auftragsbestand, operative Marge, freier Cashflow und die Kosten der neuen Daten- und KI-T\u00f6chter.<\/p>\n<p>\u00a0<\/p>\n<p style=\"font-size: 12px;\">Disclaimer:<br \/>\nDieser Artikel wurde mit Hilfe von KI erstellt und vor Ver\u00f6ffentlichung durch die Redaktion gepr\u00fcft. Alle Angaben ohne Gew\u00e4hr auf Vollst\u00e4ndigkeit, Richtigkeit und Aktualit\u00e4t. Der Text stellt keine Handelsempfehlung oder Anlageberatung dar.<\/p>\n<p>Der Beitrag <a href=\"https:\/\/www.ftd.de\/boerse\/aktien\/sap-aktie-prognose-2027-quartalszahlen-ki\/\">SAP Aktie: Wie lautet die Prognose f\u00fcr 2027?<\/a> erschien zuerst auf <a href=\"https:\/\/www.ftd.de\/\">ftd.de<\/a>.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Die SAP Aktie profitiert vom starken Cloud-Gesch\u00e4ft, muss die hohen Erwartungen im KI-Sektor bis 2027 aber erst in steigende Gewinne \u00fcbersetzen. (KI-Symbolbild: ftd.de-Redaktion, Codex-Bildmodell) SAP w\u00e4chst weiter zweistellig. Im 2. Quartal legte der aktuelle Cloud-Auftragsbestand w\u00e4hrungsbereinigt um 26 Prozent zu, der freie Cashflow stieg auf rund 3 Milliarden Euro. Gleichzeitig dr\u00fccken die Zuk\u00e4ufe Dremio und [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":143146,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[22,1],"tags":[],"class_list":["post-143145","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ft","category-topstory"],"_links":{"self":[{"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/posts\/143145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/comments?post=143145"}],"version-history":[{"count":0,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/posts\/143145\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/media\/143146"}],"wp:attachment":[{"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/media?parent=143145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/categories?post=143145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/news.abusizz.ch\/en\/wp-json\/wp\/v2\/tags?post=143145"}],"curies":[{"name":"what","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}