0% found this document useful (0 votes)
511 views7 pages

Zfi Bapi Acc Document Post2

The document defines internal tables and work areas to store data extracted from an Excel file. It then performs subroutines to upload the Excel data, execute SAP BDC calls to post financial documents, and output the results. Key steps include loading the Excel file, looping through records to populate posting document and account fields, appending to internal tables for BDC transmission, and executing the BDC to post the financial documents in SAP.

Uploaded by

VIKAS VALLAKONDA
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
511 views7 pages

Zfi Bapi Acc Document Post2

The document defines internal tables and work areas to store data extracted from an Excel file. It then performs subroutines to upload the Excel data, execute SAP BDC calls to post financial documents, and output the results. Key steps include loading the Excel file, looping through records to populate posting document and account fields, appending to internal tables for BDC transmission, and executing the BDC to post the financial documents in SAP.

Uploaded by

VIKAS VALLAKONDA
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

*&---------------------------------------------------------------------*

*& Report ZFI_BAPI_ACC_DOCUMENT_POST2


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zfi_bapi_acc_document_post2 NO STANDARD PAGE HEADING LINE-SIZE 255.


*&----------------------------------------------------------------------*
*& T Y P E D E C L A R A T I O N S
*&----------------------------------------------------------------------*
TYPES : BEGIN OF ty_final,
sno TYPE i,
bukrs LIKE bkpf-bukrs,
blart LIKE bkpf-blart,
bldat(10) TYPE c,
budat(10) TYPE c,
monat LIKE bkpf-monat,
waers LIKE bkpf-waers,
xblnr LIKE bkpf-xblnr,
bktxt LIKE bkpf-bktxt,
newbs LIKE rf05a-newbs,
umskz LIKE bseg-umskz,
newko(10)," LIKE rf05a-newko,
wrbtr(016),
bupla LIKE bseg-bupla,
secco LIKE bseg-secco,
prctr LIKE cobl-prctr,
zuonr LIKE bseg-zuonr,
sgtxt LIKE bseg-sgtxt,
srno2(10) TYPE c,
kostl TYPE kostl,
END OF ty_final.
*&----------------------------------------------------------------------*
*& I N T E R N A L T A B L E D E C L A R A T I O N S
*&----------------------------------------------------------------------*
DATA: it_final TYPE STANDARD TABLE OF ty_final,
it_final_tmp TYPE STANDARD TABLE OF ty_final.
DATA: it_intrn TYPE STANDARD TABLE OF alsmex_tabline.
DATA: w_documentheader TYPE bapiache09.
DATA: w_accountgl TYPE bapiacgl09,
i_accountgl TYPE TABLE OF bapiacgl09 INITIAL SIZE 0.
DATA: w_accountpayable TYPE bapiacap09,
i_accountpayable TYPE TABLE OF bapiacap09 INITIAL SIZE 0.
DATA: w_accountreceivable TYPE bapiacar09,
i_accountreceivable TYPE TABLE OF bapiacar09 INITIAL SIZE 0.
DATA: w_currencyamount TYPE bapiaccr09,
i_currencyamount TYPE TABLE OF bapiaccr09 INITIAL SIZE 0.
DATA: w_return TYPE bapiret2,
i_return TYPE TABLE OF bapiret2 INITIAL SIZE 0,
i_output TYPE TABLE OF bapiret2 INITIAL SIZE 0.
*&----------------------------------------------------------------------*
*& W O R K A R E A D E C L A R A T I O N S
*&----------------------------------------------------------------------*
DATA: is_intrn TYPE alsmex_tabline,
is_final TYPE ty_final,
is_final_tmp TYPE ty_final.
*&----------------------------------------------------------------------*
*& V A R I A B L E D E C L A R A T I O N S
*&----------------------------------------------------------------------*
DATA : w_fname TYPE rlgrap-filename .
DATA : w_count TYPE i.
DATA: ld_filename TYPE string,
ld_path TYPE string,
ld_fullpath TYPE string,
ld_result TYPE i.
DATA : header_start,
srno2(10) TYPE c.
DATA: ov_obj_type TYPE bapiache09-obj_type,
ov_obj_key TYPE bapiache09-obj_key,
ov_obj_sys TYPE bapiache09-obj_sys.
*&----------------------------------------------------------------------*
*& C O N S T A N T S D E C L A R A T I O N S
*&----------------------------------------------------------------------*
DATA: c_wait LIKE bapita-wait VALUE 'X' , " Using the
command `COMMIT AND WAIT`
c_bcol TYPE i VALUE 1 , "START COLUMN
c_brow TYPE i VALUE 3 , "START ROW
c_ecol TYPE i VALUE 200 , "Ending column
c_erow TYPE i VALUE 40000 . "ENDING ROW
DATA: w_textout LIKE t100-text.
*&----------------------------------------------------------------------*
*& S E L E C T I O N S C R E E N D E S I G N I N S
*&----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_fname TYPE rlgrap-filename OBLIGATORY .
SELECTION-SCREEN END OF BLOCK b1 .
*&----------------------------------------------------------------------*
*& AT - S E L E C T I O N S C R E E N
*&----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = 'ZBAPI'
dynpro_number = '1000'
field_name = 'P_FNAME'
CHANGING
file_name = p_fname.
IF NOT p_fname IS INITIAL.
w_fname = p_fname.
ENDIF.
*&----------------------------------------------------------------------*
*& S T A R T-OF-S E L E C T I O N.
*&----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM sub_uploadexcel.
PERFORM perform_bdc.
PERFORM out_put.
*&---------------------------------------------------------------------*
*& Form PERFORM_BDC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM perform_bdc .
LOOP AT it_final INTO is_final.
CLEAR: header_start.
srno2 = srno2 + 1.
UNPACK srno2 TO srno2.
AT NEW sno.
header_start = 'X'.
ENDAT.
is_final-srno2 = srno2.
IF header_start NE space.
w_documentheader-username = sy-uname.
w_documentheader-header_txt = is_final-bktxt. "p_bktxt.
w_documentheader-comp_code = is_final-bukrs.
CONCATENATE is_final-bldat+6(4) is_final-bldat+3(2) is_final-bldat(2) INTO
w_documentheader-doc_date.
CONCATENATE is_final-budat+6(4) is_final-budat+3(2) is_final-budat(2) INTO
w_documentheader-pstng_date.
w_documentheader-doc_type = is_final-blart.
w_documentheader-ref_doc_no = is_final-xblnr.
ENDIF.

IF is_final-newbs = '40' OR is_final-newbs = '50'.


w_accountgl-itemno_acc = is_final-srno2.
w_accountgl-gl_account = is_final-newko.
w_accountgl-item_text = is_final-sgtxt.
w_accountgl-doc_type = is_final-blart.
w_accountgl-comp_code = is_final-bukrs.
w_accountgl-profit_ctr = is_final-prctr.
* w_accountgl-wbs_element = is_final-posid.
w_accountgl-alloc_nmbr = is_final-zuonr.
w_accountgl-costcenter = is_final-kostl.
* CONCATENATE is_final-bdate+6(4) is_final-bdate+3(2) is_final-bdate(2) INTO
* w_accountgl-VALUE_DATE.
APPEND w_accountgl TO i_accountgl.
CLEAR w_accountgl.

w_currencyamount-itemno_acc = is_final-srno2.
w_currencyamount-currency = is_final-waers.
* w_currencyamount-exch_rate = is_final-kursf.
IF is_final-newbs = '40'.
w_currencyamount-amt_doccur = is_final-wrbtr.
ELSE.
w_currencyamount-amt_doccur = -1 * is_final-wrbtr.
ENDIF.
* amount_930 = amount_930 + w_currencyamount-amt_doccur .
APPEND w_currencyamount TO i_currencyamount.
CLEAR w_currencyamount.

ELSEIF is_final-newbs = '11' OR is_final-newbs = '01' OR


is_final-newbs = '09' OR is_final-newbs = '19'.
w_accountreceivable-itemno_acc = is_final-srno2.
w_accountreceivable-customer = is_final-newko.
* w_accountreceivable-ref_key_1 = is_final-xref1.
w_accountreceivable-comp_code = is_final-bukrs.
* w_accountpayable-alloc_nmbr = .
w_accountreceivable-item_text = is_final-sgtxt.
w_accountreceivable-businessplace = is_final-bupla.
w_accountreceivable-sectioncode = is_final-secco.
* w_accountreceivable-sp_gl_ind = is_final-umskz.
w_accountreceivable-profit_ctr = is_final-prctr.
w_accountreceivable-alloc_nmbr = is_final-zuonr.
w_accountgl-costcenter = is_final-kostl.
* CONCATENATE is_final-bdate+6(4) is_final-bdate+3(2) is_final-bdate(2) INTO
* w_accountreceivable-BLINE_DATE.
IF is_final-newbs = '09' OR is_final-newbs = '19'.
w_accountreceivable-sp_gl_ind = is_final-umskz.
ENDIF.

APPEND w_accountreceivable TO i_accountreceivable.


CLEAR w_accountreceivable.

w_currencyamount-itemno_acc = is_final-srno2.
w_currencyamount-currency = is_final-waers.
* w_currencyamount-exch_rate = is_final-kursf.

IF is_final-newbs = '01' OR is_final-newbs = '09' OR


is_final-newbs = '21' OR is_final-newbs = '29' .
w_currencyamount-amt_doccur = is_final-wrbtr.
ELSE.
w_currencyamount-amt_doccur = -1 * is_final-wrbtr.
ENDIF.

APPEND w_currencyamount TO i_currencyamount.


CLEAR w_currencyamount.

ELSEIF is_final-newbs = '21' OR is_final-newbs = '31' OR


is_final-newbs = '29' OR is_final-newbs = '39' .

w_accountpayable-itemno_acc = is_final-srno2.
w_accountpayable-vendor_no = is_final-newko.
w_accountpayable-comp_code = is_final-bukrs.
w_accountpayable-item_text = is_final-sgtxt.
w_accountpayable-businessplace = is_final-bupla.
w_accountpayable-sectioncode = is_final-secco.
w_accountpayable-profit_ctr = is_final-prctr.
w_accountpayable-alloc_nmbr = is_final-zuonr.
w_accountgl-costcenter = is_final-kostl.

IF is_final-newbs = '29' OR is_final-newbs = '39'.


w_accountpayable-sp_gl_ind = is_final-umskz.
ENDIF.
APPEND w_accountpayable TO i_accountpayable.
CLEAR w_accountpayable.

w_currencyamount-itemno_acc = is_final-srno2.
w_currencyamount-currency = is_final-waers.
* w_currencyamount-exch_rate = is_final-kursf.

IF is_final-newbs = '21' OR is_final-newbs = '29' .


w_currencyamount-amt_doccur = is_final-wrbtr.
ELSE.
w_currencyamount-amt_doccur = -1 * is_final-wrbtr.
ENDIF.

APPEND w_currencyamount TO i_currencyamount.


CLEAR w_currencyamount.

ENDIF.
* ENDIF.

AT END OF sno.
PERFORM bapi_post.
CLEAR srno2.
ENDAT.
ENDLOOP.

ENDFORM. " PERFORM_BD


*&---------------------------------------------------------------------*
*& Form SUB_UPLOADEXCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM sub_uploadexcel .
IF NOT w_fname IS INITIAL.
DATA : wl_index TYPE i.
FIELD-SYMBOLS <fs>.
REFRESH: it_intrn,it_final.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = w_fname
i_begin_col = c_bcol
i_begin_row = c_brow
i_end_col = c_ecol
i_end_row = c_erow
TABLES
intern = it_intrn.
*--- Sorting the internal table
SORT it_intrn BY row col.
* CLEAR IT_INTERN.
LOOP AT it_intrn INTO is_intrn.
MOVE is_intrn-col TO wl_index.
*--- Assigning the each record to an internal table row
ASSIGN COMPONENT wl_index OF STRUCTURE is_final TO <fs>.
IF sy-subrc = 0.
*--- Asigning the field value to a field symbol
CONDENSE is_intrn-value.
MOVE is_intrn-value TO <fs>.
ENDIF.
AT END OF row.
APPEND is_final TO it_final.
CLEAR is_final.
ENDAT.
ENDLOOP.
CLEAR : p_fname, w_fname.
ELSE.
MESSAGE i002(sy) WITH 'Select valid file'.
ENDIF.
FIELD-SYMBOLS <f1> LIKE LINE OF it_final.
LOOP AT it_final ASSIGNING <f1>.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = <f1>-newko
IMPORTING
output = <f1>-newko.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = <f1>-prctr
IMPORTING
output = <f1>-prctr.
ENDLOOP.
ENDFORM. " SUB_UPLOADEXCEL
*&---------------------------------------------------------------------*
*& Form BAPI_POST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM bapi_post .
DATA: l_sno(12) TYPE c.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'


EXPORTING
documentheader = w_documentheader
* CUSTOMERCPD =
* CONTRACTHEADER =
IMPORTING
obj_type = ov_obj_type
obj_key = ov_obj_key
obj_sys = ov_obj_sys
TABLES
accountgl = i_accountgl
* ACCOUNTRECEIVABLE =
accountreceivable = i_accountreceivable
accountpayable = i_accountpayable
* ACCOUNTTAX =
currencyamount = i_currencyamount
* CRITERIA =
* VALUEFIELD =
* extension1 = i_extension1
return = i_return
* PAYMENTCARD =
* CONTRACTITEM =
* extension2 = i_extension2
* REALESTATE =
* ACCOUNTWT =
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT =
* IMPORTING
* RETURN =
.
APPEND LINES OF i_return TO i_output.

LOOP AT i_return INTO w_return.


l_sno = is_final-sno.
CONCATENATE l_sno ':' w_return-message INTO
w_return-message SEPARATED BY space.

APPEND w_return TO i_output.


CLEAR w_return.
ENDLOOP.

CLEAR w_documentheader.
REFRESH:
i_accountgl,i_currencyamount,i_accountpayable,i_return,i_accountreceivable.
ENDFORM. " BAPI_POST
*&---------------------------------------------------------------------*
*& Form OUT_PUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM out_put .
LOOP AT i_output INTO w_return.
WRITE:/5 w_return-message.
ENDLOOP.
ENDFORM. " OUT_PUT

You might also like