Funktionsbaustein BAPI_ACC_DOCUMENT_POST

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Funktionsbaustein BAPI_ACC_DOCUMENT_POST

Postby Xaver1494 » Fri Mar 27, 2009 12:35 pm

Hi!
Ich versuch gerad den Funktionsbaustein BAPI_ACC_DOCUMENT_POST zum laufen zu bekommen (mit SE37).
Leider erhalte ich:
RW609: "Fehler im Beleg: BKPFF $ I41CLNT765" und RW015 "RW-Schnittstelle Inkonsitstente RW-Belegkopfdaten zur Fortschreibung".

Ich wollte diesen BAPI benutzen um per Programm Rechnungen zu buchen wie z.B. mit der FB01.

Bin mit auch gar nicht mehr sicher ob ich da den richtigen hab.
Irgendeine Idee?

Danke!
Xaver1494
..
..
 
Posts: 26
Joined: Thu Jan 22, 2009 9:09 am

Postby Xaver1494 » Mon Mar 30, 2009 2:32 pm

Bin schon etwas weiter - allerdings bekomme ich immer noch eine Fehlermeldung "Saldo in Transaktionswährung".

Bin echt ratlos...

Frank

Anbei mal mein Daten, mit denen ich getestet hab:
DOCUMENTHEADER:
BUS_ACT = "RMRP"
USERNAME = <UserName>
HEADER_TXT = "Testtext"
COMP_CODE = "0001"
DOC_DATE = "30.03.2009"
PSTNG_DATE = "30.03.2009"
FISC_YEAR = "2009"
FIS_PERIOD = "03"
DOC_TYPE = "KR"

ACCOUNTPAYABLE:
ITEMNO_ACC = "0000000001"
VENDOR_NO = <KontoKreditor>

CURRENCYAMOUNT:
ITEMNO_ACC = "0000000001"
CURRENCY = "EUR"
AMT_DOCCUR = "123,0000"
Xaver1494
..
..
 
Posts: 26
Joined: Thu Jan 22, 2009 9:09 am

Postby Line894 » Mon Mar 30, 2009 3:08 pm

Dir fehlt noch die Tabelle "AccountGL". Dort gibst du das Sachkonto an und die Kontierung. zudem sehe ich nur eine Soll-Buchung, aber keine Habe-Buchung bei CURRENCYAMOUNT (Haben-Buchung mit AMT_DOCCUR = -1 * "123,0000")
Line894
..
..
 
Posts: 15
Joined: Mon Sep 24, 2007 3:11 pm

Postby Xaver1494 » Mon Mar 30, 2009 3:26 pm

Vielen Dank! Hat geklappt :)
Xaver1494
..
..
 
Posts: 26
Joined: Thu Jan 22, 2009 9:09 am

Postby Xaver1494 » Mon Mar 30, 2009 3:50 pm

Zu früh gefreut - Der BAPI läuft durch und gibt mir auch eine Belegnummer zurück, allerdings kann ich die im System anschließend nicht finden. Muß man in der SE37 evtl. noch ein Commit einstellen?
Xaver1494
..
..
 
Posts: 26
Joined: Thu Jan 22, 2009 9:09 am

Postby Inge2117 » Mon Mar 30, 2009 4:28 pm

Du kannst in der TA 37 über Funktionsbaustein -> Testen -> Testsequenz mehrere FUBAs hintereinander ausführen. Da kannst du dann ein Baustein zum Commiten angeben. Z.B.: BAPI_TRANSACTION_COMMIT

Hoffe das hilft dir weiter.

Gruß
Christian
Inge2117
.
.
 
Posts: 8
Joined: Mon Mar 30, 2009 4:28 pm

Postby Line894 » Tue Mar 31, 2009 6:33 am

Wie Christian bereits erwähnt hatte:

Bei BAPI's, die die Systemdaten verändern, ist es notwendig, auf Erfolg oder Misserfolg zu testen. Dies am Besten nach dem Aufruf der BAPI die mit CALL ausgeführt BAPI sollte im Anschluss das Ergebnis herausgefiltert werden. Da am Besten die Data Variable des BAPI_Acc_Document_Post auswerten. Bei "E", also "Error", ist es notwendig, die bereits in System geschrieben Daten wieder zu entfernen und alles "zurückzurollen". Dies erledigt man mit der "BAPI_TRANSACTION_ROLLBACK" und dem einfachen Aufruf mit Call. Ist das Ergebis erfolgreich, also "S" für Success", dann müssen die Daten mit der BAPI "BAPI_TRANSACTION_COMMIT" fest in System geschrieben werden. Auch hier reicht der einfache CALL-Aufruf.

