on 04-04-2006 6:25 AM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
94 | |
11 | |
11 | |
10 | |
9 | |
8 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.