Zum Hauptinhalt springen

Programme

Programme beantwortet zwei Fragen: Welcher SAP-Code hat im gewählten Zeitraum die meiste Zeit verbraucht und welche einzelne Ausführung sollte untersucht werden? Die Ansicht liest Standard-ABAP-Workload-Statistiken über SWNC_GET_STATRECS_FRAME und schätzt keine Ausführung aus Work-Process-Abfragen.

Mit dem Ranking beginnen​

Wähle SAP-System, Zeitraum und bei Bedarf Host in der globalen Leiste. Die Startliste ist nach Gesamtem Response-Verbrauch absteigend sortiert. So stehen Programme mit dem höchsten kumulierten Aufwand oben, auch wenn keine einzelne Ausführung die langsamste ist.

Der sichtbare Selektor Sortierung unterstützt letzte Ausführung, Anzahl, p95 Response, gesamten Response-Verbrauch, gesamte oder durchschnittliche DB-Zeit, Entwicklung und zugehörige Dumps. Jede Sortierung kann auf- oder absteigend angewendet werden; SPOT wendet Sortierung und Richtung auf das vollständige Ergebnis im Server an. Die Shortcuts starten mit:

  • höchstem kumuliertem Verbrauch;
  • langsamstem p95;
  • höchstem Datenbankaufwand;
  • Verschlechterung gegenüber dem gleich langen Vorzeitraum;
  • neuester Aktivität;
  • Programmen mit zugehörigen Dumps.

Jeder Shortcut wählt eine konkrete Sortierung des Katalogs. Die Suche arbeitet textuell auf dem SAP-Programmnamen; der exakte Name bleibt die Identität des Programms. Mandant und Aktivitätstyp bleiben Dimensionen der Ausführung und sind keine anderen Programmidentitäten.

Das Backend sortiert immer das gesamte gefilterte Ergebnis vor der Paginierung und verwendet den exakten Namen als stabilen Tie-Breaker. Weiter setzt daher dieselbe globale Reihenfolge fort; die UI sortiert nicht nur sichtbare Zeilen. Damit diese Antwort auch bei Zeiträumen mit hohem Volumen stabil bleibt, berechnet SPOT begrenzte Zusammenfassungen pro Programm, statt jede Ausführung zum Aufbau des Katalogs zu übertragen. Filter, Sortierung und Paginierung behalten denselben globalen Umfang.

Programs-Katalog mit anonymisierten SAP-Namen
Der Katalog wird vor der Paginierung global sortiert; die Kostenvisualisierung weist darauf hin, dass sie nur die empfangene Seite vergleicht.

Messwerte lesen​

SignalBedeutung
ResponseGesamtzeit des SAP-Statistiksatzes.
CPUUnabhängige CPU-Zeit; sie wird nicht als weitere Komponente zu Response addiert.
DatabaseAn der DB-Schnittstelle des Application Servers beobachtete Zeit. Sie ist weder SQL-Trace noch reine Laufzeit der Datenbank-Engine.
WaitVon SAP im Datensatz gelieferte Wartezeit.
LoadVon SAP erfasste Lade-/Generierungszeit. Sie erscheint nur, wenn alle erforderlichen Komponenten oder ein ausdrücklicher Legacy-Load-Wert vorhanden sind; sie ist keine ABAP-Verarbeitungszeit.

SPOT konvertiert unterstützte SAP-Rohzeiten einheitlich von Mikrosekunden in Sekunden; unter einer Sekunde verwendet die UI Millisekunden. Eine neu erfasste Ausführung zeigt CPU, Wait und Load nur mit verifizierter Timing-Herkunft. Bei historischen Datensätzen ohne erkannte Herkunft behält SPOT gültige Response- und Database-Werte, lässt diese drei Komponenten weg, markiert Partial timing und zeigt einen Hinweis. SPOT leitet die Einheit nicht aus der Größenordnung ab, füllt die Historie nicht nach und stellt ABAP-Verarbeitung nicht als neuen Messwert dar.

