cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI - - POINTS guarenteed !!!!

Former Member
0 Kudos

hi,

IAm uploading the fields of bkpf from excell sheet into internal table t_record using alsm_excel_to_internal_table. Now i want to post the fields of internal table into transaction f-02 using bapi :

BAPI_ACC_DOCUMENT_POST.

I need sample code which transfers data from t_record to bapi.

regards.

Message was edited by: amna

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hai amna..

Here is a sample code..

-


DATA: ITAB_DOC LIKE BAPIACHE08 OCCURS 0 WITH HEADER LINE.

DATA: ITAB_ACCGL LIKE BAPIACGL08 OCCURS 0 WITH HEADER LINE.

DATA: ITAB_CURR LIKE BAPIACCR08 OCCURS 0 WITH HEADER LINE.

DATA: ITAB_RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

REFRESH: ITAB_DOC,ITAB_ACCGL,ITAB_CURR.

ITAB_DOC-OBJ_TYPE = 'BKPFF'.

ITAB_DOC-OBJ_KEY = SY-UZEIT.

ITAB_DOC-OBJ_SYS = 'ABAPEML2'.

ITAB_DOC-USERNAME = 'ABAPEML2'.

*ITAB_DOC-BUS_ACT = 'RFBU'.

ITAB_DOC-HEADER_TXT = 'HEADER'.

ITAB_DOC-COMP_CODE = 'EML'.

ITAB_DOC-FISC_YEAR = '2005'.

ITAB_DOC-DOC_DATE = SY-DATUM.

ITAB_DOC-PSTNG_DATE = SY-DATUM.

ITAB_DOC-DOC_TYPE = 'DZ'.

ITAB_DOC-REF_DOC_NO = 'X2'.

ITAB_DOC-FIS_PERIOD = '09'.

APPEND ITAB_DOC.

ITAB_ACCGL-ITEMNO_ACC = '1'.

ITAB_ACCGL-GL_ACCOUNT = '0000351321'.

ITAB_ACCGL-COMP_CODE = 'EML'.

ITAB_ACCGL-PSTNG_DATE = SY-DATUM.

ITAB_ACCGL-DOC_TYPE = 'DZ'.

*ITAB_ACCGL-AC_DOC_NO = '0000351321'.

ITAB_ACCGL-CUSTOMER = '00000V1004'.

ITAB_ACCGL-ITEM_TEXT = 'item text'.

ITAB_ACCGL-REF_KEY_3 = '15'.

APPEND ITAB_ACCGL.

ITAB_ACCGL-ITEMNO_ACC = '2'.

ITAB_ACCGL-GL_ACCOUNT = '0000351321'.

ITAB_ACCGL-COMP_CODE = 'EML'.

ITAB_ACCGL-PSTNG_DATE = SY-DATUM.

ITAB_ACCGL-DOC_TYPE = 'DZ'.

*ITAB_ACCGL-AC_DOC_NO = '0000351321'.

*ITAB_ACCGL-CUSTOMER = '0000351321'.

*ITAB_ACCGL-REF_KEY_3 = '40'.

ITAB_ACCGL-ITEM_TEXT = 'item text'.

APPEND ITAB_ACCGL.

ITAB_CURR-ITEMNO_ACC = '1'.

ITAB_CURR-CURRENCY = 'INR'.

ITAB_CURR-AMT_DOCCUR = '5000.00'.

APPEND ITAB_CURR.

ITAB_CURR-ITEMNO_ACC = '2'.

ITAB_CURR-CURRENCY = 'INR'.

ITAB_CURR-AMT_DOCCUR = '-5000.00'.

APPEND ITAB_CURR.

CALL FUNCTION 'BAPI_ACC_GL_POSTING_POST'

EXPORTING

DOCUMENTHEADER = ITAB_DOC

  • IMPORTING

  • OBJ_TYPE =

  • OBJ_KEY =

  • OBJ_SYS =

TABLES

ACCOUNTGL = ITAB_ACCGL

CURRENCYAMOUNT = ITAB_CURR

RETURN = ITAB_RETURN

  • EXTENSION1 =

.

*CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

  • EXPORTING

  • DOCUMENTHEADER = ITAB_DOC

    • CUSTOMERCPD =

    • CONTRACTHEADER =

    • IMPORTING

    • OBJ_TYPE =

    • OBJ_KEY =

    • OBJ_SYS =

  • TABLES

  • ACCOUNTGL = ITAB_ACCGL

    • ACCOUNTRECEIVABLE =

    • ACCOUNTPAYABLE =

    • ACCOUNTTAX =

  • CURRENCYAMOUNT = ITAB_CURR

    • CRITERIA =

    • VALUEFIELD =

    • EXTENSION1 =

  • RETURN = ITAB_RETURN

    • PAYMENTCARD =

    • CONTRACTITEM =

    • EXTENSION2 =

    • REALESTATE =

  • .

LOOP AT ITAB_RETURN.

WRITE: / ITAB_RETURN-TYPE.

WRITE: / ITAB_RETURN-MESSAGE.

IF ITAB_RETURN-TYPE = 'S'.

COMMIT WORK.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

  • EXPORTING

  • WAIT =

  • IMPORTING

  • RETURN =

.

ENDIF.

ENDLOOP.

Regards,

Srikanth.

Former Member
0 Kudos

Hi,

Look at the sample code....................

loop at podoc_it.

clear: offset_it, it_hdr, it_gl, it_curr.

refresh: it_hdr, it_gl, it_curr.

read table offset_it with key bukrs = podoc_it-bukrs

saknr = podoc_it-hkont.

  • Header Data

it_hdr-comp_code = podoc_it-bukrs.

it_hdr-doc_date = sy-datum.

it_hdr-pstng_date = sy-datum.

it_hdr-doc_type = podoc_it-blart.

it_hdr-ref_doc_no = bkpf_it-xblnr.

it_hdr-username = sy-uname.

it_hdr-bus_act = 'RFBU'.

IF podoc_it-shkzg = 'S'.

  • First Item

  • Account number

it_gl-itemno_acc = '1'.

it_gl-gl_account = podoc_it-hkont.

it_gl-item_text = podoc_it-sgtxt.

it_gl-fis_period = v_monat.

it_gl-fisc_year = v_gjahr.

it_gl-acct_key = 'A00'.

APPEND it_gl.

  • Second Item

  • Account number

it_gl-itemno_acc = '2'.

it_gl-gl_account = offset_it-osaknr.

it_gl-item_text = podoc_it-sgtxt.

it_gl-fis_period = v_monat.

it_gl-fisc_year = v_gjahr.

it_gl-acct_key = 'A00'.

APPEND it_gl.

  • Set amount

it_curr-itemno_acc = '1'.

it_curr-currency = podoc_it-waers.

it_curr-amt_doccur = podoc_it-wrbtr.

APPEND it_curr.

it_curr-itemno_acc = '2'.

it_curr-currency = podoc_it-waers.

it_curr-amt_doccur = podoc_it-wrbtr.

it_curr-amt_doccur = it_curr-amt_doccur * -1.

APPEND it_curr.

ELSE.

  • First Item

  • Account number

it_gl-itemno_acc = '1'.

it_gl-gl_account = podoc_it-hkont.

it_gl-item_text = podoc_it-sgtxt.

it_gl-fis_period = v_monat.

it_gl-fisc_year = v_gjahr.

it_gl-acct_key = 'A00'.

APPEND it_gl.

  • Second Item

  • Account number

it_gl-itemno_acc = '2'.

it_gl-gl_account = offset_it-osaknr.

it_gl-item_text = podoc_it-sgtxt.

it_gl-fis_period = v_monat.

it_gl-fisc_year = v_gjahr.

it_gl-acct_key = 'A00'.

APPEND it_gl.

  • Set amount

it_curr-itemno_acc = '1'.

it_curr-currency = podoc_it-waers.

it_curr-amt_doccur = podoc_it-wrbtr.

it_curr-amt_doccur = it_curr-amt_doccur * -1.

APPEND it_curr.

it_curr-itemno_acc = '2'.

it_curr-currency = podoc_it-waers.

it_curr-amt_doccur = podoc_it-wrbtr.

APPEND it_curr.

ENDIF.

  • check posting

CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'

EXPORTING

documentheader = it_hdr

TABLES

accountgl = it_gl

currencyamount = it_curr

return = t_result.

LOOP AT t_result WHERE ( type = 'E' OR

type = 'A' ).

EXIT.

