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: 

How to use Table Controls in BDC ?

Former Member
0 Kudos

I have tried to do BDC for transaction code VA01 but unsucessful. Please let me know

2 REPLIES 2

Former Member
0 Kudos

Hi,

Welcome To SDN!!.

See the sample code

http://www.sap-basis-abap.com/abap/handling-table-control-in-bdc.htm

Regards

Kiran Sure

Former Member
0 Kudos

Hi,

Table control in BDC

[http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm]

Program,,,,

In table control u need to upload the multiple item records for 1 header details . You can analyse VA01 , VK11 etc .

See the sample program :

-


Transaction : FV11(CIN module)

************************************************************************

Program Name : ZFV11_NEW

Program Description : To Upload Condition Records-FV11

Author : Jagadish

Start Date : 11/06/2007

***********************************************************************

REPORT zfv11

NO STANDARD PAGE HEADING LINE-SIZE 255.

DO NOT CHANGE - the generated data section - DO NOT CHANGE ***

*

If it is nessesary to change the data section use the rules:

1.) Each definition of a field exists of two lines

2.) The first line shows exactly the comment

'* data element: ' followed with the data element

which describes the field.

If you don't have a data element use the

comment without a data element name

3.) The second line shows the fieldname of the

structure, the fieldname must consist of

a fieldname and optional the character '_' and

three numbers and the field length in brackets

4.) Each field must be type C.

*

Generated data section with specific formatting - DO NOT CHANGE ***

TABLES : t100.

DATA: BEGIN OF record OCCURS 0,

data element: KSCHA

kschl(004), "Condition Type

data element: SELKZ_LIST

selkz(001),

data element: WERKS_D

werks(004), "Plant

data element: ELIFN

lifnr(010), "Vendor

data element: MATNR

matnr(018), "Material No.

data element: KBETR_KOND

kbetr(016), "Amount

data element: KODATAB

datab(010), "Condition Validity Date from

data element: KODATBI

datbi(010), "Condition Validity To

data element: MWSKZ

mwsk1(002),

END OF record.

DATA : BEGIN OF it_new OCCURS 0, " Internal Table for Header Data

kschl(004),

werks(004),

lifnr(010),

END OF it_new.

DATA : BEGIN OF it_item OCCURS 0, " Internal table for Item Data

werks(004),

lifnr(010),

matnr(018),

kbetr(016),

datab(010),

datbi(010),

mwsk1(002),

END OF it_item.

DATA : cnt(2) TYPE n,

fld(25) TYPE c.

TYPE-POOLS: truxs.

DATA: it_raw TYPE truxs_t_text_data.

DATA : n TYPE n.

DATA:

BEGIN OF t_data OCCURS 0,

data TYPE string,

END OF t_data.

DATA:BEGIN OF it_mess OCCURS 0,

msgtyp(5),

lms(200),

msgv1(50),

END OF it_mess.

DATA : p_mode TYPE c.

DATA:it_msgtab TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE,

it_msgtab1 TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE.

DATA : l_mstring(150).

DATA : BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF bdcdata.

PARAMETERS : p_file1 LIKE rlgrap-filename.

INITIALIZATION.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.

PERFORM file_selection.

PERFORM data_upload.

PERFORM table_control.

LOOP AT it_new.

REFRESH bdcdata.

PERFORM bdc_dynpro USING 'SAPMV13A' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RV13A-KSCHL'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RV13A-KSCHL'

it_new-kschl.

