data:
ls_bdc like bdcdata,
lt_bdc like standard table of bdcdata.
data:
w_session LIKE APQI-GROUPID value 'SESSION1-54' .
start-of-selection.
*1. Open one Batch input session
WRITE: / '1st step', 'Open Batch Input session'.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
* DEST = FILLER8
GROUP = w_session
* HOLDDATE = FILLER8
KEEP = 'X'
USER = SY-UNAME
* RECORD = FILLER1
* PROG = SY-CPROG
* 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.
WRITE: / 'Batch input session –', w_session, '– opened'.
ELSE.
WRITE: / 'Error opening session - SY-SUBRC =', SY-SUBRC.
ENDIF.
*2. filling BDC table
perform fill_bdc_tab.
*3. output the data
ULINE /5(65).
WRITE:/5 'Program',
15 'Screen',
25 'New Screen',
40 'Field Name',
55 'Field Value'.
LOOP AT lt_bdc into ls_bdc.
WRITE: /5 ls_bdc-PROGRAM,
15 ls_bdc-DYNPRO,
30 ls_bdc-DYNBEGIN,
40 ls_bdc-FNAM,
55 ls_bdc-FVAL.
ENDLOOP.
*4. insert BDC transaction
ULINE /5(65).
WRITE: / '2nd step', 'Insert BDC transaction'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'FK01'
* POST_LOCAL = NOVBLOCAL
* PRINTING = NOPRINT
* SIMUBATCH = ‘ ‘
* CTUPARAMS = ‘ ‘
TABLES
DYNPROTAB = lt_bdc
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.
WRITE: / 'Vendor: ”TEST1”', 'inserted into session'.
ELSE.
WRITE: / 'Error inserting', 'Vendor: ”TEST1”', 'SY-SUBRC =', SY-SUBRC.
ENDIF.
"如果有多个transaction需要执行,那么需要就要重新的BDC table,再调用bdc_insert
*5. close BDC transaction
ULINE /5(65).
WRITE: / '3rd step', 'close BDC transaction'.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
IF SY-SUBRC = 0.
WRITE: / 'Batch input session –', w_session, '– closed'.
ELSE.
WRITE: / 'Error closing session - SY-SUBRC =', SY-SUBRC.
ENDIF.
*&———————————————————————*
*& Form fill_bdc_tab
*&———————————————————————*
* Fill BDC data
*———————————————————————-*
FORM fill_bdc_tab .
* clear bdc
refresh:lt_bdc.
* fill BDC
perform populate_bdc_tab using:
'1' 'SAPMF02K' '0105', " initial create vendor screen
' ' 'BDC_CURSOR' 'RF02K-KTOKK',
' ' 'RF02K-LIFNR' 'TEST1',
' ' 'RF02K-BUKRS' '0001', "Company code
' ' 'RF02K-KTOKK' 'ZTMM', "Account group
' ' 'BDC_OKCODE' '/00',
'1' 'SAPMF02K' '0110',
' ' 'BDC_CURSOR' 'LFA1-LAND1',
' ' 'LFA1-NAME1' 'tang',
' ' 'LFA1-SORTL' 'can',
' ' 'LFA1-LAND1' 'CN',
' ' 'LFA1-ANRED' 'Mr.Tang',
' ' 'LFA1-SPRAS' 'EN',
' ' 'BDC_OKCODE' '/00',
'1' 'SAPMF02K' '0120',
' ' 'BDC_OKCODE' '=UPDA',
' ' 'BDC_CURSOR' 'LFA1-KUNNR',
' ' 'BDC_SUBSCR' 'SAPMF02K 1099ARI-ST',
' ' 'BDC_SUBSCR' 'SAPMF02K 1099ARI-01',
' ' 'BDC_SUBSCR' 'SAPMF02K 1099ARI-02',
' ' 'BDC_SUBSCR' 'SAPMF02K 1099ARI-03',
' ' 'BDC_SUBSCR' 'SAPMF02K 1099ARI-04',
' ' 'BDC_SUBSCR' 'SAPMF02K 1099ARI-05',
' ' 'BDC_SUBSCR' 'SAPMF02K 1099ARI-06',
'1' 'SAPMF02K' '0210',
' ' 'BDC_CURSOR' 'LFB1-AKONT',
' ' 'LFB1-AKONT' '197100',
' ' 'BDC_OKCODE' '=UPDA'.
ENDFORM. "fill_bdc_tab
" fill_bdc_tab
*&———————————————————————*
*& Form populate_bdc_tab
*&———————————————————————*
* fill data to bdc
*———————————————————————-*
* –>P_0024 text
* –>P_0025 text
* –>P_0026 text
*———————————————————————-*
FORM populate_bdc_tab USING FLAG type char1
VAR1 type any
VAR2 type any.
CLEAR ls_bdc.
if flag = '1'.
ls_bdc-program = var1.
ls_bdc-dynpro = var2.
ls_bdc-dynbegin = 'X'.
else.
ls_bdc-fnam = var1.
ls_bdc-fval = var2.
endif.
APPEND ls_bdc to lt_bdc.
ENDFORM. "fill_bdc_tab
"populate_bdc_tab
原文地址:http://scnblogs.techweb.com.cn/tcsapbw/archives/379.html