ENDLOOP.

IF sy-subrc <> 0.

REFRESH t_result.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

EXPORTING

documentheader = it_hdr

TABLES

accountgl = it_gl

currencyamount = it_curr

return = t_result.

*

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.

move: podoc_it-bukrs to doc_it-bukrs,

podoc_it-belnr to doc_it-belnr,

podoc_it-gjahr to doc_it-gjahr,

podoc_it-shkzg to doc_it-shkzg,

podoc_it-hkont to doc_it-hkont,

offset_it-osaknr to doc_it-osaknr.

ENDIF.

  • Print Message

LOOP AT t_result.

  • WRITE: t_result-message.

  • Get Number

IF t_result-id = 'RW' AND

t_result-number = '605'.

belnr = t_result-message_v2(10).

gjahr = t_result-message_v2+14(4).

ENDIF.

move: belnr to doc_it-obelnr,

gjahr to doc_it-ogjahr.

ENDLOOP.

append doc_it.

clear: doc_it, podoc_it.

endloop.

loop at doc_it.

write:/ doc_it-bukrs,

doc_it-belnr,

doc_it-gjahr,

doc_it-shkzg,

doc_it-hkont,

doc_it-osaknr,

doc_it-obelnr,

doc_it-ogjahr.

endloop.

Thanks.

If this helps you reward with points.

Former Member
0 Kudos

hi,

This is my code now how would i pass it_record internal table to bapi ?

regards

report ztest.

data: itab like alsmex_tabline occurs 0 with header line.

Types: begin of t_record ,

BUKRS like itab-value,

BELNR like itab-value,

BLART like itab-value,

BLDAT LIKE ITAB-VALUE,

BUDAT LIKE ITAB-VALUE,

MONAT LIKE ITAB-VALUE,

WWERT LIKE ITAB-VALUE,

XBLNR LIKE ITAB-VALUE,

BKTXT LIKE ITAB-VALUE,

WAERS LIKE ITAB-VALUE,

END OF T_RECORD.

DATA: IT_RECORD TYPE STANDARD TABLE OF T_RECORD INITIAL SIZE 0,

WA_RECORD TYPE T_RECORD.

DATA: GD_CURRENTROW TYPE I.

PARAMETER P_INFILE LIKE RLGRAP-FILENAME.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = P_INFILE

i_begin_col = '1'

i_begin_row = '2'

i_end_col = '14'

i_end_row = '31'

tables

intern = ITAB

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE = 2

OTHERS = 3

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

SORT ITAB BY ROW COL.

READ TABLE ITAB INDEX 1.

GD_CURRENTROW = ITAB-ROW.

LOOP AT ITAB .

IF ITAB-ROW NE GD_CURRENTROW.

APPEND WA_RECORD TO IT_RECORD.

CLEAR WA_RECORD.

GD_CURRENTROW = ITAB-ROW.

ENDIF.

case itab-col.

WHEN '0001'.

WA_RECORD-BUKRS = ITAB-VALUE.

WHEN '0002'.

WA_RECORD-BELNR = ITAB-VALUE.

WHEN '0003'.

WA_RECORD-BLART = ITAB-VALUE.

WHEN '0004'.

WA_RECORD-BLDAT = ITAB-VALUE.

WHEN '0005'.

WA_RECORD-BUDAT = ITAB-VALUE.

WHEN '0006'.

WA_RECORD-MONAT = ITAB-VALUE.

WHEN '0007'.

WA_RECORD-WWERT = ITAB-VALUE.

WHEN '0008'.

WA_RECORD-XBLNR = ITAB-VALUE.

WHEN '0009'.

WA_RECORD-BKTXT = ITAB-VALUE.

WHEN '0010'.

WA_RECORD-WAERS = ITAB-VALUE.

ENDCASE.

ENDLOOP.

APPEND WA_RECORD TO IT_RECORD.

Former Member
0 Kudos

thanx a lot everybody for taking pains to help me out.

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi Amna

Check out these threads.

hope this helps,

priya

jayanthi_jayaraman
Active Contributor
0 Kudos
Former Member
0 Kudos

HI,

I copied the code in se38 (report) & now Iam getting the error field key is unknown it is neither one of the specified tables nor declared with data.

regards

Former Member
0 Kudos

Have a look at the follwoing link.