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 in table control

Former Member
0 Kudos

hi friends,

can any body plz send me one example in table contols in bdc.STEP BY STEP.

thanks & regards

ram

7 REPLIES 7

Former Member
0 Kudos

Hi,

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.

See the below link for more examples:

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

If you want more info, search the forum.. you definetly get the answer

Regards

Sudher

Regards

Sudheer

Former Member
0 Kudos

here is an example...

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.

Former Member
0 Kudos

Hi,

go thru the below code.

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

REPORT Z_BDC_CTM .

DATA: BEGIN OF ITAB OCCURS 1,

STR(255),

END OF ITAB.

DATA: BEGIN OF ITAB1 OCCURS 1,

MATNR LIKE MARA-MATNR,

MBRSH LIKE MARA-MBRSH,

MTART LIKE MARA-MTART,

MAKTX LIKE MAKT-MAKTX,

MEINS LIKE MARA-MEINS,

END OF ITAB1.

DATA: JTAB LIKE BDCDATA OCCURS 1 WITH HEADER LINE.

DATA: KTAB LIKE BDCMSGCOLL OCCURS 1 WITH HEADER LINE.

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME = 'C:\logo\FILE.TXT'

FILETYPE = 'ASC'

TABLES

data_tab = ITAB.

LOOP AT ITAB.

SPLIT ITAB-STR AT ',' INTO ITAB1-MATNR ITAB1-MBRSH ITAB1-MTART ITAB1-MAKTX ITAB1-MEINS.

APPEND ITAB1.

ENDLOOP.

LOOP AT ITAB1.

PERFORM PRGINFO USING 'SAPMZBDC' '100'.

PERFORM FLDINFO USING 'ITAB-MATNR' ITAB1-MATNR.

PERFORM FLDINFO USING 'ITAB-MBRSH' ITAB1-MBRSH.

PERFORM FLDINFO USING 'ITAB-MTART' ITAB1-MTART.

PERFORM FLDINFO USING 'ITAB-MAKTX' ITAB1-MAKTX.

PERFORM FLDINFO USING 'ITAB-MEINS' ITAB1-MEINS.

CALL TRANSACTION 'ZBDCTCODE' USING JTAB MODE 'A'.

ENDLOOP.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

  • BIN_FILESIZE =

filename = 'C:\logo\LOG.TXT'

FILETYPE ='ASC'

  • APPEND = ' '

  • WRITE_FIELD_SEPARATOR = ' '

  • HEADER = '00'

  • TRUNC_TRAILING_BLANKS = ' '

  • WRITE_LF = 'X'

  • COL_SELECT = ' '

  • COL_SELECT_MASK = ' '

  • DAT_MODE = ' '

  • CONFIRM_OVERWRITE = ' '

  • NO_AUTH_CHECK = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • WRITE_BOM = ' '

  • TRUNC_TRAILING_BLANKS_EOL = 'X'

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • IMPORTING

  • FILELENGTH =

tables

data_tab = KTAB

  • FIELDNAMES =

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22

.

IF sy-subrc <> 0.

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

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

ENDIF.

FORM PRGINFO USING PRGNAME SCRNUM.

CLEAR JTAB.

REFRESH JTAB.

JTAB-PROGRAM = PRGNAME.

JTAB-DYNPRO = SCRNUM.

JTAB-DYNBEGIN = 'X'.

APPEND JTAB.

ENDFORM.

FORM FLDINFO USING FLDNAME FLDVAL.

CLEAR JTAB.

JTAB-FNAM = FLDNAME.

JTAB-FVAL = FLDVAL.

APPEND JTAB.

ENDFORM.

Former Member
0 Kudos

hi,

Here is the code.

report zmm_update_contracts_cpy no standard page heading
                                line-count 45
                                line-size  115
                                message-id zmm.
*                  Types Declarations                                  
types: begin of ty_ekko,
        ebeln type ekko-ebeln,
        bukrs type ekko-bukrs,
        kdate type ekko-kdate,
        kdatb type ekko-kdatb,
       end of   ty_ekko,

