Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BDC

Former Member
0 Kudos

what are steps and process in BDC

1 ACCEPTED SOLUTION

Former Member
0 Kudos

HI

refer this code. bdc with table control

BDC Example: Using Table Control in BDC

Among beginners, using table control in BDC is always a puzzle.

Following is a sample code of handling table control in BDC.

REPORT Y730_BDC5 .

*HANDLING TABLE CONTROL IN BDC

DATA : BEGIN OF IT_DUMMY OCCURS 0,

DUMMY(100) TYPE C,

END OF IT_DUMMY.

DATA : BEGIN OF IT_XK01 OCCURS 0,

LIFNR(10) TYPE C,

BUKRS(4) TYPE C,

EKORG(4) TYPE C,

KTOKK(4) TYPE C,

NAME1(30) TYPE C,

SORTL(10) TYPE C,

LAND1(3) TYPE C,

SPRAS(2) TYPE C,

AKONT(6) TYPE C,

FDGRV(2) TYPE C,

WAERS(3) TYPE C,

END OF IT_XK01,

BEGIN OF IT_BANK OCCURS 0,

BANKS(3) TYPE C,

BANKL(10) TYPE C,

BANKN(10) TYPE C,

KOINH(30) TYPE C,

LIFNR(10) TYPE C,

END OF IT_BANK.

DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = 'C:\VENDOR.TXT'

FILETYPE = 'ASC'

TABLES

DATA_TAB = IT_DUMMY.

LOOP AT IT_DUMMY.

IF IT_DUMMY-DUMMY+0(2) = '11'.

IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10).

IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4).

IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4).

IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4).

IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30).

IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10).

IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3).

IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2).

IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6).

IT_XK01-FDGRV = IT_DUMMY-DUMMY+75(2).

IT_XK01-WAERS = IT_DUMMY-DUMMY+77(3).

APPEND IT_XK01.

ELSE.

IT_BANK-BANKS = IT_DUMMY-DUMMY+2(3).

IT_BANK-BANKL = IT_DUMMY-DUMMY+5(10).

IT_BANK-BANKN = IT_DUMMY-DUMMY+15(10).

IT_BANK-KOINH = IT_DUMMY-DUMMY+25(30).

IT_BANK-LIFNR = IT_DUMMY-DUMMY+55(10).

APPEND IT_BANK.

ENDIF.

ENDLOOP.

LOOP AT IT_XK01.

REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPMF02K' '0100'.

perform bdc_field using 'BDC_CURSOR'

'RF02K-REF_LIFNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02K-LIFNR'

IT_XK01-LIFNR.

perform bdc_field using 'RF02K-BUKRS'

IT_XK01-BUKRS.

perform bdc_field using 'RF02K-EKORG'

IT_XK01-EKORG.

perform bdc_field using 'RF02K-KTOKK'

IT_XK01-KTOKK.

perform bdc_dynpro using 'SAPMF02K' '0110'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-TELX1'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFA1-NAME1'

IT_XK01-NAME1.

perform bdc_field using 'LFA1-SORTL'

IT_XK01-SORTL.

perform bdc_field using 'LFA1-LAND1'

IT_XK01-LAND1.

perform bdc_field using 'LFA1-SPRAS'

