*&———————————————————————*
*& Report ZTEST_BDC_FI01_1
*&
*&———————————————————————*
*&
*&
*&———————————————————————*
REPORT ztest_bdc_fi01_1.
types: begin of ty_error,
msg type string,
lineno type i,
end of ty_error.
* Batchinputdata of single transaction
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
PARAMETERS : p_data TYPE ibipparms-path.
DATA : it_tab TYPE truxs_t_text_data,
lv_filename TYPE rlgrap-filename,
it_msg type table of bdcmsgcoll,
lv_msg type string,
lt_error type table of ty_error,
ls_error type ty_error.
TYPES: BEGIN OF record,
* data element: BANKS
banks(003),
* data element: BANKK
bankl(015),
* data element: BANKA
banka(060),
* data element: REGIO
provz(003),
* data element: ORT01_GP
ort01(035),
* data element: BRNCH
brnch(040),
** data element: BANKA
* banka_007(060),
** data element: REGIO
* provz_008(003),
** data element: ORT01_GP
* ort01_009(035),
** data element: BRNCH
* brnch_010(040),
END OF record.
DATA: lt_record TYPE STANDARD TABLE OF record,
ls_record TYPE record.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_data.
CALL FUNCTION ‘F4_FILENAME’
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ‘P_DATA’
IMPORTING
file_name = p_data.
START-OF-SELECTION.
” converting the file data into internal table
lv_filename = p_data.
” CSV
CALL FUNCTION ‘TEXT_CONVERT_XLS_TO_SAP’
EXPORTING
i_field_seperator = ‘X’
i_line_header = ‘X’
i_tab_raw_data = it_tab
i_filename = lv_filename
TABLES
i_tab_converted_data = lt_record
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT lt_record INTO ls_record.
PERFORM bdc_dynpro USING ‘SAPMF02B’ ‘0100’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘BNKA-BANKL’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘BNKA-BANKS’
ls_record-banks.
PERFORM bdc_field USING ‘BNKA-BANKL’
ls_record-bankl.
PERFORM bdc_dynpro USING ‘SAPMF02B’ ‘0110’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘BNKA-BRNCH’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘/00’.
PERFORM bdc_field USING ‘BNKA-BANKA’
ls_record-banka.
PERFORM bdc_field USING ‘BNKA-PROVZ’
ls_record-provz.
PERFORM bdc_field USING ‘BNKA-ORT01’
ls_record-ort01.
PERFORM bdc_field USING ‘BNKA-BRNCH’
ls_record-brnch.
PERFORM bdc_dynpro USING ‘SAPMF02B’ ‘0110’.
PERFORM bdc_field USING ‘BDC_CURSOR’
‘BNKA-BANKA’.
PERFORM bdc_field USING ‘BDC_OKCODE’
‘=UPDA’.
PERFORM bdc_field USING ‘BNKA-BANKA’
ls_record-banka.
PERFORM bdc_field USING ‘BNKA-PROVZ’
ls_record-provz.
PERFORM bdc_field USING ‘BNKA-ORT01’
ls_record-ort01.
PERFORM bdc_field USING ‘BNKA-BRNCH’
ls_record-brnch.
CALL TRANSACTION ‘FI01’USING bdcdata MODE ‘A’ MESSAGES INTO it_msg.
CLEAR: bdcdata[],bdcdata ,ls_record.
ENDLOOP.
loop at it_msg into data(ls_msg).
CALL FUNCTION ‘FORMAT_MESSAGE’
EXPORTING
* ID = SY-MSGID
* LANG = ‘-D’
NO = ls_msg-MSGNr
V1 = ls_msg-MSGV1
V2 = ls_msg-MSGV2
V3 = ls_msg-MSGV3
V4 = ls_msg-MSGV4
IMPORTING
MSG = lv_msg
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2
.
IF sy-subrc eq 0.
* Implement suitable error handling here
ls_error-msg = lv_msg.
ls_error-lineno = sy-tabix.
append ls_Error to lt_error.
ENDIF.
endloop.
loop at lt_error into ls_error.
write : / ls_error-lineno, ls_error-msg.
ENDLOOP.
*———————————————————————-*
* Start new screen *
*———————————————————————-*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = ‘X’.
APPEND bdcdata.
ENDFORM.
*———————————————————————-*
* Insert field *
*———————————————————————-*
FORM bdc_field USING fnam fval.
* IF FVAL <> NODATA.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
* ENDIF.
ENDFORM.