Debitorenrechnung

SAP R/3 Finanzwesen: Hauptbuchhaltung; Kreditorenbuchhaltung; Debitorenbuchhaltung; Bankbuchhaltung; Anlagenbuchhaltung; ...
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Debitorenrechnung

Beitrag von Phame (ForumUser / 14 / 8 / 0 ) »
Hallo,

ich versuche eine einfach Debitorenverrechnung zu buchen, verwende dafür den BAPI "BAPI_ACC_DOCUMENT_POST Debitorenrechnung"

Code: Alles auswählen.

*"  IMPORTING
*"     VALUE(LV_BUKR) TYPE  BUKRS OPTIONAL
*"     VALUE(LV_BELART) TYPE  BLART OPTIONAL
*"     VALUE(LV_BELDAT) TYPE  DATE
*"     VALUE(LV_REFNR) TYPE  XBLNR1
*"     VALUE(LV_BELTXT) TYPE  CHAR25
*"     VALUE(LV_SOLLKT) TYPE  HKONT
*"     VALUE(LV_HABENKT) TYPE  HKONT
*"     VALUE(LV_BETRAG) TYPE  WRBTR
*"  EXPORTING
*"     VALUE(LV_DOCNR) TYPE  BELNR_D
*"----------------------------------------------------------------------

  DATA: lv_header TYPE bapiache09.
  DATA: l_obj_type       TYPE bapiache09-obj_type.
  DATA: l_obj_key        TYPE bapiache09-obj_key.
  DATA: l_obj_sys        TYPE bapiache09-obj_sys.
  "DATA: lt_return TYPE TABLE OF  bapiret2.
  DATA: lt_accountgl TYPE TABLE OF bapiacgl09 WITH HEADER LINE.
  DATA: lt_accountreciveable TYPE TABLE OF bapiacar09 WITH HEADER LINE.
  DATA lt_return TYPE STANDARD TABLE OF bapiret2.
  DATA ls_return TYPE bapiret2.

  DATA: lt_currencyamount TYPE  TABLE OF bapiaccr09 WITH HEADER LINE.
  DATA: lt_accounttax     TYPE  TABLE OF bapiactx09 WITH HEADER LINE.
  DATA: lv_itemno VALUE 1.

  DATA lv_period TYPE poper.
  DATA lv_year   TYPE bdatj.

*== aktuelle Periode ermitteln
  CALL FUNCTION 'CON_FIN_CURRENT_PERIOD_GET_2'
    EXPORTING
      id_bukrs          = lv_bukr
    IMPORTING
      ed_current_year   = lv_year
      ed_current_period = lv_period
    EXCEPTIONS
      internal_error    = 1
      OTHERS            = 2.

*== Header
  lv_header-bus_act           = 'RFBU'.               "Betriebswirtschaftlicher Vorgang
  lv_header-username          = sy-uname.                "Name des Benutzers
  lv_header-header_txt        = 'Test'.               "Belegkopftext
  lv_header-comp_code         = lv_bukr.              "Buchungskreis
  lv_header-doc_date          = sy-datum.             "Belegdatum im Beleg
  lv_header-pstng_date        = sy-datum.             "Buchungsdatum im Beleg
  lv_header-trans_date        = sy-datum.             "Umrechnungsdatum
  lv_header-fisc_year         = lv_year.              "Geschäftsjahr
  lv_header-fis_period        = lv_period.            "Geschäftsmonat
  lv_header-doc_type          = 'DK'.                 "Belegart
  lv_header-vatdate           = sy-datum.             "Steuermeldedatum


*== Buchungszeile Haben
  lt_accountgl-itemno_acc        = 1.                    "Positionsnummer des Rechnungswesenbeleges
  lt_accountgl-gl_account        = lv_sollkt.         "Sachkonto der Hauptbuchhaltung
  lt_accountgl-item_text         = 'Postext Haben'.      "Positionstext
  lt_accountgl-acct_key          = 40.                "Vorgangsschlüssel
  lt_accountgl-acct_type         = 'S'.                  "Kontoart
  lt_accountgl-costcenter        = ''.
  lt_accountgl-value_date        = sy-datum.
  APPEND lt_accountgl.



*== Buchungszeile Soll
  lt_accountreciveable-itemno_acc        = 2.                    "Positionsnummer des Rechnungswesenbeleges
  lt_accountreciveable-gl_account        = lv_habenkt.         "Sachkonto der Hauptbuchhaltung
  lt_accountreciveable-item_text         = 'Postext Soll'  .     "Positionstext
  "lt_accountreciveable-acct_key          = 50.                "Vorgangsschlüssel
  "lt_accountgl-orderid           = 'XYZ'.                "Falls notwendig
  APPEND lt_accountreciveable.