IT_XK01-SPRAS.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-KUNNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-KOINH(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

DATA : FNAM(20) TYPE C,

IDX TYPE C.

MOVE 1 TO IDX.

LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR.

CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKS.

CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKL.

CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKN.

CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-KOINH.

IDX = IDX + 1.

ENDLOOP.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-BANKS(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_dynpro using 'SAPMF02K' '0210'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-FDGRV'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFB1-AKONT'

IT_XK01-AKONT.

perform bdc_field using 'LFB1-FDGRV'

IT_XK01-FDGRV.

perform bdc_dynpro using 'SAPMF02K' '0215'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-ZTERM'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0220'.

perform bdc_field using 'BDC_CURSOR'

'LFB5-MAHNA'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0310'.

perform bdc_field using 'BDC_CURSOR'

'LFM1-WAERS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFM1-WAERS'

IT_XK01-WAERS.

perform bdc_dynpro using 'SAPMF02K' '0320'.

perform bdc_field using 'BDC_CURSOR'

'WYT3-PARVW(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_dynpro using 'SAPLSPO1' '0300'.

perform bdc_field using 'BDC_OKCODE'

'=YES'.

CALL TRANSACTION 'XK01' USING IT_BDCDATA

MODE 'A'

UPDATE 'S'

MESSAGES INTO IT_BDCMSGCOLL.

ENDLOOP.

FORM BDC_DYNPRO USING PROG SCR.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROG.

IT_BDCDATA-DYNPRO = SCR.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM.

FORM BDC_FIELD USING FNAM FVAL.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDFORM.

Sample code for BDC:

REPORT zmmat_mast

NO STANDARD PAGE HEADING LINE-SIZE 200.

----


*Programmer : Niraj Visnoi *

*Website : http://sap.niraj.tripod.com *

*Email : niraj_visnoi@rediffmail.com *

----


TABLES :mara, marc.

----


  • INTERNAL TABLES *

----


DATA: BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF bdcdata.

DATA:BEGIN OF itab_basic OCCURS 0,

matnr LIKE mara-matnr,

zzmatnr LIKE mara-matnr,

END OF itab_basic.

DATA:BEGIN OF itab_mrp OCCURS 0,

matnr LIKE mara-matnr,

werks LIKE marc-werks,

zzgpind LIKE marc-zzgpind,

zzdate(10) type C ,

END OF itab_mrp.

DATA: BEGIN OF tab_mara OCCURS 0.

INCLUDE STRUCTURE mara.

DATA: END OF tab_mara.

DATA: BEGIN OF tab_marc OCCURS 0.

INCLUDE STRUCTURE marc.

DATA: END OF tab_marc.

DATA: ertab_basic LIKE itab_basic OCCURS 0 WITH HEADER LINE.

DATA: ertab_mrp LIKE itab_mrp OCCURS 0 WITH HEADER LINE.

DATA : v_ctr TYPE i VALUE 1. "Ctr for no orecords

DATA : v_group(12) . "BDC Group Name

DATA : v_group_ctr(3) TYPE n . "BDC Group Counter

DATA : v_no_lines TYPE i.

DATA: v_grpname(10) TYPE c.

SELECTION-SCREEN BEGIN OF BLOCK dt-entry

WITH FRAME TITLE text-002.

selection-screen begin of line .

selection-screen comment 01(49) text-101.

parameters : p_basic radiobutton group r1.

selection-screen end of line.

selection-screen begin of line .

selection-screen comment 01(49) text-102.

parameters : p_mrp2 radiobutton group r1.

selection-screen end of line.

*

*PARAMETERS :

  • p_basic RADIOBUTTON GROUP r1,

  • p_mrp2 RADIOBUTTON GROUP r1.

SELECTION-SCREEN END OF BLOCK dt-entry.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK fl-info

WITH FRAME TITLE text-003.

PARAMETER : p_dlhead AS CHECKBOX . "DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK fl-info.

*

SELECTION-SCREEN SKIP 1.

PARAMETER : p_max TYPE i DEFAULT '5000' . "No of rec / session

SET PF-STATUS 'UPLOAD'.

AT USER-COMMAND .

IF sy-ucomm = 'UPLOAD' .

IF p_basic = 'X'.

IF NOT itab_basic[] IS INITIAL .

PERFORM bdc_upload_basic.

ENDIF.

WRITE:/10 'Please execute the session in SM35 to Upload the data'.

FORMAT INTENSIFIED OFF COLOR OFF .

REFRESH itab_basic . CLEAR itab_basic .

SET PF-STATUS space.

ENDIF.

IF p_mrp2 = 'X'.

IF NOT itab_mrp[] IS INITIAL .

PERFORM bdc_upload_mrp.

ENDIF..

WRITE:/10 'Please execute the session in SM35 to Upload the data'.

REFRESH itab_mrp . CLEAR itab_mrp .

SET PF-STATUS space.

ENDIF.

ENDIF.

START-OF-SELECTION.

IF p_basic = 'X'.

CALL FUNCTION 'UPLOAD'

EXPORTING

  • CODEPAGE = ' '

filename = 'C:\mm02_basic.txt '

filetype = 'DAT'

TABLES

data_tab = itab_basic.

IF p_dlhead EQ 'X'.

READ TABLE itab_basic INDEX 1.

DELETE itab_basic INDEX 1.

CLEAR itab_basic.

ENDIF.

PERFORM blank_data_validation.

ENDIF.

IF p_mrp2 = 'X'.

  • v_grpname = 'MRP2'.

CALL FUNCTION 'UPLOAD'

EXPORTING

  • CODEPAGE = ' '

filename = 'C:\mm02_mrp.txt '

filetype = 'DAT'

TABLES

data_tab = itab_mrp.

IF p_dlhead EQ 'X'.

READ TABLE itab_mrp INDEX 1.

DELETE itab_mrp INDEX 1.

CLEAR itab_mrp.

ENDIF.

PERFORM valid_plant_check.

ENDIF.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

PERFORM display_data.

END-OF-SELECTION.

*----


*

  • Start new screen

*

*----


*

FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM.

*----


*

  • Insert field

*

*----


*

FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM.

&----


*& Form blank_data_validation

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM blank_data_validation.

LOOP AT itab_basic.

IF itab_basic-matnr IS INITIAL OR itab_basic-zzmatnr IS INITIAL.

MOVE-CORRESPONDING itab_basic TO ertab_basic .

APPEND ertab_basic . CLEAR ertab_basic .

DELETE itab_basic.

CLEAR itab_basic.

CONTINUE.

ENDIF.

SELECT SINGLE * INTO tab_mara FROM mara WHERE matnr = itab_basic-matnr

.

IF sy-subrc <> 0.

MOVE-CORRESPONDING itab_basic TO ertab_basic .

APPEND ertab_basic . CLEAR ertab_basic .

DELETE itab_basic.

CLEAR itab_basic.

CONTINUE.

ENDIF.

*

ENDLOOP.

ENDFORM. " dt_qty_validation

&----


*& Form CALL_BDC_CLOSE_GROUP

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM call_bdc_close_group.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2.

IF sy-subrc NE 0.

WRITE: /5 'BDC CLOSE GROUP FAILED, return code = ', sy-subrc.

EXIT.

ENDIF.

ENDFORM. " CALL_BDC_CLOSE_GROUP

&----


*& Form CALL_BDC_INSERT

&----


  • text

----


  • -->P_0545 text

----


FORM call_bdc_insert USING v_tran_code.

DATA: xmode VALUE 'E'.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = v_tran_code

TABLES

dynprotab = bdcdata

EXCEPTIONS

internal_error = 1

not_open = 2

queue_error = 3.

IF sy-subrc NE 0.

WRITE: /5 'BDC insert GROUP FAILED, return code = ', sy-subrc.

EXIT.

ENDIF.

ENDFORM. " CALL_BDC_INSERT

&----


*& Form display_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_data.

WRITE:/ 'Press','''Upload''',

'to create session with the following records'.

IF p_basic = 'X'.

PERFORM display_header.

FORMAT COLOR 2.

LOOP AT itab_basic.

WRITE :/2 itab_basic-matnr,'|',

23 itab_basic-zzmatnr,

54 '|'.

ENDIF.

ENDLOOP.

NEW-LINE.

ULINE (54).

ENDIF.

IF p_mrp2 = 'X'.

PERFORM display_header_mrp.

FORMAT COLOR 2.

LOOP AT itab_mrp.

WRITE :/2 itab_mrp-matnr,'|',

23 itab_mrp-werks,

33 '|',

37 itab_mrp-zzgpind,

49 '|',

52 itab_mrp-ZZDATE,

65 '|'.

ENDLOOP.

NEW-LINE.

ULINE (65).

FORMAT COLOR OFF.

SKIP 4.

WRITE 😕 'Records with Errors will not be Included in Session' .

PERFORM display_header_mrp.

FORMAT COLOR 2.

LOOP AT ertab_mrp.

IF NOT ertab_mrp IS INITIAL OR NOT ertab_mrp-matnr IS INITIAL.

WRITE :/2 ertab_mrp-matnr ,'|',

23 ertab_mrp-werks,

33 '|',

37 ertab_mrp-zzgpind,

49 '|' ,

52 ertab_mrp-zzdate,

65 '|'.

ENDIF.

ENDLOOP.

NEW-LINE.

ULINE (65).

ENDIF.

FORMAT COLOR OFF.

ENDFORM. " display_data

&----


*& Form BDC_UPLOAD_basic

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM bdc_upload_basic.

*CLEAR itab_basic. REFRESH itab_basic.

CLEAR : v_ctr , v_no_lines .

IF NOT itab_basic[] IS INITIAL .

v_group_ctr = '1' .

CONCATENATE 'BASIC_' v_group_ctr INTO v_group .

PERFORM open_group USING v_group .

LOOP AT itab_basic .

IF v_ctr GE p_max .

PERFORM call_bdc_close_group .

v_group_ctr = v_group_ctr + 1 .

CLEAR v_group .

CONCATENATE 'BASIC_' v_group_ctr INTO v_group .

PERFORM open_group USING v_group .

v_ctr = 0 .

ENDIF.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMMG1-MATNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RMMG1-MATNR'

itab_basic-matnr.

  • 'DEEPAKTESTMAT'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'

'X'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MARA-ZZMATNR'.

PERFORM bdc_field USING 'MARA-ZZMATNR'

itab_basic-zzmatnr.

  • 'ADV#AM29F010-70JI'.

PERFORM call_bdc_insert USING 'MM02'.

CLEAR bdcdata . REFRESH bdcdata .

v_no_lines = v_no_lines + 1 .

v_ctr = v_ctr + 1.

ENDLOOP.

PERFORM call_bdc_close_group.

SKIP 10.

WRITE :/10 'Session by name BASIC* created' .

WRITE :/10 'Total No of records uploaded - ' , v_no_lines .

ENDIF.

ENDFORM. " BDC_UPLOAD

&----


*& Form display_header

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_header.

NEW-LINE.

  • set left scroll-boundary column 48.

FORMAT COLOR 1 INTENSIFIED ON.

ULINE (54).

WRITE :/' Avnet Material',

21'|' ,

23 'Green Product '

, 54 '|'.

NEW-LINE.

ULINE (54).

FORMAT COLOR OFF INTENSIFIED OFF.

ENDFORM.

&----


*& Form bdc_upload_mrp

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM bdc_upload_mrp.

  • PERFORM call_bdc_open_group2.

CLEAR : v_ctr , v_no_lines .

IF NOT itab_mrp[] IS INITIAL .

v_group_ctr = '1' .

CONCATENATE 'MRP_' v_group_ctr INTO v_group .

PERFORM open_group USING v_group .

LOOP AT itab_mrp .

IF v_ctr GE p_max .

PERFORM call_bdc_close_group .

v_group_ctr = v_group_ctr + 1 .

CLEAR v_group .

CONCATENATE 'MRP2_' v_group_ctr INTO v_group .

PERFORM open_group USING v_group .

v_ctr = 0 .

ENDIF.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMMG1-MATNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RMMG1-MATNR'

itab_mrp-matnr.

  • 'DEEPAKTESTMAT'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(13)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(13)'

'X'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0080'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMMG1-WERKS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_field USING 'RMMG1-WERKS'

itab_mrp-werks.

  • 'sg11'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MARC-ZZGPIND'.

PERFORM bdc_field USING 'MARC-ZZGPIND'

itab_mrp-zzgpind.

  • 'G'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MARC-ZZDATE'.

PERFORM bdc_field USING 'MARC-ZZDATE'

itab_mrp-zzdate.

  • 'G'.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=YES'.

PERFORM call_bdc_insert USING 'MM02'.

CLEAR bdcdata . REFRESH bdcdata .

v_no_lines = v_no_lines + 1 .

v_ctr = v_ctr + 1.

ENDLOOP.

PERFORM call_bdc_close_group.

SKIP 10.

WRITE :/10 'Session by name MRP2* created' .

WRITE :/10 'Total No of records uploaded - ' , v_no_lines .

ENDIF.

ENDFORM. " bdc_upload_mrp

&----


*& Form display_header_mrp

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_header_mrp.

NEW-LINE.

  • set left scroll-boundary column 48.

FORMAT COLOR 1 INTENSIFIED ON.

ULINE (65).

WRITE :/' Avnet Material',

21'|' ,

23 'Plant ' ,

33 '|',

35 'Indicator',

49 '|',

52 'Date',

65 '|' .

NEW-LINE.

ULINE (65).

FORMAT COLOR OFF INTENSIFIED OFF.

ENDFORM. " display_header_mrp

&----


*& Form valid_plant_check

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM valid_plant_check.

LOOP AT itab_mrp.

IF itab_mrp-matnr IS INITIAL OR itab_mrp-werks IS INITIAL OR

itab_mrp-zzgpind IS INITIAL.

MOVE-CORRESPONDING itab_mrp TO ertab_mrp .

APPEND ertab_mrp . CLEAR ertab_mrp .

DELETE itab_mrp.

CLEAR itab_mrp.

CONTINUE.

ENDIF.

SELECT SINGLE * INTO tab_marc FROM marc WHERE matnr = tab_marc-matnr

AND werks = itab_mrp-werks . .

IF sy-subrc = 0.

MOVE-CORRESPONDING itab_mrp TO ertab_mrp .

APPEND ertab_mrp . CLEAR ertab_mrp .

DELETE itab_mrp.

CLEAR itab_mrp.

CONTINUE.

ENDIF.

ENDLOOP.

ENDFORM. " valid_plant_check

----


  • FORM open_group *

----


  • ........ *

----


FORM open_group USING p_grp .

  • open batchinput group

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = p_grp

user = sy-uname

keep = 'X'.

ENDFORM.

Reward all helpfull answers.

Regards.

Jay

5 REPLIES 5

Former Member

Former Member
0 Kudos

Hi gana,

Steps involved in BDC

1. Do recording using SHDB transaction

2. flat file creation or review

3.Analysis of flatfile.

4.using GUI_DOWNLOAD FM load it to an internal table

5.using call transaction populate data to standard transaction.

for more details see the above links given...

Regards..

Balaji ( Reward points if its useful..)

Former Member

Former Member
0 Kudos

HI

refer this code. bdc with table control

BDC Example: Using Table Control in BDC

Among beginners, using table control in BDC is always a puzzle.

Following is a sample code of handling table control in BDC.

REPORT Y730_BDC5 .

*HANDLING TABLE CONTROL IN BDC

DATA : BEGIN OF IT_DUMMY OCCURS 0,

DUMMY(100) TYPE C,

END OF IT_DUMMY.

DATA : BEGIN OF IT_XK01 OCCURS 0,

LIFNR(10) TYPE C,

BUKRS(4) TYPE C,

EKORG(4) TYPE C,

KTOKK(4) TYPE C,

NAME1(30) TYPE C,

SORTL(10) TYPE C,

LAND1(3) TYPE C,

SPRAS(2) TYPE C,

AKONT(6) TYPE C,

FDGRV(2) TYPE C,

WAERS(3) TYPE C,

END OF IT_XK01,

BEGIN OF IT_BANK OCCURS 0,

BANKS(3) TYPE C,

BANKL(10) TYPE C,

BANKN(10) TYPE C,

KOINH(30) TYPE C,

LIFNR(10) TYPE C,

END OF IT_BANK.

DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = 'C:\VENDOR.TXT'

FILETYPE = 'ASC'

TABLES

DATA_TAB = IT_DUMMY.

LOOP AT IT_DUMMY.

IF IT_DUMMY-DUMMY+0(2) = '11'.

IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10).

IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4).

IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4).

IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4).

IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30).

IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10).

IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3).

IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2).

IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6).

IT_XK01-FDGRV = IT_DUMMY-DUMMY+75(2).

IT_XK01-WAERS = IT_DUMMY-DUMMY+77(3).

APPEND IT_XK01.

ELSE.

IT_BANK-BANKS = IT_DUMMY-DUMMY+2(3).

IT_BANK-BANKL = IT_DUMMY-DUMMY+5(10).

IT_BANK-BANKN = IT_DUMMY-DUMMY+15(10).

IT_BANK-KOINH = IT_DUMMY-DUMMY+25(30).

IT_BANK-LIFNR = IT_DUMMY-DUMMY+55(10).

APPEND IT_BANK.

ENDIF.

ENDLOOP.

LOOP AT IT_XK01.

REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPMF02K' '0100'.

perform bdc_field using 'BDC_CURSOR'

'RF02K-REF_LIFNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02K-LIFNR'

IT_XK01-LIFNR.

perform bdc_field using 'RF02K-BUKRS'

IT_XK01-BUKRS.

perform bdc_field using 'RF02K-EKORG'

IT_XK01-EKORG.

perform bdc_field using 'RF02K-KTOKK'

IT_XK01-KTOKK.

perform bdc_dynpro using 'SAPMF02K' '0110'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-TELX1'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFA1-NAME1'

