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 ) » 26. Dez 2005 12:17

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


Beitrag von black_adept (Top Expert / 3268 / 55 / 588 ) » 26. Dez 2005 16:28

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) » 27. Dez 2005 10:24

Such mal nach einem FUBA *Message_prepare*

Beitrag von Gast ( / / 0 / 3 ) » 27. Dez 2005 12:02

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 ) » 27. Dez 2005 12:36

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 / 677 / 1 / 1 ) » 27. Dez 2005 14:54

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 ) » 27. Dez 2005 15:58

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 / 677 / 1 / 1 ) » 27. Dez 2005 19:55

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 ) » 28. Dez 2005 17:10

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 / 3268 / 55 / 588 ) » 29. Dez 2005 12:57

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 ) » 29. Dez 2005 14:27

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

Aktuelle Forenbeiträge

Mini-SAP Einstiegs Logo ändern
vor 12 Stunden von Tron 2 / 157
CSV-Daten in richtige Infotyp-spalte(itab)
Gestern von DeathAndPain 3 / 74
Datum vorbelegen Select-Option in Variante gelöst
Gestern von DeathAndPain 11 / 289
Lookup Tabelle in Methode lesen und erweitern
Gestern von DeathAndPain 10 / 257
BOPF Key auslesen S4
Gestern von Tron 2 / 44

Unbeantwortete Forenbeiträge

CMR-Frachtbrief PDF Druckprogramm S4/HANA
vor 2 Tagen von ichse18577 1 / 44
Absenderland in Transaktion BP setzen
vor 5 Tagen von SAP_ENTWICKLER 1 / 118
Funktionsbaustein QPMK_MSTCHA_VERS_CREATE
vor einer Woche von SAP_ENTWICKLER 1 / 150
OLE 2 Excel Datum konvertieren
vor einer Woche von Kerstin 1 / 117