Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8556

Error on bapi_acc_document_post

$
0
0

Hi experts,

    

     when i executing this bapi_acc_document_post, am getting error  " FI/CO interface: Line item entered several times"  i mention code below  so please give me suggestion.

 

 

*&---------------------------------------------------------------------*
*& Report  ZSAMPLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSAMPLE.



data: BEGIN OF WA_HEADER,
        ID TYPE I,
        KUNNR TYPE n LENGTH 10,
        INV_DATE TYPE c LENGTH 10,
        PST_DATE TYPE c LENGTH 10,
        REF TYPE invfo-xblnr,
        AMT_DOCCUR TYPE PA2010-BETRG,
        TXT(40),
   END OF WA_HEADER.

DATA : IT_HEADER like WA_HEADER OCCURS WITH HEADER LINE.


data: BEGIN OF WA_ITEM,
        ID TYPE I,
        GL_ACCOUNT TYPE n LENGTH 10,
        ITEM_TEXT TYPE BAPIACGL09-ITEM_TEXT,
        BUS_AREA  TYPE BAPIACGL09-BUS_AREA,
        AMT_DOCCUR TYPE BAPIACCR09-AMT_DOCCUR,
        KOSTL TYPE CSKT-KOSTL,
*       VAT(2),

   END OF WA_ITEM.

DATA : IT_ITEM like WA_ITEM OCCURS WITH HEADER LINE.

*      value of excel-cell
TYPES: ty_d_itabvalue             TYPE alsmex_tabline-value,
*      internal table containing the excel data
        ty_t_itab                  TYPE alsmex_tabline   OCCURS 0,

*      line type of sender table
        BEGIN OF ty_s_senderline,
          line(4096)               TYPE c,
        END OF ty_s_senderline,
*      sender table
        ty_t_sender                TYPE ty_s_senderline  OCCURS 0.

*

CONSTANTSgc_esc              VALUE '"'.
DATA  temp_row TYPE I.
DATA  TEMP(4).
INCLUDE lalsmexf01.

DATA: it_data1 TYPE ty_t_itab.
DATA: it_data2 TYPE ty_t_itab.

DATA: it_data_wa LIKE LINE OF it_data1.
DATA: it_data_wa2 LIKE LINE OF it_data1.

* DATA DECLARATION

data: st_rw_s1 TYPE i VALUE '2'.
data: st_cl_s1 TYPE i VALUE '1'.
data: st_rw_s2 TYPE i VALUE '2'.
data: st_cl_s2 TYPE i VALUE '1'.
data: ed_rw_s1 TYPE i VALUE '3'.
data: ed_cl_s1 TYPE i VALUE '7'.
data: ed_rw_s2 TYPE i VALUE '5'.
data: ed_cl_s2 TYPE i VALUE '8'.

DATA: excel_tab TYPE ty_t_sender,
excel_tab1 TYPE ty_t_sender.

DATA: ld_separator TYPE c.
DATA: application TYPE ole2_object,
workbook TYPE ole2_object,
sheet TYPE ole2_object,
range TYPE ole2_object,
worksheet TYPE ole2_object.
DATA: h_cell TYPE ole2_object,
h_cell1 TYPE ole2_object.
DATA: ld_rc TYPE i.

TYPE-POOLS ole2.

*AT SELECTION-SCREEN.

   PARAMETERS: filename LIKE rlgrap-filename.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
   PERFORM value_help.


sTART-OF-SELECTION.

*  CASE sy-ucomm .
*    WHEN 'ONLI'.
       PERFORM execute.
       PERFORM bapi.

*  ENDCASE.

* MESSAGE DEFINATION

   DEFINE m_message.
     case sy-subrc.
       when 0.
       when 1.
         message id sy-msgid type sy-msgty number sy-msgno
         with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
       when others. raise upload_ole.
     endcase.
   END-OF-DEFINITION.

*&---------------------------------------------------------------------*
*&      Form  VALUE_HELP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM VALUE_HELP .

   CALL FUNCTION 'DSVAS_DOC_WS_FILENAME_GET_50'
     EXPORTING
       def_filename     = ' '
       def_path         = ' '
       mask             = ',*.*,*.*.'
       mode             = 'O'
       title            = ' '
     IMPORTING
       filename         = filename
     EXCEPTIONS
       inv_winsys       = 1
       no_batch         = 2
       selection_cancel = 3
       selection_error  = 4
       OTHERS           = 5.
   IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.

ENDFORM.                    " VALUE_HELP
*&---------------------------------------------------------------------*
*&      Form  EXECUTE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM EXECUTE .

