[ABAP] Popup-Dialog anzeigen

DATA: ret TYPE string.

* Ersetzt alle anderen obsoleten 'POPUP_TO_...' Funktionsbausteine
* kann für Ja, Nein, Abbrechen, Zurück, Weiter, Infos usw. genutzt werden
CALL FUNCTION 'POPUP_TO_CONFIRM'
  EXPORTING
    titlebar              = 'Frage'
    text_question         = 'Alles klar?'
    display_cancel_button = abap_true
  IMPORTING
    answer                = ret.

CASE ret.
  WHEN '1'.
* Ja
  WHEN '2'.
* Nein
  WHEN 'A'.
* Abbruch
ENDCASE.

Weiterführender Link: Link

[ABAP] Fortschrittsanzeige anzeigen

Variante 1 (cl_progress_indicator)

PARAMETERS: p_times1 TYPE i DEFAULT 15.

DO p_times1 TIMES.
  cl_progress_indicator=>progress_indicate( i_text               = |Fortschritt { sy-index } / { p_times1 }|
                                            i_processed          = sy-index     " Wert
                                            i_total              = p_times1     " Maximum
                                            i_output_immediately = abap_true ). " true -> sofort, false -> aller 10s darstellen

  WAIT UP TO 1 SECONDS.
ENDDO.

Variante 2 (cl_akb_progress_indicator)

CONSTANTS: co_max TYPE i VALUE 1000000.

START-OF-SELECTION.
  DATA(o_progress) = cl_akb_progress_indicator=>get_instance( ).

  DO co_max TIMES.
    o_progress->display( force_display = abap_false
                         total         = co_max
                         processed     = sy-index
                         message       = 'Bitte warten...' ).
  ENDDO.

Variante 3 (SAPGUI_PROGRESS_INDICATOR)

DATA: index TYPE i.
DO 20 TIMES.
  index = sy-index * 5.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = index
      text       = 'Bitte warten ...'.

  WAIT UP TO 1 SECONDS.
ENDDO.

[ABAP] SAP GUI-Version auslesen

DATA: v_tab  TYPE filetable,
      v_info TYPE file_table,
      rc     TYPE i.

TRY.
    cl_gui_frontend_services=>get_gui_version(
      CHANGING
        version_table            = v_tab
        rc                       = rc ).

  CATCH cx_root INTO DATA(e_text).        " Oberklasse für Exceptions abfangen und Kurztext übergeben
    MESSAGE e_text->get_text( ) TYPE 'I'. " Exception Kurztext ausgeben
ENDTRY.

LOOP AT v_tab INTO v_info.
  WRITE: / v_info-filename.
ENDLOOP.

[ABAP] Nachrichtenklassen pflegen

Nachrichtenklasse anlegen

  • SE91 (Nachrichtenpflege)

oder

  • SE80 (Object Navigator)->Paket->Rechtsklick->Anlegen->Weitere (1)->Nachrichtenklasse

oder

  • im Code auf den neu eingegebenen Klassennamen hinter ‘MESSAGE …’ doppelklicken

danach

  • in der Tabelle die Kurztexte (000…) zur Nachrichtenklasse editieren
  • Es können max. 4 Platzhalter ‘&’ oder explizit ‘&1’, ‘&2’, ‘&3’, ‘&4’ eingefügt werden, die später beim Aufruf des Textes mit Variablenwerten gefüllt werden können.
  • evtl. Haken bei ‘Selbserklärend’ setzen
  • evtl. Langtext über Button ‘Langtext’ pflegen
  • Button “Sichern” (Diskette) und “Aktivieren” (Streichholz) nicht vergessen

[ABAP] Messages ausgeben

Messagetypen

Typ  Bezeichnung  Bedeutung

A    Abbruch      Anzeige der Nachricht in einem Dialogfenster. Die gesamte Transaktion wird nach der Bestätigung durch ENTER abgebrochen.
E    Error        Anzeige der Nachricht in der Statuszeile. Nach der Bestätigung durch ENTER wird der aktuelle Ereignisblock abgebrochen und die Anzeige der vorhergehenden Listenstufe bleibt bestehen. Während der Erstellung der Grundliste wird das gesamte Programm abgebrochen.
I    Information  Anzeige der Nachricht in einem Dialogfenster. Nach der Bestätigung durch ENTER wird die Verarbeitung hinter der MESSAGE-Anweisung wieder aufgenommen.
S    Status       Anzeige der Nachricht in der Statuszeile der momentan erstellten Liste.
W    Warnung      siehe E
X    Exit         Dieser Nachrichtentyp löst einen Laufzeitfehler aus und erzeugt einen Kurzdump.

