Internet Communication Framework (ICF) ist eine Umgebung für die Bearbeitung von Web-Anträgen in ABAP-Workprozessen eines SAP-Systems (in seiner Rolle als Web-Server und Web-Client). Das ICF ist die Brücke zwischen dem Kernel des SAP-Systems und dem in ABAP geschriebenen Anwendungsprogramm. Das ICF besteht aus ABAP-Klassen und -Interfaces, auf deren Objekte und Methoden beispielsweise in einer Web-Dynpro-ABAP-Anwendung zugegriffen werden kann.
Das ICF bietet eine Möglichkeit für verschiedene Systeme, über das Internet/Intranet über Standardprotokolle (z.B. HTTP und SMTP) miteinander zu kommunizieren. Ab AS ABAP 7.40 sind keine zusätzlichen Programmierbibliotheken (für AS ABAP) von SAP erforderlich. Für das HTTPS-Protokoll müssen jedoch bestimmte Konfigurationsschritte ausgeführt werden (siehe SAP-Hinweis 510007 – Zusätzliche Hinweise zum Einrichten von SSL auf dem Application Server ABAP). Ihre Systemplattform muss lediglich internetfähig sein. Ein derartiges Szenario ermöglicht eine äußerst flexible Gestaltung sämtlicher Kommunikationsanforderungen.
Das ICF ermöglicht, dass mittels einer Anwendung eine Antwort (Response) auf eine Anforderung (Request) erzeugt wird. Ein HTTP-Request wird von einem Client, beispielsweise einem Web-Browser, zum Server geschickt. Der Request wird durch das ICF an eine Anwendung weitergereicht. Dort werden dann Daten zusammengestellt, die als Response durch das ICF an den Client zurückgesendet werden. Die Daten der Response werden dann im Browser angezeigt.
Notiz
Im Folgenden wird auf den Einsatz des SAP-Systems als Web-Server (HTTP(S)-Server) näher eingegangen. In der Online-Dokumentation finden Sie auch Ausführungen zur Web-Client Rolle des SAP-Systems.
Die Anwendungslogik, die durch einen HTTP-Request aus dem Intra- oder Internet aufgerufen werden soll, wird jeweils durch den HTTP-Request-Handler implementiert. Ein HTTP-Request-Handler ist ein Programm (genauer: eine ABAP-Klasse), das durch eine URL (Uniform Resource Locator) identifiziert wird, und HTTP-Requests, die diese URL benutzen, empfängt. Die Aufgabe des HTTP-Request-Handlers ist, die Daten, die durch einen Request gesendet werden (z. B. kodiert in der URL als sogenannte „Query-String"-Information), entgegenzunehmen, einige Handler-spezifische Prozesse durchzuführen und eine Response zu diesem HTTP-Request zu erzeugen. Solche HTTP-Request-Handler können Kunden selbst anlegen, SAP liefert aber auch welche aus. Ein Beispiel für einen SAP-HTTP-Request-Handler ist der Handler CL_HTTP_EXT_BSP für die Business Server Pages (BSP), mit dem einfache Web-Anwendungen entwickelt werden können.
Wenn ein HTTP-Request vom ICM empfangen wird, der in einem Workprozess verarbeitet werden soll, übernimmt der Taskhandler des Workprozesses die Kontrolle. Anschließend startet es den ICF-Controller (siehe folgende Abbildung).

Ein HTTP(S)-Request wird in den folgenden Schritten verarbeitet (in diesem Beispiel wird eine ABAP-Anwendung verwendet, die von einem Dialog-Workprozess verarbeitet werden muss):
Der Request wird vom Web-Browser des Benutzers über das HTTP(S)-Protokoll an den ICM gesendet.
Der ICM legt die empfangenen Daten in einer Memory Pipe (im Shared Memory) ab und informiert den ABAP-Dispatcher.
Der ABAP-Dispatcher nimmt den ICM-Request in die Dispatcher-Queue auf, legt einen neuen Kontext an (falls nicht schon ein Kontext vorhanden ist und stateful (zustandsbehaftet) verarbeitet wird) und wählt einen Dialog-Workprozess zur Bearbeitung aus.
Der Taskhandler im Workprozess liest die Daten aus der Memory Pipe und übergibt diese an den ICF-Controller, der durch den Funktionsbaustein HTTP_DISPATCH_REQUEST realisiert ist.
Der ICF-Controller übergibt den Request an den ICF-Manager, der durch die ABAP Klasse CL_HTTP_SERVER implementiert ist. Der ICF-Contoller legt einen Server-Kontrollblock an und füllt ihn mit den Daten des HTTP-Requests, die er vom ICM anfordert.
Nun erfolgt die Authentifizierung des Clients, wozu mehrere Anmeldemöglichkeiten zur Verfügung stehen.
Der zuvor bestimmte HTTP-Request-Handler wird aufgerufen (dieser kann die Request-Daten verarbeiten, weitere Anwendungen aufrufen, auf das Response-Objekt zugreifen etc.). Nachdem der HTTP-Request-Handler alle Aufgaben ausgeführt hat, gibt er die Kontrolle an den ICF-Controller zurück.
Der Taskhandler schreibt die Antwort zurück in die Memory Pipe (Serialisierung der Antwort) und signalisiert dem ICM, dass er mit der Bearbeitung des Requests fertig ist.
Der ICM gibt die Antwort an den Web-Browser zurück.
Eine detaillierte Erläuterung der einzelnen Schritte finden Sie in der Online-Dokumentation zu SAP S/4HANA (Product Assistance), Bereich Unternehmenstechnologie → ABAP Platform → Application Server ABAP - Infrastruktur → Connectivity → Komponenten der SAP-Kommunikationstechnologie → Kommunikation zwischen ABAP und Nicht-ABAP-Technologien → Internet Communication Framework → Architektur → Serverarchitektur.
Technisch gesehen verbirgt sich hinter einem HTTP-Request-Handler eine ABAP-Klasse. Diese Klasse implementiert das Interface IF_HTTP_EXTENSION und die Methode HANDLE_REQUEST. SAP liefert Klassen dieses Typs aus; Kunden können natürlich auch eigene Klassen mit dem Class Builder (Transaktion SE24, integriert in den Object Navigator, Transaktion SE80) anlegen.