Ein nicht verfügbarer Wert bleibt unbekannt und wird nie in Null umgewandelt. p50, p95, Mittelwerte und Vergleiche verwenden nur Ausführungen mit gültigem Messwert und zeigen die Stichprobengröße. Entwicklung vergleicht zwei gleich lange Zeiträume mit denselben Filtern; SPOT zeigt eine Richtung nur bei mindestens 20 gültigen Werten in beiden Zeiträumen.

Ein Programm kann als Observed only erscheinen, wenn SPOT es in Work Process oder einem Dump gesehen hat, aber noch keine gemessene Statistikausführung besitzt. Observed context zählt diese Beobachtungen und keine Ausführungen. Die letzte Beobachtung behält eigene Zeit und Host, getrennt von Last execution. Die Anzahl der Ausführungen bleibt null, Zeiten bleiben unbekannt und es wird keine künstliche Dauerreihe gezeichnet. Measured bedeutet verfügbare Hauptzeiten; Partial timing bedeutet mindestens einen fehlenden Messwert.

Programm und Ausführung öffnen​

Die Untersuchung verwendet den gesamten gewählten Zeitraum. Wähle im einzigen Latenz-KPI-Selektor Mittelwert, p50, p95 (Standard) oder p99. p50/p95 und optionales p99 liegen auf der realen Zeitachse über einem getrennten, ausgerichteten Volumenband; ein Zeit-Bin setzt den globalen Zeitraum. Der beobachtete Durchsatz zählt nur Ausführungen in der Vereinigungsmenge der von der Quelle gemeldeten Intervalle. Lücken bleiben Lücken; das ist kein Nachweis für Retention oder Vollständigkeit pro Host, und unbekannte Werte sind nicht Null.

Das Latenzhistogramm umfasst alle gültigen Response-Werte des Bereichs: 30 Bins, lineare/logarithmische Skala, numerische Grenzen und direkte Auswahl. Null und fehlende Messungen bleiben ausdrücklich getrennt. Alle, ≥p95, ≥p99 und [p95,p99) zeigen tatsächliche Grenzen und Anzahlen.

Repräsentative Stichproben wählen 20, 50 (Standard) oder 100 Ausführungen aus der Gesamtpopulation. Aktuelle Stichproben sind gefiltert und paginiert; keine Variante ändert KPI. Nutze Vorherige/Nächste sowie Jobs, Work Processes und Dumps. Response, Database, Wait und Load sind getrennte Mittelwerte mit eigenen Anzahlen; CPU ist separat und Database ist die DB-Schnittstelle des Applikationsservers, keine SQL-Spur.

Wähle eine Zeile, um das Ranking durch einen Programm-Workspace über die volle Breite zu ersetzen. Prüfe Entwicklung, Hosts, Aktivität und letzte Ausführungen. Eine Ausführung zeigt Zeiten, vorhandenen Job-Kontext und die Abdeckung der Evidenz. Zurück stellt Sortierung, Filter, Seite, Position und Fokus wieder her; ein geteilter Link behält die Auswahl.

Katalogkosten vergleicht Programme auf der sichtbaren Seite. Dies hilft bei der Wahl des nächsten Kandidaten, ersetzt aber weder die globale Sortierung noch behauptet es, den vollständigen Katalog zu zeigen.

Visuelle Programs-Untersuchung mit anonymisierten Ausführungen
Untersuchung des gesamten Zeitraums mit Latenz, Volumen, Verteilung und anonymisierten Stichproben.

Nutze Querverweise passend zur Frage:

  • Jobs: Background-Schritte, Status und Job Log der gewählten Ausführung.
  • Work Process: Kapazität und Infrastruktur im Zeitraum.
  • Dumps: zeitlich zugehörige ABAP-Fehler.
  • DB und Metrics: Datenbank- und Infrastrukturbelastung im selben Zeitraum.
Programs-Ausführungsdetail mit anonymisierten Daten
Gemessenes Detail mit unabhängigen Zeiten und zugehörigem Kontext; optionale Anreicherung kann nicht verfügbar sein.

Abhängigkeiten und zugehöriger Kontext​

