在SAP report 开发中,DBC是会经常用到的一个功能,能实现批量的数据导入、操作等作业。
录制DBC代码直接在t-code SHDB 或者SM35上去录制就可以,录制完之后把代码copy下来,把变量加上去。本文着重讲那些还欠缺的代码.
首先,需要定义一个内表,用户储存BDC的数据,如下:
data:bdcdata like bdcdata occurs 0 with header line.
data:tab_mess like bdcmsgcoll occurs 0 with header line. "tab_mess用于储存call transaction 返回的信息
然后定义两个form方法用于调用DBC自动录制的代码,如下:
form bdc_dynpro using program dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
endform.
form bdc_field using fnam fval.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endform.
然后就可以把SHDB录下来的代码直接copy下来,并调用相应的 T-CODE 即可,如下为代码片段:
data : l_text(200) type c.
clear:bdcdata[].
perform bdc_dynpro using 'SAPLMGMM' '4000'.
perform bdc_field using 'BDC_OKCODE'
'BU'.
perform bdc_field using 'BDC_CURSOR'
'MARA-MPROF'.
perform bdc_field using 'MARA-MPROF'
'MANU'.
call transaction 'MM02' using bdcdata
mode 'N'
update 'S'
messages into tab_mess.
read table tab_mess index 1.
select single * from t100 where sprsl = tab_mess-msgspra
and arbgb = tab_mess-msgid
and msgnr = tab_mess-msgnr.
if sy-subrc = 0.
l_text = t100-text.
if l_text cs '&1'.
replace '&1' with tab_mess-msgv1 into l_text.
replace '&2' with tab_mess-msgv2 into l_text.
replace '&3' with tab_mess-msgv3 into l_text.
replace '&4' with tab_mess-msgv4 into l_text.
else.
replace '&' with tab_mess-msgv1 into l_text.
replace '&' with tab_mess-msgv2 into l_text.
replace '&' with tab_mess-msgv3 into l_text.
replace '&' with tab_mess-msgv4 into l_text.
endif.
condense l_text. "至此得到BDC返回的系统message
endif.
以上.