BDC basically checks and validates eac field screen by screen and that’s why it takes timeBDC basically checks and validates eac field screen by screen and that’s why it takes time
Even though 60% of the BAPI’s use BDC in their backend
CALL METHOD
Synchronous processing – until the data is successfully processed it won’t process the next record. call transaction follows synchronous proessing call transaction uploads one by one.
synchronous and asynchronous database updates.
control can be provided to database via a statement called update.
SESSION METHOD
at one go synchronous database update multiple transaction data can be transferred
in session method as the name suggests we have to crate sessions. let us say we want to update 10000 customers at a single go so we will create a session which will take 1000 customers at one go and hence 10 such sessions will be required which is part of a session group which we need to create.
Transaction to create session – SM35
Handling errors in SM35
To process the generated session automatically – RSBDCSUB
To process this automatically job open job submit and job close directly write in the program
submit RSBDCSUB using selection screen 1000 with mappe = ‘session_name’ with von = sy-datum with bis = sy-datum and return.
Here is a sample program
&———————————————————————*
*& Report ZTEST_PROGRAM_BDC
*&
*&———————————————————————*
*&
*&
*&———————————————————————*
INCLUDE ztest_program_bdc_top_session.
*INCLUDE ZTEST_PROGRAM_BDC_TOP . ” global Data
* INCLUDE ZTEST_PROGRAM_BDC_O01 . ” PBO-Modules
* INCLUDE ZTEST_PROGRAM_BDC_I01 . ” PAI-Modules
INCLUDE ztest_program_bdc_f01_session.
* INCLUDE ZTEST_PROGRAM_BDC_F01 . ” FORM-Routines
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION ‘f4_filename’
EXPORTING
program_name = syst–cprog
dynpro_number = syst–dynnr
field_name = ‘p_file’
IMPORTING
file_name = p_file.
BREAK-POINT.
PERFORM get_data.
IF it_final IS NOT INITIAL.
IF r_1 = ‘x’.
PERFORM f_call_bdc.
ELSE.
PERFORM f_session_bdc.
ENDIF.
ENDIF.
*&———————————————————————*
*& Include ZTEST_PROGRAM_BDC_TOP Report ZTEST_PROGRAM_BDC
*&
*&———————————————————————*
REPORT ztest_program_bdc.
TYPE-POOLS : truxs.
PARAMETERS : r_1 RADIOBUTTON GROUP rg1 DEFAULT ‘x’,
r_2 RADIOBUTTON GROUP rg1.
PARAMETERS : p_file TYPE rlgrap–filename.
TYPES : BEGIN OF ty_final,
kunnr TYPE kunnr,
bukrs TYPE bukrs,
ktokd TYPE ktokd,
anred TYPE anred,
name1 TYPE name1,
stras TYPE stras,
ort01 TYPE ort01,
pstlz TYPE pstlz,
land1 TYPE land1,
spras TYPE spras,
END OF ty_final.
DATA : it_final TYPE TABLE OF ty_final,
wa_final TYPE ty_final,
it_raw TYPE truxs_t_text_data,
it_bdcdata TYPE TABLE OF bdcdata,
wa_bdcdata TYPE bdcdata,
it_msg TYPE TABLE OF bdcmsgcoll,
wa_msg TYPE bdcmsgcoll,
it_msg1 TYPE TABLE OF bdcmsgcoll,
wa_msg1 TYPE bdcmsgcoll.
*&———————————————————————*
*& Include ZTEST_PROGRAM_BDC_F01
*&———————————————————————*
*&———————————————————————*
*& Form GET_DATA
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
FORM get_data .
CALL FUNCTION ‘text_convert_xls_to_sap’
EXPORTING
* I_FIELD_SEPERATOR =
* I_LINE_HEADER =
i_tab_raw_data = it_raw
i_filename = p_file
TABLES
i_tab_converted_data = it_final
* EXCEPTIONS
* CONVERSION_FAILED = 1
* OTHERS = 2
.
IF sy–subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. ” get_data
*&———————————————————————*
*& Form F_CALL_BDC
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
form f_call_bdc .
LOOP AT it_final INTO wa_final.
REFRESH it_bdcdata.
PERFORM bdc_dynpro USING ‘sapmf02d’ ‘0100’.
PERFORM bdc_field USING ‘bdc_cursor’
‘rf02d-ktokd’.
PERFORM bdc_field USING ‘bdc_okcode’
‘/00’.
PERFORM bdc_field USING ‘rf02d-kunnr’
wa_final–kunnr.“‘1097’.
PERFORM bdc_field USING ‘rf02d-bukrs’
wa_final–bukrs.“‘1000’.
PERFORM bdc_field USING ‘rf02d-ktokd’
wa_final–ktokd.“‘y000’.
PERFORM bdc_dynpro USING ‘sapmf02d’ ‘0110’.
PERFORM bdc_field USING ‘bdc_cursor’
wa_final–spras.“‘kna1-spras’.
PERFORM bdc_field USING ‘bdc_okcode’
‘/00’.
PERFORM bdc_field USING ‘kna1-anred’
wa_final–anred.“‘Mr.’.
PERFORM bdc_field USING ‘kna1-name1’
wa_final–name1.“‘Shivendu’.
PERFORM bdc_field USING ‘kna1-stras’
wa_final–stras.“‘Kaikondrahalli’.
PERFORM bdc_field USING ‘kna1-ort01’
wa_final–ort01.“‘bang’.
PERFORM bdc_field USING ‘kna1-pstlz’
wa_final–pstlz. “‘560035’.
PERFORM bdc_field USING ‘kna1-land1’
wa_final–land1.“‘in’.
PERFORM bdc_field USING ‘kna1-spras’
wa_final–spras.“‘en’.
PERFORM bdc_dynpro USING ‘sapmf02d’ ‘0120’.
PERFORM bdc_field USING ‘bdc_cursor’
‘kna1-lifnr’.
PERFORM bdc_field USING ‘bdc_okcode’
‘=upda’.
CALL TRANSACTION ‘xd01’ USING it_bdcdata MODE ‘a’ UPDATE ‘s’
MESSAGES INTO it_msg.
IF NOT it_msg IS INITIAL.
LOOP AT it_msg INTO wa_msg.
wa_msg1 = wa_msg.
CALL FUNCTION ‘message_text_build’
EXPORTING
msgid = wa_msg–msgid
msgnr = wa_msg–msgnr
msgv1 = wa_msg–msgv1
msgv2 = wa_msg–msgv1
msgv3 = wa_msg–msgv1
msgv4 = wa_msg–msgv1
IMPORTING
message_text_output = wa_msg1–msgv1.
APPEND wa_msg1 TO it_msg1.
CLEAR wa_msg1.
ENDLOOP.
ENDIF.
ENDLOOP.
IF NOT it_msg1 IS INITIAL.
CALL FUNCTION ‘reuse_alv_grid_display’
EXPORTING
* I_INTERFACE_CHECK = ‘ ‘
* I_BYPASSING_BUFFER = ‘ ‘
* I_BUFFER_ACTIVE = ‘ ‘
i_callback_program = sy–repid
* I_CALLBACK_PF_STATUS_SET = ‘ ‘
* I_CALLBACK_USER_COMMAND = ‘ ‘
* I_CALLBACK_TOP_OF_PAGE = ‘ ‘
* I_CALLBACK_HTML_TOP_OF_PAGE = ‘ ‘
* I_CALLBACK_HTML_END_OF_LIST = ‘ ‘
i_structure_name = ‘bdcmsgcoll’
* I_BACKGROUND_ID = ‘ ‘
* I_GRID_TITLE =
* I_GRID_SETTINGS =
* IS_LAYOUT =
* IT_FIELDCAT =
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = ‘X’
* I_SAVE = ‘ ‘
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_msg1
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy–subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDFORM. ” f_call_bdc
*&———————————————————————*
*& Form BDC_DYNPRO
*&———————————————————————*
* text
*———————————————————————-*
* –>PROGRAM text
* –>DYNPRO text
*———————————————————————-*
form bdc_dynpro using program dynpro.
CLEAR wa_bdcdata.
wa_bdcdata–program = program.
wa_bdcdata–dynpro = dynpro.
wa_bdcdata–dynbegin = ‘x’.
APPEND wa_bdcdata TO it_bdcdata.
ENDFORM. “bdc_dynpro
*———————————————————————-*
* Insert field *
*———————————————————————-*
form bdc_field using fnam fval.
IF fval <> space.
CLEAR wa_bdcdata.
wa_bdcdata–fnam = fnam.
wa_bdcdata–fval = fval.
APPEND wa_bdcdata TO it_bdcdata.
ENDIF.
ENDFORM. “bdc_field
*&———————————————————————*
*& Form F_SESSION_BDC
*&———————————————————————*
* text
*———————————————————————-*
* –> p1 text
* <– p2 text
*———————————————————————-*
form f_session_bdc .
CALL FUNCTION ‘bdc_open_group’
EXPORTING
* CLIENT = SY-MANDT
* DEST = FILLER8
group = ‘shiv65’
* HOLDDATE = FILLER8
keep = ‘x’
user = sy–uname
* RECORD = FILLER1
* PROG = SY-CPROG
* DCPFM = ‘%’
* DATFM = ‘%’
* IMPORTING
* QID =
* EXCEPTIONS
* CLIENT_INVALID = 1
* DESTINATION_INVALID = 2
* GROUP_INVALID = 3
* GROUP_IS_LOCKED = 4
* HOLDDATE_INVALID = 5
* INTERNAL_ERROR = 6
* QUEUE_ERROR = 7
* RUNNING = 8
* SYSTEM_LOCK_ERROR = 9
* USER_INVALID = 10
* OTHERS = 11
.
IF sy–subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT it_final INTO wa_final.
REFRESH it_bdcdata.
PERFORM bdc_dynpro USING ‘sapmf02d’ ‘0100’.
PERFORM bdc_field USING ‘bdc_cursor’
‘rf02d-ktokd’.
PERFORM bdc_field USING ‘bdc_okcode’
‘/00’.
PERFORM bdc_field USING ‘rf02d-kunnr’
wa_final–kunnr.“‘1097’.
PERFORM bdc_field USING ‘rf02d-bukrs’
wa_final–bukrs.“‘1000’.
PERFORM bdc_field USING ‘rf02d-ktokd’
wa_final–ktokd.“‘y000’.
PERFORM bdc_dynpro USING ‘sapmf02d’ ‘0110’.
PERFORM bdc_field USING ‘bdc_cursor’
wa_final–spras.“‘kna1-spras’.
PERFORM bdc_field USING ‘bdc_okcode’
‘/00’.
PERFORM bdc_field USING ‘kna1-anred’
wa_final–anred.“‘Mr.’.
PERFORM bdc_field USING ‘kna1-name1’
wa_final–name1.“‘Shiv.
PERFORM bdc_field USING ‘kna1-stras’
wa_final–stras.“‘Kaikondrahalli’.
PERFORM bdc_field USING ‘kna1-ort01’
wa_final–ort01.“‘bang’.
PERFORM bdc_field USING ‘kna1-pstlz’
wa_final–pstlz. “‘560035’.
PERFORM bdc_field USING ‘kna1-land1’
wa_final–land1.“‘in’.
PERFORM bdc_field USING ‘kna1-spras’
wa_final–spras.“‘en’.
PERFORM bdc_dynpro USING ‘sapmf02d’ ‘0120’.
PERFORM bdc_field USING ‘bdc_cursor’
‘kna1-lifnr’.
PERFORM bdc_field USING ‘bdc_okcode’
‘=upda’.
CALL FUNCTION ‘bdc_insert’
EXPORTING
tcode = ‘xd01’
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
* SIMUBATCH = ‘ ‘
* CTUPARAMS = ‘ ‘
TABLES
dynprotab = it_bdcdata
* EXCEPTIONS
* INTERNAL_ERROR = 1
* NOT_OPEN = 2
* QUEUE_ERROR = 3
* TCODE_INVALID = 4
* PRINTING_INVALID = 5
* POSTING_INVALID = 6
* OTHERS = 7
.
IF sy–subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDLOOP.
CALL FUNCTION ‘bdc_close_group’
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
IF sy–subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
" f_session_bdc