Message E oder W beendet das Programm

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Message E oder W beendet das Programm

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Hi,

ich habe in einer ALV Liste ein Event registriert, dass beim verändern
eines Wertes angetriggert wird.
Das klappt auch super.
Innerhalb der Eventverarbeitung gebe ich eine Message aus. Ich möchte
eigentlich eine Fehlernachricht mit E ausgeben. Diese kommt auch. Sobald
ich bestätige, bin ich aus dem Programm raus. Ich habe es auch schon
mit einer W Nachricht versucht, diese wird aber rot dargestellt und zeigt
das selbe Verhalten.

Einzig die S Nachricht funktioniert, aber das wäre falsch, ist na nicht grün,
wenn es fehlerhaft ist.

Jemand eine Idee woran das liegt?

Code: Alles auswählen.

class lcl_event_receiver implementation.
  method handle_data_changed.

    data: ls_good type lvc_s_modi,
          error_in_data(1) type c,
          neu_einheit type meins,
          check_meinh type meinh,
          neu_matnr type matnr,
          neu_menge type z001_sapin02p-menge.

    error_in_data = space.
*   break-point.
    loop at er_data_changed->mt_good_cells into ls_good.
      case ls_good-fieldname.

* CHECK: Ist die Menge mit gültigen Werten gefüllt?
        when 'MENGE_3'.
          call method er_data_changed->get_cell_value
            EXPORTING
              i_row_id    = ls_good-row_id
              i_fieldname = ls_good-fieldname
            IMPORTING
              e_value     = neu_menge.


          call method er_data_changed->get_cell_value
            EXPORTING
              i_row_id    = ls_good-row_id
              i_fieldname = 'EINHEIT_3'
            IMPORTING
              e_value     = neu_einheit.

          if neu_einheit = ' '.
            MESSAGE w002(z001).
         error_in_data = 'X'.

          endif.


* CHECK: wurde eine gültige Mengeneinheit eingegeben?
        when 'EINHEIT_3'.
          call method er_data_changed->get_cell_value
            EXPORTING
              i_row_id    = ls_good-row_id
              i_fieldname = ls_good-fieldname
            IMPORTING
              e_value     = neu_einheit.

          call method er_data_changed->get_cell_value
            EXPORTING
              i_row_id    = ls_good-row_id
              i_fieldname = 'MATERIAL'
            IMPORTING
              e_value     = neu_matnr.

          select single meinh from marm
             into check_meinh
             where matnr = neu_matnr
             and meinh = neu_einheit.

          if sy-subrc <> 0.
            MESSAGE w002(z001).
            error_in_data = 'X'.

          endif.

          if neu_einheit = ' '.
            MESSAGE w002(z001).
          endif.



      endcase.


      if ls_good-fieldname <> 'ERFASST' and error_in_data = ' '.

        call method er_data_changed->modify_cell
          EXPORTING
            i_row_id    = ls_good-row_id
            i_fieldname = 'ERFASST'
            i_value     = 'C'.
      endif.



    endloop.
  endmethod.                    "handle_data_changed

endclass.                    "lcl_event_receiver IMPLEMENTATION


gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
Der Messagetype bestimmt das Verhalten, das ist schon richtig so.

Einfach mal F1 auf "Message", da wird das recht ausführlich erklärt.

Ich glaube das funktioniert nicht bei jedem Release, aber mittlerweile kann man einen Typ mitgeben und die Nachricht wie einen anderen Typ anzeigen lassen:

Code: Alles auswählen.

MESSAGE z001 TYPE 'I' NUMBER 002 DISPLAY LIKE 'E'. 

Beitrag von codierknecht (ForumUser / 84 / 0 / 0 ) »
Perfekt, das klappt.

Das Verhalten liegt daran, da die Message kontextabhängig ist.
Das Event wird offenbar außerhalb des PAI aufgerufen, was
zur Rückkehr zum Programmaufrugpunkt führt. So hab ich es
zumindest gerade gelesen

Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Am besten immer eine I-Message mit Display like e und dann dannach (weils ja ne I ist) RETURN.

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

(oh mann, für diese Frage wäre das Coding nicht notwendig gewesen ...)

Aber jetzt zum Thema:

Statt einer MESSAGE kann man auch den Funktionsbaustein POPUP_TO_CONFIRM aufrufen.

Zwei Textvariablen aus den Report-Texten (Überschrift und Mitteilung) und ein paar Ankreuzfelder machen daraus eine prima Rückmeldung für den Anwender.

Gruß
babap

Seite 1 von 1

Vergleichbare Themen

6
Antw.
4600
Views
Programm wird beendet bei Klick auf Icon
von Lucyalison » 14.01.2015 09:57 • Verfasst in Dialogprogrammierung
2
Antw.
1510
Views
Call Transaktion - Programm Beendet sich
von JohnLocklay » 22.08.2018 11:45 • Verfasst in ABAP® Core
0
Antw.
1264
Views
LSMW wird nicht beendet
von Jurbanchik » 11.06.2007 10:00 • Verfasst in ABAP® für Anfänger
2
Antw.
3248
Views
Programm aus anderem Programm heraus aufrufen
von Namp » 27.03.2006 13:34 • Verfasst in SAP - Allgemeines
0
Antw.
2629
Views
LSMW Programm in ABAP Programm überführen
von mherke » 07.02.2007 15:02 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 3 Minuten von msfox 20 / 11206
Dialog-Container mit Toolbar/Status
vor 21 Stunden von black_adept gelöst 27 / 4315
IT0024 Qualifikationen CP-ID
vor 23 Stunden von ArjenR 1 / 211

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 3 Minuten von msfox 20 / 11206
Dialog-Container mit Toolbar/Status
vor 21 Stunden von black_adept gelöst 27 / 4315
IT0024 Qualifikationen CP-ID
vor 23 Stunden von ArjenR 1 / 211

Unbeantwortete Forenbeiträge

IT0024 Qualifikationen CP-ID
vor 23 Stunden von ArjenR 1 / 211
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 3142
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9735