TRX ME22n: Persistente Error-Message anzeigen lassen

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

TRX ME22n: Persistente Error-Message anzeigen lassen

Beitrag von Elekam (ForumUser / 3 / 1 / 0 ) »
Hallo, ABAP Anfänger hier, hoffe ich bin hier richtig. Wenn mehr Info notwendig ist sagt Bescheid.

Ich versuche einen Error auszugeben wenn Warengruppe '800' in einer Bestellungsposition genutzt wird. Das funktioniert auch generell (Logik unten, korrigiert mich gerne), das Problem ist nur das der Error nur aufgerufen wird bei der Eingabe der Warengruppe. Und dieser Error wird dann meist nichtmal angezeigt weil anderer Errors Priorität haben, i.e. es wird "Bitte Sachkonto angeben" angezeigt, weil das noch nicht eingegeben wurde, und mein Error dann praktisch nie weil er vom anderen Error überschattet wurde beim Input.

Wie mache ich es so das mein Error bestehen bleibt und angezeigt wird wie im angehängten Screenshot? Ist das sehr kompliziert?

Andere Möglichkeit wäre meine Logik an einen anderen Ort im Programmablauf zu verschieben sodass es jedesmal aufgerufen wird bevor der User speichern kann, somit würde der Error definitiv nochmal aufgerufen werden und der Nutzer kann nicht gehen bevor er sich um den Error gekümmert hat (so wie es sein soll). Ich bin mir nur nicht sicher wo.

Ich glaube da kann mir auch keiner von euch helfen weil ihr da sehr viel mehr Info (über den Programmablauf) bräuchtet, welchen ich selber nicht 100% verstehe. Z.B. weiss ich nicht wann das Include 'ZXM06U32' aufgerufen wird in der meine Logik steht (mir wurde gesagt ich soll Sie dort hinzufügen). Den Verwendungsnachweisen zu folgen führt mich nur auf eine Schnitzeljagd.

Danke schonmal im Voraus.
Danke schonmal!

Gruß Elekam

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


Re: TRX ME22n: Persistente Error-Message anzeigen lassen

Beitrag von black_adept (Top Expert / 4080 / 125 / 934 ) »
Moin Elekam,

normalerweise würde ich den BADI ME_PROCESS_PO_CUST dafür verwenden und dort die Interfacemethode IF_EX_ME_PROCESS_PO_CUST~CHECK ausprogrammieren. ( Die hat eine Doku )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: TRX ME22n: Persistente Error-Message anzeigen lassen

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Meldungen lassen sich in diesem BADI mit dem Makro mmpur_message_forced (Include MM_MESSAGES_MAC) erstellen oder direkt mit der Klasse CL_MESSAGE_MM.

Code: Alles auswählen.

IF 1 = 0.
  MESSAGE e000(zmm_checks).
ENDIF.
cl_message_mm=>create( EXPORTING 
  im_msgid = 'ZMM_CHECKS' 
  im_msgty = 'E' 
  im_msgno = 000 
  im_force_collect = cl_mmpur_constants=>yes ).
Diese Meldungen werden gesammelt und im Popup angezeigt.

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag (Insgesamt 3):
black_adeptElekamThomas R.


Re: TRX ME22n: Persistente Error-Message anzeigen lassen

Beitrag von black_adept (Top Expert / 4080 / 125 / 934 ) »
@jocoder: Sehr schöne Crossreferenz! Das vermisse ich häufig genug.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: TRX ME22n: Persistente Error-Message anzeigen lassen

Beitrag von Elekam (ForumUser / 3 / 1 / 0 ) »
@jocoder Vielen Dank, das hat sehr geholfen.
Jetzt ist nur das Problem wenn man die Anlieferadresse rausnimmt, das dann ein Popup mit dem Titel "Abbruch" mit der Message kommt, und nach Bestätigung oder wegdrücken der Nachricht das Programm endet, aber es soll ja nur nicht weiterlaufen bis eine Adresse hinzugefügt ist. Wie mache ich es das die Message als Error angezeigt wird und das Programm nicht beendet, aber auch nicht weiterlaufen lässt wie bei den anderen Errors, z.B. "Bitte Sachkonto eingeben"?

Noch schlimmer wenn ich versuche die Adresse rauszunehmen und direkt speichere, es kommt meine Error-Nachricht mit dem Informations-Zeichen und dann der Error: "Systemfehler: Fehler in Methode PO_POST". Dann bleibt man in der Transaktion aber er geht aus der Bestellung raus.

Ich probiere/recherchiere mal weiter, jede Hilfe ist appreciated!
Danke schonmal!

Gruß Elekam

