2020 Mar 03 10:17 AM
Hello all,
I have been working on a report for GL to GL posting using BAPI_ACC_DOCUMENT_POST.
the requirement needs off me to add tax indicator to the bapi and calculate the tax on it.
this is the code I have written:
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
CLASS lcl_fi_accpost_bapi DEFINITION.
PUBLIC SECTION.
TYPES : BEGIN OF ts_exceldata, "EXCEL STRUCTURE
itemno_acc TYPE posnr_acc, "ITEM NUMBER
* DOC_DATE TYPE BLART, "DOCUMENT DATE
doc_date(10) TYPE c, "DOCUMENT DATE
pstng_date TYPE budat, "POSTING DATE
doc_type TYPE blart, "Document Type
comp_code TYPE bukrs, "Company Code
fisc_year TYPE gjahr, "Fiscal Year
fis_period TYPE monat, "Posting Period
header_txt TYPE bktxt, "Header Text
ref_doc_no TYPE xblnr, "Reference Document Number
gl_account TYPE hkont, "Account
de_cre_ind TYPE bschl, "Dr/Cr Indicator
currency TYPE waers, "Currency
amt_doccur TYPE bapidoccur, "Amount in Document Currency
tax_code TYPE mwskz, "Tax Code
costcenter TYPE kostl, "Cost Center
item_text TYPE sgtxt, "Item Text
ref_key_1 TYPE xref1, "Reference Key 1
ref_key_2 TYPE xref2, "Reference Key 2
ref_key_3 TYPE xref3, "Reference Key 3
* DOC_STATUS TYPE BAPI_ACC_DOC_STATUS, "Doc Status
bus_place TYPE valuepart,
END OF ts_exceldata,
BEGIN OF ts_ere,
doc TYPE char20,
comp_code TYPE char20,
fiscal_year TYPE char20,
msg_type TYPE bapiret2-id,
description TYPE bapiret2-message,
END OF ts_ere,
BEGIN OF ts_tbsl,
bschl TYPE bschl,
shkzg TYPE shkzg,
END OF ts_tbsl.
METHODS : getdata,
submit_data,
fieldcat,
display.
ENDCLASS.
DATA : lt_exdata TYPE TABLE OF lcl_fi_accpost_bapi=>ts_exceldata,
ls_exdata TYPE lcl_fi_accpost_bapi=>ts_exceldata,
lt_ere TYPE TABLE OF lcl_fi_accpost_bapi=>ts_ere,
ls_ere TYPE lcl_fi_accpost_bapi=>ts_ere,
lt_tbsl TYPE TABLE OF lcl_fi_accpost_bapi=>ts_tbsl,
ls_tbsl TYPE lcl_fi_accpost_bapi=>ts_tbsl,
row_data TYPE truxs_t_text_data,
lt_accountgl TYPE TABLE OF bapiacgl09,
ls_accountgl TYPE bapiacgl09,
lt_accounttax TYPE TABLE OF bapiactx09,
ls_accounttax TYPE bapiactx09,
lt_documentheader TYPE TABLE OF bapiache09,
ls_documentheader TYPE bapiache09,
lt_currencyamount TYPE TABLE OF bapiaccr09,
ls_currencyamount TYPE bapiaccr09,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2,
ls_obj_key TYPE bapiache09-obj_key,
ls_obj_type TYPE bapiache09-obj_type,
ls_obj_sys TYPE bapiache09-obj_sys,
lt_extension2 TYPE TABLE OF bapiparex,
ls_extension2 TYPE bapiparex,
lt_fcat TYPE slis_t_fieldcat_alv,
ls_fcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv,
doc_date1(11) TYPE c,
lv_itemno_acc TYPE n VALUE 0,
obj TYPE REF TO lcl_fi_accpost_bapi.
DATA: lv_wrbtr TYPE bseg-wrbtr,
lv_fwste TYPE bset-fwste,
lt_MWDAT TYPE TABLE OF RTAX1U15,
ls_MWDAT TYPE RTAX1U15,
lv_itemno_tax TYPE n LENGTH 6 VALUE '000001'.
FIELD-SYMBOLS : <fs_amt_base> TYPE any.
CREATE OBJECT obj.
*======================================================================*
* Selection Screen to get input from user *
*======================================================================*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS : p_file TYPE rlgrap-filename.
SELECTION-SCREEN COMMENT /01(50) TEXT-002.
SELECTION-SCREEN END OF BLOCK b1.
*&====================================================================*
*& AT SELECTION-SCREEN *
*&====================================================================*
AT SELECTION-SCREEN.
IF p_file IS INITIAL.
MESSAGE e000(/aag362/fi_accpost). "Please enter path for log file
ENDIF.
***************************************************************
******PERFORM CALL_DIALOG_BOX.
***************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
DEFINE m_fieldcat.
ls_fcat-fieldname = &1.
ls_fcat-seltext_l = &2.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
END-OF-DEFINITION.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
CLASS lcl_fi_accpost_bapi IMPLEMENTATION.
*======================================================================*
* METHOD GET DATA *
*======================================================================*
METHOD getdata.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = row_data
i_filename = p_file
TABLES
i_tab_converted_data = lt_exdata[]
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lt_exdata IS NOT INITIAL.
SELECT bschl shkzg
FROM tbsl
INTO TABLE lt_tbsl
FOR ALL ENTRIES IN lt_exdata
WHERE bschl = lt_exdata-de_cre_ind.
ENDIF.
ENDMETHOD.
METHOD submit_data.
LOOP AT lt_exdata INTO ls_exdata.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = ls_exdata-doc_date
* ACCEPT_INITIAL_DATE =
IMPORTING
date_internal = doc_date1
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_exdata-gl_account
IMPORTING
output = ls_exdata-gl_account.
ls_documentheader-username = sy-uname.
ls_accountgl-itemno_acc = ls_exdata-itemno_acc.
ls_documentheader-doc_date = doc_date1.
ls_documentheader-pstng_date = ls_exdata-pstng_date.
ls_documentheader-doc_type = ls_exdata-doc_type.
ls_documentheader-comp_code = ls_exdata-comp_code.
ls_documentheader-fisc_year = ls_exdata-fisc_year.
ls_documentheader-fis_period = ls_exdata-fis_period.
ls_documentheader-header_txt = ls_exdata-header_txt.
ls_documentheader-ref_doc_no = ls_exdata-ref_doc_no.
ls_accountgl-gl_account = ls_exdata-gl_account.
ls_accountgl-tax_code = ls_exdata-tax_code. "Addition of taxcode by Siddharth Shaligram 26.02.2020
* LS_ACCOUNTGL-DE_CRE_IND = LS_EXDATA-DE_CRE_IND.
ls_accountgl-costcenter = ls_exdata-costcenter.
ls_accountgl-item_text = ls_exdata-item_text.
ls_accountgl-ref_key_1 = ls_exdata-ref_key_1.
ls_accountgl-ref_key_2 = ls_exdata-ref_key_2.
ls_accountgl-ref_key_3 = ls_exdata-ref_key_3.
ls_documentheader-doc_status = '2'.
* ls_currencyamount-itemno_acc = ls_exdata-itemno_acc.
* ls_currencyamount-amt_base = ls_exdata-amt_doccur.
ls_extension2-structure = 'BAPIPAREX'.
ls_extension2-valuepart1 = ls_exdata-bus_place. "zclbadi_acc_document is implemented for pushing business place data in c_accit structure. TR: E40K904671
* LS_EXTENSION2-VALUEPART2 = '00010'. " '01'. "
* LS_EXTENSION2-VALUEPART3 = LS_EXDATA-BUS_PLACE. "'PIMP'.
*$*$ Addition to handle taxcode by Siddharth Shaligram 29.02.2020
ls_accountgl-itemno_tax = '000001'.
READ TABLE lt_tbsl INTO ls_tbsl WITH KEY bschl = ls_exdata-de_cre_ind shkzg = 'S'.
IF sy-subrc EQ 0.
ls_currencyamount-amt_doccur = ls_exdata-amt_doccur.
lv_itemno_acc = lv_itemno_acc + 1.
ASSIGN ls_currencyamount-amt_doccur TO <fs_amt_base>.
MOVE <fs_amt_base> TO lv_wrbtr.
CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT'
EXPORTING
i_bukrs = ls_documentheader-comp_code
i_mwskz = ls_accountgl-tax_code
i_waers = ls_currencyamount-currency
i_wrbtr = lv_wrbtr
IMPORTING
e_fwste = lv_fwste
TABLES
t_mwdat = lt_mwdat
EXCEPTIONS
bukrs_not_found = 1
country_not_found = 2
mwskz_not_defined = 3
mwskz_not_valid = 4
account_not_found = 5
different_discount_base = 6
different_tax_base = 7
txjcd_not_valid = 8
not_found = 9
ktosl_not_found = 10
kalsm_not_found = 11
parameter_error = 12
knumh_not_found = 13
kschl_not_found = 14
unknown_error = 15
OTHERS = 16.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT lt_mwdat INTO ls_mwdat.
ls_currencyamount-itemno_acc = lv_itemno_tax.
ls_currencyamount-amt_base = ls_exdata-amt_doccur.
ls_currencyamount-tax_amt = ls_mwdat-wmwst.
ls_currencyamount-amt_base = ls_exdata-amt_doccur.
ls_currencyamount-currency = ls_exdata-currency.
ls_currencyamount-amt_doccur = ls_exdata-amt_doccur.
* ls_currencyamount-curr_type = '00'.
ls_accounttax-itemno_acc = lv_itemno_tax.
ls_accounttax-itemno_tax = lv_itemno_acc.
ls_accounttax-tax_rate = ls_mwdat-msatz.
ls_accounttax-acct_key = ls_mwdat-ktosl.
ls_accounttax-gl_account = ls_mwdat-hkont.
ls_accounttax-cond_key = ls_mwdat-kschl.
ls_accounttax-tax_date = ls_exdata-pstng_date.
ls_accounttax-tax_code = ls_exdata-tax_code.
APPEND: ls_currencyamount TO lt_currencyamount,
ls_accounttax TO lt_accounttax.
lv_itemno_tax = lv_itemno_tax + 1.
ENDLOOP.
ELSE.
READ TABLE lt_tbsl INTO ls_tbsl WITH KEY bschl = ls_exdata-de_cre_ind shkzg = 'H'.
IF sy-subrc EQ 0.
ls_currencyamount-amt_doccur = ( ls_exdata-amt_doccur * -1 ).
ENDIF.
ENDIF.
*$*$*************************************************************
APPEND: ls_accountgl TO lt_accountgl,
ls_documentheader TO lt_documentheader,
ls_extension2 TO lt_extension2.
CLEAR: ls_exdata , ls_accountgl,ls_currencyamount, ls_extension2, ls_accounttax.
ENDLOOP.
*READ TABLE LT_DOCUMENTHEADER INTO LS_DOCUMENTHEADER WITH KEY DOC_STATUS = '2'.
*IF SY-SUBRC EQ 0.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = ls_documentheader
* CUSTOMERCPD =
* CONTRACTHEADER =
IMPORTING
obj_type = ls_obj_type
obj_key = ls_obj_key
obj_sys = ls_obj_sys
TABLES
accountgl = lt_accountgl
* ACCOUNTRECEIVABLE =
* ACCOUNTPAYABLE =
accounttax = lt_accounttax
currencyamount = lt_currencyamount
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
return = lt_return
* PAYMENTCARD =
* CONTRACTITEM =
extension2 = lt_extension2
* REALESTATE =
* ACCOUNTWT =
.
*ENDIF.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
* IMPORTING
* RETURN =
.
LOOP AT lt_return INTO ls_return.
ls_ere-doc = ' '.
ls_ere-comp_code = ' '.
ls_ere-fiscal_year = ' '.
ls_ere-msg_type = 'Error'.
ls_ere-description = ls_return-message.
APPEND ls_ere TO lt_ere.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN =
.
*****Return the Accounting Document Number and Fiscal Year*****
LOOP AT lt_return INTO ls_return.
ls_ere-doc = ls_obj_key(10).
ls_ere-comp_code = ls_obj_key+10(4).
ls_ere-fiscal_year = ls_obj_key+14(4).
ls_ere-msg_type = 'Success'.
ls_ere-description = ls_return-message.
APPEND ls_ere TO lt_ere.
ENDLOOP.
ENDIF.
ENDMETHOD.
I am getting this error upon execution.
how do I resolve this?
please help.
Hello all,
I have been working on a report for GL to GL posting using BAPI_ACC_DOCUMENT_POST.
the requirement needs off me to add tax indicator to the bapi and calculate the tax on it.
this is the code I have written:
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
CLASS lcl_fi_accpost_bapi DEFINITION.
PUBLIC SECTION.
TYPES : BEGIN OF ts_exceldata, "EXCEL STRUCTURE
itemno_acc TYPE posnr_acc, "ITEM NUMBER
* DOC_DATE TYPE BLART, "DOCUMENT DATE
doc_date(10) TYPE c, "DOCUMENT DATE
pstng_date TYPE budat, "POSTING DATE
doc_type TYPE blart, "Document Type
comp_code TYPE bukrs, "Company Code
fisc_year TYPE gjahr, "Fiscal Year
fis_period TYPE monat, "Posting Period
header_txt TYPE bktxt, "Header Text
ref_doc_no TYPE xblnr, "Reference Document Number
gl_account TYPE hkont, "Account
de_cre_ind TYPE bschl, "Dr/Cr Indicator
currency TYPE waers, "Currency
amt_doccur TYPE bapidoccur, "Amount in Document Currency
tax_code TYPE mwskz, "Tax Code
costcenter TYPE kostl, "Cost Center
item_text TYPE sgtxt, "Item Text
ref_key_1 TYPE xref1, "Reference Key 1
ref_key_2 TYPE xref2, "Reference Key 2
ref_key_3 TYPE xref3, "Reference Key 3
* DOC_STATUS TYPE BAPI_ACC_DOC_STATUS, "Doc Status
bus_place TYPE valuepart,
END OF ts_exceldata,
BEGIN OF ts_ere,
doc TYPE char20,
comp_code TYPE char20,
fiscal_year TYPE char20,
msg_type TYPE bapiret2-id,
description TYPE bapiret2-message,
END OF ts_ere,
BEGIN OF ts_tbsl,
bschl TYPE bschl,
shkzg TYPE shkzg,
END OF ts_tbsl.
METHODS : getdata,
submit_data,
fieldcat,
display.
ENDCLASS.
DATA : lt_exdata TYPE TABLE OF lcl_fi_accpost_bapi=>ts_exceldata,
ls_exdata TYPE lcl_fi_accpost_bapi=>ts_exceldata,
lt_ere TYPE TABLE OF lcl_fi_accpost_bapi=>ts_ere,
ls_ere TYPE lcl_fi_accpost_bapi=>ts_ere,
lt_tbsl TYPE TABLE OF lcl_fi_accpost_bapi=>ts_tbsl,
ls_tbsl TYPE lcl_fi_accpost_bapi=>ts_tbsl,
row_data TYPE truxs_t_text_data,
lt_accountgl TYPE TABLE OF bapiacgl09,
ls_accountgl TYPE bapiacgl09,
lt_accounttax TYPE TABLE OF bapiactx09,
ls_accounttax TYPE bapiactx09,
lt_documentheader TYPE TABLE OF bapiache09,
ls_documentheader TYPE bapiache09,
lt_currencyamount TYPE TABLE OF bapiaccr09,
ls_currencyamount TYPE bapiaccr09,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2,
ls_obj_key TYPE bapiache09-obj_key,
ls_obj_type TYPE bapiache09-obj_type,
ls_obj_sys TYPE bapiache09-obj_sys,
lt_extension2 TYPE TABLE OF bapiparex,
ls_extension2 TYPE bapiparex,
lt_fcat TYPE slis_t_fieldcat_alv,
ls_fcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv,
doc_date1(11) TYPE c,
lv_itemno_acc TYPE n VALUE 0,
obj TYPE REF TO lcl_fi_accpost_bapi.
DATA: lv_wrbtr TYPE bseg-wrbtr,
lv_fwste TYPE bset-fwste,
lt_MWDAT TYPE TABLE OF RTAX1U15,
ls_MWDAT TYPE RTAX1U15,
lv_itemno_tax TYPE n LENGTH 6 VALUE '000001'.
FIELD-SYMBOLS : <fs_amt_base> TYPE any.
CREATE OBJECT obj.
*======================================================================*
* Selection Screen to get input from user *
*======================================================================*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
PARAMETERS : p_file TYPE rlgrap-filename.
SELECTION-SCREEN COMMENT /01(50) TEXT-002.
SELECTION-SCREEN END OF BLOCK b1.
*&====================================================================*
*& AT SELECTION-SCREEN *
*&====================================================================*
AT SELECTION-SCREEN.
IF p_file IS INITIAL.
MESSAGE e000(/aag362/fi_accpost). "Please enter path for log file
ENDIF.
***************************************************************
******PERFORM CALL_DIALOG_BOX.
***************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
DEFINE m_fieldcat.
ls_fcat-fieldname = &1.
ls_fcat-seltext_l = &2.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
END-OF-DEFINITION.
SPAN {
font-family: "Courier New";
font-size: 10pt;
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S32 {
color: #3399FF;
}
.L0S33 {
color: #4DA619;
}
.L0S52 {
color: #0000FF;
}
.L0S55 {
color: #800080;
}
.L0S70 {
color: #808080;
}
CLASS lcl_fi_accpost_bapi IMPLEMENTATION.
*======================================================================*
* METHOD GET DATA *
*======================================================================*
METHOD getdata.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = row_data
i_filename = p_file
TABLES
i_tab_converted_data = lt_exdata[]
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF lt_exdata IS NOT INITIAL.
SELECT bschl shkzg
FROM tbsl
INTO TABLE lt_tbsl
FOR ALL ENTRIES IN lt_exdata
WHERE bschl = lt_exdata-de_cre_ind.
ENDIF.
ENDMETHOD.
METHOD submit_data.
LOOP AT lt_exdata INTO ls_exdata.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = ls_exdata-doc_date
* ACCEPT_INITIAL_DATE =
IMPORTING
date_internal = doc_date1
EXCEPTIONS
date_external_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = ls_exdata-gl_account
IMPORTING
output = ls_exdata-gl_account.
ls_documentheader-username = sy-uname.
ls_accountgl-itemno_acc = ls_exdata-itemno_acc.
ls_documentheader-doc_date = doc_date1.
ls_documentheader-pstng_date = ls_exdata-pstng_date.
ls_documentheader-doc_type = ls_exdata-doc_type.
ls_documentheader-comp_code = ls_exdata-comp_code.
ls_documentheader-fisc_year = ls_exdata-fisc_year.
ls_documentheader-fis_period = ls_exdata-fis_period.
ls_documentheader-header_txt = ls_exdata-header_txt.
ls_documentheader-ref_doc_no = ls_exdata-ref_doc_no.
ls_accountgl-gl_account = ls_exdata-gl_account.
ls_accountgl-tax_code = ls_exdata-tax_code. "Addition of taxcode by Siddharth Shaligram 26.02.2020
* LS_ACCOUNTGL-DE_CRE_IND = LS_EXDATA-DE_CRE_IND.
ls_accountgl-costcenter = ls_exdata-costcenter.
ls_accountgl-item_text = ls_exdata-item_text.
ls_accountgl-ref_key_1 = ls_exdata-ref_key_1.
ls_accountgl-ref_key_2 = ls_exdata-ref_key_2.
ls_accountgl-ref_key_3 = ls_exdata-ref_key_3.
ls_documentheader-doc_status = '2'.
* ls_currencyamount-itemno_acc = ls_exdata-itemno_acc.
* ls_currencyamount-amt_base = ls_exdata-amt_doccur.
ls_extension2-structure = 'BAPIPAREX'.
ls_extension2-valuepart1 = ls_exdata-bus_place. "zclbadi_acc_document is implemented for pushing business place data in c_accit structure. TR: E40K904671
* LS_EXTENSION2-VALUEPART2 = '00010'. " '01'. "
* LS_EXTENSION2-VALUEPART3 = LS_EXDATA-BUS_PLACE. "'PIMP'.
*$*$ Addition to handle taxcode by Siddharth Shaligram 29.02.2020
ls_accountgl-itemno_tax = '000001'.
READ TABLE lt_tbsl INTO ls_tbsl WITH KEY bschl = ls_exdata-de_cre_ind shkzg = 'S'.
IF sy-subrc EQ 0.
ls_currencyamount-amt_doccur = ls_exdata-amt_doccur.
lv_itemno_acc = lv_itemno_acc + 1.
ASSIGN ls_currencyamount-amt_doccur TO <fs_amt_base>.
MOVE <fs_amt_base> TO lv_wrbtr.
CALL FUNCTION 'CALCULATE_TAX_FROM_GROSSAMOUNT'
EXPORTING
i_bukrs = ls_documentheader-comp_code
i_mwskz = ls_accountgl-tax_code
i_waers = ls_currencyamount-currency
i_wrbtr = lv_wrbtr
IMPORTING
e_fwste = lv_fwste
TABLES
t_mwdat = lt_mwdat
EXCEPTIONS
bukrs_not_found = 1
country_not_found = 2
mwskz_not_defined = 3
mwskz_not_valid = 4
account_not_found = 5
different_discount_base = 6
different_tax_base = 7
txjcd_not_valid = 8
not_found = 9
ktosl_not_found = 10
kalsm_not_found = 11
parameter_error = 12
knumh_not_found = 13
kschl_not_found = 14
unknown_error = 15
OTHERS = 16.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT lt_mwdat INTO ls_mwdat.
ls_currencyamount-itemno_acc = lv_itemno_tax.
ls_currencyamount-amt_base = ls_exdata-amt_doccur.
ls_currencyamount-tax_amt = ls_mwdat-wmwst.
ls_currencyamount-amt_base = ls_exdata-amt_doccur.
ls_currencyamount-currency = ls_exdata-currency.
ls_currencyamount-amt_doccur = ls_exdata-amt_doccur.
* ls_currencyamount-curr_type = '00'.
ls_accounttax-itemno_acc = lv_itemno_tax.
ls_accounttax-itemno_tax = lv_itemno_acc.
ls_accounttax-tax_rate = ls_mwdat-msatz.
ls_accounttax-acct_key = ls_mwdat-ktosl.
ls_accounttax-gl_account = ls_mwdat-hkont.
ls_accounttax-cond_key = ls_mwdat-kschl.
ls_accounttax-tax_date = ls_exdata-pstng_date.
ls_accounttax-tax_code = ls_exdata-tax_code.
APPEND: ls_currencyamount TO lt_currencyamount,
ls_accounttax TO lt_accounttax.
lv_itemno_tax = lv_itemno_tax + 1.
ENDLOOP.
ELSE.
READ TABLE lt_tbsl INTO ls_tbsl WITH KEY bschl = ls_exdata-de_cre_ind shkzg = 'H'.
IF sy-subrc EQ 0.
ls_currencyamount-amt_doccur = ( ls_exdata-amt_doccur * -1 ).
ENDIF.
ENDIF.
*$*$*************************************************************
APPEND: ls_accountgl TO lt_accountgl,
ls_documentheader TO lt_documentheader,
ls_extension2 TO lt_extension2.
CLEAR: ls_exdata , ls_accountgl,ls_currencyamount, ls_extension2, ls_accounttax.
ENDLOOP.
*READ TABLE LT_DOCUMENTHEADER INTO LS_DOCUMENTHEADER WITH KEY DOC_STATUS = '2'.
*IF SY-SUBRC EQ 0.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = ls_documentheader
* CUSTOMERCPD =
* CONTRACTHEADER =
IMPORTING
obj_type = ls_obj_type
obj_key = ls_obj_key
obj_sys = ls_obj_sys
TABLES
accountgl = lt_accountgl
* ACCOUNTRECEIVABLE =
* ACCOUNTPAYABLE =
accounttax = lt_accounttax
currencyamount = lt_currencyamount
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
return = lt_return
* PAYMENTCARD =
* CONTRACTITEM =
extension2 = lt_extension2
* REALESTATE =
* ACCOUNTWT =
.
*ENDIF.
READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
IF sy-subrc EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
* IMPORTING
* RETURN =
.
LOOP AT lt_return INTO ls_return.
ls_ere-doc = ' '.
ls_ere-comp_code = ' '.
ls_ere-fiscal_year = ' '.
ls_ere-msg_type = 'Error'.
ls_ere-description = ls_return-message.
APPEND ls_ere TO lt_ere.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN =
.
*****Return the Accounting Document Number and Fiscal Year*****
LOOP AT lt_return INTO ls_return.
ls_ere-doc = ls_obj_key(10).
ls_ere-comp_code = ls_obj_key+10(4).
ls_ere-fiscal_year = ls_obj_key+14(4).
ls_ere-msg_type = 'Success'.
ls_ere-description = ls_return-message.
APPEND ls_ere TO lt_ere.
ENDLOOP.
ENDIF.
ENDMETHOD.
I am getting this error upon execution.
how do I resolve this?
please help.
2020 Mar 03 10:33 AM
Hi,
You might want to put a break point at CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' and check the structures as there must be same line item no being passed multiple times.
Best regards,
Jonathan Eemans
2020 Mar 03 10:42 AM
Check the content of your BAPI tables, before executing it, and make sure that the data is correct.
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |