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.
4584
Views
Programm wird beendet bei Klick auf Icon
von Lucyalison » 14.01.2015 09:57 • Verfasst in Dialogprogrammierung
2
Antw.
1488
Views
Call Transaktion - Programm Beendet sich
von JohnLocklay » 22.08.2018 11:45 • Verfasst in ABAP® Core
0
Antw.
1254
Views
LSMW wird nicht beendet
von Jurbanchik » 11.06.2007 10:00 • Verfasst in ABAP® für Anfänger
2
Antw.
3144
Views
Programm aus anderem Programm heraus aufrufen
von Namp » 27.03.2006 13:34 • Verfasst in SAP - Allgemeines
0
Antw.
2509
Views
LSMW Programm in ABAP Programm überführen
von mherke » 07.02.2007 15:02 • Verfasst in ABAP® für Anfänger

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.