Abgearbeitet werden kann dies auch, ohne dies im SAP direkt zu machen. So wie ich das sehen kann, rufst du die BAPI von einem externen Drittsystem auf. Hier kannst du auch die ROLLBACK und COMMIT Funktion aufrufen.
Line894
..
..
 
Posts: 15
Joined: Mon Sep 24, 2007 3:11 pm

Postby Xaver1494 » Tue Mar 31, 2009 10:57 am

Hallo nochmal!
Der Aufruf über die SE37 hat jetzt funktioniert (ole!), ABER: Wenn ich das ganze in einen Report packe, erhalte ich folgende Meldung "Sachkonto 405201 ist im Kontenplan INT nicht vorgesehen" (ein Test in VBA gibt den gleichen Fehler...). Das Konto finde ich aber sehr wohl im Kontenplan INT, wenn ich z.B. über die FB01 gehe.
Verstehe nicht, dass es in der SE37 geht und sonst nicht :(
Hab meinen Testreport anbei gepackt

Frank
------------------------------------------
REPORT z_fuba_tmp.

DATA:
obj_type LIKE BAPIACHE09-obj_type,
obj_key LIKE BAPIACHE09-obj_key,
obj_sys LIKE BAPIACHE09-obj_sys,
documentheader LIKE BAPIACHE09,
accountgl LIKE BAPIACGL09 OCCURS 0 WITH HEADER LINE,
accountpayable LIKE bapiacap09 OCCURS 0 WITH HEADER LINE,
currencyamount LIKE BAPIACCR09 OCCURS 0 WITH HEADER LINE,
return LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA: error_flag.

" ********* documentheader *********
documentheader-bus_act = 'RMRP'.
documentheader-username = sy-uname.
documentheader-header_txt = 'Test using BAPI 2'.
documentheader-comp_code = '0001'.
documentheader-doc_date = sy-datum.
documentheader-pstng_date = sy-datum.
documentheader-doc_type = 'KR'.

" ********* ACCOUNTPAYABLE *********
accountpayable-ITEMNO_ACC = '0000000001'.
accountpayable-VENDOR_NO = 'ABVEND00'.
APPEND accountpayable.

" ********* accountgl *********
accountgl-itemno_acc = '0000000002'.
accountgl-gl_account = '405201'.
accountgl-doc_type = 'KR'.
accountgl-comp_code = '0001'.
accountgl-pstng_date = sy-datum.
accountgl-tax_code = 'V0'.
accountgl-costcenter = 'SAP-DUMMY'.
APPEND accountgl.

" ********* currencyamount *********
currencyamount-itemno_acc = '0000000001'.
currencyamount-currency = 'EUR'.
currencyamount-amt_doccur = '100.00'.
APPEND currencyamount.

currencyamount-itemno_acc = '0000000002'.
currencyamount-currency = 'EUR'.
currencyamount-amt_doccur = '-100.00'.
APPEND currencyamount.

* call BAPI-function in this system *
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = documentheader
IMPORTING
obj_type = obj_type
obj_key = obj_key
obj_sys = obj_sys
TABLES
accountpayable = accountpayable
accountgl = accountgl
currencyamount = currencyamount
return = return
EXCEPTIONS
OTHERS = 1.

IF sy-subrc <> 0.
MESSAGE e999(re) WITH 'Problem occured'.
ELSE.
LOOP AT return.
IF NOT return IS INITIAL.
IF return-type = 'A' OR return-type = 'E'.
write: return-MESSAGE.
error_flag = 'X'.
ENDIF.
ENDIF.
ENDLOOP.

IF error_flag = 'X'.
ROLLBACK WORK.
ELSE.
COMMIT WORK.
ENDIF.
ENDIF.
Xaver1494
..
..
 
Posts: 26
Joined: Thu Jan 22, 2009 9:09 am

Postby Constantin3326 » Tue Mar 31, 2009 11:33 am

Hallo Frank,
das Konto muss 10stellig mit führenden Nullen angegeben werden. Bei der SE37 ist Dir das nicht aufgefallen, weil dort über die Eingabemaske eine entsprechende Aufbereitung vorgenommen wird.
Constantin3326
....
....
 
Posts: 840
Joined: Tue Dec 20, 2005 11:47 am

Postby Xaver1494 » Tue Mar 31, 2009 11:48 am

:D Jetzt geht alles - Vielen Dank!
Xaver1494
..
..
 
Posts: 26
Joined: Thu Jan 22, 2009 9:09 am

Next

Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 2 guests