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

67

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 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.


RAP - Events

Kategorie - ABAP

Wie kannst du eigentlich Events in RAP erzeugen und mit ABAP verarbeiten? Hier erfährst du mehr zur eventgetriebenen Verarbeitung.

23.12.2024

RAP - Excel Datei laden

Kategorie - ABAP

In diesem praktischen Beispiel schauen wir uns die Verarbeitung von Excel in ABAP mit den neuen XCO Klassen an und wie wir die Datei in unser RAP Objekt bekommen.

20.12.2024

RAP - Semantischer Schlüssel

Kategorie - ABAP

Wofür benötigst du den semantischen Schlüssel und wie wird er im ABAP RESTful Programming Model dargestellt? Hier gibt es mehr dazu.

13.12.2024

RAP - Upload von Dateien (Stream)

Kategorie - ABAP

Wie kannst du einfach Dateien in deine RAP Entität laden und diese in ABAP zur Verfügung stellen? Hier schauen wir uns einmal die Details an.

10.12.2024

RAP - Report Pattern

Kategorie - ABAP

Wie ist das Report Pattern in RAP aufgebaut und was kannst du damit machen? Mehr dazu in diesem ABAP Artikel.

06.12.2024