* PARAMETER CHECK

   IF st_rw_s1 > ed_rw_s1.
     RAISE inconsistent_parameters.
   ENDIF.

   IF st_cl_s1 > ed_cl_s1.
     RAISE inconsistent_parameters.
   ENDIF.

   IF st_rw_s2 > ed_rw_s2.
     RAISE inconsistent_parameters.
   ENDIF.

   IF st_cl_s2 > ed_cl_s2.
     RAISE inconsistent_parameters.
   ENDIF.


   CLASS cl_abap_char_utilities DEFINITION LOAD.
   ld_separator = cl_abap_char_utilities=>horizontal_tab.

* OPENING EXCEL FILE
   IF application-header = space OR application-handle = -1.
     CREATE OBJECT application 'Excel.Application'.
     m_message.
   ENDIF.
   CALL METHOD OF
       application
       'Workbooks' = workbook.
   m_message.
   CALL METHOD OF
       application
       'Workbooks' = workbook.
   m_message.
   CALL METHOD OF
       workbook
       'Open'

     EXPORTING
       #1       = filename.
   m_message.
   CALL METHOD OF
       application
       'Worksheets' = sheet
     EXPORTING
       #1           = 1.
   m_message.
   CALL METHOD OF
       application
       'Worksheets' = sheet
     EXPORTING
       #1           = 1.
   m_message.
   CALL METHOD OF
       sheet
       'Activate'.
   m_message.
   GET PROPERTY OF application 'ACTIVESHEET' = sheet.
   m_message.

* MARKING OF WHOLE SPREADSHEET
   CALL METHOD OF
       sheet
       'Cells' = h_cell
     EXPORTING
       #1      = st_rw_s1
       #2      = st_cl_s1.
   m_message.
   CALL METHOD OF
       sheet
       'Cells' = h_cell1
     EXPORTING
       #1      = ed_rw_s1
       #2      = ed_cl_s1.
   m_message.

   CALL METHOD OF
       sheet
       'RANGE' = range
     EXPORTING
       #1      = h_cell
       #2      = h_cell1.
   m_message.
   CALL METHOD OF
       range
       'SELECT'.
   m_message.

* Copy marked area (SHEET1) into Clippboard

   CALL METHOD OF
       range
       'COPY'.
   m_message.

* Read clipboard into ABAP

   CALL METHOD cl_gui_frontend_services=>clipboard_import
     IMPORTING
       data                 = excel_tab
     EXCEPTIONS
       cntl_error           = 1
*     ERROR_NO_GUI         = 2
*     NOT_SUPPORTED_BY_GUI = 3
       OTHERS               = 4.
   IF sy-subrc <> 0.
     MESSAGE a037(alsmex).
   ENDIF.

   PERFORM separated_to_intern_convert TABLES excel_tab it_data1
   USING ld_separator.

* Clear the clipboard

   REFRESH excel_tab.
   CALL METHOD cl_gui_frontend_services=>clipboard_export
     IMPORTING
       data                 = excel_tab
     CHANGING
       rc                   = ld_rc
     EXCEPTIONS
       cntl_error           = 1
*     ERROR_NO_GUI         = 2
*     NOT_SUPPORTED_BY_GUI = 3
       OTHERS               = 4.

* Working in Second Excel Work Sheet

   CALL METHOD OF
       application
       'Worksheets' = sheet
     EXPORTING
       #1           = 2.
   m_message.
   CALL METHOD OF
       sheet
       'Activate'.
   m_message.
   GET PROPERTY OF application 'ACTIVESHEET' = sheet.
   m_message.
* Mark Sheet2

   CALL METHOD OF
       sheet
       'Cells' = h_cell
     EXPORTING
       #1      = st_rw_s2
       #2      = st_cl_s2.
   m_message.
   CALL METHOD OF
       sheet
       'Cells' = h_cell1
     EXPORTING
       #1      = ed_rw_s2
       #2      = ed_cl_s2.
   m_message.

   CALL METHOD OF
       sheet
       'RANGE' = range
     EXPORTING
       #1      = h_cell
       #2      = h_cell1.
   m_message.
   CALL METHOD OF
       range
       'SELECT'.
   m_message.

* Copy Marked Area (Sheet2) into Clippboard

   CALL METHOD OF
       range
       'COPY'.
   m_message.

* Read Clipboard into ABAP

   CALL METHOD cl_gui_frontend_services=>clipboard_import
     IMPORTING
       data                 = excel_tab1
     EXCEPTIONS
       cntl_error           = 1
*     ERROR_NO_GUI         = 2
*     NOT_SUPPORTED_BY_GUI = 3
       OTHERS               = 4.
   IF sy-subrc <> 0.
     MESSAGE a037(alsmex).
   ENDIF.

   PERFORM separated_to_intern_convert TABLES excel_tab1 it_data2
   USING ld_separator.

