Application Development and Automation 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: 
Read only

table control

Former Member
0 Likes
524

hi frndz,

can i know how to handle table control in bdc?

thnks&regards.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
487

hi

good

&----


*& Form create_bom

&----


  • This form creates the BOM

----


FORM create_bom USING value(uv_idoc_contrl_docnum) TYPE edidc-docnum

ut_e1stzum TYPE tt_e1stzum

ut_z1eqst TYPE tt_z1eqst

ut_e1stkon TYPE tt_e1stkon

ut_e1stpon TYPE tt_e1stpon

  • begin GSK20060915i

CHANGING ct_idoc_status TYPE tt_bdidocstat.

  • end GSK20060915i

*-- L O C A L D E C L A R A T I O N S

DATA: ls_e1stzum TYPE ts_e1stzum,

ls_z1eqst TYPE ts_z1eqst,

ls_e1stkon TYPE ts_e1stkon,

ls_e1stpon TYPE ts_e1stpon,

ls_messtab TYPE ts_messtab,

lt_messtab TYPE tt_messtab,

lt_bdcdata TYPE tt_bdcdata,

  • lt_idoc_status TYPE tt_bdidocstat, "GSK20060915d

lv_mode TYPE c VALUE 'N', "NO SCREENS

lv_flag TYPE c,

lv_index(4) TYPE c VALUE '0010'.

SORT ut_z1eqst BY psgnum.

SORT ut_e1stkon BY psgnum.

LOOP AT ut_e1stzum INTO ls_e1stzum.

REFRESH : lt_bdcdata,

lt_messtab.

CLEAR ls_z1eqst.

READ TABLE ut_z1eqst INTO ls_z1eqst

WITH KEY psgnum = ls_e1stzum-segnum BINARY SEARCH.

IF sy-subrc NE 0.

CLEAR ls_messtab.

ls_messtab-msgv1 = 'No header segment found'(001).

PERFORM update_idoc_status_325

USING uv_idoc_contrl_docnum

  • '53' "GSK20060915d

'51' "GSK20060915i

'E'

ls_messtab-msgid

ls_messtab-msgnr

ls_messtab-msgv1

ls_messtab-msgv2

ls_messtab-msgv3

ls_messtab-msgv4

  • CHANGING lt_idoc_status[]. "GSK20060915d

CHANGING ct_idoc_status[]. "GSK20060915i

CONTINUE.

ENDIF.

CLEAR ls_e1stkon.

READ TABLE ut_e1stkon INTO ls_e1stkon

WITH KEY psgnum = ls_e1stzum-segnum BINARY SEARCH.

IF sy-subrc NE 0.

CLEAR ls_messtab.

ls_messtab-msgv1 = 'No header segment found'(001).

PERFORM update_idoc_status_325

USING uv_idoc_contrl_docnum

  • '53' "GSK20060915d

'51' "GSK20060915i

'E'

ls_messtab-msgid

ls_messtab-msgnr

ls_messtab-msgv1

ls_messtab-msgv2

ls_messtab-msgv3

ls_messtab-msgv4

  • CHANGING lt_idoc_status[]. "GSK20060915d

CHANGING ct_idoc_status[]. "GSK20060915i

CONTINUE.

ENDIF.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0200'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29N-EQUNR'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29N-EQUNR'

ls_z1eqst-equnr

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29N-WERKS'

ls_z1eqst-werks

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29N-STLAN'

ls_e1stzum-stlan

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29N-DATUV'

ls_e1stkon-datuv

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0110'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29K-BMENG'

'1'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29K-STLST'

'1'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29K-EXSTL'

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0111'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29K-LABOR'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

LOOP AT ut_e1stpon INTO ls_e1stpon WHERE psgnum EQ ls_e1stzum-segnum.

IF lv_flag EQ space.

lv_flag = 'X'.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSTP(01)'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-IDNRK(01)'

ls_e1stpon-idnrk

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MENGE(01)'

ls_e1stpon-menge

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MEINS(01)'

ls_e1stpon-meins

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-POSTP(01)'

ls_e1stpon-postp

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSNR'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-POSNR'

'0010'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-IDNRK'

ls_e1stpon-idnrk

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MENGE'

ls_e1stpon-menge

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MEINS'

ls_e1stpon-meins

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POTX1'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-SANKA'

'X'

CHANGING lt_bdcdata[].

ELSE.

lv_index = lv_index + 10.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSNR(01)'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'=FCNP'

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSTP(02)'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-IDNRK(02)'

ls_e1stpon-idnrk

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MENGE(02)'

ls_e1stpon-menge

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MEINS(02)'

ls_e1stpon-meins

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-POSTP(02)'

ls_e1stpon-postp

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSNR'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-POSNR'

lv_index

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-IDNRK'

ls_e1stpon-idnrk

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MENGE'

ls_e1stpon-menge

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MEINS'

ls_e1stpon-meins

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POTX1'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-SANKA'

'X'

CHANGING lt_bdcdata[].

ENDIF.

ENDLOOP. "LOOP AT ut_e1stpon INTO ls_e1stpon

CLEAR: lv_flag, lv_index.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSNR(02)'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'=FCBU'

CHANGING lt_bdcdata[].

  • C A L L T R A N S A C T I O N I N B A C K G R O U N D M O D E

CALL TRANSACTION 'IB01' USING

lt_bdcdata[]

MODE lv_mode

MESSAGES INTO lt_messtab[].

  • H A N D L E B D C E R R O R S

PERFORM fill_error USING uv_idoc_contrl_docnum

lt_messtab[]

  • CHANGING lt_idoc_status[]. "GSK20060915d

CHANGING ct_idoc_status[]. "GSK20060915i

ENDLOOP. "LOOP AT ut_e1stzum INTO ls_e1stzum.

ENDFORM. " create_bom

&----


&----


*& Form bdc_dynpro

&----


  • The form poupulates the BDCDATA table for the dynpro.

----


FORM bdc_dynpro USING value(uv_program) TYPE bdcdata-program

value(uv_dynpro) TYPE bdcdata-dynpro

CHANGING ct_bdcdata TYPE tt_bdcdata.

DATA : ls_bdcdata TYPE bdcdata. "BDC STRUCTURE

CLEAR ls_bdcdata.

ls_bdcdata-program = uv_program.

ls_bdcdata-dynpro = uv_dynpro.

ls_bdcdata-dynbegin = 'X'.

APPEND ls_bdcdata TO ct_bdcdata.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_field

&----


  • The form populates the table BDCDATA for the screen fields and value

----


FORM bdc_field USING value(uv_fnam) TYPE bdcdata-fnam

value(uv_fval) TYPE c

CHANGING ct_bdcdata TYPE tt_bdcdata.

DATA : ls_bdcdata TYPE bdcdata. "BDC STRUCTURE

CLEAR ls_bdcdata.

IF NOT uv_fval IS INITIAL.

ls_bdcdata-fnam = uv_fnam.

ls_bdcdata-fval = uv_fval.

APPEND ls_bdcdata TO ct_bdcdata.

ENDIF.

ENDFORM.

thanks

mrutyun^

5 REPLIES 5
Read only

Former Member
0 Likes
487

hi,

through recording u can handle table control in bdc easily.

reward points if useful,

regards,

seshu.

Read only

Former Member
0 Likes
487

HI refer this code.

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.

Hope that would clear the matters for freshers.

reward all helpfull answers

regards.

Jay

Read only

gopi_narendra
Active Contributor
0 Likes
487

Please have a look at the following examples

demo_dynpro_tabcont_loop

demo_dynpro_tabcont_loop_at

and also the tcode : DWDM

Program :RSDEMO_TABLE_CONTROL

Regards

Gopi

Read only

Former Member
0 Likes
488

hi

good

&----


*& Form create_bom

&----


  • This form creates the BOM

----


FORM create_bom USING value(uv_idoc_contrl_docnum) TYPE edidc-docnum

ut_e1stzum TYPE tt_e1stzum

ut_z1eqst TYPE tt_z1eqst

ut_e1stkon TYPE tt_e1stkon

ut_e1stpon TYPE tt_e1stpon

  • begin GSK20060915i

CHANGING ct_idoc_status TYPE tt_bdidocstat.

  • end GSK20060915i

*-- L O C A L D E C L A R A T I O N S

DATA: ls_e1stzum TYPE ts_e1stzum,

ls_z1eqst TYPE ts_z1eqst,

ls_e1stkon TYPE ts_e1stkon,

ls_e1stpon TYPE ts_e1stpon,

ls_messtab TYPE ts_messtab,

lt_messtab TYPE tt_messtab,

lt_bdcdata TYPE tt_bdcdata,

  • lt_idoc_status TYPE tt_bdidocstat, "GSK20060915d

lv_mode TYPE c VALUE 'N', "NO SCREENS

lv_flag TYPE c,

lv_index(4) TYPE c VALUE '0010'.

SORT ut_z1eqst BY psgnum.

SORT ut_e1stkon BY psgnum.

LOOP AT ut_e1stzum INTO ls_e1stzum.

REFRESH : lt_bdcdata,

lt_messtab.

CLEAR ls_z1eqst.

READ TABLE ut_z1eqst INTO ls_z1eqst

WITH KEY psgnum = ls_e1stzum-segnum BINARY SEARCH.

IF sy-subrc NE 0.

CLEAR ls_messtab.

ls_messtab-msgv1 = 'No header segment found'(001).

PERFORM update_idoc_status_325

USING uv_idoc_contrl_docnum

  • '53' "GSK20060915d

'51' "GSK20060915i

'E'

ls_messtab-msgid

ls_messtab-msgnr

ls_messtab-msgv1

ls_messtab-msgv2

ls_messtab-msgv3

ls_messtab-msgv4

  • CHANGING lt_idoc_status[]. "GSK20060915d

CHANGING ct_idoc_status[]. "GSK20060915i

CONTINUE.

ENDIF.

CLEAR ls_e1stkon.

READ TABLE ut_e1stkon INTO ls_e1stkon

WITH KEY psgnum = ls_e1stzum-segnum BINARY SEARCH.

