BAPI umwandeln

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

BAPI umwandeln

Beitrag von SaskuAc (Specialist / 321 / 37 / 44 ) »
Hallo,

aus einem Funktionsbaustein bekomme ich eine Tabelle mit folgender Struktur:

BAPI_STATUS_RESULT

Diese würde ich gerne in eine Struktur des folgenden Typs umwandeln:

BAPIRET2

Das Problem hierbei ist, dass ich die Variablen für die Messages nicht mitgeliefert bekomme, nur die reine Message. ( in der die Variablen ja schon eingebunden sind ).


Gibt es vielleicht einen Funktionsbaustein oder dergleichen der den oberen Status in den unteren umwandelt?
es geht mir hierbei eigentlich nur um die variablen, dass ich diese richtig ausgeben kann.



vielen dank!

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


Re: BAPI umwandeln

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »
Dazu ist mir nichts bekannt.
Aus einem aufbereiteten Text die Variablen wieder auszulesen ist meiner Meinung nach auch (fast) unmöglich.
Man müsste anhand des Nachrichtentextes aus der T100 die Positionen der Platzhalter im aufbereiteten Text bestimmen und dann die Variablen dementsprechend extrahieren.
Wo es problemenatisch wird sind Nachrichtentexte in der Form '& & & &' oder ähnliches. Welches Leerzeichen im aufbereiteten Text ist das erste im Nachrichtentext usw.?
Dann gibt es auch noch das Längenproblem: Wenn die Variable zu lange ist und der aufbereitete Text dadurch in Wirklichkeit länger ist als die 73 Zeichen dann geht gar nichts mehr.

Ich würde eher da ansetzen wo die Struktur/Tabelle BAPI_STATUS_RESULT befüllt wird und eine Möglichkeit suchen die notwendigen Daten dort abzugreifen.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: BAPI umwandeln

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Tach.

Ich sehe in meinem System 4 Verwendungsstellen der Struktur. Aus jedem dieser BAPIs kommt auch eine Return-Struktur vom Typ BAPIRETURN1 raus. Wäre es vieleicht ein Ansatzpunkt, da mal nachzusehen?

Grüße,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Re: BAPI umwandeln

Beitrag von SaskuAc (Specialist / 321 / 37 / 44 ) »
Danke euch beiden!

leider ist beides nicht möglich. Aus meinem Funktionsbaustein bekomme ich nämlich nur die BAPI_STATUS_RESULT zurück - leider!! - Und andere FuBa die das zurückgeben gibts bei unseren Systemen, auch wieder leider, nicht.
Und da es ein SAP Standard FuBa ist, den ich nicht bearbeiten darf ^^, kann ich da leider auch nichts machen ... aber dass ich mir eventuell eine Methode zum auslesen schreibe wäre eine Möglichkeit .. Mal sehen ob sich in der Richtung was machen lässt ..


Macht es einen Unterschied ob nur "&" drinnen steht oder ob "&1", "&2", usw. drinnen steht? Oder wäre das nur zur Orientierung für den Programmierer gedacht? Das wäre jetzt noch interessant, weil wenn es keinen Unterschied macht lässt sich das ganze relativ leicht programmieren.

Re: BAPI umwandeln

Beitrag von a-dead-trousers (Top Expert / 4419 / 224 / 1189 ) »
SaskuAc hat geschrieben:Macht es einen Unterschied ob nur "&" drinnen steht oder ob "&1", "&2", usw. drinnen steht?
&n bedeutet die Nte-Variable aus dem Aufruf von MESSAGE.
& bedeutet die "nächste" Variable aus dem Aufruf von MESSAGE.

Beispiel:

Code: Alles auswählen.

MESSAGE... WITH '-Eins' ' Zwei' 'Drei' 'Vier'.
Nachrichtentext "Hallo & & & -&" ergibt:

Code: Alles auswählen.

'Hallo -Eins  Zwei Drei -Vier'
Nachrichtentext "Hallo &4 &2 &3 -&1" ergibt:

Code: Alles auswählen.

'Hallo Vier  Zwei Drei --Eins'
Wie schon gesagt wäre eine derartige Lösung höchst fehleranfällig und ist bei Weitem keine 100%-Lösung (Ich würde von max. 60% ausgehen)
Man beachte das Extra Leerzeichen vor 'Zwei' und das '-' in meinem obigen Beispiel. Außerdem sind Nachrichten sprachabhängig und können daher unterschiedlich aufgebaut sein.
SaskuAc hat geschrieben:Und da es ein SAP Standard FuBa ist, den ich nicht bearbeiten darf ^^, kann ich da leider auch nichts machen
Die Zauberwörter lauten "Standardänderung" bzw. "impliziter Erweiterungspot" :evil:
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: BAPI umwandeln

