读书人

应用Batch Input Session来实现BDC(转

发布时间: 2012-07-15 20:11:37 作者: rapoo

使用Batch Input Session来实现BDC(转)
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

读书人网 >行业软件

热点推荐