* Clear Clipboard

   REFRESH excel_tab.
   CALL METHOD cl_gui_frontend_services=>clipboard_export
   IMPORTING
   data = excel_tab1
   CHANGING
   rc = ld_rc
   EXCEPTIONS
   cntl_error = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
   OTHERS = 4
* Leaving Application
   .
   CALL METHOD OF
       application
       'QUIT'.
   m_message.

   FREE OBJECT application.
   m_message.


   LOOP AT it_data1 INTO it_data_wa2.

     IF temp_row ne it_data_wa2-ROW AND temp_row IS NOT INITIAL.

       temp_row = it_data_wa2-ROW.
       APPEND IT_HEADER.
     ELSE.
       temp_row = it_data_wa2-ROW.
     ENDIF.

     CASE it_data_wa2-COL.

       WHEN '0001'.
         IT_HEADER-ID = it_data_wa2-VALUE.
       WHEN '0002'.
         IT_HEADER-KUNNR = it_data_wa2-VALUE.
       WHEN '0003'.
         IT_HEADER-INV_DATE = it_data_wa2-value.
       WHEN '0004'.
         IT_HEADER-PST_DATE = it_data_wa2-VALUE.
       WHEN '0005'.
         IT_HEADER-REF = it_data_wa2-VALUE.
       WHEN '0006'.
         IT_HEADER-AMT_DOCCUR = it_data_wa2-VALUE.
       WHEN '0007'.
         IT_HEADER-TXT = it_data_wa2-VALUE.


     ENDCASE.

   ENDLOOP.
   APPEND IT_HEADER.

   CLEAR:temp_row.

   LOOP AT it_data2 INTO it_data_wa ."WHERE ROW = it_data_wa2-ROW.

     IF temp_row ne it_data_wa-ROW AND temp_row IS NOT INITIAL.

       temp_row = it_data_wa-ROW.
       APPEND IT_ITEM.
     ELSEIF ( temp_row NE it_data_wa-ROW AND temp_row IS  INITIAL ).
       temp_row = it_data_wa-ROW.
*           ELSE
     ENDIF.

     CASE it_data_wa-COL.

       WHEN '0001'.
         IT_ITEM-ID = it_data_wa-VALUE.
       WHEN '0002'.
         IT_ITEM-GL_ACCOUNT = it_data_wa-VALUE.
       WHEN '0003'.
         IT_ITEM-AMT_DOCCUR = it_data_wa-value.
       WHEN '0004'.
         IT_ITEM-ITEM_TEXT = it_data_wa-VALUE.
       WHEN '0005'.
         IT_ITEM-BUS_AREA = it_data_wa-VALUE.
       WHEN '0006'.
         IT_ITEM-KOSTL = it_data_wa-VALUE.
*      WHEN '0007'.
*        IT_ITEM-VAT = it_data_wa-VALUE.

     ENDCASE.
   ENDLOOP.

   APPEND IT_ITEM.
ENDFORM.                    " EXECUTE



*ENDLOOP.
*&---------------------------------------------------------------------*
*&      Form  BAPI
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BAPI .

   DATA: it_acc_gl LIKE bapiacgl09 OCCURS 0 WITH HEADER LINE,
  it_acc_ap LIKE bapiacap09 OCCURS 0 WITH HEADER LINE,
  it_acc_aR LIKE bapiacaR09 OCCURS 0 WITH HEADER LINE,
  it_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE,
  it_curr_amt LIKE bapiaccr09 OCCURS 0 WITH HEADER LINE,
  it_doc_header LIKE bapiache09 OCCURS 0 WITH HEADER LINE,
  it_acc_tax LIKE bapiactx09 OCCURS 0 WITH HEADER LINE,
  obj_type LIKE bapiache09-obj_type,
  obj_key LIKE bapiache09-obj_key,
  obj_sys LIKE bapiache09-obj_sys,
  pstng_date LIKE it_doc_header-pstng_date,
  doc_date LIKE it_doc_header-doc_date,

  loop_cnt TYPE i VALUE 0,
  gv_vendor(10) TYPE c,
  gv_gl_acc(10) TYPE c.
   DATA  conv_s_amt TYPE BETRG.
   DATA  cur_line TYPE P.
   data item_no type POSNR_ACC.
   data item_no1 type POSNR_ACC.

   CLEAR: obj_type, obj_sys, obj_key, pstng_date, doc_date, gv_vendor, gv_gl_acc.
*  CLEAR: it_doc_header,it_acc_gl,it_curr_amt,IT_ACC_AR,IT_RETURN.




   LOOP AT it_HEADER INTO WA_HEADER .

     REFRESH it_doc_header.

     it_doc_header-bus_act = 'RFBU'.
     it_doc_header-username = sy-uname.
