This is a test message to test the length of the message box.
Login
|
BTP Mehrere Communications Systems
Erstellt von Software-Heroes

BTP - Mehrere Communication Systems

605

Wie können wir verschieden Verbindungen im gleichen Communication Scenario unterscheiden und die richtige für uns ableiten? Mehr dazu hier.

Werbung


In diesem Artikel schauen wir uns näher an, wie wir die verschiedenen Verbindungen an einem Communication Arrangement voneinander unterschieden können und so über den ABAP Code das richtige System ansprechen können.

 

Einleitung

In verschiedenen Szenarien kann es vorkommen, dass wir das gleiche Communication Scenario für verschiedene Verbindungen nutzen möchten. Wenn zum Beispiel der Anwender per Principal Propagation zugreifen soll, der Service dann im Application Job aber einen technischen User per Basic Authentication benötigt. In so einem Fall müssen wir im System für das Communication Scenario zwei Varianten mit jeweils einem eigenen Communication System anlegen. Je nach Namenskonvention, wollen wir das System aber nicht hart im Coding hinterlegen, da es pro Stage (DEV, TEST, PROD) unterschiedlich sein kann und die Abbildung im Coding keinen Sinn macht.

 

Parameter

Bevor wir die Systeme und Verbindungen hart im Coding hinterlegen, gibt es die Möglichkeit der zusätzlichen Eigenschaften an einem Communication Scenario. Auf dem Reiter "Overview" wirst du im Bereich "Additional Properties" weitere Merkmale finden. 

 

Über den "Hinzufügen" Button kannst du neue Eigenschaften aufnehmen. Was du benötigst, ist ein eigenes Datenelement, welches nicht unbedingt eine eigene Domäne benötigt, nur wenn du eine Wertehilfe erzeugen möchtest. Wichtig ist hier erst einmal der Datentyp und die Texte zur Anzeige. Über die Eigenschaften im hinteren Bereich kannst du noch einige Dinge steuern:

  • Is Multiple - Es ist eine Mehrfacheingabe von Werten in diesem Feld möglich, wenn verschiedene Eigenschaften abgebildet werden sollen.
  • Is Secure - Das Feld wird sicher abgelegt und in der UI nicht angezeigt. Hier können Informationen wie Zugänge und Passwörter gespeichert werden.
  • Value Help - Die Wertehilfe der Domäne wird zur Anzeige in der App verwendet.

 

Wenn du einen Parameter markierst und auf den Button "Value Help" klickst, werden dir die aktuellen Werte der Suchhilfe angezeigt. In diesem Beispiel werden die Festwerte der Domäne herangezogen.

 

Pflege

Legen wir nun über die App "Communication Arrangements" ein neues Arrangement mit unserem Communication Scenario an, sehen wir unsere drei zusätzlichen Eigenschaften in einem neuen Bereich.

 

Entsprechend der Konfiguration wurde für "System" bereit der Wert TEST vorbelegt. Für "Application Type" gibt es eine definierte Suchhilfe, um den Wert nicht manuell eingeben zu müssen. In das Feld "Multiple Values" können wir nun per Freitext verschiedene Werte eintragen. Wenn du mit dem Wert fertig bist, musst du ENTER drücken, damit dieser in ein Element der Liste umgewandelt wird. Hier einmal ein Beispiel für die Eingabe von mehreren Werten.

 

Implementierung

Nachdem wir nun die Merkmale hinterlegt haben und drei Beispielszenarien implementiert haben, geht es nun um die Ermittlung des richtigen Systems zur Laufzeit. Dazu stellt SAP eine Factory zur Verfügung. Im ersten Schritt definieren wir die Query für die Suchanfrage, dort sollte mindestens CSCN_ID_RANGE mit unserem Communication Scenario befüllt sein, da wir dafür die Systeme suchen. Über CA_PROPERTY können wir weitere Abgrenzungen definieren, um die Verbindung weiter einzuschränken.