IT_XK01-NAME1.

perform bdc_field using 'LFA1-SORTL'

IT_XK01-SORTL.

perform bdc_field using 'LFA1-LAND1'

IT_XK01-LAND1.

perform bdc_field using 'LFA1-SPRAS'

IT_XK01-SPRAS.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-KUNNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-KOINH(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

DATA : FNAM(20) TYPE C,

IDX TYPE C.

MOVE 1 TO IDX.

LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR.

CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKS.

CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKL.

CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKN.

CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-KOINH.

IDX = IDX + 1.

ENDLOOP.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-BANKS(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_dynpro using 'SAPMF02K' '0210'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-FDGRV'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFB1-AKONT'

IT_XK01-AKONT.

perform bdc_field using 'LFB1-FDGRV'

IT_XK01-FDGRV.

perform bdc_dynpro using 'SAPMF02K' '0215'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-ZTERM'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0220'.

perform bdc_field using 'BDC_CURSOR'

'LFB5-MAHNA'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0310'.

perform bdc_field using 'BDC_CURSOR'

'LFM1-WAERS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFM1-WAERS'

IT_XK01-WAERS.

perform bdc_dynpro using 'SAPMF02K' '0320'.

perform bdc_field using 'BDC_CURSOR'

'WYT3-PARVW(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_dynpro using 'SAPLSPO1' '0300'.

perform bdc_field using 'BDC_OKCODE'

'=YES'.

CALL TRANSACTION 'XK01' USING IT_BDCDATA

MODE 'A'

UPDATE 'S'

MESSAGES INTO IT_BDCMSGCOLL.

ENDLOOP.

FORM BDC_DYNPRO USING PROG SCR.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROG.

IT_BDCDATA-DYNPRO = SCR.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM.

FORM BDC_FIELD USING FNAM FVAL.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDFORM.

Sample code for BDC:

REPORT zmmat_mast

NO STANDARD PAGE HEADING LINE-SIZE 200.

----


*Programmer : Niraj Visnoi *

*Website : http://sap.niraj.tripod.com *

*Email : niraj_visnoi@rediffmail.com *

----


TABLES :mara, marc.

----


  • INTERNAL TABLES *

----


DATA: BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF bdcdata.

DATA:BEGIN OF itab_basic OCCURS 0,

matnr LIKE mara-matnr,

zzmatnr LIKE mara-matnr,

END OF itab_basic.

DATA:BEGIN OF itab_mrp OCCURS 0,

matnr LIKE mara-matnr,

werks LIKE marc-werks,

zzgpind LIKE marc-zzgpind,

zzdate(10) type C ,

END OF itab_mrp.

DATA: BEGIN OF tab_mara OCCURS 0.

INCLUDE STRUCTURE mara.

DATA: END OF tab_mara.

DATA: BEGIN OF tab_marc OCCURS 0.

INCLUDE STRUCTURE marc.

DATA: END OF tab_marc.

DATA: ertab_basic LIKE itab_basic OCCURS 0 WITH HEADER LINE.

DATA: ertab_mrp LIKE itab_mrp OCCURS 0 WITH HEADER LINE.

DATA : v_ctr TYPE i VALUE 1. "Ctr for no orecords

DATA : v_group(12) . "BDC Group Name

DATA : v_group_ctr(3) TYPE n . "BDC Group Counter

DATA : v_no_lines TYPE i.

DATA: v_grpname(10) TYPE c.

SELECTION-SCREEN BEGIN OF BLOCK dt-entry

WITH FRAME TITLE text-002.

selection-screen begin of line .

selection-screen comment 01(49) text-101.

parameters : p_basic radiobutton group r1.

selection-screen end of line.

selection-screen begin of line .

selection-screen comment 01(49) text-102.

parameters : p_mrp2 radiobutton group r1.

selection-screen end of line.

*

*PARAMETERS :

  • p_basic RADIOBUTTON GROUP r1,

  • p_mrp2 RADIOBUTTON GROUP r1.

SELECTION-SCREEN END OF BLOCK dt-entry.

SELECTION-SCREEN SKIP 1.

SELECTION-SCREEN BEGIN OF BLOCK fl-info

WITH FRAME TITLE text-003.

PARAMETER : p_dlhead AS CHECKBOX . "DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK fl-info.

*

SELECTION-SCREEN SKIP 1.

PARAMETER : p_max TYPE i DEFAULT '5000' . "No of rec / session

SET PF-STATUS 'UPLOAD'.

AT USER-COMMAND .

IF sy-ucomm = 'UPLOAD' .

IF p_basic = 'X'.

IF NOT itab_basic[] IS INITIAL .

PERFORM bdc_upload_basic.

ENDIF.

WRITE:/10 'Please execute the session in SM35 to Upload the data'.

FORMAT INTENSIFIED OFF COLOR OFF .

REFRESH itab_basic . CLEAR itab_basic .

SET PF-STATUS space.

ENDIF.

IF p_mrp2 = 'X'.

IF NOT itab_mrp[] IS INITIAL .

PERFORM bdc_upload_mrp.

ENDIF..

WRITE:/10 'Please execute the session in SM35 to Upload the data'.

REFRESH itab_mrp . CLEAR itab_mrp .

SET PF-STATUS space.

ENDIF.

ENDIF.

START-OF-SELECTION.

IF p_basic = 'X'.

CALL FUNCTION 'UPLOAD'

EXPORTING

  • CODEPAGE = ' '

filename = 'C:\mm02_basic.txt '

filetype = 'DAT'

TABLES

data_tab = itab_basic.

IF p_dlhead EQ 'X'.

READ TABLE itab_basic INDEX 1.

DELETE itab_basic INDEX 1.

CLEAR itab_basic.

ENDIF.

PERFORM blank_data_validation.

ENDIF.

IF p_mrp2 = 'X'.

  • v_grpname = 'MRP2'.

CALL FUNCTION 'UPLOAD'

EXPORTING

  • CODEPAGE = ' '

filename = 'C:\mm02_mrp.txt '

filetype = 'DAT'

TABLES

data_tab = itab_mrp.

IF p_dlhead EQ 'X'.

READ TABLE itab_mrp INDEX 1.

DELETE itab_mrp INDEX 1.

CLEAR itab_mrp.

ENDIF.

PERFORM valid_plant_check.

ENDIF.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

PERFORM display_data.

END-OF-SELECTION.

*----


*

  • Start new screen

*

*----


*

FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM.

*----


*

  • Insert field

*

*----


*

FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM.

&----


*& Form blank_data_validation

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM blank_data_validation.

LOOP AT itab_basic.

IF itab_basic-matnr IS INITIAL OR itab_basic-zzmatnr IS INITIAL.

MOVE-CORRESPONDING itab_basic TO ertab_basic .

APPEND ertab_basic . CLEAR ertab_basic .

DELETE itab_basic.

CLEAR itab_basic.

CONTINUE.

ENDIF.

SELECT SINGLE * INTO tab_mara FROM mara WHERE matnr = itab_basic-matnr

.

IF sy-subrc <> 0.

MOVE-CORRESPONDING itab_basic TO ertab_basic .

APPEND ertab_basic . CLEAR ertab_basic .

DELETE itab_basic.

CLEAR itab_basic.

CONTINUE.

ENDIF.

*

ENDLOOP.

ENDFORM. " dt_qty_validation

&----


*& Form CALL_BDC_CLOSE_GROUP

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM call_bdc_close_group.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

not_open = 1

queue_error = 2.

IF sy-subrc NE 0.

WRITE: /5 'BDC CLOSE GROUP FAILED, return code = ', sy-subrc.

EXIT.

ENDIF.

ENDFORM. " CALL_BDC_CLOSE_GROUP

&----


*& Form CALL_BDC_INSERT

&----


  • text

----


  • -->P_0545 text

----


FORM call_bdc_insert USING v_tran_code.

DATA: xmode VALUE 'E'.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

tcode = v_tran_code

TABLES

dynprotab = bdcdata

EXCEPTIONS

internal_error = 1

not_open = 2

queue_error = 3.

IF sy-subrc NE 0.

WRITE: /5 'BDC insert GROUP FAILED, return code = ', sy-subrc.

EXIT.

ENDIF.

ENDFORM. " CALL_BDC_INSERT

&----


*& Form display_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_data.

WRITE:/ 'Press','''Upload''',

'to create session with the following records'.

IF p_basic = 'X'.

PERFORM display_header.

FORMAT COLOR 2.

LOOP AT itab_basic.

WRITE :/2 itab_basic-matnr,'|',

23 itab_basic-zzmatnr,

54 '|'.

ENDIF.

ENDLOOP.

NEW-LINE.

ULINE (54).

ENDIF.

IF p_mrp2 = 'X'.

PERFORM display_header_mrp.

FORMAT COLOR 2.

LOOP AT itab_mrp.

WRITE :/2 itab_mrp-matnr,'|',

23 itab_mrp-werks,

33 '|',

37 itab_mrp-zzgpind,

49 '|',

52 itab_mrp-ZZDATE,

65 '|'.

ENDLOOP.

NEW-LINE.

ULINE (65).

FORMAT COLOR OFF.

SKIP 4.

WRITE 😕 'Records with Errors will not be Included in Session' .

PERFORM display_header_mrp.

FORMAT COLOR 2.

LOOP AT ertab_mrp.

IF NOT ertab_mrp IS INITIAL OR NOT ertab_mrp-matnr IS INITIAL.

WRITE :/2 ertab_mrp-matnr ,'|',

23 ertab_mrp-werks,

33 '|',

37 ertab_mrp-zzgpind,

49 '|' ,

52 ertab_mrp-zzdate,

65 '|'.

ENDIF.

ENDLOOP.

NEW-LINE.

ULINE (65).

ENDIF.

FORMAT COLOR OFF.

ENDFORM. " display_data

&----


*& Form BDC_UPLOAD_basic

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM bdc_upload_basic.

*CLEAR itab_basic. REFRESH itab_basic.

CLEAR : v_ctr , v_no_lines .

IF NOT itab_basic[] IS INITIAL .

v_group_ctr = '1' .

CONCATENATE 'BASIC_' v_group_ctr INTO v_group .

PERFORM open_group USING v_group .

LOOP AT itab_basic .

IF v_ctr GE p_max .

PERFORM call_bdc_close_group .

v_group_ctr = v_group_ctr + 1 .

CLEAR v_group .

CONCATENATE 'BASIC_' v_group_ctr INTO v_group .

PERFORM open_group USING v_group .

v_ctr = 0 .

ENDIF.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMMG1-MATNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RMMG1-MATNR'

itab_basic-matnr.

  • 'DEEPAKTESTMAT'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'

'X'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MARA-ZZMATNR'.

PERFORM bdc_field USING 'MARA-ZZMATNR'

itab_basic-zzmatnr.

  • 'ADV#AM29F010-70JI'.

PERFORM call_bdc_insert USING 'MM02'.

CLEAR bdcdata . REFRESH bdcdata .

v_no_lines = v_no_lines + 1 .

v_ctr = v_ctr + 1.

ENDLOOP.

PERFORM call_bdc_close_group.

SKIP 10.

WRITE :/10 'Session by name BASIC* created' .

WRITE :/10 'Total No of records uploaded - ' , v_no_lines .

ENDIF.

ENDFORM. " BDC_UPLOAD

&----


*& Form display_header

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_header.

NEW-LINE.

  • set left scroll-boundary column 48.

FORMAT COLOR 1 INTENSIFIED ON.

ULINE (54).

WRITE :/' Avnet Material',

21'|' ,

23 'Green Product '

, 54 '|'.

NEW-LINE.

ULINE (54).

FORMAT COLOR OFF INTENSIFIED OFF.

ENDFORM.

&----


*& Form bdc_upload_mrp

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM bdc_upload_mrp.

  • PERFORM call_bdc_open_group2.

CLEAR : v_ctr , v_no_lines .

IF NOT itab_mrp[] IS INITIAL .

v_group_ctr = '1' .

CONCATENATE 'MRP_' v_group_ctr INTO v_group .

PERFORM open_group USING v_group .

LOOP AT itab_mrp .

IF v_ctr GE p_max .

PERFORM call_bdc_close_group .

v_group_ctr = v_group_ctr + 1 .

CLEAR v_group .

CONCATENATE 'MRP2_' v_group_ctr INTO v_group .

PERFORM open_group USING v_group .

v_ctr = 0 .

ENDIF.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMMG1-MATNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RMMG1-MATNR'

itab_mrp-matnr.

  • 'DEEPAKTESTMAT'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MSICHTAUSW-DYTXT(13)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(13)'

'X'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '0080'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RMMG1-WERKS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_field USING 'RMMG1-WERKS'

itab_mrp-werks.

  • 'sg11'.

PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MARC-ZZGPIND'.

PERFORM bdc_field USING 'MARC-ZZGPIND'

itab_mrp-zzgpind.

  • 'G'.

PERFORM bdc_field USING 'BDC_CURSOR'

'MARC-ZZDATE'.

PERFORM bdc_field USING 'MARC-ZZDATE'

itab_mrp-zzdate.

  • 'G'.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=YES'.

PERFORM call_bdc_insert USING 'MM02'.

CLEAR bdcdata . REFRESH bdcdata .

v_no_lines = v_no_lines + 1 .

v_ctr = v_ctr + 1.

ENDLOOP.

PERFORM call_bdc_close_group.

SKIP 10.

WRITE :/10 'Session by name MRP2* created' .

WRITE :/10 'Total No of records uploaded - ' , v_no_lines .

ENDIF.

ENDFORM. " bdc_upload_mrp

&----


*& Form display_header_mrp

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_header_mrp.

NEW-LINE.

  • set left scroll-boundary column 48.

FORMAT COLOR 1 INTENSIFIED ON.

ULINE (65).

WRITE :/' Avnet Material',

21'|' ,

23 'Plant ' ,

33 '|',

35 'Indicator',

49 '|',

52 'Date',

65 '|' .

NEW-LINE.

ULINE (65).

FORMAT COLOR OFF INTENSIFIED OFF.

ENDFORM. " display_header_mrp

&----


*& Form valid_plant_check

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM valid_plant_check.

LOOP AT itab_mrp.

IF itab_mrp-matnr IS INITIAL OR itab_mrp-werks IS INITIAL OR

itab_mrp-zzgpind IS INITIAL.

MOVE-CORRESPONDING itab_mrp TO ertab_mrp .

APPEND ertab_mrp . CLEAR ertab_mrp .

DELETE itab_mrp.

CLEAR itab_mrp.

CONTINUE.

ENDIF.

SELECT SINGLE * INTO tab_marc FROM marc WHERE matnr = tab_marc-matnr

AND werks = itab_mrp-werks . .

IF sy-subrc = 0.

MOVE-CORRESPONDING itab_mrp TO ertab_mrp .

APPEND ertab_mrp . CLEAR ertab_mrp .

DELETE itab_mrp.

CLEAR itab_mrp.

CONTINUE.

ENDIF.

ENDLOOP.

ENDFORM. " valid_plant_check

----


  • FORM open_group *

----


  • ........ *

----


FORM open_group USING p_grp .

  • open batchinput group

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

client = sy-mandt

group = p_grp

user = sy-uname

keep = 'X'.

ENDFORM.

Reward all helpfull answers.

Regards.

Jay

Former Member
0 Kudos

hi

good

For a BDC upload you need to write a program which created BDC sessions.

Steps:

1. Work out the transaction you would use to create the data manually.

2. Use transaction SHDB to record the creation of one material master data.

Click the New recording button or the Menu - Recording - Create

3. Save the recording, and then go back a screen and go to the overview.

4. Select the recording and click on Edit - Create Program. Give the program a Z name, and select transfer from recording.

5. Edit the program. You will see that all the data you entered is hard-coded into the program. You need to make the following changes:

5.1 After the start-of-selection, Call ws_upload to upload the file (the excel file needs to be saved as TAB separated).

5.2 After the open-group, Loop on the uploaded data. For each line, perform validation checks on the data, then modify the perform bdc_field commands to use the file data.

5.3. After perform bdc_transaction, add the endloop.

Execute the program. It will have options to create a batch session or to process directly.

These are all my finds . Might be it will be useful to you.

Direct call of transactions, session handling:

/nxxxx This terminates the current transaction, and starts transaction xxxx

/n This terminates the transaction. This generally corresponds to pressing F15 to go back.

/nend This termiantes all separate sessions and logs off (corresponds to System - Logoff).

/nex This terminates all separate sessions and logs off immediately (without any warning!).

/oxxxx This opens a new session and starts transaction xxxx in This session.

/o This lists existing sessions and allows deletion or opening of a new session.

/i This terminates the current session (corresponds to System End

/i1, /i2,... This terminates the session with the number given.

.xyzw Fast path: 'xyzw' refers to the underlined letters in the menus. This type of navigation is uncommon and is provided more for emergencies (such as a defective mouse).

Batch

The following commands can be entered in correction mode ('Process in foreground' or 'Display errors only') when processing a batch input session:

/n This terminates the current batch input transaction and characterizes it as

/bdel This deletes the current batch input transaction.

/bend This terminates batch input processing and sets the session to Failed

/bda This switches from Display errors only to Process in foreground

/bde This switches from Process in foreground to Display errors only

ABAP/4

/h This switches into debugging mode.

/hs This switches into debugging mode and activates the debugging of system functions.

Buffer

WARNING: Resetting buffers can significantly change the performance of the entire system for a long time.

It should therefore only be used where there is a good reason tdso. As of release 3.0B system administator authorization is required (authorization object (S_ADMI_FCD). The action is noted in the system log.

/$SYNC This resets all buffers of the application server

/$CUA This resets the CUA buffer of the application server

/$TAB This resets the TABLE buffers of the application server

/$NAM This resets the nametab buffer of the application server

/$DYNP This resets the screen buffer of the application server

thanks

mrutyun^