使用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

猜你喜欢

转载自caoxuhuan.iteye.com/blog/914284