PERFORM bdc_dynpro USING 'SAPLV14A' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RV130-SELKZ(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=WEIT'.

PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KONP-KBETR(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'KOMG-WERKS'

it_new-werks.

PERFORM bdc_field USING 'KOMG-LIFNR'

it_new-lifnr.

************************

"""""""""""""

DATA: "X(5) TYPE N,

N(5) TYPE N.

N = 0.

LOOP AT it_item.

N = N + 1.

ENDLOOP.

"X = 1.

CNT = 1.

DO N TIMES.

IF CNT > 19.

*

perform bdc_field using 'BDC_OKCODE' 'KOMG-MATNR(01)'.

perform bdc_field using 'BDC_OKCODE' '=P+'.

PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.

CNT = 1.

ENDIF.

***********************

cnt = 1.

LOOP AT it_item WHERE werks EQ it_new-werks AND lifnr EQ it_new-lifnr . "FROM x TO x.

CONCATENATE 'KOMG-MATNR(' cnt ')' INTO fld.

PERFORM bdc_field USING fld it_item-matnr.

CONCATENATE 'KONP-KBETR(' cnt')' INTO fld.

PERFORM bdc_field USING fld it_item-kbetr.

CONCATENATE 'RV13A-DATAB(' cnt ')' INTO fld.

PERFORM bdc_field USING fld it_item-datab.

CONCATENATE 'RV13A-DATBI(' cnt ')' INTO fld.

PERFORM bdc_field USING fld it_item-datbi.

CONCATENATE 'KONP-MWSK1(' cnt ')' INTO fld.

PERFORM bdc_field USING fld it_item-mwsk1.

cnt = cnt + 1.

if cnt = 20.

perform bdc_field using 'BDC_OKCODE' 'KOMG-MATNR(19)'.

perform bdc_field using 'BDC_OKCODE' '=P+'.

PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.

CNT = 1.

endif.

CLEAR it_item.

ENDLOOP.

ENDDO.

PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KONP-MWSK1(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=SICH'.

CALL TRANSACTION 'FV11' USING bdcdata MODE 'A'

UPDATE 'S'

MESSAGES INTO it_msgtab.

CLEAR bdcdata[].

PERFORM error.

ENDLOOP.

-


Start new screen -Subroutine for screen s *

-


FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM. "BDC_DYNPRO

-


Insert field -Subroutine for field s *

-


FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. "BDC_FIELD

&----


*& Form file_selection

-


FORM file_selection .

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

field_name = 'P_FILE1'

IMPORTING

file_name = p_file1.

ENDFORM. " file_selection

&----


*& Form data_upload

-


FORM data_upload .

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

EXPORTING

I_FIELD_SEPERATOR =

i_line_header = 'X'

i_tab_raw_data = it_raw

i_filename = p_file1

TABLES

i_tab_converted_data = record

EXCEPTIONS

conversion_failed = 1

OTHERS = 2.

IF sy-subrc 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. " data_upload

&----


*& Form error

-


FORM error .

LOOP AT it_msgtab.

IF it_msgtab-msgtyp = 'E'.

SELECT SINGLE * FROM t100 WHERE sprsl = it_msgtab-msgspra

AND arbgb = it_msgtab-msgid

AND msgnr = it_msgtab-msgnr.

IF sy-subrc = 0.

l_mstring = t100-text.

IF l_mstring CS '&1'.

REPLACE '&1' WITH it_msgtab-msgv1 INTO l_mstring.

REPLACE '&2' WITH it_msgtab-msgv2 INTO l_mstring.

REPLACE '&3' WITH it_msgtab-msgv3 INTO l_mstring.

REPLACE '&4' WITH it_msgtab-msgv4 INTO l_mstring.

ELSE.

REPLACE '&' WITH it_msgtab-msgv1 INTO l_mstring.

REPLACE '&' WITH it_msgtab-msgv2 INTO l_mstring.

REPLACE '&' WITH it_msgtab-msgv3 INTO l_mstring.

REPLACE '&' WITH it_msgtab-msgv4 INTO l_mstring.

ENDIF.

CONDENSE l_mstring.

it_mess-msgtyp = it_msgtab-msgtyp.

it_mess-lms = l_mstring.

it_mess-msgv1 = it_msgtab-msgv1.

APPEND it_mess.

WRITE: / it_msgtab-msgtyp, l_mstring(150).

ELSE.

WRITE: / it_msgtab.

it_mess-msgtyp = it_msgtab-msgtyp.

it_mess-lms = l_mstring.

it_mess-msgv1 = it_msgtab-msgv1.

APPEND it_mess.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. " error

&----


*& Form table_Control

-


FORM table_control .

SORT record BY lifnr matnr.

LOOP AT record.

ON CHANGE OF record-lifnr.

MOVE-CORRESPONDING record TO it_new.

APPEND it_new.

ENDON.

MOVE-CORRESPONDING record TO it_item.

APPEND it_item.

ENDLOOP.

ENDFORM. " table_Control

Pls. reward if useful...