Ich werd mal schauen... Das bedeutet wohl aber auch, das ich ggfs. die Nast selbst füllen muss, wenn mir der Vorschlag, der zu dem Beleg gezogen wird nicht gefällt oder ?
hat ein bißchen gedauert, aber nun kam ich zum testen. Leider macht diese Routine nix anderes wie o.g. FB. Er bringt trotzdem alle Dialoge. Na, dann such ich mal weiter....
Also ich verwende die Routine laufend und da poppt nix! Meinst du das Dialogfenster, das nach Drucker, Sofort drucken, Abteilung, Empfänger usw. fragt?
Sind die Parameter vielleicht unvollständig? Fehlender Drucker, Fehlende Aufbereitung o. Ä.?
ich war wohl zu schnell... hatte noch die alte Druckroutine aufgerufen.
Habe doch noch Fehler drin... benutze RV_MESSAGE_INSERT um die Nachricht einzufügen, nur leider macht er es nicht (gibt ja auch kein Update auf die Nast in dem FB) ... und ich dachte immer nur MS macht Funktionen, die nicht tun wonach sie aussen *g*
Die *Message*-Bausteine dienen nun mal dazu, Nachrichten zu verarbeiten. Die Nachrichten gehören zu Belegen und müssen irgendwo gespeichert werden. Das ist nun mal die NAST.
Dann sollten xnast und ynast Tables-Parameter sein.
So wie es jetzt implementiert ist, untergräbt es denn Sinn von Kapselung in FB's, da die Wiederverwendbarkeit ja nur beschränkt ist.
So muß ich jetzt z.B. zusammen suchen, was der FB aufruft und welche Tabellen gefüllt werden, obwohl ich ja eigentlich alle erforderlichen Daten schon habe.... Dann nennt sich der FB 'RV_MESSAGES_INSERT' noch Verbucherbaustein, obwohl nix verbucht wird. Wo ist die Logik ?
Es gibt scheinbar keine Möglichkeit, einen NAST-Eintrag direkt über einen FB in die NAST schreiben zu lassen und dann über RSNAST00 auszugeben ?!
Funktionsbausteine haben ein sogenanntes "Globales Gedächtnis". Das heisst, du kannst in Funktionsbausteinen, die innerhalb einer Funktionsgruppe liegen immer auf die global definierten Variablen zugreifen (Natürlich nur Innerhalb einer Transaktion...).
Eine Kapselung ist das schon weil du vorher evtl. andere Funktionsbausteine aufrufen musst (In dem Fall RV_MESSAGES_GET). RV_MESSAGES_INSERT packt dann die Nachricht zu den schon existerenden anderen, nachdem er sichergestellt hat, dass die Nachricht noch nicht vorhanden war.
Und ob ein Funktionsbaustein tatsächlich "verbucht" hängt vom Aufruf ab. Der FB muss dann nämlich mit "IN UPDATE TASK" aufgerufen werden.
Und letztendlich: Die Wege der Walldorfer sind oftmals unergründlich...
Gruß, Enno.
so langsam bin ich mit den Nerven am Ende *g*
RV_MESSAGE_SELECT nutzt mir nix, da die Nachricht ja noch nicht in der NAST steht.
Ich bin kein Profi-Progger aber zäh.......
Also : Aufgabe - Ausgabe einer Nachricht die nicht automatisch im Beleg vorgeschlagen wird, aber zugelassen ist.
Wenn ich das jetzt richtig sehe, müsste ich also
den FB RV_MESSAGE_UPDATE_SINGLE in update task aufrufen, nachdem alle notwendigen Werte zur Übergabe da sind ?! Muß ich jetzt alle 82 Felder von Nast füllen oder reichen die Keys ?
mühsam ernährt sich das Eichhörnchen.
Jetzt funzt es so wie es soll.
Der notwendige Code ist...
tables: nast.
Belegen der nast-Felder (nur die wichtigsten)
.
.
.
call
function 'RV_MESSAGE_UPDATE_SINGLE'
exporting
msg_nast = nast.
* Verbucht auch ohne Aufruf in Update Task....
if sy-subrc eq 0.
perform einzelnachricht(rsnast00) using
rcode. endif.
Wenn es so weiter geht, mach ich aus SAP doch noch ein schnell zu bedienendes Programm *lol*