Im Ausführungsdetail nutzt Abhängigkeiten den gesamten Kartenbereich. Lange Listen scrollen innerhalb dieser Karte, sodass der letzte Eintrag erreichbar bleibt, ohne Zeiten und zugehörigen Kontext zu verlieren; auf schmalen Bildschirmen wird die Karte gestapelt und der Scrollbereich an den verfügbaren Viewport gebunden. Kurze Listen behalten ihre natürliche Höhe.

Die Registerkarte Ausgehende Ziele und ihre Verträge bleiben unverändert, aber die aktuelle Standardsammlung fordert nur Hauptdatensätze an. Sie sammelt keine verschachtelte Anreicherung für Batch-Schritte, RFC, HTTP oder EPP: Alle vier Teilfähigkeiten sind ausdrücklich nicht verfügbar, und SPOT erzeugt keine Jobs, Abhängigkeiten oder EPP-Kontexte. Eine leere Tabelle beweist keine ausgebliebenen Aufrufe.

SPOT behält getrennte Evidenz für:

  • Zugehöriger Kontext: Dasselbe Programm erscheint in einem Work Process oder Dump innerhalb von fünf Minuten vor oder nach dem gemessenen Start, begrenzt durch globalen Zeitraum und Host. Höchstens 200 Treffer werden geliefert; das beweist keine Verursachung.

Partial bedeutet, dass die Hauptausführungen für das bestätigte Intervall vollständig sind und die optionale Anreicherung unavailable ist; es bezeichnet keinen unvollständigen Commit.

Ausführungsdetail und Intervallmanifest zeigen source_retention_window_not_reported, wenn SAP nicht mitteilt, wie viel Historie die Quelle aufbewahrt. Das ist eine explizite Abdeckung und keine Schätzung: SPOT leitet daraus weder Stunden noch Tage ab und stellt Daten außerhalb der Quellenaufbewahrung nicht als vollständig dar.

Programme sammelt weder SQL-Text oder -Parameter noch RFC-/HTTP-Payloads oder den internen ABAP-Aufrufbaum aus Funktionen, Methoden und Subroutinen. Nutze für diese Tiefe SAT, ST05 oder andere spezialisierte SAP-Werkzeuge.

SAP-Verfügbarkeit und Berechtigungen​

Die Verbindung nutzt die Standard-RFC-Funktion SWNC_GET_STATRECS_FRAME der Gruppe SCSM_NW_WORKLOAD; Transport und eigener ABAP-Code sind nicht erforderlich. Der technische Benutzer benötigt minimalen S_RFC-Zugriff auf diese Funktion. SPOT fordert ein UTC-Fenster mit dem SAP-TTZZ-Code UTC an, setzt READ_CLIENT auf den exakten Mandanten der Verbindung und sendet READ_START_DATE/TIME und READ_END_DATE/TIME. Vor dem Invoke muss derselbe Descriptor MAX_RECORDS als optionales IMPORT INT mit Default -1, READ_ONLY_MAINRECORDS als IMPORT CHAR und ALL_STATRECS/PROTOCOL als EXPORT TABLE deklarieren. SPOT sendet READ_ONLY_MAINRECORDS="X", lässt MAX_RECORDS weg und nutzt dessen nativen Default; ein künstliches Limit wird nicht gesendet. So bleiben alle Hauptdatensätze erhalten, ohne die optionale verschachtelte Anreicherung zu dekodieren. Jeder Zyklus liest 15 Minuten Überlappung erneut und versucht, höchstens 30 Minuten ab dem Cursor vorzugehen; bis zu 45 Minuten Abdeckung werden in Blätter von höchstens 60 Sekunden geteilt. Der konfigurierte IANA-Name wird nicht an das SAP-Feld TZNZONE gesendet. Die Kompatibilität hängt von Release, Remote-Freigabe und SAP-Aufbewahrung ab.

