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.
Folgende Benutzer bedankten sich beim Autor MrBojangles für den Beitrag:
Phame
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.
Folgende Benutzer bedankten sich beim Autor MrBojangles für den Beitrag:
Phame
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.