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

391

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 - Key User Extensibility (Rollenbasiert)

Kategorie - ABAP

In diesem Aritkel wollen wir uns anschauen, wie wir über die Key User Extensibility eine rollenbasierte Sicht in einer Standard App zur Verfügung stellen und was du dabei mit der Arbeit beachten solltest.

20.02.2026

RAP - Position der Buttons

Kategorie - ABAP

In diesem Artikel schauen wir uns die verschiedenen Positionen der Buttons an. Wo können wir in RAP die verschiedenen Actions platzieren und wie nutzen wir diese.

17.02.2026

RAP - Analytical Table

Kategorie - ABAP

Schauen wir uns einmal in RAP das letzten fehlende Puzzlestück zur Ablösung des ALVs an und wie wir die Analytical Table mit wenig Aufwand einrichten können.

13.02.2026

RAP - Mixed Content

Kategorie - ABAP

Wie bekommen wir eigentlich unterschiedlichen Content in die gleiche Spalte im List Report? Schauen wir uns dazu einmal ein praktisches Beispiel für unsere Sales App an.

10.02.2026

RAP - Augmentation

Kategorie - ABAP

In diesem Artikel stellen wir unser Datenmodell der RAP Anwendung um und ändern die Form wie wir mit den Texten umgehen. Dabei verwenden wir Augmentation, um unser Datenmodell trotzdem vollständig zu halten.

03.02.2026