ABAP RAP

Validierungen und Nachrichten

(C) Brandeis Consulting📁

Scope

Benutzereingaben sind bekanntermasen nicht immer 100% richtig. Um hier negativen Auswirkungen vorzubeugen,
gibt es die Möglichkeit mit Validierungen (Validations) diese vor der Weiterverarbeitung zu prüfen
und sicherzustellen, dass alles richtig verarbeitet wird.

Zudem muss der Nutzer auf Fehleingaben hingewiesen werden - dazu müssen wir uns mit Messages (Nachrichten)
auseinandersetzen

(C) Brandeis Consulting📁

Validations

Prüfung der Eingaben zum Zeitpunkt des Speicherns (save).

Definition im Behavior

  validation validateProjectManager on save { create; 
                                              update; 
                                              field ProjectManager ;}

Implementierung mit ABAP

  METHOD validateassignee.

    SELECT DISTINCT status
      FROM zbc_status_text
      INTO TABLE @DATA(status_texts).

    READ ENTITIES OF zi_jb5_tasks IN LOCAL MODE
      ENTITY zi_jb5_tasks
        FIELDS ( assignee ) "the field to validate
        WITH CORRESPONDING #( keys )
      RESULT DATA(tasks).


    LOOP AT tasks INTO DATA(task) .
      IF NOT line_exists( status_texts[ status = task-status ] ).


        APPEND VALUE #( %tky = task-%tky ) TO failed-zi_jb5_tasks.

        APPEND VALUE #( %tky = task-%tky
                        %msg = NEW zbc_rap_message( 
                           msgv1 = |Status "{ task-status }" invalid|
                           textid = zbc_rap_message=>validation_failed
                           severity = if_abap_behv_message=>severity-error )
                        %element-status = if_abap_behv=>mk-on
                      ) TO reported-zi_jb5_tasks.


      ENDIF.
    ENDLOOP.
  ENDMETHOD.
(C) Brandeis Consulting📁

Messages

Bei Validierungen und an anderen Stellen können Situationen entstehen, in denen wir dem Nutzer etwas mitteilen möchten. Dazu wird das Interface if_abap_behv_message verwendet.

In der SAP Dokumentation ist eine Schritt-für-Schritt Anleitung zum Anlegen der zugehörigen ABAP Klassen.

Es können T100 Meldungen verwendet werden.

(C) Brandeis Consulting📁

Aufbau von Messages

Video zu Messages

new_message_with_text

APPEND VALUE #(  %tky = key-%tky ) TO failed-travel.
      APPEND VALUE #(  %tky                 = key-%tky
                       %state_area          = 'sampleValidation'
                        %msg              = new_message_with_text( 
                              text     = 'ein Text'
                              severity  = if_abap_behv_message=>severity-error )
                       %element-sample_field  = if_abap_behv=>mk-on ) TO reported-travel.
  ENDMETHOD.

new_message

APPEND VALUE #(  %tky = key-%tky ) TO failed-travel.
      APPEND VALUE #(  %tky                 = key-%tky
                       %state_area          = 'sampleValidation'
                        %msg              = new_message( 
                          id = 'bla'
                          number = '123'
                          v1 = |Der Wert { <bla>-blub } ist falsch|
                          severity = if_abap_behv_message=>severity-error
                                                    )
                       %element-sample_field  = if_abap_behv=>mk-on ) TO reported-travel.
  ENDMETHOD.
(C) Brandeis Consulting📁

Determinations - Ermittlungen

Feldwerte werden berechnet.
Zeitpunkte:

  • ON MODIFY - Nach der Änderung
  • ON SAVE - Beim Speichern

Definition im Behavior

  determination fillChangeFields on modify { create; }

Implementierung mit ABAP

METHOD fillChangeFields.

    MODIFY ENTITIES OF zi_jb6_tasks  IN LOCAL MODE
      ENTITY zi_jb6_tasks
        EXECUTE doSomething
        FROM CORRESPONDING #( keys ).

  ENDMETHOD.
(C) Brandeis Consulting📁