This is a test message to test the length of the message box.
Login
ABAP Class Runner Console Application
Erstellt von Software-Heroes

ABAP - Class Runner (Console Application)

Egal ob Applikationen in der Cloud oder ein leichtes Mittel um schnell ein paar Tests zu machen und eine Ausgabe zu erzeugen, eine Console Application wird dich dabei unterstützen.

Werbung

Um was geht es bei einer Consolen Applikation und wie kann sie dir beim Entwickeln helfen? Das wollen wir dir heute in dem Artikel etwas näher bringen und dir die Vorteile so einer Applikation zeigen.

 

Reports im ADT

Du kennst sicherlich auch das Problem, dass du mal schnell etwas probieren möchtest, um einen debugbaren Output zu bekommen. In SE80 würdest du dafür einen Report schreiben und diesen ausführen. Hier hast du sogar noch die Möglichkeit mit einem Selektionsbild noch die Eingaben zu steuern. Mit den ADTs ist dies leider nicht so einfach und stellt dich vor gewisse Herausforderungen.

So wird jedes Mal beim Ausführen eines Reports die SAP GUI geladen, auch wenn vielleicht nicht einmal ein Selektionsbild benötigt wird. Dies kostet Zeit und unnötige Ressourcen, da wir ja eigentlich nur an die Ausgabe wollen. Ebenfalls springt die GUI dann zum internen Debugger in ADT und muss wieder den Status wechseln, wenn wir auch noch die Applikation debuggen wollen.

 

Class Runner

Zu diesem Zweck führte die SAP den Class Runner ein, um direkt über eine Klasse die Verarbeitung zu starten und trotzdem noch einen Output zu generieren. Gelöst wird das Ganze über ein globales Interface, dass das System zur Verfügung stellt und wir in unsere Klassen implementieren können. Zu diesem Zweck legen wir eine neue globale Klasse an und können direkt über den ADT Wizard das Interface mit übergeben.

 

Nach der Implementierung müssen wir nur noch die Main-Methode des Interaces ausprägen und können direkt mit der Implementierung beginnen. Der Grundzustand der Klasse sieht dann wie folgt aus:

CLASS zcl_bs_demo_class_runner DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.


CLASS zcl_bs_demo_class_runner IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    " Implementation
  ENDMETHOD.
ENDCLASS.

 

Wenn wir uns die Methode einmal im Detail anschauen (über F2), dann sehen wir, dass wir noch einen Importparameter zur Verfügung gestellt bekommen. Diese Objekt bietet uns eine Methode zum Schreiben in die Console.

 

Wenn du eine Consolen Applikation ausführen möchtest, kannst du diese über F9 oder das "Run" Menü machen. Hier hast du auch die Möglichkeit zu sehen, ob das aktuelle Release des Systems die neue Funktion unterstützt.

 

Beispiel

Dazu haben wir das Beispiel etwas weiter ausgebaut und einige Ausgaben in die Console ausgegeben. Zusätzlich kannst du das Objekt auch in weitere Methoden übergeben, wenn du die Ausgabe dort nutzen willst oder die Hauptmethode einmal zu groß wird.

CLASS zcl_bs_demo_class_runner DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun .

  PROTECTED SECTION.
  PRIVATE SECTION.
    METHODS:
      sub_methods_with_output
        IMPORTING
          io_out TYPE REF TO if_oo_adt_classrun_out.
ENDCLASS.


CLASS zcl_bs_demo_class_runner IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    DATA(ld_text) = `Output with a string`.
    out->write( ld_text ).

    DATA(ld_integer) = 12.
    out->write( ld_integer ).

    SELECT *
      FROM zdemo_tr_table
      INTO TABLE @DATA(lt_table).
    out->write( lt_table ).

    sub_methods_with_output( out ).
  ENDMETHOD.


  METHOD sub_methods_with_output.
    io_out->write( 'Call from submethod' ).
  ENDMETHOD.
ENDCLASS.

 

Als Ausgabe erhältst du die entsprechenden Texte in der Console (eine View in ADT).

 

Funktion

Wie funktioniert die Verarbeitung mit der Klasse nun genau? Hierbei schaut das System, ob die aktuelle Klasse auch das Interface IF_OO_ADT_CLASSRUN implementiert, ansonsten wird eine Fehlermeldung ausgegeben. Im nächsten Schritt wird eine Instanz der Klasse erzeugt und die Main Methode aufgerufen. Dann erfolgt die normale Ausführung der Klasse und die Anzeige der Console.

Hinweis: Wenn du einen Konstruktor verwenden möchtest, darf dieser keine Importparameter haben oder diese sollten optional sein, sonst kommt es zu einem Dump beim Ausführen der Klasse.

 

Reportausgabe

Reports können aktuell auch mit F9 ausgeführt werden und geben alle WRITE Ausgaben in die Console aus. Statt Write kannst du natürlich auch die Klasse CL_DEMO_OUTPUT verwenden, die die Funktion ebenfalls unterstützt. Solange der Report kein Selektionsbild hat, funktioniert diese Variante sehr gut.

 

Fazit

Mit dem Class Runner stellt die SAP ein starkes Tool zum Testen und Probieren zur Verfügung. Auf der anderen Seite benötigst du das Interface ebenso in der Cloud Umgebung, da es dort keine Reports gibt. Viel Spaß beim Bauen deiner ersten Consolen Applikation.


Enthaltene Themen:
Modernes ABAPClass RunnerConsole ApplicationIF_OO_ADT_CLASSRUN
Kommentare (0)
Werbung

ABAP - Predicative Method Call

Kategorie - ABAP

Durch das OO Konzept werden für komplexe Abfragen meist eigene Methoden verwendet. In diesem Artikel geht es um den Vergleich des Ergebnisses aus solchen Methoden.

14.05.2021

ABAP - Performance für den SELECT

Kategorie - ABAP

In diesem Artikel schauen wir uns noch ein paar Spezialfälle mit dem SELECT an und beleuchten die Performance dieser Konstrukte. Wir zeigen dir die aktuellen Alternativen dafür und geben kleinere Tipps beim Lesen.

02.04.2021

ABAP - Objekte prüfen (Instanzen)

Kategorie - ABAP

In diesem Artikel zeigen wir dir, wie du Instanzen analysieren und auf diese korrekt reagieren kannst, wenn du diese zum Beispiel bei einer Verarbeitung übergibst und individuell reagieren möchtest.

19.03.2021

ABAP - Schleifen

Kategorie - ABAP

Mit dem modernen ABAP wurden auch neue Schleifen und Möglichkeiten zur Einschränkung von Tabelleninhalten geschaffen. Diese neuen Befehle schauen wir uns in diesem Artikel näher an.

19.02.2021

ABAP - Vergleiche

Kategorie - ABAP

Heute betrachten wir uns das Thema Vergleiche und Vergleichsoperatoren im Hinblick auf die neuen Befehle und die aktuelle Verwendung. Was hat sich bisher alles geändert und was sollte man noch tun.

12.02.2021