2016-07-26 29 views
0

So wurde mir die Aufgabe gegeben, zu versuchen, Qualitätsbenachrichtigungsdaten von ECC zu extrahieren. Der Pfad, den ich gewählt habe, ist ein BAPI zu finden, das die Daten in Tabellen extrahieren kann und einen FM unter Verwendung SE37 schrieb.Erhalten Sie Qualitätsbenachrichtigung SAP - BAPI_QUALNOT_GETDETAIL

Nach ein bisschen Googeln habe ich ein BAPI namens "BAPI_QUALNOT_GETDETAIL" gefunden. Das Problem, mit dem ich momentan konfrontiert bin, besteht darin, die Daten in die Exporttabellen des BAPIs zu bringen.

Notification in QMEL Table

Wie aus dem obigen Screenshot zu sehen die Details in der QMEL Tabelle zur Verfügung stehen.

Folgendes ist die Methode, die ich das BAPI implementiert habe;

CALL FUNCTION 'BAPI_QUALNOT_GETDETAIL' "QM Notification: Read Detail Data 
    EXPORTING 
    number =   '200360210'   " bapi2078_nothdre-notif_no Message Number 
    IMPORTING 
    notifheader_export = bapi2078_nothdre_t " bapi2078_nothdre BAPI Quality Notification Header 
    notifhdtext =  bapi2078_nothdtxte_t  " bapi2078_nothdtxte Text Fields for Notification Header 
TABLES 
    notlongtxt =    bapi2078_notfulltxti_t " bapi2078_notfulltxti Notification Long Text 
* notitem =     " bapi2078_notiteme Work Table for Notification Item 
* notifcaus =     " bapi2078_notcause Notification Cause 
* notifactv =     " bapi2078_notactve Work Structure Activities 
* notiftask =     " bapi2078_nottaske Work table for tasks 
* notifpartnr =    " bapi2078_notpartnre Partner(s) for Display 
* return =     " bapiret2  Return Parameter(s) 
    . " BAPI_QUALNOT_GETDETAIL 

Gibt es einen Fehler in der Art und Weise, dass ich das BAPI bin Aufruf, da ich nicht in der Lage bin, die Daten zu erhalten.

+2

Geben Sie eine Variable an, um die BAPIRET2-Nachrichten zu empfangen, und überprüfen Sie die Tabelle auf Fehlermeldungen. – vwegert

+0

@vwegert danke für den Zeiger, aus dem Ergebnis bekomme ich folgendes "Benachrichtigung 200360210 existiert nicht", obwohl es in der Tabelle eindeutig laut obigem Screenshot existiert. Sollte es eine Auffüllung in der Zahl geben, die ich als Eingabe wie "000200360210" gebe? – Isuru

Antwort

3

Sie müssen den Schlüssel genau so eingeben, wie er intern behandelt wird. Sehr wahrscheinlich wird ein conversion routine wie ALPHA vorhanden sein, der führende Nullen unterdrückt, wenn die Nummer angezeigt wird, und sie bei der Eingabe der Nummer hinzufügt. Sie können diese Routine in der Transaktion SE16N zur Überprüfung abschalten. Dies ist jedoch nur eine praktische Implementierung für den Benutzer - der Entwickler muss immer den vollständigen Wert angeben, einschließlich führender Nullen, wenn es sich um ein zeichenbasiertes Schlüsselfeld handelt (nicht für numerische Typen wie INT4).

+1

ja, das hat geklappt. Nur ein Zeiger, das nächste Mal, um die genaue Länge des Feldes zu finden, um die SE16N-Ergebnisse zu erweitern und den "Wert nicht konvertiert" zu prüfen :) – Isuru

+0

@Isuru, Korrigiere mich, wenn ich falsch liege, aber dies geschieht durch Klicken auf 'Einstellungen ändern (Strg + F12) ', und' Ausgabe ohne Konvertierung beenden 'in 'SE16N'. – gkubed

+0

@gkubed ja, aber ich wusste es nicht. Guter Tipp :) – Isuru