Die Anzahl der Datensätze ist kein Sättigungssignal: Mehr als 500 gültige Datensätze können ein vollständiges Blatt bilden. Das Protokoll darf leer sein oder ausschließlich Abschlusszeilen mit den sechs Standardspalten und einem dezimalen RC von null enthalten. Ein fehlendes, mehrdeutiges, anders strukturiertes oder von null abweichendes Protokoll lässt das Blatt offen; SPOT protokolliert den Fehlertext des Protokolls nicht. Explizite Kürzung lässt das Blatt ebenfalls offen und kann bis auf eine Sekunde geteilt werden. Der Connector lässt höchstens 32 Programs-RFC-Lesevorgänge in einem gleitenden 60-Sekunden-Fenster über alle Quellen zu. Das Budget übersteht Reloads und Neustarts; beim Warten bleiben weder SAP-Verbindung noch Worker belegt. Die Fortsetzung bleibt dauerhaft gespeichert. Jedes vollständige Blatt trägt ein Manifest für seine exakten Grenzen. SPOT exportiert das Blatt und verschiebt seinen Checkpoint erst nach Bestätigung; Blätter im Überlappungsbereich gleichen verspätete Daten ab, ohne den Checkpoint zurückzusetzen. Sättigt ein späteres Blatt, überschreitet es die Frist, wird es abgebrochen, schlägt seine Validierung fehl oder fehlt die Bestätigung, bleibt dieses Blatt offen und der Zyklus endet. Frühere bestätigte Blätter bleiben dauerhaft erhalten und werden nicht erneut gelesen, auch im ersten Zyklus. SPOT bewahrt die exakten offenen Teilfenster auf und wiederholt sie mit Backoff. Erst wenn dieser Horizont vollständig ist, liest der nächste reguläre Zyklus erneut ab 15 Minuten vor dem letzten bestätigten Checkpoint; ungelesene Intervalle gelten nie als abgedeckt. Jeder Horizont schreitet höchstens 30 Minuten voran. Liegt der Rückstand über dem Sammelintervall plus 120 Sekunden, beginnt der nächste Horizont sofort; nahe der Gegenwart gilt wieder der normale Takt. Prüfen Sie die letzte bestätigte SAP-Zeit und nicht nur den Eingang. Jedes RFC-Ergebnis wird höchstens bis 20.000 Zeilen und 64 MiB dekodiert. Ein dichtes Blatt, das innerhalb dieses Budgets vollständig dekodiert wird, kann bestätigt werden: Die Zeilenzahl allein belegt keine Sättigung. Meldet SAP im kleinsten Ein-Sekunden-Frame Sättigung oder Trunkierung, schlägt SPOT geschlossen fehl, exportiert und bestätigt dieses Blatt nicht und verschiebt die Abdeckung nicht. Pro Blatt behält SPOT höchstens 50.000 Dokumente und 32 MiB serialisierten normalisierten Inhalt einschließlich Manifest. Wird eine Grenze überschritten, wird dieses Blatt weder exportiert noch bestätigt. Diese Grenzen für Go-Konvertierung und Akkumulation begrenzen nicht den Speicher innerhalb des nativen RFC-Invokes. Unterstützung für jede Release oder beliebige Form wird nicht behauptet. Die bereinigte Diagnose unterscheidet ein erschöpftes Aufrufbudget, Sättigung im kleinsten Frame, ein ungültiges Fenster, ein erschöpftes Gesamtbudget und einen Identitäts-/Systemkonflikt. Ein generischer Fehler einer älteren Version beweist nicht, welche Klasse vorlag. Die SAP-Connection-Karte kann anzeigen:

  • partial: gültiges Lesen mit vollständigen Hauptmessungen und nicht verfügbaren optionalen Teilfähigkeiten batchstep, rfc, http und epp;
  • unsupported: Release oder bereitgestellte Form ist nicht kompatibel;
  • unauthorized: RFC-Berechtigung fehlt;
  • unavailable: SAP war vorübergehend nicht verfügbar;
  • error: Lesen wurde verworfen oder schlug mit bereinigter Diagnose fehl.

Eine nicht verfügbare Fähigkeit darf Metrics, Jobs, Work Processes, Dumps, RFC failures, Certificates und Heartbeat nicht stoppen.