DATA(ls_query) = VALUE if_com_arrangement_factory=>ty_query(
    cscn_id_range = VALUE #( ( sign = 'I' option = 'EQ' low = 'ZBS_DEMO_CS_PARAM' ) )
    ca_property   = VALUE #( ( name = 'MULTIPLE' values = VALUE #( ( 'OTHERS' ) ) ) ) ).

 

Im nächsten Schritt erzeugen wir die Factory zur Ermittlung der gepflegten Systeme. Dieser übergeben wir nun die Query und erhalten eine Tabelle von Systemen zurück. Je nach Eingrenzung können das alle gepflegten Systeme sein oder nur genau ein System, so wie wir es benötigen.

DATA(lo_factory) = cl_com_arrangement_factory=>create_instance( ).
lo_factory->query_ca( EXPORTING is_query           = ls_query
                      IMPORTING et_com_arrangement = DATA(lt_systems) ).

 

Zum Abschluss lassen wir uns über die Methode GET_COMM_SYSTEM_ID den Namen des Communication Systems geben, damit wir diesen für die Instanziierung des Proxys verwenden können.

lo_system->get_comm_system_id( )

 

Hier einmal ein Stück Beispielcode, wie wir uns über den Destination Provider eine Destination erstellen und dabei das Communication System über die Factory ableiten. Damit musst du nur noch die spezifischen Eigenschaften der Query übergeben und kannst die Steuerung über das Communication Arrangement machen, ohne weitere Werte hart im Code zu hinterlegen.

DATA(lo_destination) = cl_http_destination_provider=>create_by_comm_arrangement(
    comm_scenario  = 'ZBS_DEMO_CS_PARAM'
    service_id     = 'ZBS_TEST'
    comm_system_id = lo_system->get_comm_system_id( ) ).

 

Vollständiges Beispiel

Hier findest du den Beispielcode zum Lesen der Systeme über die Factory Klasse und der Ausgabe des Ergebnisses in die Konsole.

CLASS zcl_bs_demo_read_systems DEFINITION
  PUBLIC FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.
ENDCLASS.


CLASS zcl_bs_demo_read_systems IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    DATA(ls_query) = VALUE if_com_arrangement_factory=>ty_query(
        cscn_id_range = VALUE #( ( sign = 'I' option = 'EQ' low = 'ZBS_DEMO_CS_PARAM' ) )
        ca_property   = VALUE #( ( name = 'MULTIPLE' values = VALUE #( ( 'OTHERS' ) ) ) ) ).

    DATA(lo_factory) = cl_com_arrangement_factory=>create_instance( ).
    lo_factory->query_ca( EXPORTING is_query           = ls_query
                          IMPORTING et_com_arrangement = DATA(lt_systems) ).

    LOOP AT lt_systems INTO DATA(lo_system).
      out->write( lo_system->get_comm_system_id( ) ).
    ENDLOOP.
  ENDMETHOD.
ENDCLASS.

 

Fazit

Wenn du für ein Communication Scenario nur ein Communication Arrangement anlegst, benötigst du diesen Aufwand nicht. Hast du allerdings mehrere Verbindungen und möchtest diese nicht hart im Code hinterlegen, dann bieten sich die zusätzlichen Parameter an.

 

Quelle:
SAP Help - Specific Properties


Enthaltene Themen:
BTPABAP EnvironmentCommunication Scenario
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


BTP - E-Mail Anbindung OAuth 2.0

Kategorie - ABAP

Die Mail-Anbindung per Basic Auth funktioniert nun nicht mehr. Welche Möglichkeiten bestehen alternativ für die Anbindung von Office365 an das ABAP Environment und wie kannst du sie einrichten?

13.10.2026

BTP - Pakete und SWC bereinigen

Kategorie - ABAP

Du möchtest ein Pakete im ABAP Environment löschen, doch es gibt noch Objekte die blockieren und vielleicht gar nicht mehr in Eclipse sichtbar sind? Schauen wir uns dazu einige Punkte zur Bereinigung an.

25.09.2026

RAP - Sales App Learnings

Kategorie - ABAP

Das Tutorial für die Sales App ist zu Ende und dieses Mal wurde eine große Bandbreite an Themen und Bereichen adressiert. In diesem Artikel schauen wir auf das Gelernte und wichtige Punkte.

08.09.2026

RAP - Navigation (App to App)

Kategorie - ABAP

Wie kannst du eigentlich innerhalb deiner Fiori Anwendung auf eine andere Anwendung navigieren, ohne das der User die App manuell wechseln muss? Schauen wir uns die Navigation zwischen Fiori Apps an.

01.09.2026

RAP - Singleton Pattern

Kategorie - ABAP

Das Singleton Pattern in RAP gibt es schon länger, doch wie genau funktioniert es und wie kannst du es auch für andere Use-Cases nutzen? Schauen wir uns dazu die Details in diesem Artikel an.

25.08.2026