Codebeispiele

* Beispiele
* Popup-Message des Typs 'E' (Fehler)
MESSAGE 'Nachricht.' TYPE 'I' DISPLAY LIKE 'E'.
* Popup-Message vom Typ 'I' (Information)
MESSAGE 'Text.' TYPE 'I'.

* Message in der Statuszeile vom Typ 'E' (rot)
MESSAGE 'Nachricht.' TYPE 'S' DISPLAY LIKE 'E'.
* Message in der Statuszeile vom Typ 'W' (gelb)
MESSAGE 'Nachricht.' TYPE 'S' DISPLAY LIKE 'W'.
* Message in der Statuszeile (grün)
MESSAGE 'Nachricht.' TYPE 'S'.

* Nachrichtentext Nr. 004 der Nachrichtenklasse 'mymessageclass', Typ 'I' (Information) mit Parameter v1
MESSAGE i004(mymessageclass) TYPE 'I' WITH v1.
* Nachrichtentext Nr. 004 der Nachrichtenklasse 'MYMESSAGECLASS' (Großschreibung!), Typ 'I' (Information)
MESSAGE ID 'MYMESSAGECLASS' TYPE 'I' NUMBER '004'.
* Fehlermessage komplett in der Statusleiste anzeigen
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 DISPLAY LIKE 'E'.
* Fehlermessage in String konvertieren
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO DATA(lv_message_str).
WRITE: / lv_message_str.

sy-msg in String

* Variante 1
DATA(lv_msg) = |{ sy-msgv1 } { sy-msgv2 } { sy-msgv3 } { sy-msgv4 }|.
WRITE: / lv_msg.

* Variante 2
DATA(lv_msg) = ||.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO lv_msg.
WRITE: / lv_msg.

Weiterführender Link: Link

[ABAP] Textausgabe

SKIP.                           " fügt Leerzeile + Enter (/) ein
ULINE.                          " fügt Trennlinie ein
NEW-LINE.                       " Zeilenvorschub ohne CR (alle folgenden Ausgaben auf gleicher Zeile)
WRITE /.                        " Zeilenvorschub mit CR (alle folgenden Ausgaben auf nachfolgender Zeile)
WRITE 'Text'.                   " einfache Ausgabe
WRITE / 'Text'.                 " einfache Ausgabe mit Zeilenvorschub
WRITE /10 'Text'.               " einfache Ausgabe mit Zeilenvorschub und 10 Zeichen einrücken
WRITE 1 'TEXT'.                 " Text ab Spalte 1
WRITE 1(2) 'TEXT'.              " Text ab Spalte 1, Länge begrenzen auf 2 Zeichen
WRITE 'Text' COLOR COL_HEADING. " farbige Textausgabe, siehe auch FORMAT [...]
WRITE: /10 'Zahl: ', zahl.      " Text einrücken und zus. Zahl ausgeben
WRITE: / 'Test1',               " verkettete Anweisung
       / 'Test2',
       / 'Test3'.
WRITE num TO formatted_text.    " Zahl num in String formatted_text schreiben

WRITE: / 'Ausgabetext' QUICKINFO 'Spalte'.    " beim Überfahren mit dem Cursor wird ein Hint-Text 'Spalte' angezeigen

WRITE: / 'Hotspot' HOTSPOT ON.                " Text 'Hotspot' ausgeben, beim Überfahren mit der Maus wird eine Maushand angezeigt
WRITE: / icon_annotation AS ICON HOTSPOT ON.  " Icon als Hotspot definieren

DATA: chkbox TYPE c LENGTH 1.                 " Variable definieren
WRITE: / chkbox AS CHECKBOX, 'Auswahl'.       " als Checkbox ausgeben
IF chkbox = 'X'.
  ...
ENDIF.