msg-Texte + msg-Variablen zusammenzufügen

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

msg-Texte + msg-Variablen zusammenzufügen

Beitrag von lexl (ForumUser / 5 / 0 / 0 ) »
Hallo,

ich würde gerne die Fehlermeldungen die bei einer Call Transaction (Batch) auftreten in eine interne Tab speichern.

Die Call Transaction funktioniert auch ohne Probleme,

Code: Alles auswählen.

CALL TRANSACTION tacode USING bdcdata_tab
                        OPTIONS FROM opt
                        MESSAGES INTO msg_tab.
und in meiner Tabelle habe ich auch die Werte die in der Struktur BDCMSGCOLL vorhanden sind stehen.
(TCODE, DYNAME, DYNUMB, MSGTYP, MSGSPRA, MSGID, MSGNR, MSGV1, MSGV2, MSGV3, MSGV4, ENV, FLDNAME)
An die enstrechenden Fehlermeldungen gelange ich auch über die Tabelle t100. Nur leider weiß ich nicht wie ich die Message Variablen in den entsprechenden Message Text schreiben kann.

Darum meine Frage, gibt es eine Funktion die einem eine Fehlermeldung zusammensetzt und wenn ja welche?

Gruß, lexl

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


Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
Such mal nach einem FUBA *Message_prepare*

Beitrag von Gast ( / / 0 / 3 ) »
Danke, der FUBA ist genau das was ich suchte...
Leider sind die Felder MSGV1 bis MSGV2 der Struktur BDCMSGCOLL (Sammeln von Meldungen im SAP-System) nicht als Übergabewert zulässig.

Und die direkte Abfrage der SY-MSGV1 bis SY-MSGV4 ist mir ein wenig zu unsicher...

Code: Alles auswählen.

  CALL FUNCTION 'MESSAGE_PREPARE'
    EXPORTING
      LANGUAGE                     = msg_wa-msgspra
      msg_id                       = msg_wa-msgid
      msg_no                       = msg_wa-msgnr
      MSG_VAR1                     = SY-MSGV1
      MSG_VAR2                     = SY-MSGV2
      MSG_VAR3                     = SY-MSGV3
      MSG_VAR4                     = SY-MSGV4
    IMPORTING
      MSG_TEXT                     = err_msg.
*    EXCEPTIONS
*      FUNCTION_NOT_COMPLETED       = 1
*      MESSAGE_NOT_FOUND            = 2
*      OTHERS                       = 3.
  IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
Aber sonst klasse Tipp, evt. Kann man mit einer interne Tabelle das Problem noch beheben. Werde ich später mal noch ausprobieren...

Beitrag von lexl (ForumUser / 5 / 0 / 0 ) »
So, wunderbar...
Durch erstellen einer entsprechenden Internen Tabelle
kann der FUBA ohne Probleme genutzt werden.

Code: Alles auswählen.

* Type: msgcoll
* ´´´´´´´´´´´´´´´´´´´´
* Aufbau gleich der Struktur BDCMSGCOLL 
* Sammeln von Meldungen im SAP-System
*
* Komponenten:
* - TCODE
* - DYNAME
* - DYNUMB
* - MSGTYP
* - MSGSPRA
* - MSGID
* - MSGNR
* - MSGV1          -> sy-msgv1
* - MSGV2          -> sy-msgv2
* - MSGV3          -> sy-msgv3
* - MSGV4          -> sy-msgv4
* - ENV
* - FLDNAME
* ´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
TYPES: BEGIN OF msgcoll,
        tcode   LIKE bdcmsgcoll-tcode,
        dyname  LIKE bdcmsgcoll-dyname,
        dynumb  LIKE bdcmsgcoll-dynumb,
        msgtyp  LIKE bdcmsgcoll-msgtyp,
        msgspra LIKE bdcmsgcoll-msgspra,
        msgid   LIKE bdcmsgcoll-msgid,
        msgnr   LIKE bdcmsgcoll-msgnr,
        msgv1   LIKE sy-msgv1,
        msgv2   LIKE sy-msgv2,
        msgv3   LIKE sy-msgv3,
        msgv4   LIKE sy-msgv4,
        env     LIKE bdcmsgcoll-env,
        fldname LIKE bdcmsgcoll-fldname,
      END OF msgcoll.
      
