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

BDC

Former Member
0 Likes
713

HI

WHEN I UPLOAD FLAT FILE(HAS 25 RECORDS) USING BDC FIRST 18 ITEMS ARE LOADED PROPERLY.(MY TABLE CONTROL CAN HOLD 18 ITEMS ONLY)

BUT 19TH RECORD IS OVERWRITTEN ON 18TH RECORD ITSELF. AND REAT OF 6 RECORDS ARE LOADED SUCCESSFUKLLY.. WHAT SHOULD I DO?

5 REPLIES 5
Read only

Former Member
0 Likes
674

Here is the program for table control

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.

reward points if it is usefull

Girish

Read only

Former Member
0 Likes
674

Hi,

Check the table CTU_PARAMS and field DEFSIZE for setting fixed line of a table control.

CALL TRANSACTION 'VA01' USING it_bdcdata

OPTIONS FROM OPT

MESSAGES INTO it_mesg.

opt of type ctu_params.

WA_CTU_PARAMS-DISMODE = 'N'. "no screen mode

WA_CTU_PARAMS-UPDMODE = 'S'. "synchronus update

WA_CTU_PARAMS-NOBINPT = 'X'.

WA_CTU_PARAMS-NOBIEND = 'X'.

WA_CTU_PARAMS-DEFSIZE = 'X'. "Default size

Default size will play good role in terms of resoultion. in one system in table control you can see 10rows, but in others system it will show 20 records. it depends on resoultion. but when you set the default size then it will take same (default screen size) in all the systems when you run BDC.

Reward if helps.

Regards,

Omkar.

Read only

Former Member
0 Likes
674

Step loop fields, table control fields

When assigning values to step loop fields, you must specify the number of the loop line in parentheses after the field name (for example, BDCDATA-FNAM = 'FELDX(5)' addresses the step loop field FELDX from the fifth line of the step loop).

The same applies to table control fields.

Reward Points if usefull.

-Veerndrnath Maddula.

Read only

Former Member
0 Likes
674

It depends on the transaction. which are you using?

Many transactions have some sort of 'position' function. I find this much easier to use rather than trying to scroll down.

Rob

Read only

Former Member
0 Likes
674

Hi,

To avoid that problem you increment page after 19th record and this code will help you to load all the records.

&----


*& Report ZTEST_BDC *

*& *

&----


*& *

*& *

&----


*REPORT ZTEST_BDC

REPORT ZTEST_BDC NO STANDARD PAGE HEADING LINE-SIZE 255.

INCLUDE BDCRECX1.

DATA : BEGIN OF ITAB OCCURS 0,

NUM(3) TYPE C,

EMATN LIKE EKPO-EMATN,

TXZ01 LIKE EKPO-TXZ01,

  • ANMNG(13) TYPE C,

MEINS LIKE EKPO-MEINS,

EEIND LIKE RM06E-EEIND,

MATKL LIKE EKPO-MATKL,

  • MEINS(3) TYPE C,

    • LPEIN LIKE RM06E-LPEIN,

  • EEIND LIKE RM06E-EEIND,

END OF ITAB.

DATA : LASTNUM(3) TYPE C,

TEMPVAR(15),

PAGES(3) TYPE C VALUE '10',

COUNT TYPE I,

CTR TYPE I,

TCTR(3) TYPE C VALUE 0,

TEST TYPE C VALUE 0,

ITEM LIKE RM06E-EBELP.

*DATA: BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

PERFORM GET-DATA.

  • SORT ITAB BY NUM EEIND.

PERFORM OPEN_GROUP.

LOOP AT ITAB.

IF ITAB-NUM NE LASTNUM.

  • COUNT = 0.

TEST = 0.

TCTR = 0.

PAGES = 10.

PERFORM BDC_DYNPRO USING 'SAPMM06E' '0300'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'EKKO-ANGDT'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'RM06E-ASART'

'AN'.

PERFORM BDC_FIELD USING 'EKKO-SPRAS'

'EN'.

PERFORM BDC_FIELD USING 'RM06E-ANFDT'