*-- Structure for success and failed records
       begin of ty_status,
        bukrs type ekko-bukrs,
        ebeln type ekko-ebeln,
        kdate type ekko-kdate,
        kdatb type ekko-kdatb,
       end   of ty_status.


*                  Internal Table Declarations                         *
data : it_ekko    type standard table of ty_ekko    with header line,
       it_ekpo    type standard table of ekpo       with header line,
       it_success type standard table of ty_status  with header line,
       it_fail    type standard table of ty_status  with header line,
       bdcdata    type standard table of bdcdata    with header line,
       msgtab     type standard table of bdcmsgcoll with header line.

*                  Structure  Declarations                             *
*-- Structure for Parameter string for runtime of CALL TRANSACTION
data : x_ctu_params type ctu_params.

*                  Data Declarations                                   *
data : v_bukrs      type ekko-bukrs, "Company code
       v_ebeln      type ekko-ebeln, "Contract no
       v_ekorg      type ekko-ekorg, "Purchasing Org
       v_bsart      type ekko-bsart, "Document Type
       v_kdatb      type ekko-kdatb,
       v_counter(2) type n ,"value '01',
       v_first(5)   type n,
       v_field      type string.

*----------------------------------------------------------------------*
*                        Selection Screen                              *
*----------------------------------------------------------------------*
*-- Selection screen Details
selection-screen begin of block b1 with frame title text-001.
select-options :
   s_bukrs for v_bukrs obligatory default '0111', "Company code
   s_ebeln for v_ebeln obligatory,                "Contract no
   s_ekorg for v_ekorg,
   s_bsart for v_bsart,
   s_dats  for v_kdatb.
selection-screen end of block b1.

*----------------------------------------------------------------------*
*               Start-of-Selection                                     *
*----------------------------------------------------------------------*
start-of-selection.

*-- Get data from DB table ekko based on selection-screen
  perform fetch_data.

*-- for each record found process BDC
  perform process_bdc.

  perform init_page_head.

*----------------------------------------------------------------------*
*               End-of-Selection                                     *
*----------------------------------------------------------------------*
end-of-selection.
*-- Display report
  perform display_report.

*----------------------------------------------------------------------*
*                      Top-of-page
*----------------------------------------------------------------------*
top-of-page.
*--  Subroutine to print header on top of the page
  perform print_header.
  skip.
  uline.


*&---------------------------------------------------------------------*
*&      Form  fetch_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form fetch_data.
  select ebeln bukrs kdate kdatb
    from ekko
    into table it_ekko
    where ebeln in s_ebeln
      and bukrs in s_bukrs
      and bstyp = 'K'
      and bsart in s_bsart
      and ekorg in s_ekorg
      and kdatb in s_dats
      and kdate in s_dats.
  if sy-subrc <> 0.
    exit.
  else.
    select * from ekpo
      into table it_ekpo
      for all entries in it_ekko
      where ebeln = it_ekko-ebeln
        and bukrs = it_ekko-bukrs.
*        and loekz = ''.
  endif.
endform.                    " fetch_data

*&---------------------------------------------------------------------*
*&      Form  process_bdc
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form process_bdc.

  sort it_ekko by ebeln.
  sort it_ekpo by ebeln ebelp.
  loop at it_ekko.
    clear   : bdcdata.
*              v_counter.
    refresh : bdcdata.
    perform fill_bdctable.
  endloop.
endform.                    " process_bdc

*----------------------------------------------------------------------*
*        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.
  if fval <> ' '.
    clear bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    append bdcdata.
  endif.
endform.

*&---------------------------------------------------------------------*
*&      Form  fill_bdctable
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form fill_bdctable.

* To have default screen size, mode and update
  x_ctu_params-defsize = 'X'.
  x_ctu_params-dismode = 'E'.
  x_ctu_params-updmode = 'S'.

  v_first = 1.
  shift v_first left DELETING leading '0'.

  perform bdc_dynpro      using 'SAPMM06E' '0205'.
  perform bdc_field       using 'BDC_CURSOR'
                                'RM06E-EVRTN'.
  perform bdc_field       using 'BDC_OKCODE'
                                '/00'.
  perform bdc_field       using 'RM06E-EVRTN'
                                it_ekko-ebeln.