DATA: msg_wa  TYPE msgcoll,
      msg_tab TYPE TABLE OF msgcoll.

Beispiel für Aufruf:

Code: Alles auswählen.

  LOOP AT msg_tab INTO msg_wa.
* ---------------------------------------- Ermitteln der Message Textes
    CALL FUNCTION 'MESSAGE_PREPARE'
         EXPORTING
              language               = msg_wa-msgspra
              msg_id                 = msg_wa-msgid
              msg_no                 = msg_wa-msgnr
              msg_var1               = msg_wa-msgv1
              msg_var2               = msg_wa-msgv2
              msg_var3               = msg_wa-msgv3
              msg_var4               = msg_wa-msgv4
         IMPORTING
              msg_text               = err_msg
         EXCEPTIONS
              function_not_completed = 1
              message_not_found      = 2
              OTHERS                 = 3.

    CASE sy-subrc.
      WHEN 1.
        "message
      WHEN 2.
        "message
      WHEN 3.
        "message
    ENDCASE.

    WRITE: / err_msg.

  ENDLOOP.

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

scheint ja zu funktionieren.

Was passiert jetzt eigentlich mit den als "Fließtext" in der Tabelle vorliegenden Meldungen?

Werden sie angezeigt, ausgedruckt, gespeichert???

Für all das gibt es tatsächlich schon SAP-Funktionen, die mit den gesammelten Meldungen aus der Batch-Verarbeitung genau das machen.

Oder gibt es da einen besonderen Verwendungszweck, der mit den SAP-Bausteinen nicht funktioniert??

Gruß
babap

Beitrag von lexl (ForumUser / 5 / 0 / 0 ) »
Hallo,

kann gut möglich sein das es noch eine bessere Lösung für das was ich machen will gibt.
Arbeite jetzt noch nicht so lange mit ABAP und SAP, 20 Tage vielleicht, und kenn mich noch nicht ganz so toll aus zwischen dan ganzen Tabellen und Funktionen die SAP so besitzt.

Ich muss ein Report schreiben der verschiedene Dinge abprüft und in bestimmten Fällen über eine Call Transaction (TA: co02 - Fertungsauftrag ändern) ein paar Daten ändert. Das ganze soll als Batch laufen, der User soll also nichts von all dem mitbekommen.
Diverse Fehlermeldungen die auftreten können will ich darum in der Interne Tabelle speichern und am Ende des Batch als Liste ausgeben lassen.

(Der Code, den ich vorhin geschrieben habe ist noch nicht fertig, das war jetzt nur zum testen ob das ganze auch funktioniert.)

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

für das was du machen willst, brauchtst Du garnichts zu tun.

Alle Messages, die während eines Batch-Jobs abgesetzt werden, landen im Job-Protokoll: "voila".
Du könntest jetzt alle Messages aus der Tabelle "abloopen" und absetzen, aber wahrscheinlich brauchst Du auch das nicht zu tun.

Normalerweise werden auch die Messages der aufgerufenen Programme im Log gesammelt.

Das Job-Log enthält nachher das gewünschte Ergebnis.

Gruß

Beitrag von lexl (ForumUser / 5 / 0 / 0 ) »
Hallo,

Danke, werde ich mir nachdem ich den Report fertig habe mal noch anschauen und gegebenfals noch optimieren. Immoment erfüllt das ganze, so wie es gerade ist, seinen Zweck. Sollte ich den Report nicht in ein paar Tagen zum Ech-Start fertig bekommen würde ich s gleich ausprobieren.

Doch leider bin ich noch nicht ganz fertig und der Schuh drückt noch an einer anderen Stelle.

Die Call Transaction läuft im Grunde, so wie ich das gerade beurteilen kann. Zumindet komme ich über den Einstiegsbildschirm (0110) der 'co02' mal in die Transaktion zum ändern der Fertigungsaufträge (-> Kopfdaten) hinein.