'19.07.2007'.

PERFORM BDC_FIELD USING 'EKKO-ANGDT'

'29.07.2007'.

PERFORM BDC_FIELD USING 'EKKO-EKORG'

'3000'.

PERFORM BDC_FIELD USING 'EKKO-EKGRP'

'003'.

PERFORM BDC_FIELD USING 'RM06E-LPEIN'

'T'.

PERFORM BDC_DYNPRO USING 'SAPMM06E' '0301'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'EKKO-SUBMI'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'EKKO-EKGRP'

'003'.

PERFORM BDC_FIELD USING 'EKKO-PINCR'

'10'.

PERFORM BDC_FIELD USING 'EKKO-SUBMI'

'1'.

PERFORM BDC_FIELD USING 'EKKO-SPRAS'

'EN'.

PERFORM BDC_FIELD USING 'EKKO-UPINC'

'1'.

PERFORM BDC_FIELD USING 'EKKO-ANGDT'

'29.07.2007'.

**********tab ctrl*********************************************

PERFORM BDC_DYNPRO USING 'SAPMM06E' '0320'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RM06E-EEIND(01)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

  • PERFORM BDC_FIELD USING 'EKKO-ANGDT'

  • '29.07.2007'.

*

  • PERFORM BDC_DYNPRO USING 'SAPMM06E' '0320'.

  • PERFORM BDC_FIELD USING 'BDC_CURSOR'

  • 'RM06E-EEIND(01)'.

  • PERFORM BDC_FIELD USING 'BDC_OKCODE'

  • '/00'.

CTR = 0.

LOOP AT ITAB WHERE NUM = ITAB-NUM.

  • CTR = CTR + 1.

TCTR = TCTR + 1.

IF TCTR >= 19.

PAGES = PAGES + 10.

TCTR = '19'.

ENDIF.

IF TCTR > 9.

TEST = ''.

ENDIF.

  • CTR = CTR + 1.

*

  • IF CTR <= 19.

  • TCTR = CTR.

  • ENDIF.

*

  • IF CTR > 19.

  • TCTR = '19'.

  • ENDIF.

*

  • IF CTR >= 10.

  • TEST = ''.

  • ENDIF.

  • IF CTR <= 19.

  • PAGES = 10.

  • ENDIF.

*

  • IF CTR > 19.

  • PAGES = PAGES + 10.

    • ebelp = 10.

    • ITEM = ITEM + 10.

  • ENDIF.

**

  • PERFORM BDC_FIELD USING 'RM06E-EBELP' PAGES.

PERFORM BDC_FIELD USING 'RM06E-EBELP'

PAGES.

CONCATENATE 'ekpo-ematn(' TEST TCTR ')' INTO TEMPVAR.

CONDENSE TEMPVAR NO-GAPS.

PERFORM BDC_FIELD USING TEMPVAR ITAB-EMATN.

CONCATENATE 'ekpo-txz01(' TEST TCTR ')' INTO TEMPVAR.

CONDENSE TEMPVAR NO-GAPS.

PERFORM BDC_FIELD USING TEMPVAR ITAB-TXZ01.

CONCATENATE 'rm06e-anmng(' TEST TCTR ')' INTO TEMPVAR.

CONDENSE TEMPVAR NO-GAPS.

PERFORM BDC_FIELD USING TEMPVAR '500'."ITAB-ANMNG.

CONCATENATE 'ekpo-meins(' TEST TCTR ')' INTO TEMPVAR.

CONDENSE TEMPVAR NO-GAPS.

PERFORM BDC_FIELD USING TEMPVAR ITAB-MEINS.

  • CONCATENATE 'rm06e-lpein(' TEST TCTR ')' INTO TEMPVAR.

  • CONDENSE TEMPVAR NO-GAPS.

  • PERFORM BDC_FIELD USING TEMPVAR ITAB-LPEIN.

CONCATENATE 'rm06e-eeind(' TEST TCTR ')' INTO TEMPVAR.

CONDENSE TEMPVAR NO-GAPS.