Beitrag von SaskuAc (Specialist / 321 / 37 / 44 ) »
a-dead-trousers hat geschrieben:
SaskuAc hat geschrieben:Und da es ein SAP Standard FuBa ist, den ich nicht bearbeiten darf ^^, kann ich da leider auch nichts machen
Die Zauberwörter lauten "Standardänderung" bzw. "impliziter Erweiterungspot" :evil:
Ich sagte nicht, dass ich nicht kann, ich darf halt einfach nicht. Also diesen einen FuBa darf ich nicht bearbeiten. Dazu haben wir eine Liste, und gerade da fällt dieser mit rein.
a-dead-trousers hat geschrieben: Wie schon gesagt wäre eine derartige Lösung höchst fehleranfällig und ist bei Weitem keine 100%-Lösung (Ich würde von max. 60% ausgehen)
Man beachte das Extra Leerzeichen vor 'Zwei' und das '-' in meinem obigen Beispiel. Außerdem sind Nachrichten sprachabhängig und können daher unterschiedlich aufgebaut sein.
Die Probleme mit der Sprache hätte ich schon gelöst, dazu habe ich schon verschiedene Lösungen. Aber die Sache mit dem extra Leerzeichen und dem '-' ist richtig, sowas könnte Probleme bereiten.


Ich versuch mich heute mal an so nen Funktionsbaustein zu setzen, vielleicht wird ja doch was daraus!

Re: BAPI umwandeln

Beitrag von black_adept (Top Expert / 4116 / 129 / 951 ) »
Bau dir ruhig deinen Baustein - ich denke dass du damit ganz gute Ergebnisse erzielen kannst. A-d-t hat ja schon gezeigt, dass du keine exakte Lösung für alle Fälle garantieren kannst. Aber bei SAP-FuBas kannst du ja erst mal hoffen, dass SAP nicht so sinnfreie Meldungen wie "& & & &" verwendet sondern schon etwas detailliertere Fehlermeldungen rausschiebt. Und für diese sollten beim Gegenüberstellen von Rohmeldung mit Platzhaltern und empfangener Meldung doch recht zuverlässig die Platzhalter extrahiert werden können.
Nimm z,B. die Meldung 061(PLMDISCALC) = "Kopf &1 verwendet Position &2 in PSP-Gruppen-STL &3 (&4)". Dieses ist ein recht typisches Beispiel von Meldungen, bei denen die Platzhalter getrennt sind. In der Theorie könnte man jetzt versuchen &1-&4 so geschickt zu wählen, dass eine von dir geschriebene Routine in die Irre geführt wird. Aber Irreführen von Programmierern ist meines Wissens nicht der Hauptzweck von SAP-Fubas.
Selbst für a-d-ts Beispiel liefert z.B. die Regex Hallo\s(.*)\s(.*)\s(.*)\s-(.*) dir schon recht brauchbare Submatches zurück.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: BAPI umwandeln

Beitrag von JHM (Top Expert / 1201 / 1 / 197 ) »
SaskuAc hat geschrieben:Ich sagte nicht, dass ich nicht kann, ich darf halt einfach nicht. Also diesen einen FuBa darf ich nicht bearbeiten. Dazu haben wir eine Liste, und gerade da fällt dieser mit rein.
Welcher Standard FuBa ist es denn genau?

Bei den vier BAPIs, die die Struktur verwenden, wird die Rückgabetabelle immer mit der gleichen FORM aufgebaut. Diese FORM verwendet wiederum nur FuBas aus der FuGr CO1M. Wenn man den FuBa METHOD_LOG_READ anschaut dann sieht man, dass SAP da bereits etwas Vorbereitet hat: die Fehlermeldungen kann man ins Memory exportieren lassen, dann kann man diese nach dem BAPI-Call diese einfach wieder importieren.

Code: Alles auswählen.

* FuBa: METHOD_LOG_READ
* Hilfslösung, da BAPIs kein komplettes Message-Protokoll zurück liefern
  DATA: FLG_EXPORT_TO_MEMORY.
  IMPORT FLG_EXPORT_TO_MEMORY FROM MEMORY ID 'CO1M_MEMORY_EXPORT'.
  IF FLG_EXPORT_TO_MEMORY = 'X'.
    EXPORT FLG_EXPORT_TO_MEMORY T_METHOD_LOG T_MSG_LOG T_MSGOBJ_LOG
           TO MEMORY ID 'CO1M_MEMORY_EXPORT'.
  ENDIF.
Hier: https://archive.sap.com/discussions/thread/197379 gibt es das fertige Coding dazu.


Wäre die einfachste Lösung, da ADT btw auch mit seiner Annahme nicht irrt:

Code: Alles auswählen.

