BDC Session Method Sample Code
BDC Session Method Sample Code
include zmppn001.
* Define BDC Table Structure
data: begin of itab_bdc_tab occurs 0.
include structure bdcdata.
data: end of itab_bdc_tab.
* Input record layout of Leagcy File
data: begin of itab_xcel occurs 0,
matnr(18) type c,
werks(4) type c,
alnag(2) type c,
verid(4) type c,
text1(40) type c,
bstmi like mkal-bstmi,
bstma like mkal-bstma,
adatu(10) type c,
bdatu(10) type c,
stlal(2) type c,
stlan(1) type c,
serkz(1) type c,
mdv01(8) type c,
elpro(4) type c,
alort(4) type c,
end of itab_xcel.
data: begin of lt_pp04_cache occurs 0,
matnr like itab_xcel-matnr,
werks like itab_xcel-werks,
alnag like itab_xcel-alnag,
plnnr like mapl-plnnr,
arbpl like crhd-arbpl,
ktext like crtx-ktext,
end of lt_pp04_cache.
data: v_ssnnr(4) type n,
v_lines_in_xcel like sy-tabix,
v_ssnname like apqi-groupid,
v_trans_in_ssn type i,
* wa_xcel LIKE itab_xcel,
l_tabix like sy-tabix,
v_matnr like rc27m-matnr,
v_plnnr like mapl-plnnr,
v_plnal like mapl-plnal,
v_tcode like sy-tcode value 'C223',
v_plnty like plas-plnty value 'R',
v_objty like crhd-objty value 'A',
v_plpo_steus like plpo-steus value 'PP04',
v_verwe like crhd-verwe value '0007'.
* Parameters
selection-screen: skip 3.
selection-screen: begin of block 1 with frame.
*
parameters: p_name like rlgrap-filename
default 'C:\My Documents\InputFile.txt'
obligatory,
* bdc session name prefix
p_bdcpfx(6) default 'ZPVCRT'
obligatory,
* number for transction per BDC session
p_trnssn type i
default 2000 obligatory,
* retain the BDC session after successfull execution
p_keep like apqi-qerase
default 'X',
* user who will be executing BDC session
p_uname like apqi-userid
default sy-uname
obligatory.
*
selection-screen: end of block 1.
*
********************************************************
********************************************************
*
* possible entry list (F4 dropdown) for input file name
at selection-screen on value-request for p_name.
*-SELECT FILE FROM USERS LOCAL PC
call function 'WS_FILENAME_GET'
exporting
* DEF_FILENAME = ' '
def_path = 'C:\Temp\'
mask = ',*.*,*.*.'
mode = 'O'
title = 'Select File '(007)
importing
filename = p_name
* RC =
exceptions
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
others = 5.
if sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
*
********************************************************
********************************************************
*
* begin the show :-)
*
start-of-selection.
* read data from input file
perform transfer_xcel_to_itab.
*
*
loop at itab_xcel.
* hang on to xcel line num
l_tabix = sy-tabix.
* each line in the xcel file marks begining of new prod.version defn
* if num-of-trnas-in-session = 0, create new BDC session
if v_trans_in_ssn is initial.
perform bdc_session_open.
endif.
* begin new bdc script for rtg create trans
* fill in bdc-data for prod.version maintenance screens
perform bdc_build_script.
* insert the bdc script as a BDC transaction
perform bdc_submit_transaction.
* keep track of how many BDC transactions were inserted in the BDC
* session
add 1 to v_trans_in_ssn.
* if the user-specified num of trans in BDC session is reached OR
* if end of input file is reached, close the BDC session
if v_trans_in_ssn = p_trnssn or
l_tabix = v_lines_in_xcel.
perform bdc_session_close.
clear v_trans_in_ssn.
endif.
endloop.
top-of-page.
call function 'Z_HEADER'
* EXPORTING
* FLEX_TEXT1 =
* FLEX_TEXT2 =
* FLEX_TEXT3 =
.
*---------------------------------------------------------------------*
* FORM TRANSFER_XCEL_TO_ITAB *
*---------------------------------------------------------------------*
* Transfer Xcel Spreadsheet to SAP Internal Table *
*---------------------------------------------------------------------*
form transfer_xcel_to_itab.
*
* Read the tab-delimited file into itab
call function 'WS_UPLOAD'
exporting
filename = p_name
filetype = 'DAT'
* IMPORTING
* filelength = flength
tables
data_tab = itab_xcel
exceptions
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
others = 8.
*
if sy-subrc = 0.
* sort the data
sort itab_xcel by matnr werks.
clear v_lines_in_xcel.
* if no data in the file - error out
describe table itab_xcel lines v_lines_in_xcel.
if v_lines_in_xcel is initial.
write: / 'No data in input file'.
stop.
endif.
else.
* if file upload failed - error out
write: / 'Error reading input file'.
stop.
endif.
endform.
*---------------------------------------------------------------------*
* FORM BDC_SESSION_OPEN *
*---------------------------------------------------------------------*
* Open BDC Session *
*---------------------------------------------------------------------*
form bdc_session_open.
* create bdc session name = prefix-from-selectn-screen + nnnn
add 1 to v_ssnnr.
concatenate p_bdcpfx v_ssnnr into v_ssnname.
* open new bdc session
call function 'BDC_OPEN_GROUP'
exporting
client = sy-mandt
group = v_ssnname
keep = p_keep
user = p_uname
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.
endform.
*---------------------------------------------------------------------*
* FORM BDC_BUILD_SCRIPT *
*---------------------------------------------------------------------*
* Build BDC *
*---------------------------------------------------------------------*
form bdc_build_script.
data: l_arbpl like crhd-arbpl,
l_text1 like mkal-text1,
l_mdv01 like mkal-mdv01,
l_mapl like mapl.