*   it_doc_header = WA_HEADER-KUNNR." Customer Number
     it_doc_header-header_txt = WA_HEADER-TXT." bdc_source-col_h. " Invoice Text
     it_doc_header-comp_code = 'JPOL'."bdc_source-col_a. " Company Code
     CONCATENATE WA_HEADER-INV_DATE+6(4) WA_HEADER-INV_DATE+3(2) WA_HEADER-INV_DATE(2)
     into it_doc_header-doc_date.
     CONCATENATE WA_HEADER-pst_date+6(4) WA_HEADER-pst_date+3(2) WA_HEADER-pst_date(2)
      into it_doc_header-pstng_date.

     it_doc_header-doc_type = 'DR'. " Return Order...?
     it_doc_header-fisc_year = '2013'. " Return Order...?
     it_doc_header-fis_period = '02'. " Return Order...?
     it_doc_header-ref_doc_no = '123'."bdc_source-col_d. " Invoice Number


     APPEND it_doc_header.

     REFRESH it_acc_aR.
     it_acc_aR-itemno_acc = '1'. " Invoice Number
     it_acc_aR-customer = WA_HEADER-KUNNR. " Customer Number
     it_acc_aR-comp_code = 'JPOL'. " Company Code
     it_acc_aR-item_text = WA_HEADER-txt. " Line Item Text

     APPEND it_acc_aR.
*
*    it_acc_aR-itemno_acc = '4'. " Invoice Number
*    it_acc_aR-customer = WA_HEADER-KUNNR. " Customer Number
*    it_acc_aR-comp_code = 'JPOL'. " Company Code
*    it_acc_aR-item_text = WA_HEADER-txt. " Line Item Text
*
*    APPEND it_acc_aR.

     REFRESH it_acc_gl.
     REFRESH IT_CURR_AMT.
*    ITEM_NO = 1.
     "GL Information details collected
*


CLEAR : ITEM_NO,item_no1.

     LOOP AT it_ITEM INTO WA_ITEM where id = wa_header-ID.

       ITEM_NO = ITEM_NO + 1.
       it_acc_gl-itemno_acc = ITEM_NO.
       it_acc_gl-gl_account = WA_ITEM-GL_ACCOUNT."gv_gl_acc. " GL Account
       it_acc_gl-item_text = WA_ITEM-ITEM_TEXT. "bdc_source-col_o. " Line Item Text
       it_acc_gl-doc_type = 'DR'. " Return Order...?
       it_acc_gl-comp_code = 'JPOL'."bdc_source-col_a. " Company Code
       it_acc_gl-bus_area = WA_ITEM-BUS_AREA."bdc_source-col_a. " Company Code
       it_acc_gl-CUSTOMER = WA_HEADER-KUNNR.

       conv_s_amt = WA_ITEM-AMT_DOCCUR."bdc_source-col_f. " Invoice Amount
       IF conv_s_amt < 0.
         it_acc_gl-de_cre_ind = 'H'. " H-Credit
         conv_s_amt = - conv_s_amt.
       ELSE.
         it_acc_gl-de_cre_ind = 'S'. " S-Debit
       ENDIF.
       APPEND it_acc_gl.


       ITEM_NO1 = ITEM_NO1 + 1.
       it_curr_amt-itemno_acc ITEM_NO1 . " Invoice Number
       it_curr_amt-curr_type = '00'.
       it_curr_amt-currency = 'INR'. " Currancy
       it_curr_amt-amt_doccur = conv_s_amt . " Line Item Amount
       APPEND it_curr_amt.

       ITEM_NO1 = ITEM_NO1 + 1.
       it_curr_amt-itemno_acc ITEM_NO1 . " Invoice Number
       it_curr_amt-curr_type = '00'.
       it_curr_amt-currency = 'INR'. " Currancy
       it_curr_amt-amt_doccur = conv_s_amt * -1. " Line Item Amount

              APPEND it_curr_amt.

     ENDLOOP.
*  

     REFRESH it_return.

     "Customer Invoice

* Do the post to GL Account and AP
     CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
       EXPORTING
         documentheader    = it_doc_header
       IMPORTING
         obj_type          = obj_type
         obj_key           = obj_key
         obj_sys           = obj_sys
       TABLES
         accountgl         = it_acc_gl
         currencyamount    = it_curr_amt
         accountreceivable = it_acc_aR
         return            = it_return.

     CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         wait = 'X'.
* Check for any errors

     WRITE : obj_key.
     LOOP at IT_RETURN WHERE TYPE = 'E'.
       WRITE : / 'Error :', IT_RETURN-MESSAGE .
     endloop.

   ENDLOOP.


ENDFORM.                    " BAPI






Result:




Viewing all articles
Browse latest Browse all 8556

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>