*== Haben Bruttobetrag
  lt_currencyamount-itemno_acc = 1.
  lt_currencyamount-currency   = 'EUR'.
  lt_currencyamount-amt_doccur = lv_betrag.
  APPEND lt_currencyamount.

*== Soll Nettobetrag
  lt_currencyamount-itemno_acc = 2.
  lt_currencyamount-currency   = 'EUR'.
  lt_currencyamount-amt_doccur = lv_betrag.
  APPEND lt_currencyamount.

**== Soll Steuerbetrag
**  ls_cur_am-itemno_acc        = 3.
**  ls_cur_am-currency          = 'EUR'.
**  ls_cur_am-currency_iso      = 'EUR'.
**  ls_cur_am-amt_doccur        = '01.90'.
**  ls_cur_am-amt_base          = '10.00'.
**  ls_cur_am-curr_type         = '00'.
**  APPEND ls_cur_am TO lt_cur_am.
**
**== Steuerinformation
**  ls_acc_tx-itemno_acc        = 3.
**  ls_acc_tx-tax_code          = 'AA'.
**  ls_acc_tx-cond_key          = 'MWAS'.
**  APPEND ls_acc_tx TO lt_acc_tx.

*== Beleg buchen
  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
    EXPORTING
      documentheader = lv_header
    IMPORTING
      obj_type       = l_obj_type
      obj_key        = l_obj_key
      obj_sys        = l_obj_sys
    TABLES
      accountgl      = lt_accountgl
      ACCOUNTRECEIVABLE = lt_accountreciveable
      currencyamount = lt_currencyamount   " accounttax = lt_acc_tx
      return         = lt_return.


*== Commit work
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    IMPORTING
      return = ls_return.


  lv_docnr = l_obj_key(10).

ENDFUNCTION.
Dabei steh ich jetzt schon weile vor folgenden Problemen:

Konto 140000 im Buchungskreis 0001 ist nicht direkt bebuchbar
Das Konto 841800 erfordert eine kostenrechnungsrelevante Kontierung

Diese Meldungen hab ich im lt_result. Fehlt mir noch irgend ein wichtiger Parameter?
Zuletzt geändert von Phame am 27.02.2016 19:20, insgesamt 4-mal geändert.

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


Re: BAPI_ACC_DOCUMENT_POST Debitorenrechnung

Beitrag von MrBojangles (Specialist / 367 / 3 / 30 ) »
Hallo phame,

zur Meldung 1: Du darfst in der Struktur lt_accountreciveable nicht das Feld gl_account versorgen, sondern das Feld Customer mit der entsprechenden Debitorenummer.
Zu 2. Das Sachkonto 841800 ist offenbar eine Kosten- oder Erlösart, d.h. Du muss ein CO-Objekt kontieren. Versuch mal im Feld cost_center eine gültige Kostenstelle mitzugeben.

Als nächstes wirst Du weitere Fehlemeldungen erhalten. Lass mal
lt_accountgl-acct_key = 40. "Vorgangsschlüssel
lt_accountgl-acct_type = 'S'. "Kontoart
weg. Den Betrag im Haben (also bei Dir Pos. 1) muss Du negativ angeben.

Folgende Benutzer bedankten sich beim Autor MrBojangles für den Beitrag:
Phame

Weiterhin viel Freude mit SAP...
Cheers
MrB.

Re: BAPI_ACC_DOCUMENT_POST Debitorenrechnung

Beitrag von Phame (ForumUser / 14 / 8 / 0 ) »
funktioniert bis auf die steuerbuchung..

Code: Alles auswählen.

*== Soll Steuerbetrag
  lt_currencyamount-itemno_acc        = 3.
  lt_currencyamount-currency          = 'EUR'.
  lt_currencyamount-currency_iso      = 'EUR'.
  lt_currencyamount-amt_doccur        = lv_betrag / 5.
  lt_currencyamount-amt_base          = lv_betrag.
  lt_currencyamount-curr_type         = '00'.
  APPEND lt_currencyamount.

*== Steuerinformation
  ls_acc_tx-itemno_acc        = 3.
  ls_acc_tx-tax_code          = 'A2'.
  ls_acc_tx-cond_key          = 'MWAS'.
  APPEND ls_acc_tx TO lt_acc_tx.
Saldo in Transaktionswährung
Geben Sie ein echt erlöstragendes Kontierungsobjekt ein.
Konto 175000 im Buchungskreis 0001 ist nur intern bebuchbar

Die Kontonummer sollte eigentlich stimmen

Re: Debitorenrechnung

