‎2006 Oct 03 11:58 AM
hi experts,
i am using bapi(BAPI_0050_CREATE).
i wrote the code like this.
DATA: lv_end_row TYPE i,
lv_num_rows TYPE i,
lv_row_num TYPE i,
lv_index TYPE i,
lv_field TYPE i,
lv_rc TYPE i,
lv_item_num TYPE i,
lv_error(1) TYPE c,
lv_answer TYPE string,
ls_error LIKE LINE OF error_tbl,
ls_data like line of data_tbl,
lt_file TYPE filetable,
ls_file LIKE LINE OF lt_file,
lt_intern TYPE TABLE OF alsmex_tabline,
ls_intern LIKE LINE OF lt_intern,
ls_header TYPE bapi_0050_header,
ls_header_add TYPE bapi_0050_header_add,
lt_item_set TYPE TABLE OF bapi_0050_item,
ls_item_set LIKE LINE OF lt_item_set,
lt_sender_period TYPE TABLE OF bapi_0050_period,
ls_sender_period LIKE LINE OF lt_sender_period,
lt_return TYPE TABLE OF bapiret2,
ls_return LIKE LINE OF lt_return.
CASE save_okcode.
WHEN 'SELECT'.
CLEAR lt_file.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
CHANGING
file_table = lt_file
rc = lv_rc.
IF lv_rc <> 0.
READ TABLE lt_file INTO ls_file INDEX 1.
file_path = ls_file-filename.
ENDIF.
WHEN 'TEST'.
IF file_path IS INITIAL.
MESSAGE i012(zfi).
ELSE.
PERFORM get_end_row
CHANGING lv_end_row.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = file_path
i_begin_col = 1
i_begin_row = 2
i_end_col = 14
i_end_row = lv_end_row
TABLES
intern = lt_intern
EXCEPTIONS
inconsistent_parameters
upload_ole.
lv_num_rows = lv_end_row - 1.
lv_row_num = 1.
lv_index = 1.
Set constant header parameters
ls_header-fm_area = fmbdt-rfikrs.
ls_header-version = fmbdt-rvers.
ls_header-docdate = sy-datlo.
ls_header-docstate = 1.
ls_header-process = 'TRAN'.
ls_header-external_number = ''.
Set constant line items parameters
ls_item_set-fisc_year = fmbdt-ryear.
ls_item_set-budcat = '9F'.
ls_item_set-trans_curr = 'ZAR'.
ls_item_set-trans_curr_iso = 'ZAR'.
ls_item_set-func_area = ''.
ls_item_set-grant_nbr = ''.
ls_item_set-valtype = 'B1'.
ls_item_set-budtype = 'TRF'.
ls_item_set-distkey = '1'.
CLEAR lv_error.
CLEAR error_tbl.
CLEAR data_tbl.
DO lv_num_rows TIMES.
lv_field = 1.
DO 10 TIMES.
READ TABLE lt_intern INDEX lv_index INTO ls_intern.
CASE lv_field.
WHEN 1.
ls_item_set-item_num = 1.
lv_item_num = ls_intern-value.
ls_data-item_num = ls_intern-value.
ls_sender_period-item_num = ls_intern-value.
WHEN 2.
ls_header-doctype = ls_intern-value.
ls_data-doctype = ls_intern-value.
WHEN 3.
ls_header_add-pers_resp = ls_intern-value.
ls_data-pers_resp = ls_intern-value.
WHEN 4.
ls_header_add-header_text = ls_intern-value.
ls_data-header_text = ls_intern-value.
WHEN 5.
ls_item_set-fund = ls_intern-value.
ls_data-fund = ls_intern-value.
WHEN 6.
ls_item_set-funds_ctr = ls_intern-value.
ls_data-funds_ctr = ls_intern-value.
WHEN 7.
ls_item_set-cmmt_item = ls_intern-value.
ls_data-cmmt_item = ls_intern-value.
WHEN 8.
ls_item_set-total_amount = ls_intern-value.
ls_data-total_amount = ls_intern-value.
ls_sender_period-period_amount = ls_intern-value.
WHEN 9.
ls_item_set-item_text = ls_intern-value.
ls_data-item_text = ls_intern-value.
WHEN 10.
ls_sender_period-budgeting_period = ls_intern-value.
ENDCASE.
lv_index = lv_index + 1.
lv_field = lv_field + 1.
ENDDO.
lv_row_num = lv_row_num + 1.
CLEAR lt_return.
CLEAR lt_item_set.
APPEND ls_item_set TO lt_item_set.
APPEND ls_sender_period TO lt_sender_period.
APPEND ls_data TO data_tbl.
Create a new FM document
CALL FUNCTION 'BAPI_0050_CREATE'
EXPORTING
HEADER_DATA = ls_header
HEADER_DATA_ADD = ls_header_add
TESTRUN = 'X'
TABLES
SENDER_ITEM_DATA = lt_item_set
SENDER_PERIOD_DATA = lt_sender_period
RETURN = lt_return.
LOOP AT lt_return INTO ls_return.
IF ls_return-type = 'E'.
ls_error-item_num = lv_item_num.
ls_error-message = ls_return-message.
APPEND ls_error TO error_tbl.
lv_error = 'X'.
ENDIF.
ENDLOOP.
ENDDO.
IF lv_error = 'X'.
MESSAGE i008(zfi).
ELSE.
MESSAGE s011(zfi).
CALL SCREEN 1200.
ENDIF.
ENDIF.
in the documentation for snders snd recievers instead of parameter 'item_data' i must use 'sender_item_data'. but when iam executing it is showing short dump.can anybody tell me which parameters i must use for senders and recievers tab,process type is 'transfer'.
line items are like this
(sign)(fundcenter)(commitment item) (distribution key) (amount)(item_text)
- 444615 224582 1 5000 sender
+ 444015 256987 1 5000 reciever
how can i pass the parameters into that bapi.
can anybody help me for this.
regards
praveen
‎2006 Oct 03 5:52 PM
You have to pass all of the tables:
CALL FUNCTION 'BAPI_0050_CREATE'
EXPORTING
language = 'E'
header_data = header
testrun = 'X'
TABLES
item_data = item
sender_item_data = sender
sender_period_data = period_sender
period_data = period
return = return.
The signs on the amounts should be positive.
Rob