Code: Alles auswählen.

  
...
  PERFORM bdc_dynpro          USING 'SAPLCOKO1'
                                    '0110'.
  PERFORM bdc_field           USING 'BDC_CURSOR'
                                    'CAUFVD-AUFNR'.
  PERFORM bdc_field           USING 'CAUFVD-AUFNR'
                                    aufnr.
  PERFORM bdc_field           USING 'R62CLORD-FLG_OVIEW'
                                    'X'.
  PERFORM bdc_field           USING 'BDC_OKCODE'
                                    '/00'.
...


FORM bdc_dynpro USING program
                      dynpro.
  CLEAR bdcdata_wa.
  bdcdata_wa-program = program.
  bdcdata_wa-dynpro = dynpro.
  bdcdata_wa-dynbegin = 'X'.
  APPEND bdcdata_wa TO bdcdata_tab.
ENDFORM.

FORM bdc_field USING fnam
                     fval.
  CLEAR bdcdata_wa.
  bdcdata_wa-fnam = fnam.
  bdcdata_wa-fval = fval.
  APPEND bdcdata_wa TO bdcdata_tab.
ENDFORM.

FORM bdc_transaction USING tacode.
  break stettler.
  CALL TRANSACTION tacode USING bdcdata_tab
                          OPTIONS FROM opt
                          MESSAGES INTO msg_tab.
  IF sy-subrc <> 0.
    PERFORM err_list.
  ENDIF.
ENDFORM.
Wenn ich jetzt in die Kopfdatenübersicht der Fertigungsaufträge komme (Dynpro 0115 / Funktionsgruppe coko1) bricht die Call Transaction ab. Ich bekomme die Fehlermeldung "Batchinput-Daten für Dynpro SAPLCOKO1 sind nicht vorhanden".
Problem ist, das ich nicht weiß was SAP auf dem Dynpro erwartet und wie ich dann von hier aus weiter zu der Übersicht der Abrechnungsvorschriften gelange (die sich im menü Kopf -> Abrechnungsvorschirften befinden.)

Gruß

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Zum Testen:

Wenn du die genannte Fehlermeldung bekommst, ruf doch den Call Transaction nochmals auf aber setz vorher den Anzeigemodus in den Optionen auf "Sichtbar abspielen" oder "Nur Fehler anzeigen". Dann siehst du doch was auf dem Dynpro drauf ist und was falsch läuft. ( Mein Tipp ist ja ein Popup, welches auf fehlende Verfügbarkeiten oder fehlerhafte Kalkulationen hinweist )


Anderer Frage: Du hast aber schon die Namen der Programme und Dynpros für deine Ablauffolge über die SHDB ( Aufzeichnung ) generieren lassen, oder?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
Anfangs nein, habe mir die Informationen in der entsprechenden Transaction zusammengesucht.

Habe aber mittlerweile schon mal einen gefunden der soetwas in der Art schon gemacht hat und der konnte mir dann auch helfen und hat mir unter anderem auch die Transaction 'shdb' genannt über die ich das ganze nun gemacht habe.

Und siehe da es funktioniert...

Ist schon ein wenig blöd wenn man was an nem System machen sollte mit dem man sich ncoh nicht so auskennt. Aber nur so lernt man ja auch...

Danke für die Tipps von euch bisher. Die haben mir wirklich alle schon sehr geholfen.

Seite 1 von 1

Vergleichbare Themen

17
Antw.
12303
Views
SAPMV45A USEREXIT Itab Pos.Texte / Head Texte
von Luigi91 » 31.01.2014 09:31 • Verfasst in ABAP® für Anfänger
2
Antw.
687
Views
Variablen im Workflow
von Nordlicht » 17.06.2021 08:19 • Verfasst in Dialogprogrammierung
3
Antw.
2765
Views
Aufsplitten von Variablen
von Ranganga » 16.05.2007 13:59 • Verfasst in ABAP® für Anfänger
20
Antw.
4632
Views
Deklaration von Variablen
von Sebastian82 » 06.02.2019 16:25 • Verfasst in ABAP® für Anfänger
4
Antw.
5419
Views
Textsymbole & Variablen
von user0815 » 08.06.2018 11:14 • Verfasst in ABAP® für Anfänger

Ü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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 72
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141