*****TYPES user TYPE string. *****TYPES hdr_txt TYPE string. *****TYPES bukrs TYPE string. *****TYPES bupla TYPE string. *****TYPES doc_dat TYPE string. *****TYPES pos_dat TYPE string. *****TYPES h_tax TYPE string. *****TYPES hdmbtr TYPE string. *****TYPES xblnr TYPE string. *****TYPES itm_no TYPE string. *****TYPES hkont TYPE string. *****TYPES itm_txt TYPE string. *****TYPES i_tax TYPE string. *****TYPES kostl TYPE string. *****TYPES gsber TYPE string. *****TYPES wbs_el TYPE string. *****TYPES hsn TYPE string. *****TYPES dmbtr TYPE string. *****TYPES waers TYPE string. *****TYPES lifnr TYPE string. *****TYPES bdate TYPE string. *****TYPES with_amt TYPE string. *****TYPES END OF ty_upload. ***** *****TYPES BEGIN OF ty_final. *****TYPES posnr TYPE posnr. *****TYPES user TYPE sy-uname. *****TYPES hdr_txt TYPE sgtxt. *****TYPES bukrs TYPE bukrs. *****TYPES bupla TYPE bupla. *****TYPES doc_dat TYPE bldat. *****TYPES pos_dat TYPE budat. *****TYPES h_tax TYPE mwskz. *****TYPES hdmbtr TYPE dmbtr. *****TYPES xblnr TYPE bkpf-xblnr. *****TYPES itm_no TYPE posnr. *****TYPES hkont TYPE hkont. *****TYPES itm_txt TYPE string. *****TYPES i_tax TYPE mwskz. *****TYPES kostl TYPE kostl. *****TYPES gsber TYPE gsber. *****TYPES wbs_el TYPE ps_psp_pnr. *****TYPES hsn TYPE j_1ig_hsn_sac. *****TYPES dmbtr TYPE dmbtr. *****TYPES waers TYPE waers. *****TYPES lifnr TYPE lifnr. *****TYPES bdate TYPE dzfbdt. *****TYPES w_tax_code TYPE acpi_qsskz. *****TYPES with_amt TYPE dmbtr. *****TYPES END OF ty_final.
******PARAMETER p_file TYPE rlgrap-filename.
****** ****** ******DATA : BEGIN OF doc_new, ****** belnr TYPE belnr, ****** bukrs TYPE bukrs, ****** gjahr TYPE gjahr, ****** END OF doc_new. ******DATA: lt_glacct TYPE TABLE OF bapiacgl09, ****** ls_cust TYPE bapiacpa09, ****** lt_vendact TYPE TABLE OF bapiacap09, ****** lt_actrec TYPE TABLE OF bapiacar09, ****** lt_curramt TYPE TABLE OF bapiaccr09, ****** lt_return TYPE TABLE OF bapiret2, ****** ls_return1 TYPE bapiret2, ****** it_belnr TYPE TABLE OF rf048_d WITH HEADER LINE, ****** lt_bkpf TYPE STANDARD TABLE OF bkpf, ****** lt_bseg TYPE STANDARD TABLE OF bseg. ****** ******DATA lt_ext2 TYPE TABLE OF bapiparex. ******DATA wa_ext2 TYPE bapiparex. ******DATA lv_posnr TYPE posnr. ****** ******** Workarea and variable declaration ******DATA: lv_objtyp TYPE bapiache09-obj_type, ****** lv_objkey TYPE bapiache09-obj_key, ****** lv_objsys TYPE bapiache09-obj_sys, ****** wa_docheader TYPE bapiache09, ****** wa_actrec LIKE LINE OF lt_actrec, ****** wa_glacct LIKE LINE OF lt_glacct, ****** wa_curramt LIKE LINE OF lt_curramt, ****** wa_vendact LIKE LINE OF lt_vendact, ****** wa_return LIKE LINE OF lt_return, ****** lt_upload TYPE TABLE OF ty_upload, ****** ls_upload TYPE ty_upload, ****** lt_final TYPE TABLE OF ty_final, ****** ls_final TYPE ty_final, ****** it_type TYPE truxs_t_text_data. ****** ******AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. ****** CALL FUNCTION 'F4_FILENAME' ****** EXPORTING ******* PROGRAM_NAME = SYST-CPROG ******* DYNPRO_NUMBER = SYST-DYNNR ****** field_name = 'P_FILE' ****** IMPORTING ****** file_name = p_file. ****** ******START-OF-SELECTION. ******* Uploading the data in the file into internal table ****** CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP' ****** EXPORTING ******* I_FIELD_SEPERATOR = ******* I_LINE_HEADER = 'X' ****** i_tab_raw_data = it_type ****** i_filename = p_file ****** TABLES ****** i_tab_converted_data = lt_upload[] ****** EXCEPTIONS ****** conversion_failed = 1 ****** OTHERS = 2. ****** IF sy-subrc NE 0. ****** MESSAGE ID sy-msgid ****** TYPE sy-msgty ****** NUMBER sy-msgno ****** WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ****** ENDIF. ****** ******END-OF-SELECTION. ****** ****** ****** LOOP AT lt_upload INTO ls_upload. ****** MOVE ls_upload-posnr TO ls_final-posnr. ****** CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' ****** EXPORTING ****** input = ls_final-posnr ****** IMPORTING ****** output = ls_final-posnr. ****** ****** MOVE ls_upload-user TO ls_final-user. ****** MOVE ls_upload-hdr_txt TO ls_final-hdr_txt. ****** MOVE ls_upload-bukrs TO ls_final-bukrs. ****** MOVE ls_upload-bupla TO ls_final-bupla. ****** REPLACE ALL OCCURRENCES OF '/' IN ls_upload-doc_dat WITH '.'. ****** REPLACE ALL OCCURRENCES OF '/' IN ls_upload-pos_dat WITH '.'. ****** CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL' ****** EXPORTING ****** date_external = ls_upload-doc_dat ******* ACCEPT_INITIAL_DATE = ****** IMPORTING ****** date_internal = ls_final-doc_dat ****** EXCEPTIONS ****** date_external_is_invalid = 1 ****** OTHERS = 2. ****** IF sy-subrc <> 0. ******* Implement suitable error handling here ****** ENDIF. ****** CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL' ****** EXPORTING ****** date_external = ls_upload-pos_dat ******* ACCEPT_INITIAL_DATE = ****** IMPORTING ****** date_internal = ls_final-pos_dat ****** EXCEPTIONS ****** date_external_is_invalid = 1 ****** OTHERS = 2. ****** IF sy-subrc <> 0. ******* Implement suitable error handling here ****** ENDIF. ****** MOVE ls_upload-h_tax TO ls_final-h_tax. ****** MOVE ls_upload-hdmbtr TO ls_final-hdmbtr. ****** MOVE ls_upload-xblnr TO ls_final-xblnr. ****** MOVE ls_upload-itm_no TO ls_final-itm_no. ****** ****** CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' ****** EXPORTING ****** input = ls_final-itm_no ****** IMPORTING ****** output = ls_final-itm_no. ****** ****** MOVE ls_upload-hkont TO ls_final-hkont. ****** MOVE ls_upload-itm_txt TO ls_final-itm_txt. ****** MOVE ls_upload-i_tax TO ls_final-i_tax. ****** MOVE ls_upload-kostl TO ls_final-kostl. ****** MOVE ls_upload-gsber TO ls_final-gsber. ****** MOVE ls_upload-wbs_el TO ls_final-wbs_el. ****** MOVE ls_upload-hsn TO ls_final-hsn. ****** MOVE ls_upload-dmbtr TO ls_final-dmbtr. ****** MOVE ls_upload-waers TO ls_final-waers. ****** MOVE ls_upload-lifnr TO ls_final-lifnr. ****** ****** REPLACE ALL OCCURRENCES OF '/' IN ls_upload-bdate WITH '.'. ****** CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL' ****** EXPORTING ****** date_external = ls_upload-bdate ******* ACCEPT_INITIAL_DATE = ****** IMPORTING ****** date_internal = ls_final-bdate ****** EXCEPTIONS ****** date_external_is_invalid = 1 ****** OTHERS = 2. ****** IF sy-subrc <> 0. ******* Implement suitable error handling here ****** ENDIF. ****** MOVE ls_upload-with_amt TO ls_final-with_amt. ****** APPEND ls_final TO lt_final. ****** CLEAR ls_final. ****** ENDLOOP. ************************************************************************** ************************************************************************** ***************** Posting ********************************************** ****** CLEAR lv_posnr. ****** LOOP AT lt_final INTO ls_final. ****** IF lv_posnr NE ls_final-posnr AND ****** lv_posnr IS NOT INITIAL. ****** ****** CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST' ****** EXPORTING ****** documentheader = wa_docheader ******* CUSTOMERCPD = ******* CONTRACTHEADER = ****** IMPORTING ****** obj_type = lv_objtyp ****** obj_key = lv_objkey ****** obj_sys = lv_objsys ****** TABLES ****** accountgl = lt_glacct ******* accountreceivable = ****** accountpayable = lt_vendact ******* ACCOUNTTAX = ****** currencyamount = lt_curramt ******* CRITERIA = ******* VALUEFIELD = ******* EXTENSION1 = ****** return = lt_return ******* PAYMENTCARD = ******* CONTRACTITEM = ****** extension2 = lt_ext2 ******* REALESTATE = ******* ACCOUNTWT = ****** . ****** ****** IF sy-subrc EQ 0. ****** LOOP AT lt_return INTO wa_return. ****** WRITE:/ wa_return-message_v4. ****** WRITE:/ wa_return-message. ****** CLEAR wa_return. ****** ENDLOOP. ****** ****** COMMIT WORK AND WAIT. ****** ENDIF. ****** ******** all necessary fields for vendor invoices will be considerd. ******* Populate header data of document ****** wa_docheader-obj_type = 'BKPFF'. "'REACI'. ****** wa_docheader-obj_key = '$'. ****** wa_docheader-obj_sys = sy-mandt. "'RD1CLNT800'."T90CLNT090'. ****** wa_docheader-bus_act = 'RFBU'. ****** wa_docheader-comp_code = ls_final-bukrs."'YBIL'. ****** wa_docheader-username = ls_final-user. ****** wa_docheader-header_txt = ls_final-hdr_txt. "'FI-Test'. ****** wa_docheader-doc_date = ls_final-doc_dat."'20170822'. ****** wa_docheader-pstng_date = ls_final-pos_dat."'20170822'. *******wa_docheader-fisc_year = '2016'. *******wa_docheader-fis_period = '06'. ****** wa_docheader-doc_type = 'KZ'. *******wa_docheader-ac_doc_no = '1400000009'. ****** wa_docheader-ref_doc_no = ls_final-xblnr."'0090039889'. *******wa_docheader- ****** ******* Account payable are maintained here ****** wa_vendact-itemno_acc = '0000000002'. ****** wa_vendact-vendor_no = '0000010173'. *******wa_vendact-gl_account = '0000159000'." '0000160000'. ****** wa_vendact-comp_code = 'YBIL'. *******wa_vendact-pmnttrms = '0001'. *******wa_vendact-bline_date = '20160809'. *******wa_vendact-item_text = 'Account payable Ismail'. *******wa_vendact-sp_gl_ind = 'A'. ****** APPEND wa_vendact TO lt_vendact. ****** ****** ELSEIF lv_posnr IS INITIAL. ******** All necessary fields for vendor invoices will be considerd. ******* Populate header data of document ****** wa_docheader-obj_type = 'BKPFF'. "'REACI'. ****** wa_docheader-obj_key = '$'. ****** wa_docheader-obj_sys = sy-mandt. "'RD1CLNT800'."T90CLNT090'. ****** wa_docheader-bus_act = 'RFBU'. ****** wa_docheader-comp_code = ls_final-bukrs."'YBIL'. ****** wa_docheader-username = ls_final-user. ****** wa_docheader-header_txt = ls_final-hdr_txt. "'FI-Test'. ****** wa_docheader-doc_date = ls_final-doc_dat."'20170822'. ****** wa_docheader-pstng_date = ls_final-pos_dat."'20170822'. *******wa_docheader-fisc_year = '2016'. *******wa_docheader-fis_period = '06'. ****** wa_docheader-doc_type = 'KZ'. *******wa_docheader-ac_doc_no = '1400000009'. ****** wa_docheader-ref_doc_no = ls_final-xblnr."'0090039889'. *******wa_docheader- ****** ******* Account payable are maintained here ****** wa_vendact-itemno_acc = '0000000001'. ****** wa_vendact-vendor_no = ls_final-lifnr. *******wa_vendact-gl_account = '0000159000'." '0000160000'. ****** wa_vendact-comp_code = 'YBIL'. ****** wa_vendact-w_tax_code = *******wa_vendact-pmnttrms = '0001'. *******wa_vendact-bline_date = '20160809'. *******wa_vendact-item_text = 'Account payable Ismail'. *******wa_vendact-sp_gl_ind = 'A'. ****** append wa_vendact TO lt_vendact. ****** ****** ****** CLEAR wa_curramt. ****** wa_curramt-itemno_acc = '0000000001'. *******wa_curramt-curr_type = '00'. ****** wa_curramt-currency = ls_final-waers. *******wa_curramt-currency_iso = 'INR'. ****** wa_curramt-amt_doccur = ls_final-dmbtr. *******wa_curramt-amt_base = '-9.00'. *******wa_curramt-tax_amt = '-14.76'. ****** APPEND wa_curramt TO lt_curramt. ****** CLEAR wa_curramt. ****** ENDIF. ****** ****** *******ls_cust-bank_acct = '110009'. ******* Corresponding entry in GL Account ****** CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' ****** EXPORTING ****** input = ls_final-posnr ****** IMPORTING ****** output = ls_final-posnr. ****** ****** wa_glacct-itemno_acc = ls_final-posnr. ****** wa_glacct-gl_account = ls_final-hkont. "'159000'. ****** wa_glacct-costcenter = ls_final-kostl. ****** wa_glacct-wbs_element = ls_final-wbs_el. ****** wa_glacct-bus_area = ls_final-gsber. ****** wa_glacct-doc_type = 'KZ'. ****** wa_glacct-comp_code = 'YBIL'. ****** *******wa_glacct-fis_period = '08'. *******wa_glacct-acct_type = 'S'. ****** "New *******wa_glacct-fisc_year = '2016'. *******wa_glacct-pstng_date = sy-datum. *******wa_glacct-value_date = sy-datum. *******wa_glacct-vendor_no = '0000100620'. *******"end *******wa_glacct-item_text = 'GL account Ismail'. *******wa_glacct-po_number = '9441501340'."'9441501332'." '9441501336'. *******wa_glacct-po_item = '00010'. ****** APPEND wa_glacct TO lt_glacct. ****** ****** *******Make sure total amount balance for a document should be zero ****** ****** wa_curramt-itemno_acc = '0000000002'. *******wa_curramt-curr_type = '00'. ****** wa_curramt-currency = 'INR'. *******wa_curramt-currency_iso = 'INR'. ****** wa_curramt-amt_doccur = '-123.00'. *******wa_curramt-amt_base = '9.00'. *******wa_curramt-tax_amt = '-14.76'. ****** APPEND wa_curramt TO lt_curramt. ****** CLEAR: wa_curramt,wa_glacct,wa_vendact. ****** ****** ****** CLEAR wa_ext2. ****** wa_ext2-structure = 'EBELN'. ****** wa_ext2-valuepart1 = '0000000001'. ****** wa_ext2-valuepart2 = '123456'. ****** APPEND wa_ext2 TO lt_ext2. ****** ****** ****** ENDLOOP.