msg-Texte + msg-Variablen zusammenzufügen


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

msg-Texte + msg-Variablen zusammenzufügen

Beitragvon lexl » 26.12.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
lexl
ForumUser
 
Beiträge: 5
Registriert: 14.12.2005, 13:58
Dank erhalten: 0 mal

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Beitragvon black_adept » 26.12.2005, 16:28

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de
black_adept
Top Expert
 
Beiträge: 3184
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 553 mal
Ich bin: Freiberufler/in

Beitragvon Gast » 27.12.2005, 10:24

Such mal nach einem FUBA *Message_prepare*
Gast
 

Beitragvon Gast » 27.12.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...
Gast
 

Beitragvon lexl » 27.12.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.
 
lexl
ForumUser
 
Beiträge: 5
Registriert: 14.12.2005, 13:58
Dank erhalten: 0 mal

Beitragvon babap » 27.12.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
babap
Expert
 
Beiträge: 680
Registriert: 05.02.2004, 15:12
Dank erhalten: 1 mal

Beitragvon lexl » 27.12.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.)
lexl
ForumUser
 
Beiträge: 5
Registriert: 14.12.2005, 13:58
Dank erhalten: 0 mal

Beitragvon babap » 27.12.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ß
babap
Expert
 
Beiträge: 680
Registriert: 05.02.2004, 15:12
Dank erhalten: 1 mal

Beitragvon lexl » 28.12.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ß
lexl
ForumUser
 
Beiträge: 5
Registriert: 14.12.2005, 13:58
Dank erhalten: 0 mal

Beitragvon black_adept » 29.12.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
black_adept
Top Expert
 
Beiträge: 3184
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 553 mal
Ich bin: Freiberufler/in

Beitragvon Gast » 29.12.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.
Gast
 


Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Adobe Forms - Download - Keine Seiten
vor 11 Stunden von shimsham 2 Antw.
UTF-8 mit Funktionsbaustein
vor 13 Stunden von a-dead-trousers 4 Antw.
gelöst Fehler SAVE NOT ALLOWED bei F4IF_START_VALUE_REQUEST
vor 10 Stunden von AdrianSchm 1 Antw.
SAP Logon bei Aufruf WebGUI
Gestern von msfox 0 Antw.
Formatierung Textdatei aus Query und ABAP
vor 13 Stunden von wreichelt 5 Antw.

  Ähnliche Beiträge beta
gelöst SAPMV45A USEREXIT Itab Pos.Texte / Head Texte
04.02.2014, 15:03 von ewx 17 Antw.
Aufsplitten von Variablen
16.05.2007, 15:05 von Krueger 3 Antw.
gelöst Textsymbole & Variablen
14.06.2018, 12:52 von user0815 4 Antw.
Deklaration von Variablen
07.02.2019, 19:11 von DeathAndPain 20 Antw.
Dynamische Anzahl von Variablen?
15.08.2008, 13:56 von jensschladitz 1 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder