Vous êtes sur la page 1sur 7

*****TYPES BEGIN OF ty_upload.

*****TYPES posnr TYPE string.


*****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.

Vous aimerez peut-être aussi