Beitrag von MrBojangles (Specialist / 367 / 3 / 30 ) »
Hallo Phame,
zu 1. Vermutlich hast Du den Betrag, den Du auf das Sachkonto buchst nicht um die Steuer reduziert oder mit falschem Vorzeichen, deshalb geht der Beleg nicht mehr auf.
Bsp:
Betrag 119 brutto, Steuer = 19 => Debitor +119, Sachkonto -100, Steuer -19 => Saldo 0

zu 2. Das Konto 841800 ist offenbar eine Erlösart, d.h. Kontierung auf Kostenstelle geht hier nicht ohne weiteres. Frag mal beim Anfordernden nach, wohin der Kram kontiert werden soll.

zu 3. k. Ahnung, könnte nen Folgefehler sein. Bitte ggf. mal das komplette Coding posten.

Hier findest Du ein Programmbeispiel, welches nachgewiesenermassen funktioniert:
http://sapmandoo.over-blog.de/article-b ... 06241.html
Das Beispiel für eine Debitorenbuchung findest Du weiter hinten im Artikel...

Folgende Benutzer bedankten sich beim Autor MrBojangles für den Beitrag:
Phame

Weiterhin viel Freude mit SAP...
Cheers
MrB.

Re: Debitorenrechnung

Beitrag von Phame (ForumUser / 14 / 8 / 0 ) »
€: funktioniert nun nachdem ich die Steuer auch abziehe.

Re: Debitorenrechnung

Beitrag von Phame (ForumUser / 14 / 8 / 0 ) »
nochmal ein ähnliches problem... will eine bestandsveränderung buchen, aber bekomm sie immer nur mit Buchungsschlüssel 50 / 40 statt 89 / 95 bzw 99 /85 rein..

Hab es nun mit BAPI_ACC_GOODS_MOVEMENT_POST versucht, ändert aber leider nichts

Code: Alles auswählen.

FUNCTION.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(LV_NEWSALDO) TYPE  BAPISALDO
*"     VALUE(LV_BUKR) TYPE  BUKRS
*"     VALUE(LV_SKONTO) TYPE  HKONT
*"     VALUE(LV_KONTO) TYPE  HKONT
*"  EXPORTING
*"     VALUE(LV_DOCNR) TYPE  BELNR_D
*"----------------------------------------------------------------------

  DATA: lv_header LIKE BAPIACHE02.
  DATA: l_obj_type       TYPE bapiache02-obj_type.
  DATA: l_obj_key        TYPE bapiache02-obj_key.
  DATA: l_obj_sys        TYPE bapiache02-obj_sys.
  DATA: lt_accountgl LIKE BAPIACGL02 OCCURS 0 WITH HEADER LINE.
  DATA: lt_accountreciveable TYPE TABLE OF bapiacar09 WITH HEADER LINE.
  DATA: lt_return TYPE STANDARD TABLE OF bapiret2.
  DATA: lt_cur_am TYPE STANDARD TABLE OF bapiaccr09.
  DATA: ls_cur_am LIKE LINE OF lt_cur_am.
  DATA: ls_return TYPE bapiret2.
  DATA: lt_acc_tx TYPE STANDARD TABLE OF bapiactx09.
  DATA: ls_acc_tx LIKE LINE OF lt_acc_tx.
  DATA: lt_currencyamount  LIKE BAPIACCR01 OCCURS 0 WITH HEADER LINE.
  DATA: lt_accounttax     TYPE  TABLE OF bapiactx09 WITH HEADER LINE.
  DATA: lv_itemno VALUE 1.
  DATA: lit_mwdat TYPE TABLE OF rtax1u15.
  DATA: ls_mwdat  TYPE rtax1u15.
  DATA: lv_waers TYPE waers  VALUE 'EUR'.
  DATA: lv_mwskz  TYPE mwskz  VALUE 'A2'.
  DATA: lv_period TYPE poper.
  DATA: lv_year   TYPE bdatj.
  DATA: lv_balance TYPE bapi1028_3.
  DATA: lv_betrag TYPE BAPISALDO.

  DATA: lv_sollkt TYPE hkont.
  DATA: lv_habenkt TYPE hkont.

  CALL FUNCTION 'BAPI_GL_GETGLACCCURRENTBALANCE'
    EXPORTING
      companycode     = lv_bukr
      glacct          = lv_skonto
      currencytype    = '00'
    IMPORTING
      account_balance = lv_balance.
*   RETURN                =
  .

  IF lv_balance-balance > lv_newsaldo.
    lv_header-doc_type          = 'WL'.
  ELSE.
    lv_header-doc_type          = 'WL'.
  ENDIF.


  lv_betrag = lv_newsaldo - lv_balance-balance.


