Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

bapi

Former Member
0 Likes
489

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

1 REPLY 1
Read only

Former Member
0 Likes
396

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