*reading item data table based on header data table

  loop at it_ekpo where ebeln = it_ekko-ebeln.

    clear v_field.
    v_counter = v_counter + 1.

*Page Down
    if v_counter = '15' .
      v_counter = '01'.
      concatenate 'RM06E-EVRTP('
                  v_counter
                  ')'
                  into v_field.

      perform bdc_dynpro      using 'SAPMM06E' '0220'.
      perform bdc_field       using 'BDC_CURSOR'
                                     v_field.

      perform bdc_field       using 'BDC_OKCODE'
                                    '=P+'.
      perform bdc_field       using 'RM06E-EBELP'
                                     v_first.

      v_first = v_first + 14.
*Compare first entry in table control with line item
*As there are some missing line items in Purchasing Document Item table
      IF V_FIRST <> IT_EKPO-EBELP.
        V_FIRST = IT_EKPO-EBELP.
      ENDIF.

    endif.

* Check for deletion indicator
    if it_ekpo-loekz is initial.
      concatenate 'RM06E-EVRTP('
                  v_counter
                  ')'
                  into v_field.
      perform bdc_dynpro      using 'SAPMM06E' '0220'.

      perform bdc_field       using 'BDC_CURSOR'
                                     v_field.
      perform bdc_field       using 'BDC_OKCODE'
                                    '=DETZ'.

      perform bdc_field       using 'RM06E-EBELP'
                                     v_first."it_ekpo-ebelp.

      clear v_field.

      concatenate 'RM06E-TCSELFLAG('
                  v_counter
                  ')'
                  into v_field.
      perform bdc_field       using v_field
                                    'X'.

      perform bdc_dynpro      using 'SAPMM06E' '0212'.
      perform bdc_field       using 'BDC_CURSOR'
                                    'EKPO-BRGEW'.

      perform bdc_field       using 'BDC_OKCODE'
                                    '=BACK'.

      perform bdc_field       using 'EKPO-NTGEW'    "netweight
                                    '0'.
      perform bdc_field       using 'EKPO-GEWEI'    "unit
                                    'LB'.
      perform bdc_field       using 'EKPO-BRGEW'    "gross weight
                                    '0'.

    endif.
  endloop.

  perform bdc_dynpro      using 'SAPMM06E' '0220'.

  concatenate 'RM06E-EVRTP('
              v_field
              ')'
              into v_field.

  perform bdc_field       using 'BDC_CURSOR'
                                v_field.

  perform bdc_field       using 'BDC_OKCODE'
                                '=BU'.
  perform bdc_dynpro      using 'SAPLSPO1' '0300'.

  perform bdc_field       using 'BDC_OKCODE'
                                '=YES'.

*  PERFORM BDC_FIELD       USING 'RM06E-EBELP'
*                                '10'.

  call transaction 'ME32K' using bdcdata
                      options from x_ctu_params
                        messages into msgtab.

  clear v_counter.
  if sy-subrc = 0.
*-- populate the success records
    clear it_success.
    it_success-ebeln = it_ekko-ebeln.
    it_success-bukrs = it_ekko-bukrs.
    it_success-kdate = it_ekko-kdate.
    it_success-kdatb = it_ekko-kdatb.
    append it_success.
  else.
*-- populate the error records
    clear it_fail.
    it_fail-ebeln = it_ekko-ebeln.
    it_fail-bukrs = it_ekko-bukrs.
    it_fail-kdate = it_ekko-kdate.
    it_fail-kdatb = it_ekko-kdatb.
    append it_fail.
  endif.
endform.                    " fill_bdctable


