Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI_ACC_DOCUMENT_POST error : FI/CO interface: Line item entered several times

Former Member
0 Likes
3,455

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.

2 REPLIES 2
Read only

JonathanEemans
Active Contributor
0 Likes
2,300

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

Read only

iklovski
Active Contributor
0 Likes
2,300

Check the content of your BAPI tables, before executing it, and make sure that the data is correct.