Re: TRX ME22n: Persistente Error-Message anzeigen lassen

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
@Elekam Vielleicht hilft dieses Listing. In meinen Tests hat es wie erwartet reagiert (Meldung angezeigt und in Popup gestellt, keine ungewollte Abbrüche beim Sichern).

Code: Alles auswählen.

METHOD IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM .
  DATA forbidden_material_group TYPE RANGE OF matkl.

  TRY.
     ztvarvc_reader=>get_select_option( EXPORTING name = 'ZME_FORBIDDEN_MATERIAL_GROUP'
       IMPORTING select_option = forbidden_material_group ).
    IF im_item->get_data( )-matkl IN forbidden_material_group.
      cl_contextfield_mm=>set_current_field( mmmfd_mat_grp ).
      IF 1 = 0.
        MESSAGE e000(zmm_checks).
      ENDIF.
      cl_message_mm=>create( EXPORTING
        im_msgid = 'ZMM_CHECKS'
        im_msgty = 'E'
        im_msgno = 000
        im_force_collect = cl_mmpur_constants=>yes ).
      im_item->invalidate( ).
    ENDIF.
   ##NO_HANDLER
    CATCH zcx_tvarvc.
  ENDTRY.
ENDMETHOD.
Die Meldungsnummer und Nachrichtenklasse musst du noch an deine Gegebenheiten anpassen.

Anstatt die Warengruppe(n) hart zu codieren, kann (können) diese in der Selektions-Option ZME_FORBIDDEN_MATERIAL_GROUP konfiguriert werden. (Transaktion STVARV). Mit der Utility-Klasse ZTVARVC_READER wird Sie in eine ABAP-Selektions-Option umgewandelt.

Code: Alles auswählen.

class ZTVARVC_READER definition
  public
  final
  create public .

public section.

  class-methods GET_SELECT_OPTION
    importing
      !NAME type TVARVC-NAME
    exporting
      !SELECT_OPTION type STANDARD TABLE
    raising
      ZCX_TVARVC .
  class-methods GET_PARAMETER
    importing
      !NAME type TVARVC-NAME
    exporting
      !VALUE type ANY
    raising
      ZCX_TVARVC .
protected section.
private section.

ENDCLASS.

CLASS ZTVARVC_READER IMPLEMENTATION.


  method GET_PARAMETER.

   SELECT low UP TO 1 ROWS FROM tvarvc INTO value
      WHERE name = name AND type = 'P'.
   ENDSELECT.
   IF sy-subrc <> 0.
      zcx_tvarvc=>parameter_not_found( name ).
   ENDIF.

  endmethod.


  method GET_SELECT_OPTION.
    DATA: var TYPE tvarvc.

    CLEAR: select_option.
    SELECT sign opti low high FROM tvarvc INTO CORRESPONDING FIELDS OF var
      WHERE name = name AND type = 'S'.

      APPEND INITIAL LINE TO select_option ASSIGNING FIELD-SYMBOL(<s_option>).
      ASSIGN COMPONENT 'SIGN' OF STRUCTURE <s_option> TO FIELD-SYMBOL(<sign>).
      ASSERT sy-subrc = 0.
      <sign> = var-sign.
      ASSIGN COMPONENT 'OPTION' OF STRUCTURE <s_option> TO FIELD-SYMBOL(<option>).
      ASSERT sy-subrc = 0.
      <option> = var-opti.

      ASSIGN COMPONENT 'LOW' OF STRUCTURE <s_option> TO FIELD-SYMBOL(<low>).
      ASSERT sy-subrc = 0.
      <low> = var-low.
      ASSIGN COMPONENT 'HIGH' OF STRUCTURE <s_option> TO FIELD-SYMBOL(<high>).
      ASSERT sy-subrc = 0.
      <high> = var-high.

    ENDSELECT.
    IF sy-subrc <> 0.
      zcx_tvarvc=>select_option_not_found( name ).
    ENDIF.

  endmethod.

ENDCLASS.

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2497
Views
Dynpro nach Error-Message hell prozessieren? Normal/Table C
von CrazyProg » 11.06.2005 08:41 • Verfasst in Dialogprogrammierung
4
Antw.
6102
Views
Feld in Me21n / Me22n nur anzeigen über BADI
von tomsto » 07.12.2007 09:56 • Verfasst in ABAP Objects®
2
Antw.
1296
Views
0 anzeigen lassen mit ALV-OO
von L0w-RiDer » 09.11.2018 10:34 • Verfasst in ABAP® für Anfänger
0
Antw.
929
Views
Vorgangsarten anzeigen lassen
von Kai999 » 26.04.2017 16:38 • Verfasst in ABAP® für Anfänger
0
Antw.
6251
Views
Änderungsbelege anzeigen lassen
von Margolwes » 21.10.2010 09:16 • Verfasst in ABAP® Core

Über diesen Beitrag



Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.