IF sy-subrc NE 0.

CLEAR ls_messtab.

ls_messtab-msgv1 = 'No header segment found'(001).

PERFORM update_idoc_status_325

USING uv_idoc_contrl_docnum

  • '53' "GSK20060915d

'51' "GSK20060915i

'E'

ls_messtab-msgid

ls_messtab-msgnr

ls_messtab-msgv1

ls_messtab-msgv2

ls_messtab-msgv3

ls_messtab-msgv4

  • CHANGING lt_idoc_status[]. "GSK20060915d

CHANGING ct_idoc_status[]. "GSK20060915i

CONTINUE.

ENDIF.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0200'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29N-EQUNR'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29N-EQUNR'

ls_z1eqst-equnr

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29N-WERKS'

ls_z1eqst-werks

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29N-STLAN'

ls_e1stzum-stlan

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29N-DATUV'

ls_e1stkon-datuv

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0110'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29K-BMENG'

'1'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29K-STLST'

'1'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29K-EXSTL'

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0111'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29K-LABOR'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

LOOP AT ut_e1stpon INTO ls_e1stpon WHERE psgnum EQ ls_e1stzum-segnum.

IF lv_flag EQ space.

lv_flag = 'X'.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSTP(01)'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-IDNRK(01)'

ls_e1stpon-idnrk

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MENGE(01)'

ls_e1stpon-menge

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MEINS(01)'

ls_e1stpon-meins

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-POSTP(01)'

ls_e1stpon-postp

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSNR'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-POSNR'

'0010'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-IDNRK'

ls_e1stpon-idnrk

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MENGE'

ls_e1stpon-menge

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MEINS'

ls_e1stpon-meins

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POTX1'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-SANKA'

'X'

CHANGING lt_bdcdata[].

ELSE.

lv_index = lv_index + 10.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSNR(01)'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'=FCNP'

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSTP(02)'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-IDNRK(02)'

ls_e1stpon-idnrk

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MENGE(02)'

ls_e1stpon-menge

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MEINS(02)'

ls_e1stpon-meins

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-POSTP(02)'

ls_e1stpon-postp

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0130'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSNR'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-POSNR'

lv_index

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-IDNRK'

ls_e1stpon-idnrk

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MENGE'

ls_e1stpon-menge

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-MEINS'

ls_e1stpon-meins

CHANGING lt_bdcdata[].

PERFORM bdc_dynpro USING 'SAPLCSDI' '0131'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POTX1'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'RC29P-SANKA'

'X'

CHANGING lt_bdcdata[].

ENDIF.

ENDLOOP. "LOOP AT ut_e1stpon INTO ls_e1stpon

CLEAR: lv_flag, lv_index.

PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_CURSOR'

'RC29P-POSNR(02)'

CHANGING lt_bdcdata[].

PERFORM bdc_field USING 'BDC_OKCODE'

'=FCBU'

CHANGING lt_bdcdata[].

  • C A L L T R A N S A C T I O N I N B A C K G R O U N D M O D E

CALL TRANSACTION 'IB01' USING

lt_bdcdata[]

MODE lv_mode

MESSAGES INTO lt_messtab[].

  • H A N D L E B D C E R R O R S

PERFORM fill_error USING uv_idoc_contrl_docnum

lt_messtab[]

  • CHANGING lt_idoc_status[]. "GSK20060915d

CHANGING ct_idoc_status[]. "GSK20060915i

ENDLOOP. "LOOP AT ut_e1stzum INTO ls_e1stzum.

ENDFORM. " create_bom

&----


&----


*& Form bdc_dynpro

&----


  • The form poupulates the BDCDATA table for the dynpro.

----


FORM bdc_dynpro USING value(uv_program) TYPE bdcdata-program

value(uv_dynpro) TYPE bdcdata-dynpro

CHANGING ct_bdcdata TYPE tt_bdcdata.

DATA : ls_bdcdata TYPE bdcdata. "BDC STRUCTURE

CLEAR ls_bdcdata.

ls_bdcdata-program = uv_program.

ls_bdcdata-dynpro = uv_dynpro.

ls_bdcdata-dynbegin = 'X'.

APPEND ls_bdcdata TO ct_bdcdata.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_field

&----


  • The form populates the table BDCDATA for the screen fields and value

----


FORM bdc_field USING value(uv_fnam) TYPE bdcdata-fnam

value(uv_fval) TYPE c

CHANGING ct_bdcdata TYPE tt_bdcdata.

DATA : ls_bdcdata TYPE bdcdata. "BDC STRUCTURE

CLEAR ls_bdcdata.

IF NOT uv_fval IS INITIAL.

ls_bdcdata-fnam = uv_fnam.

ls_bdcdata-fval = uv_fval.

APPEND ls_bdcdata TO ct_bdcdata.

ENDIF.

ENDFORM.

thanks

mrutyun^

Read only

Former Member
0 Likes
487

BDC Example: Using 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.

<b>LOOP AT IT_DUMMY.</b>

  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.

<b>ENDLOOP.</b>


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.

reward points if it is usefull ....

Girish