Wenn eine gültige Runde mit Status supported oder partial endet, exportiert SPOT zunächst die vollständige Runde, bestätigt ihren Checkpoint und entfernt danach das von dieser Runde verwendete SAP-Handle aus dem gemeinsamen Pool pro SAP-Quelle. Dieses Handle kann zuvor von einer anderen Sammlungsfamilie wiederverwendet worden sein; deshalb muss eine spätere Sammlung von Programs oder einer beliebigen anderen Familie möglicherweise eine neue Verbindung herstellen. Die Pooling-Richtlinie der übrigen Familien bleibt unverändert, und daraus folgt keine neue Sitzung für jede Runde. partial beschreibt optionale Abdeckung und keinen unvollständigen Commit. Das Entfernen des Handles garantiert außerdem nicht, dass die native RFC-Laufzeit Speicher sofort freigibt oder den RSS senkt.

Isolation und Kontinuität​

Jeder Versuch von Program statistics verwendet höchstens einen globalen Worker desselben signierten Connectors. Bevor der Kindprozess startet, gilt für die Zulassung der Quelle ein separates Limit von 30 Sekunden. Erst nach erfolgreicher Zulassung verarbeitet er genau ein Teilfenster mit einem vollen Budget von 240 Sekunden und endlichen Reserven für Beendigung und Reap. Ein Teilfenster übernimmt niemals die Restzeit eines anderen Lesevorgangs. Läuft die Zulassung ab oder wird sie abgebrochen, startet der Worker nicht; es gibt weder Teilung eines Teilfensters, Export, ACK noch Cursor-Fortschritt. Die nächste Quelle in der Warteschlange kann fortfahren. Nach dem ACK eines Teilfensters wird seine Fortsetzung sofort eingereiht; andere wartende Quellen erhalten zuerst den nächsten fairen Turn. Der Export hat ein eigenes begrenztes Zeitfenster und verkürzt das Budget des nächsten RFC nicht. Der Elternprozess bewahrt nur Phase und Dauer. Bei Descriptor-Suche, Parameter-Vorbereitung, Output-Auswahl, Invoke und Decode markiert Dauer null den Eintritt und eine positive Dauer den Abschluss, auch wenn der Terminal-Record fehlt. Diese Grenzen enthalten keine RFC-Werte, Identitäten oder Payloads. Sie dienen nur der Diagnose und validieren keine Daten; weder Export noch ACK oder Checkpoint-Fortschritt werden dadurch erlaubt. Wenn der Kindprozess sein exaktes 240-Sekunden-Limit erreicht und das aktive Teilfenster noch teilbar ist, exportiert der Koordinator nichts und lässt Cursor sowie frühere ACKs unverändert. Er ersetzt dauerhaft nur dieses Teilfenster durch zwei zusammenhängende Hälften, bewahrt die übrige Queue und den Backoff und reiht die Fortsetzung sofort mit fairer Verteilung wieder ein. Ein Abbruch durch Rollout oder Reload hat Vorrang, erlaubt diese Teilung niemals und wird als Abbruch der Sammlung gemeldet; ein tatsächlich fehlender Bericht bleibt ein Fehler. Metrics, Work Processes, Jobs und die übrigen priorisierten Familien behalten ihre unabhängige Zeitplanung.

Teilfenster beginnen je Quelle mit höchstens 60 Sekunden. Dauert ein vollständiger Lesevorgang mindestens 60 Sekunden oder liefert er mehr als 400 Hauptdatensätze, halbiert SPOT das Maximum dieser Quelle für ausstehende Arbeit bis auf eine Sekunde. Genau 400 Datensätze lösen die Reduktion nicht aus; alle Ausführungen des bestätigten Blatts bleiben erhalten. Die Reduktion übersteht Neustarts, ändert keine bestätigte Abdeckung und wird nicht mit einer anderen SAP-Quelle geteilt. Acht aufeinanderfolgende vollständige, bestätigte und schnelle Blätter der gelernten Größe (je unter zehn Sekunden, höchstens 100 Hauptdatensätze und 8 MiB normalisiert) können das Maximum für den nächsten Horizont bis auf 60 Sekunden verdoppeln. Fehler setzen die Folge zurück; Timeout oder Sättigung verhindern Wachstum für 15 Minuten. Kleinere Blätter benötigen eventuell mehr RFC-Aufrufe; nach 32 Zulassungen in 60 Sekunden wartet die dauerhafte Fortsetzung auf Kapazität. Ein kleines Teilfenster, das weiterhin das Limit erreicht, bleibt ein echter Stillstand und ist keine Wiederherstellung. Diese Anpassung senkt den erwarteten Working Set, garantiert aber kein universelles Speicherlimit für jedes SAP-System.