*&---------------------------------------------------------------------*
*&      Form  display_report
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form display_report.
  data : lv_success type i,
         lv_failure type i,
         lv_lines   type i.

  clear : lv_success,
          lv_failure,
          lv_lines.

  describe table it_success lines lv_success.
  describe table it_fail    lines lv_failure.

  lv_lines = lv_failure + lv_success.

  write : / 'Total no of records uploaded :'(002) .
  write : lv_lines.

  write : / 'Total no of successes        :'(003).
  write : lv_success.

  write : / 'Total no of errors           :'(004).
  write : lv_failure.

  if not it_success[] is initial.
    sort it_success by bukrs.
    skip 2.
    write : / 'Success Records'(005).
    loop at it_success.
      at new bukrs.
        write : /    'Company Code '(006) , it_success-bukrs.
        write : /1   'Contract'(007),
                 13  'Validity Dates'(008).
      endat.

      write : /1  it_success-ebeln,
               13 it_success-kdatb,
               26 it_success-kdate.
    endloop.
  endif.

  if not it_fail[] is initial.
    sort it_fail by bukrs.
    skip 2.
    write : / 'Error Records'(009).
    loop at it_fail.
      at new bukrs.
        write : /    'Company Code '(006) , it_fail-bukrs.
        write : /1   'Contract'(007),
                 13  'Validity Dates'(008).
      endat.
      write : /1  it_fail-ebeln,
               13 it_fail-kdatb,
               26 it_fail-kdate.
    endloop.
  endif.
endform.                    " display_report

Regards,

Richa

former_member69765
Contributor
0 Kudos

Normally all the screns with table controls will have buttons to add(Insert) a Row, Delete a Row etc..

After adding data to 1st Row (it will have index 1)... press that insert button so a new Row is inserted again at 1st row..so this will have index 1.

So in this way you can hard code the index to one.

The advantage is that if there are many rows then you will not have to keep a track of how many rows are inserted and when to press the page down button.

I am giving a small example.... Just copy paste this example and run it in all mode...

Run it in all mode so that you can see what I am trying to do...

Note : this is an relatively easy method.. not the only method to do...

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

report ZTEST_BDC

no standard page heading line-size 255.

include bdcrecx1.

start-of-selection.

perform open_group.

perform bdc_dynpro using 'SAPMSRD0' '0102'.

perform bdc_field using 'BDC_CURSOR'

'RSRD1-DDTYPE'.

perform bdc_field using 'BDC_OKCODE'

'=CHANGE_RADIO'.

perform bdc_field using 'RSRD1-TBMA'

''.

perform bdc_field using 'RSRD1-TBMA_VAL'

'EKPO'.

perform bdc_field using 'RSRD1-DDTYPE'

'X'.

perform bdc_dynpro using 'SAPMSRD0' '0102'.

perform bdc_field using 'BDC_CURSOR'

'RSRD1-DDTYPE_VAL'.

perform bdc_field using 'BDC_OKCODE'

'=ADD'.

perform bdc_field using 'RSRD1-TBMA_VAL'

'EKPO'.

perform bdc_field using 'RSRD1-DDTYPE'

'X'.

perform bdc_field using 'RSRD1-DDTYPE_VAL'

'ztest_Str'.

perform bdc_dynpro using 'SAPLSED1' '0100'.

perform bdc_field using 'BDC_CURSOR'

'D_100-STRU'.

perform bdc_field using 'BDC_OKCODE'

'=GOON'.

perform bdc_field using 'D_100-DTEL'

''.

perform bdc_field using 'D_100-STRU'

'X'.

perform bdc_dynpro using 'SAPLSD41' '2100'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'DD02D-DDTEXT'

'test'.

perform bdc_field using 'BDC_CURSOR'

'DD03P_D-FIELDNAME(01)'.

perform bdc_field using 'DD03P_D-FIELDNAME(01)'

'bukrs'.

perform bdc_field using 'DD03P_D-ROLLNAME(01)'

'bukrs'.

perform bdc_dynpro using 'SAPLSD41' '2100'.

perform bdc_field using 'BDC_OKCODE'

'=WB_LINE_INSERT'.

perform bdc_field using 'DD02D-DDTEXT'

'test'.

perform bdc_field using 'BDC_CURSOR'

'DD03P_D-FIELDNAME(01)'.

perform bdc_dynpro using 'SAPLSD41' '2100'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'DD02D-DDTEXT'

'test'.