* FuBa: MESSAGE_TEXTS_READ
*     kein Messagetext vorhanden => Variablen aneinanderhängen
      CONCATENATE T_MSG_LOG_IMP-MSGV1 T_MSG_LOG_IMP-MSGV2
                  T_MSG_LOG_IMP-MSGV3 T_MSG_LOG_IMP-MSGV4
                  INTO TEXTLINE SEPARATED BY ' '.
Das wird man nicht mehr "zurück" auf genau eine Fehlermeldung konvertieren.
Gruß Hendrik

Re: BAPI umwandeln

Beitrag von SaskuAc (Specialist / 321 / 37 / 44 ) »
Danke für eure Hilfe!

Habe jetzt den FuBa soweit erstellt, funktioniert auch. Allerdings eine Fehlerquelle könnte es noch geben.
Kann es sein, dass man "&" und "&1", heißt beide Varianten in einer Meldung verwendet? Wenn ja dann schmeißt es das komplett durcheinander. Ansonsten bin ich soweit fertig ^^

Welchen FuBa ich hier verwende spielt soweit keine Rolle.


Ich habe jetzt einfach die Meldung genommen, an den Variablen Stellen gesplittet. nach dem splitten an den stellen der variablen angesetzt und ausgelesen bis der part kommt an den gesplittet wurde. Dann in eine export variable geschrieben und das wars.

Schlussendlich funktioniert es super. Habe es mit allen Fehlermeldungen die durch den FuBa geschmissen werden - die auch für das programm relevant sind - getestet und hat funktioniert.


Danke jedoch für eure hilfe und für die Ideen.! - Brauche jetzt nur noch die Antwort auf die Frage oben, ob man beide varianten mischen kann?

Re: BAPI umwandeln

Beitrag von black_adept (Top Expert / 4116 / 129 / 951 ) »
Gibt es leider ( aber sehr selten ) und die, die auftreten sind beim ersten Drüberschauen alles Sachen, wo der Programmierer sich wohl vertan hat.

Beispiele:
Normale Schreibfehler
829(SRM_GENERIC_SP) = &: &1 Elemente erfolgreich gelöscht, Fehler bei &2 Elementen
oder aus versehen verwendete Platzhalter
133(S_UNIFIED_CON) = Objekttyp &1 wird noch nicht als Drag&Drop-Destination unterstützt
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: BAPI umwandeln

Beitrag von SaskuAc (Specialist / 321 / 37 / 44 ) »
Puh, Dann muss ich gucken ob jetzt speziell für meinen Fall solche Sachen auftreten, wenn nicht dann is es gut.

Weil die Zeit um mir dafür etwas zu Überlegen habe ich nicht ^^ - werde wohl in dem Fall sagen das eine spezifische Fehlermeldung nicht verfügbar ist, und man wenn dann dem Admin bescheid sagen soll ( und man die Fehlernachrichten nummer + ID mitgeben soll ) .. ansonsten wird das wohl nix ..

Re: BAPI umwandeln

Beitrag von black_adept (Top Expert / 4116 / 129 / 951 ) »
Komm - so wild ist das nicht.
Such dir zunächst ein nicht in Meldungen vorkommendes Zeichen - z.B. einen Tabulator. Dann ersetzt zu "&1"-"&4" durch "<tabulator>1"-"<tabulator>4". Alle jetzt noch vorkommenden "&" sind frei und hier ersetzt du der Reihe nach & durch &1, & durch &2, .... ( Wenn jemand so doof 5 oder mehr & zu verwenden ersetzt du alles nach &4 durch &5 ). Danach dann wieder alle <tabulator> zurück.
Egal was vorher verwendet wurde - nun hast du eine sortenreine Meldung die nur &1-&4 und keine freien & enthält ( ok - und evtl. &5 falls jemand zu doof war. Und ja - so einen Mist gibt es )
Meldung 004(CMC) = "Die Komponente &1 &2 ist nicht dem Auftrag &4 Vorgang &5 zugeordnet"
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

1
Antw.
3194
Views
per BAPI-Control über Visual Basic ein BAPI aufrufen
von Kaiwalker » 25.07.2005 15:22 • Verfasst in ABAP® Core
0
Antw.
1405
Views
File in XML umwandeln
von khb » 10.11.2006 13:18 • Verfasst in ABAP® Core
1
Antw.
1645
Views
Liste zu ALV umwandeln
von managero » 06.06.2008 10:31 • Verfasst in ABAP® für Anfänger
3
Antw.
2625
Views
exponentialzahl umwandeln
von SaskuAc » 12.02.2018 08:17 • Verfasst in ABAP® Core
10
Antw.
7899
Views
Umwandeln SAPOffice URL in PDF
von Lucyalison » 08.02.2018 16:39 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1763
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2306

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.

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1763
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2306

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 320
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 912
MS-Word als Editor
letzen Monat von tekko 1 / 4418