Dieser Worker ändert Job Logs nicht: Der BAPI-Aufruf bleibt im Prozess und erzeugt keine Kinder. Der Diagnosewert für Speicher ist das Maximum an den Abtastzeitpunkten; vergleiche ihn getrennt mit dem cgroup-Speicherdruck. Die Differenz zum Go-Heap ist eine Restschätzung und keine direkte Messung nativen Speichers.

Wenn keine Programme erscheinen​

  1. Prüfe SAP-System und Zeitraum in der globalen Leiste; erweitere den Zeitraum, wenn SAP kurz aufbewahrt oder die Sammlung gerade aktiviert wurde.
  2. Prüfe SAP connections > Program statistics, letzten Check und Status.
  3. Prüfe bei unauthorized mit dem Basis-Team S_RFC für SWNC_GET_STATRECS_FRAME.
  4. Nutze bei partial die vollständigen Hauptmessungen und prüfe, dass batchstep, rfc, http und epp nicht verfügbar sind; eine fehlende Relation bedeutet nicht „kein Aufruf“.
  5. Prüfe bei unsupported Release und remote-fähige Funktionen; installiere kein eigenes Z-Artefakt, um ein Ergebnis zu erzwingen.
  6. Bestätige Connector-Heartbeat und Fortschritt der übrigen Sammlungen. Ein einzelner Heartbeat beweist nicht, dass Sammlungszyklen weiter abschließen. Ein gültiges leeres Ergebnis ist Keine Daten, niemals eine künstliche Null.
  7. Bestätige für ABAP dumps einen aktuellen letzten Check, auch wenn keine neuen Dump-Dokumente vorliegen. Keine Dumps sind nur dann ein günstiger Hinweis, wenn der Collector weiterläuft. Vergleiche einen Programs-Deadline mit der Dump-Zeit, bevor du ihn zuordnest; der historische Zähler allein reicht nicht.
  8. Meldet Bootstrap bei nicht verwaltetem Elasticsearch program_template_update_required, aktualisiere das externe Template um die Programs-Felder. Dieser Preflight ist von template_update_required der Job Logs getrennt und deaktiviert keine Job Logs mit bereits gültigen Mappings.

Wenn der Agent unter Speicherdruck steht​

Bewerte den gesamten Prozess. Prüfe RSS/PSS, memory.high-Ereignisse, PSI, Dauer und Ergebnis von Program statistics sowie den Fortschritt der übrigen sieben Sammlungen. Anhaltender Reclaim ohne OOM beweist allein weder ein Go-Heap-Leck noch einen nativen Spin.

Um die Kontinuität wiederherzustellen, deaktiviere vorübergehend nur Program statistics für die betroffene Verbindung, sichere die vorherige Konfiguration und lasse die übrigen Sammlungen aktiv. Installiere eine korrigierte, unterstützte Connector-Version, miss den gesamten Prozess unter realer SAP-Last gegen den verfügbaren Host-Headroom und bestätige den Fortschritt aller Familien, bevor du die Sammlung wieder aktivierst. Programs deaktiviert zu lassen ist nur eine vorübergehende Maßnahme, keine Lösung oder Stabilitätsprüfung. Erhöhe Heap oder Ressourcenlimits nicht als ersten Schritt. Beachte das Ressourcenprofil des Agents: Ein temporärer Override belegt weder die Installation der signierten Unit noch die Stabilität von Programs.

Statistiksätze und Subrecords hängen von SAP-Konfiguration und Aufbewahrung ab. SPOT kann bereits von SAP gelöschte Daten nicht rekonstruieren.