perform bdc_field using 'BDC_CURSOR'

'DD03P_D-ROLLNAME(01)'.

perform bdc_field using 'DD03P_D-FIELDNAME(01)'

'kostl'.

perform bdc_field using 'DD03P_D-ROLLNAME(01)'

'kostl'.

perform bdc_dynpro using 'SAPLSD41' '2100'.

perform bdc_field using 'BDC_OKCODE'

'=WB_LINE_INSERT'.

perform bdc_field using 'DD02D-DDTEXT'

'test'.

perform bdc_field using 'BDC_CURSOR'

'DD03P_D-FIELDNAME(01)'.

perform bdc_dynpro using 'SAPLSD41' '2100'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'DD02D-DDTEXT'

'test'.

perform bdc_field using 'BDC_CURSOR'

'DD03P_D-ROLLNAME(01)'.

perform bdc_field using 'DD03P_D-FIELDNAME(01)'

'wrbtr'.

perform bdc_field using 'DD03P_D-ROLLNAME(01)'

'wrbtr'.

perform bdc_dynpro using 'SAPLSD41' '2100'.

perform bdc_field using 'BDC_OKCODE'

'=WB_SAVE'.

perform bdc_field using 'DD02D-DDTEXT'

'test'.

perform bdc_field using 'BDC_CURSOR'

'DD03P_D-ROLLNAME(01)'.

perform bdc_dynpro using 'SAPLSTRD' '0100'.

perform bdc_field using 'BDC_CURSOR'

'KO007-L_DEVCLASS'.

perform bdc_field using 'BDC_OKCODE'

'=TEMP'.

perform bdc_field using 'KO007-L_AUTHOR'

'VARUN'.

perform bdc_dynpro using 'SAPLSD41' '2100'.

perform bdc_field using 'BDC_OKCODE'

'/EWB_CANCEL'.

perform bdc_dynpro using 'SAPMSRD0' '0102'.

perform bdc_field using 'BDC_OKCODE'

'/EABR'.

perform bdc_field using 'BDC_CURSOR'

'RSRD1-DDTYPE_VAL'.

perform bdc_transaction using 'SE11'.

perform close_group.

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

I hope this helps.....

Please mark points if it helps..

Former Member
0 Kudos

REPORT Z_XK01_REC_PRG_MUL_CTRL_FIELDS

NO STANDARD PAGE HEADING LINE-SIZE 255.

TABLES: RF02K,LFA1,LFBK,LFB1,LFM1.

DATA: BEGIN OF IT_ITAB OCCURS 0,

LIFNR LIKE RF02K-LIFNR,

BUKRS LIKE RF02K-BUKRS,

EKORG LIKE RF02K-EKORG,

KTOKK LIKE RF02K-KTOKK,

NAME1 LIKE LFA1-NAME1,

SORTL LIKE LFA1-SORTL,

LAND1 LIKE LFA1-LAND1,

BANKS(6) TYPE C,

BANKL(17) TYPE C,

BANKN(19) TYPE C,

AKONT LIKE LFB1-AKONT,

FDGRV LIKE LFB1-FDGRV,

WAERS LIKE LFM1-WAERS,

END OF IT_ITAB.

DATA: BEGIN OF BANKS OCCURS 0,

BANKS LIKE LFBK-BANKS,

END OF BANKS.

DATA: BEGIN OF BANKL OCCURS 0,

BANKL LIKE LFBK-BANKL,

END OF BANKL.

DATA: BEGIN OF BANKN OCCURS 0,

BANKN LIKE LFBK-BANKN,

END OF BANKN.

DATA : FLD(20) TYPE C,

CNT(2) TYPE N.

INCLUDE BDCRECX1.

START-OF-SELECTION.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = 'Z:/SS/MUL_REC_TAB.TXT'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • VIRUS_SCAN_PROFILE = VIRUS_SCAN_PROFILE

  • NO_AUTH_CHECK = ' '

  • IMPORTING

  • FILELENGTH = FILELENGTH

  • HEADER = HEADER

TABLES

DATA_TAB = IT_ITAB

