Soll das heißen, das BAPI liefert die Belegnummern nicht zurück? Das kann ich mir beim besten Willen nicht vorstellen, dass es besser sein soll, einen nicht freigegebenen FB zulasten eines BAPI zu verwenden.TWP hat geschrieben:kanst kniggen, kanste vergessen. An dieser Stelle schönen Gruß von TUETE.
Achsooooooooooo.TWP hat geschrieben:Noch einmal. Ich habe mich ledigklich auf das PostingInterface bezogen. Ob der FB nun freigegeben ist oder nicht, lasse ich mal offen. Dieser fb kommt z.B. im elektronsichen Kontoauszug zum Einsatz.
Das dachte ich auch, da steht aber die Vorgängerbelegnummer drin, die ich dem FB selbst übergebe.TWP hat geschrieben:Soll aber nicht heissen, das der BAPi die Belegnummer nicht zurückgibt. Ich würde mal auf die Message in BAPRIRET2 tippen. Wenn der Beleg ohne Fehler gebucht wurde, sollte hier die Beglenummer enthalten sein.
Die Buchung klappt ja wunderbar. Was nicht klappt ist die Rückgabe der Belegnummer. Und die ist wichtig, wichtig, wichtig.TWP hat geschrieben:Zu prüfen wäre auch, ob es nicht ein anderes (allgemeineres) BAPI für FI gibt da man hier ja auf bestimmte Bewegungen eingegrenzt wird.
Ich vermute, dass irgendwo im Customizing die Felder als Mussfelder angegeben sind -- aber wo?TWP hat geschrieben:ich habe die Felder im Header auch nicht angegeben und es Läuft.
Ich hab mal die Feldzuweisung und den Aufruf des BAPI unten reinzitiert -- sieht nicht schön aus, ist aber auch vom Endzustand des Coding entfernt. Erstmal gehts mir darum, eine Buchung korrekt ins System zu kriegen.TWP hat geschrieben:Um dein Problem genauer zu analysiern, solltest du etwas genauer werden, was deine Daten betrifft (Coding-Auszug).
Meinst du da hätte ich nicht nachgesehen ehe ich hier frage?TWP hat geschrieben:Alternativ gilt: Lesen bildet. (OSS / Hilfe / Hilfe zum FB ...)
Code: Alles auswählen.
** Belegkopf
gs_dochead-obj_type = 'ZVBRK'. "angeblich ein Mussfeld
gs_dochead-obj_key = gs_alvtab-vbeln. "angeblich ein Mussfeld (gefüllt mit Nummer der SD-Faktura als Vorgängerbeleg)
gs_dochead-bus_act = 'RFBU'.
gs_dochead-username = sy-uname.
SELECT SINGLE bukrs INTO gs_dochead-comp_code
FROM vbrk
WHERE vbeln = gs_alvtab-vbeln.
SELECT SINGLE *
FROM z99f_provi_buch
INTO gs_provi_buch
WHERE bukrs EQ gs_dochead-comp_code
AND parvw EQ 'DI'
AND vtweg EQ gs_alvtab-vtweg.
gs_dochead-doc_date = gs_alvtab-fkdat.
gs_dochead-pstng_date = sy-datum.
gs_dochead-doc_type = 'YV'.
gs_dochead-ref_doc_no = gs_alvtab-vbeln.
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
own_logical_system = gs_dochead-obj_sys.
APPEND gs_dochead TO gt_dochead.
** Personenkontenzeile
gs_accpay-itemno_acc = '1'.
SELECT SINGLE lifnr INTO gs_accpay-vendor_no
FROM vbpa
WHERE vbeln = gs_alvtab-vbeln
AND parvw = 'DI'.
gs_accgl-gl_account = gs_provi_buch-saknr.
gs_accpay-pmnt_block = 'X'.
SELECT SINGLE extwg FROM mara
INTO gs_accpay-alloc_nmbr
WHERE matnr = gs_alvtab-matnr.
gs_accgl-item_text = gs_alvtab-kunag.
gs_accgl-tax_code = gs_provi_buch-mwskz.
APPEND gs_accpay TO gt_accpay.
** Betragszeilen
gs_camount-itemno_acc = '1'.
gs_camount-currency_iso = gs_alvtab-waerk.
gs_camount-amt_doccur = gs_alvtab-prwge.
APPEND gs_camount TO gt_camount.
gs_camount-itemno_acc = '2'.
gs_camount-amt_doccur = gs_camount-amt_doccur * ( -1 ).
APPEND gs_camount TO gt_camount.
** Sachkontenzeile
* Erstaunt war ich hier, dass ich keinen Buchungsschlüssel übergeben kann ;)
gs_accgl-itemno_acc = '2'.
gs_accgl-gl_account = gs_provi_buch-saknr.
gs_accgl-item_text = gs_alvtab-kunag.
SELECT SINGLE lifnr INTO gs_accgl-vendor_no
FROM vbpa
WHERE vbeln = gs_alvtab-vbeln
AND posnr = gs_alvtab-posnr
AND parvw = 'DI'.
SELECT SINGLE extwg FROM mara
INTO gs_accgl-alloc_nmbr
WHERE matnr = gs_alvtab-matnr.
SELECT SINGLE PRCTR INTO gs_accgl-profit_ctr
FROM marc
WHERE matnr = gs_alvtab-matnr
AND werks = gs_alvtab-werks.
gs_accgl-tax_code = gs_provi_buch-mwskz.
gs_accgl-material = gs_alvtab-matnr.
gs_accgl-plant = gs_alvtab-werks.
APPEND gs_accgl TO gt_accgl.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = gs_dochead
IMPORTING
obj_key = gs_dochead-obj_key
TABLES
accountgl = gt_accgl
accountpayable = gt_accpay
currencyamount = gt_camount
return = gt_bapi_ret.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
* Belegnummer entgegennehmen <- HIER steht wieder die SD-Faktura drin
* ich will hier aber die Nummer des gebuchten FI-Beleges sehen
gr_belnr_l-sign = 'I'.
gr_belnr_l-option = 'EQ'.
gr_belnr_l-low = gs_dochead-obj_key.
APPEND gr_belnr_l TO gr_belnr.
Bucht nicht. Fehlermeldung in Returntab:TWP hat geschrieben:* gs_dochead-obj_type = 'ZVBRK'. "angeblich ein Mussfeld
* gs_dochead-obj_key = gs_alvtab-vbeln.
* CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
* IMPORTING
* own_logical_system = gs_dochead-obj_sys.
-> Im Aufruf des BAPI's
* IMPORTING
* obj_key = gs_dochead-obj_key
Nein, da steht drin "Beleg xxx gebucht" mit der Nummer der SD-Faktura. Die Meldung ist in sich also falsch.TWP hat geschrieben:Wenn die Fehlermeldung verschwindet und der Beleg gebucht wird, dann steht in BAPIRET2 auch die Belegnummer drin.