PERFORM BDC_FIELD USING TEMPVAR ITAB-EEIND.

CONCATENATE 'EKPO-MATKL(' TEST TCTR ')' INTO TEMPVAR.

CONDENSE TEMPVAR NO-GAPS.

PERFORM BDC_FIELD USING TEMPVAR ITAB-MATKL.

*

***

  • PERFORM BDC_FIELD USING 'EKPO-EMATN(01)'

  • ITAB-EMATN. "1500-520'.

  • PERFORM BDC_FIELD USING 'EKPO-txz01(01)'

  • ITAB-TXZ01."10W30 MOTOR OILCASE'.

  • .

*

  • PERFORM BDC_FIELD USING 'RM06E-ANMNG(01)'

  • ITAB-ANMNG. "10'.

  • PERFORM BDC_FIELD USING 'EKPO-MEINS(01)'

  • ITAB-MEINS ."cse'.

  • PERFORM BDC_FIELD USING 'RM06E-EEIND(01)'

  • ITAB-EEIND . "29.07.2007'.

PERFORM BDC_DYNPRO USING 'SAPMM06E' '0320'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'EKKO-ANGDT'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=LS'.

PERFORM BDC_FIELD USING 'EKKO-ANGDT'

'29.07.2007'.

  • PERFORM BDC_FIELD USING 'RM06E-EBELP'

  • PAGES.

CONCATENATE 'ekpo-ematn(' TEST TCTR ')' INTO TEMPVAR.

CONDENSE TEMPVAR NO-GAPS.

PERFORM BDC_FIELD USING 'BDC_CURSOR' TEMPVAR.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

ENDLOOP.

*************************vendor addr*******************

LASTNUM = ITAB-NUM.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_DYNPRO USING 'SAPMM06E' '0140'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'EKKO-LIFNR'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'EKKO-LIFNR'

'9054'.

PERFORM BDC_DYNPRO USING 'SAPLMEXF' '0100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTE'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RM06E-SPRAS'.

PERFORM BDC_FIELD USING 'BUTTON_INIT'

'X'.

PERFORM BDC_DYNPRO USING 'SAPMM06E' '0140'.

PERFORM BDC_DYNPRO USING 'SAPMM06E' '0140'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'EKKO-LIFNR'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BU'.

PERFORM BDC_FIELD USING 'EKKO-LIFNR'

'9054'.

PERFORM BDC_FIELD USING 'ADDR1_DATA-NAME1'

'tttt'.

PERFORM BDC_FIELD USING 'ADDR1_DATA-SORT1'

'TT'.

PERFORM BDC_FIELD USING 'ADDR1_DATA-COUNTRY'

'AZ'.

PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=YES'.

PERFORM BDC_TRANSACTION USING 'ME41'.

*CALL TRANSACTION 'ME41' USING BDCDATA MODE 'A'.

REFRESH BDCDATA.

ENDIF.

ENDLOOP.

PERFORM CLOSE_GROUP.

&----


*& Form get-data

&----


  • text

----


FORM GET-DATA.

CALL FUNCTION 'UPLOAD'

EXPORTING

  • CODEPAGE = ' '

FILENAME = ' '

FILETYPE = ' '

  • ITEM = ' '

  • FILEMASK_MASK = ' '

  • FILEMASK_TEXT = ' '

  • FILETYPE_NO_CHANGE = ' '

  • FILEMASK_ALL = ' '

  • FILETYPE_NO_SHOW = ' '

  • LINE_EXIT = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • SILENT = 'S'

  • IMPORTING

  • FILESIZE =

  • CANCEL =

  • ACT_FILENAME =

  • ACT_FILETYPE =

TABLES

DATA_TAB = ITAB

EXCEPTIONS

CONVERSION_ERROR = 1

INVALID_TABLE_WIDTH = 2

INVALID_TYPE = 3

NO_BATCH = 4

UNKNOWN_ERROR = 5

GUI_REFUSE_FILETRANSFER = 6

OTHERS = 7

.

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. "get-data.

IF USEFULL REWARD