EXCEPTIONS

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

OTHERS = 17

.

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 OPEN_GROUP.

LOOP AT IT_ITAB.

REFRESH BDCDATA.

REFRESH: BANKS,BANKL,BANKN.

SPLIT IT_ITAB-BANKS AT ',' INTO TABLE BANKS.

SPLIT IT_ITAB-BANKL AT ',' INTO TABLE BANKL.

SPLIT IT_ITAB-BANKN AT ',' INTO TABLE BANKN.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '0100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RF02K-KTOKK'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'RF02K-LIFNR'

IT_ITAB-LIFNR.

PERFORM BDC_FIELD USING 'RF02K-BUKRS'

IT_ITAB-BUKRS.

PERFORM BDC_FIELD USING 'RF02K-EKORG'

IT_ITAB-EKORG.

PERFORM BDC_FIELD USING 'RF02K-KTOKK'

IT_ITAB-KTOKK.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'LFA1-LAND1'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'LFA1-NAME1'

IT_ITAB-NAME1.

PERFORM BDC_FIELD USING 'LFA1-SORTL'

IT_ITAB-SORTL.

PERFORM BDC_FIELD USING 'LFA1-LAND1'

IT_ITAB-LAND1.

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-BANKN(02)'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

*perform bdc_field using 'LFBK-BANKS(01)'

  • 'DE'.

*perform bdc_field using 'LFBK-BANKS(02)'

  • 'DE'.

*perform bdc_field using 'LFBK-BANKL(01)'

  • '11111111'.

*perform bdc_field using 'LFBK-BANKL(02)'

  • '10010010'.

*perform bdc_field using 'LFBK-BANKN(01)'

  • '534634634'.

*perform bdc_field using 'LFBK-BANKN(02)'

  • '986678443'.

*perform bdc_dynpro using 'SAPMF02K' '0130'.

MOVE 1 TO CNT.

LOOP AT BANKS .

CONCATENATE 'LFBK-BANKS( ' CNT ' ) ' INTO FLD.

PERFORM BDC_FIELD USING FLD BANKS-BANKS.

CNT = CNT + 1.

ENDLOOP.

MOVE 1 TO CNT.

LOOP AT BANKL .

CONCATENATE 'LFBK-BANKl( ' CNT ' ) ' INTO FLD.

PERFORM BDC_FIELD USING FLD BANKL-BANKL.

CNT = CNT + 1.

ENDLOOP.

MOVE 1 TO CNT.

LOOP AT BANKN .

CONCATENATE 'LFBK-BANKN( ' CNT ' ) ' INTO FLD.

PERFORM BDC_FIELD USING FLD BANKN-BANKN.

CNT = CNT + 1.

ENDLOOP.

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_ITAB-AKONT.

PERFORM BDC_FIELD USING 'LFB1-FDGRV'

IT_ITAB-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_ITAB-WAERS.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '0320'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RF02K-LIFNR'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=ENTR'.

PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=YES'.

PERFORM BDC_DYNPRO USING 'SAPMSRD0' '0102'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'RSRD1-TBMA_VAL'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BACK'.

PERFORM BDC_FIELD USING 'RSRD1-TBMA'

'X'.

PERFORM BDC_TRANSACTION USING 'XK01'.

ENDLOOP.

PERFORM CLOSE_GROUP.

notepad : (flat file )

bScdefgh 0001 0001 0001 sangeethachintakOMALI sss DE DE,DE 11111111,10010010 534634634,986678443 62130 A3 AUD

with tab delimited

Former Member
0 Kudos

Hi Ramu Suda

first of all go for SHDB for recording

select new recording

provide name for recording and Tcode for which u need to do recording ex xk01

choose start recording

provide some dummy data in all the screens

at last screen save so that u can refer it for future use

go back

u will be at first screen

now select the recording name which u have done using SHDB

and go for create new program

give a name for program

provide attributes and save

now choose source code

now u will be in editor with almost 70% code

now u need to handle table control fields and perform statements

jus go through the program which i have posted before

and refer the glat file that is to be created with tab delimited and exact field length