*
*
**== aktuelle Periode ermitteln
  CALL FUNCTION 'CON_FIN_CURRENT_PERIOD_GET_2'
    EXPORTING
      id_bukrs          = lv_bukr
    IMPORTING
      ed_current_year   = lv_year
      ed_current_period = lv_period
    EXCEPTIONS
      internal_error    = 1
      OTHERS            = 2.

*          .
*
*
**Header
 " lv_header-bus_act           = 'RFBU'.               "Betriebswirtschaftlicher Vorgang
  lv_header-username          = sy-uname.                "Name des Benutzers
  lv_header-header_txt        = 'Test'.               "Belegkopftext
   lv_header-comp_code         = lv_bukr.              "Buchungskreis
  lv_header-doc_date          = sy-datum.             "Belegdatum im Beleg
  lv_header-pstng_date        = sy-datum.             "Buchungsdatum im Beleg
  "lv_header-trans_date        = sy-datum.             "Umrechnungsdatum
 lv_header-fisc_year         = lv_year.              "Geschäftsjahr
  lv_header-fis_period        = lv_period.            "Geschäftsmonat
  "Belegart
 " lv_header-vatdate           = sy-datum.             "Steuermeldedatum
*
*
** Buchungszeile Haben
  lt_accountgl-itemno_acc        = 1.                "Positionsnummer des Rechnungswesenbeleges
  "  lt_accountgl-customer        = 10001.             "Sachkonto der Hauptbuchhaltung
 " lt_accountgl-item_text         = 'Postext Haben'.  "Positionstext
 " lt_accountgl-TAX_CODE          = 'V2'.
  " lt_accountgl-acct_key          = 01.              "Vorgangsschlüssel
"  lt_accountgl-acct_type         = 'S'.              "Kontoart
  lt_accountgl-costcenter        = 'KS-1000'.
  lt_accountgl-PSTNG_DATE        = sy-datum.
  lt_accountgl-gl_account = lv_konto.
 " lt_accountgl-tax_code = lv_mwskz.
  APPEND lt_accountgl.
*
** Buchungszeile Soll
  lt_accountgl-itemno_acc        = 2.                "Positionsnummer des Rechnungswesenbeleges
  "  lt_accountgl-customer        = 10001.             "Sachkonto der Hauptbuchhaltung
 " lt_accountgl-item_text         = 'Postext Soll'.  "Positionstext
  "lt_accountgl-TAX_CODE          = 'V2'.
  " lt_accountgl-acct_key          = 01.              "Vorgangsschlüssel
"  lt_accountgl-acct_type         = 'M'.              "Kontoart
  "lt_accountgl-costcenter        = 'KS-1000'.
  lt_accountgl-PSTNG_DATE        = sy-datum.
  lt_accountgl-gl_account = lv_skonto.
  lt_accountgl-costcenter        = ''.
 " lt_accountgl-tax_code = lv_mwskz.
  APPEND lt_accountgl.


** Haben Bruttobetrag
  lt_currencyamount-itemno_acc = 1.
  lt_currencyamount-currency   = lv_waers.
  lt_currencyamount-amt_doccur =  lv_betrag * -1.
  APPEND lt_currencyamount.
*
** Soll Nettobetrag
  lt_currencyamount-itemno_acc = 2.
  lt_currencyamount-currency   = lv_waers.
  lt_currencyamount-amt_doccur =   lv_betrag.
  APPEND lt_currencyamount.

  CALL FUNCTION 'BAPI_ACC_GOODS_MOVEMENT_POST'
    EXPORTING
      documentheader       = lv_header
   IMPORTING
     OBJ_TYPE             = l_obj_type
     OBJ_KEY              = l_obj_key
     OBJ_SYS              = l_obj_sys
    tables
      accountgl            = lt_accountgl
      currencyamount       = lt_currencyamount
*     PURCHASEORDER        =
*     PURCHASEAMOUNT       =
      return               = lt_return.


*
** Beleg buchen
*  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
*    EXPORTING
*      documentheader = lv_header
*    IMPORTING
*      obj_type       =
*      obj_key        =
*      obj_sys        =
*    TABLES
*      accountgl      =
*     " ACCOUNTRECEIVABLE = lt_accountreciveable
**      accounttax     = lt_acc_tx
*      currencyamount = lt_currencyamount
*      return         = lt_return.

*
* Commit work
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    IMPORTING
      return = ls_return.


  lv_docnr = l_obj_key(10).





ENDFUNCTION.

Re: Debitorenrechnung

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Hallo Phame,

willst du explizit den Buchungsschlüssel ( BSEG-BSCHL ) vorgeben?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Über diesen Beitrag


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

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141