Update data using table contol in bdc

please anyone can help me in this code  i.e how to update the database yusing table control please make changes in my code if required
this is my code
report ZTEST_XK01
       no standard page heading line-size 255.
*include bdcrecx1.
***************PARAMETERS DECLERATIONS*********
PARAMETERS  : P_file type rlgrap-filename, P_FILE1 TYPE RLGRAP-FILENAME
**************internal table decleration*******
data : bdcdata type standard table of bdcdata with header line.
data : begin of t_lfa1 occurs 0,
        lifnr like RF02K-LIFNR,
        BUKRS LIKE RF02K-BUKRS,
        EKORG LIKE RF02K-EKORG,
        KTOKK LIKE RF02K-KTOKK,
        ANRED LIKE LFA1-ANRED,
        NAME1 LIKE LFA1-NAME1,
        SORTL LIKE LFA1-SORTL,
        LAND1 LIKE LFA1-LAND1,
        AKONT LIKE LFB1-AKONT,
        ZTERM LIKE LFB1-ZTERM,
       END OF T_LFA1.
DATA : BEGIN OF T_LFBK OCCURS 0,
         BANKS LIKE LFBK-BANKS,
         BANKL LIKE LFBK-BANKL,
        END OF T_LFBK.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
   PROGRAM_NAME        = SYST-CPROG
   DYNPRO_NUMBER       = SYST-DYNNR
FIELD_NAME          = ' '
IMPORTING
   FILE_NAME           = p_FILE
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE1.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
   PROGRAM_NAME        = SYST-CPROG
   DYNPRO_NUMBER       = SYST-DYNNR
  FIELD_NAME          = ' '
IMPORTING
   FILE_NAME           = P_FILE1
start-of-selection.
data : v_file type string.
move p_file to v_file.
data : e_file type string.
move p_file1 to e_file.
CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    FILENAME                      = v_file
   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            =
IMPORTING
  FILELENGTH                    =
  HEADER                        =
  TABLES
    DATA_TAB                      = T_LFA1
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.
CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    FILENAME                      = E_FILE
   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            =
IMPORTING
  FILELENGTH                    =
  HEADER                        =
  TABLES
    DATA_TAB                      = T_LFBK
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.
loop at t_lfa1.
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'
                              t_lfa1-lifnr.
perform bdc_field       using 'RF02K-BUKRS'
                              t_lfa1-bukrs.
perform bdc_field       using 'RF02K-EKORG'
                              t_lfa1-ekorg.
perform bdc_field       using 'RF02K-KTOKK'
                              t_lfa1-ktokk.
perform bdc_dynpro      using 'SAPMF02K' '0110'.
perform bdc_field       using 'BDC_CURSOR'
                              'LFA1-SORTL'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'LFA1-ANRED'
                            t_lfa1-anred.
perform bdc_field       using 'LFA1-NAME1'
                             t_lfa1-name1.
perform bdc_field       using 'LFA1-SORTL'
                             t_lfa1-sortl.
perform bdc_field       using 'LFA1-LAND1'
                             t_lfa1-land1.
perform bdc_dynpro      using 'SAPMF02K' '0120'.
perform bdc_field       using 'BDC_CURSOR'
                              'LFA1-KUNNR'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
loop at t_lfbk .
data : val(2) type c.
data :v_fil type c.
concatenate 'lfbk-banks(' val  ')' into v_fil.
perform bdc_field using v_fil
t_lfbk-BANKS.
concatenate 'lfbk-bankl(' val  ')' into v_fil.
perform bdc_field using v_fil
t_lfbk-BANKl.
val = 01.
val = val + 1.
if val > 5.
val = 5.
perform bdc_dynpro      using 'SAPMF02K' '0130'.
perform bdc_field       using 'BDC_CURSOR'
                              'LFBK-BANKL(val)'.
perform bdc_field       using 'BDC_OKCODE'
                              'ENTR'.
perform bdc_field       using 'LFBK-BANKL(val)'
                              v_fil.
perform bdc_field       using 'LFBK-BANKS(val)'
                              v_fil.
*perform bdc_field       using 'LFBK-BANKS(02)'
                             'IN'.
*perform bdc_field       using 'LFBK-BANKS(03)'
                             'in'.
*perform bdc_field       using 'LFBK-BANKS(04)'
                             'in'.
*perform bdc_field       using 'LFBK-BANKS(05)'
                             'in'.
*perform bdc_field       using 'LFBK-BANKL(02)'
                             '00000142'.
*perform bdc_field       using 'LFBK-BANKL(03)'
                             'sunny'.
*perform bdc_field       using 'LFBK-BANKL(04)'
                             'sunny'.
*perform bdc_field       using 'LFBK-BANKL(05)'
                             'sunny'.
*perform bdc_dynpro      using 'SAPMF02K' '0130'.
*perform bdc_field       using 'BDC_CURSOR'
                             'LFBK-BANKS(01)'.
perform bdc_field       using 'BDC_OKCODE'
                               '=ENTR'.
endif.
endloop.
perform bdc_dynpro      using 'SAPMF02K' '0210'.
perform bdc_field       using 'BDC_CURSOR'
                              'LFB1-AKONT'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'LFB1-AKONT'
                              '160000'.
perform bdc_dynpro      using 'SAPMF02K' '0215'.
perform bdc_field       using 'BDC_CURSOR'
                              'LFB1-ZTERM'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'LFB1-ZTERM'
                              '0001'.
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_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'

Hi,
you can check the following piece of code.
*Batchinputdata of single transaction
DATA :   tbl_bdcdata LIKE bdcdata   OCCURS 0 WITH HEADER LINE.
*Input records
DATA : BEGIN  OF tbl_input OCCURS 0,
       lifnr     LIKE     lfa1-lifnr,   "Account number of vendor or
       banks     LIKE     lfbk-banks,   "Bank country key
       bankl     LIKE     lfbk-bankl,   "Bank key
       bankn     LIKE     lfbk-bankn,   "Bank account number
       koinh LIKE    lfbk-koinh,   "Account holder name
       bvtyp     LIKE     lfbk-bvtyp,   "Partner bank type
       banka     LIKE     bnka-banka,   "Name of bank
       stcd3     LIKE     lfa1-stcd3,   "Tax number 3
       scacd     LIKE     lfa1-scacd,   "Standard carrier access code
       zwels     LIKE     lfb1-zwels,   "List of the Payment Methods to be
                                   "Considered
       lnrzb     LIKE     lfb1-lnrzb,   "Alternate payee
       iban     LIKE     tiban-iban,   "IBAN (International Bank Account
                                   "      Number)
       valid_from(10) TYPE c,      "Start of IBAN validity
       swift     LIKE     bnka-swift,   "SWIFT Code for International
                                   "Payments
       bukrs  LIKE zgroup_code_xref-bukrs,
                                   "Company code
       land1  LIKE t001-land1,     "Country
       END   OF tbl_input.
*Constants
*CONSTANTS
CONSTANTS: c_tcode TYPE tstc-tcode VALUE 'XK02',   "For holding
                                                   "the TCODE
           c_keep(1) TYPE c VALUE 'X',                "To hold X
           c_tabctrl    TYPE i VALUE '6',             "For holding
           c_and        TYPE c VALUE '&',
           c_tab TYPE x VALUE '09'.
         START-OF-SELECTION                                         *
START-OF-SELECTION.
  IF p_appser NE 'X' .
*Download from presentation server
    PERFORM pres_file_download .
  ELSE.
*Download from application server
    PERFORM appl_file_download.
  ENDIF.
  DESCRIBE TABLE tbl_input LINES w_rec.
*Banking details upload
  IF  p_bank = 'X'.
    IF NOT tbl_input[] IS INITIAL.
      PERFORM data_fetching.
    ELSE.
      WRITE : text-017.
      EXIT.
    ENDIF.
    PERFORM data_validation.
    PERFORM final_data_prep.
    IF p_test NE 'X'.
    <b>  PERFORM bdc_data_load</b>.
    ENDIF.
*Linking alternate payee
  ELSE.
    IF NOT tbl_input[] IS INITIAL.
      PERFORM data_fetching_zalt.
    ENDIF.
    PERFORM data_validation_zalt.
    PERFORM final_data_prep_zalt.
    PERFORM zalt_data_load.
  ENDIF.
*&      <b>Form  bdc_data_load</b>
FORM bdc_data_load.
  PERFORM open_group.
  DATA : l_cnt(2) TYPE n.                                   "TIR-70118
  SORT tbl_final BY lifnr bukrs.
  SORT tbl_lfbk BY lifnr.
  LOOP AT tbl_final.
    AT NEW bukrs.
      PERFORM 1_screen.
      PERFORM cursor_location.
    ENDAT.
    PERFORM table_control.
    l_cnt = l_cnt + 1.                                      "TIR-70118
    AT END OF bukrs.
*Begin of addition for TIR-70118
      MOVE l_cnt TO tbl_lfbk-cnt.
      tbl_lfbk-lifnr = tbl_final-lifnr.
      COLLECT tbl_lfbk.
      SORT tbl_lfbk BY lifnr.
      CLEAR l_cnt.
*End of addition for TIR-70118
      PERFORM last_screen.
      PERFORM insert_bdc.
      REFRESH tbl_bdcdata.
    ENDAT.
  ENDLOOP.
  PERFORM close_group.
ENDFORM.                    " bdc_data_load
*&    <b>  Form  1_screen</b>
FORM 1_screen.
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0101'.
  PERFORM bdc_field   USING : 'BDC_CURSOR'
                              'RF02K-D0215',
                                'BDC_OKCODE'
                                '/00',
                                'RF02K-LIFNR'
                                tbl_final-lifnr,
                                'RF02K-BUKRS'
                                 tbl_final-bukrs,
                                'RF02K-D0110'
                                'RF02K-D0120'
                                'X',
                               'RF02K-D0130'
                                'X',
                               'RF02K-D0215'
                                'X'.
  PERFORM bdc_dynpro  USING 'SAPMF02K' '0120'.
  PERFORM bdc_field   USING :   'BDC_CURSOR'
                                'LFA1-TXJCD',
                                'BDC_OKCODE'
                                '/00'.
*Begin of changes for TIR-70118
  IF NOT tbl_final-stcd3 IS INITIAL.
    PERFORM bdc_field   USING :   'LFA1-STCD3'
                                  tbl_final-stcd3.
  ENDIF.
  IF NOT tbl_final-scacd IS INITIAL.
    PERFORM bdc_field   USING :   'LFA1-SCACD'
                                  tbl_final-scacd.
  ENDIF.
*End of changes for TIR-70118
  PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.
ENDFORM.                                                    " 1_screen
*&     <b> Form  cursor_location</b>
FORM cursor_location.
  DATA : l_times TYPE i.
  CLEAR tbl_lfbk.                                           "TIR-70118
  READ TABLE tbl_lfbk WITH KEY lifnr = tbl_final-lifnr
                                             BINARY SEARCH.
  IF sy-subrc = 0.
    l_times = tbl_lfbk-cnt DIV 5.
    w_count = ( tbl_lfbk-cnt MOD 5 ) + 1.
    DO l_times TIMES.
      PERFORM page_down.
    ENDDO.
  ELSE.
    w_count = 1.
  ENDIF.
  CLEAR l_times.
ENDFORM.                    " cursor_location
*&   <b>   Form  table_control</b>
FORM table_control.
  CONCATENATE 'LFBK-BANKS(' w_count ')'
                                   INTO w_fld1.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                               w_fld1.
  CLEAR w_fld1.
  IF NOT ( tbl_final-banks IS INITIAL ).                    "TIR-70118
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTR'.
    CONCATENATE 'LFBK-BANKS(' w_count ')'
                                     INTO w_fld1.
    PERFORM bdc_field       USING w_fld1
                                    tbl_final-banks.
    CLEAR w_fld1.
    CONCATENATE 'LFBK-BANKL(' w_count ')'
                                     INTO w_fld1.
    PERFORM bdc_field       USING w_fld1
                                    tbl_final-bankl.
    CLEAR w_fld1.
    CONCATENATE 'LFBK-BANKN(' w_count ')'
                                     INTO w_fld1.
    PERFORM bdc_field       USING  w_fld1
                                   tbl_final-bankn.
    CONCATENATE 'LFBK-KOINH(' w_count ')'
                                     INTO w_fld1.
    PERFORM bdc_field       USING w_fld1
                                     tbl_final-koinh.
    CONCATENATE 'LFBK-BKONT(' w_count ')'
                                     INTO w_fld1.
    PERFORM bdc_field       USING w_fld1
                                    tbl_final-bkont.
    CONCATENATE 'LFBK-BVTYP(' w_count ')'
                                     INTO w_fld1.
    PERFORM bdc_field       USING w_fld1
                                    tbl_final-bvtyp.
    CONCATENATE 'LFBK-BKREF(' w_count ')'
                                     INTO w_fld1.
    PERFORM bdc_field       USING w_fld1
                                   tbl_final-bkref.
    CLEAR w_fld1.
    IF NOT tbl_final-swift IS INITIAL.
      PERFORM swift_screen.
    ENDIF.
    IF NOT tbl_final-iban IS INITIAL.
      PERFORM iban_screen.
    ENDIF.
    PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.
<b>    w_count = w_count + 1.
    IF w_count EQ c_tabctrl.
      w_count = 1.
      PERFORM page_down</b>.
    ENDIF.
  ENDIF.                                                   
ENDFORM.                    " table_control
*&  <b>    Form  page_down</b>
FORM page_down.
  PERFORM bdc_field   USING 'BDC_OKCODE'
                            '=P+'.
  PERFORM bdc_field       USING 'BDC_CURSOR'
                          'LFBK-BANKS(01)'.
  PERFORM bdc_dynpro  USING 'SAPMF02K'
                            '0130'.
  PERFORM bdc_field   USING 'BDC_OKCODE'
                            '/00'.
ENDFORM.                    " page_down
*&      Form  <b>Insert_BDC</b>
      This form takes the transaction code and populates the data
FORM submit_bdc .
**Function module that takes the TCODE and populate the data
  CALL FUNCTION 'BDC_INSERT'
       EXPORTING
            tcode            = c_tcode
       TABLES
            dynprotab        = tbl_bdcdata
       EXCEPTIONS
            internal_error   = 1
            not_open         = 2
            queue_error      = 3
            tcode_invalid    = 4
            printing_invalid = 5
            posting_invalid  = 6
            OTHERS           = 7.
*Incase of error while populatin data
  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.                      "End of Submit_bdc
I think this code can help for you, let me know if any doubts.
Reward with points, if it helpful for u.
Regards,
Vijay

Similar Messages

  • How can we use TABLE CONTROL in BDC and WORK FLOW of ABAP.

    how can we use TABLE CONTROL in BDC and WORK FLOW of ABAP.?
    please explain the important questions.

    How to deal with table control / step loop in BDC
    Steploop and table contol is inevitable in certain transactions. When we run BDC for such transactions, we will face the situation: how many visible lines of steploop/tablecontrol are on the screen? Although we can always find certain method to deal with it, such as function code 'NP', 'POPO', considering some extreme situation: there is only one line visible one the screen, our BDC program should display an error message. (See transaction 'ME21', we you resize your screen to let only one row visible, you can not enter mutiple lines on this screen even you use 'NP')
    Now with the help of Poonam on sapfans.com developement forum, I find a method with which we can determine the number of visible lines on Transaction Screen from our Calling BDC program. Maybe it is useless to you, but I think it will give your some idea.
    Demo ABAP code has two purposes:
    1. how to determine number of visible lines and how to calculte page number;
    (the 'calpage' routine has been modify to meet general purpose usage)
    2. using field symbol in BDC program, please pay special attention to the difference in Static ASSIGN and Dynamic ASSIGN.
    Now I begin to describe the step to implement my method:
    (I use transaction 'ME21', screen 121 for sample,
    the method using is Call Transation Using..)
    Step1: go to screen painter to display the screen 121, then we can count the fixed line on this screen, there is 7 lines above the steploop and 2 lines below the steploop, so there are total 9 fixed lines on this screen. This means except these 9 lines, all the other line is for step loop. Then have a look at steploop itselp, one entry of it will occupy two lines.
    (Be careful, for table control, the head and the bottom scroll bar will possess another two fixed lines, and there is a maximum number for table line)
    Now we have : FixedLine = 9
                  LoopLine  = 2(for table control, LoopLine is always equal to 1)
    Step2: go to transaction itself(ME21) to see how it roll page, in ME21, the first line of new page is always occupied by the last line of last page, so it begin with index '02', but in some other case, fisrt line is empty and ready for input.
    Now we have: FirstLine = 0
              or FirstLine = 1 ( in our case, FirstLine is 1 because the first line of new page is fulfilled)
    Step3: write a subroutine calcalculating number of pages
    (here, the name of actual parameter is the same as formal parameter)
    global data:    FixedLine type i, " number of fixed line on a certain screen
                    LoopLine  type i, " the number of lines occupied by one steploop item
                    FirstLine type i, " possbile value 0 or 1, 0 stand for the first line of new                                                               " scrolling screen is empty, otherwise is 1
                    Dataline  type i, " number of items you will use in BDC, using DESCRIBE to get
                    pageno    type i, " you need to scroll screen how many times.
                    line      type i, " number of lines appears on the screen.
                    index(2)  type N, " the screen index for certain item
                    begin     type i, " from parameter of loop
                    end       type i. " to parameter of loop
    *in code sample, the DataTable-linindex stands for the table index number of this line
    form calpage using FixedLine type i (see step 1)
                       LoopLine  type i (see step 1)
                       FirstLine type i (see step 2)
                       DataLine  type i ( this is the item number you will enter in transaction)
              changing pageno    type i (return the number of page, depends on run-time visible                                                                             line in table control/ Step Loop)
              changing line      type i.(visible lines one the screen)
    data: midd type i,
          vline type i, "visible lines
    if DataLine eq 0.
       Message eXXX.
    endif.
    vline = ( sy-srows - FixedLine ) div LoopLine.
    *for table control, you should compare vline with maximum line of
    *table control, then take the small one that is min(vline, maximum)
    *here only illustrate step loop
    if FirstLine eq 0.
            pageno = DataLine div vline.
            if pageno eq 0.
               pageno = pageno + 1.
            endif.
    elseif FirstLine eq 1.
            pageno = ( DataLine - 1 ) div ( vline - 1 ) + 1.
            midd = ( DataLine - 1 ) mod ( vline - 1).
            if midd = 0 and DataLine gt 1.
                    pageno = pageno - 1.
            endif.
    endif.
    line = vline.
    endform.
    Step4 write a subroutine to calculate the line index for each item.
    form calindex using Line type i (visible lines on the screen)
                        FirstLine type i(see step 2)
                        LineIndex type i(item index)
              changing  Index type n.    (index on the screen)
      if  FirstLine = 0.
            index = LineIndex mod Line.
            if index = '00'.
                    index = Line.
            endif.
      elseif FirstLine = 1.
            index = LineIndex mod ( Line - 1 ).
            if ( index between 1 and 0 ) and LineIndex gt 1.
                    index = index + Line - 1.
            endif.
            if Line = 2.
                    index = index + Line - 1.
            endif.
    endif.
    endform.
    Step5 write a subroutine to calculate the loop range.
    form calrange using Line type i ( visible lines on the screen)
                        DataLine type i
                        FirstLine type i
                        loopindex like sy-index
            changing    begin type i
                        end type i.
    If FirstLine = 0.
       if loopindex = 1.
            begin = 1.
            if DataLine <= Line.
                    end = DataLine.
            else.
                    end = Line.
            endif.
       elseif loopindex gt 1.
            begin = Line * ( loopindex - 1 ) + 1.
            end   = Line * loopindex.
            if end gt DataLine.
               end = DataLine.
            endif.
       endif.
    elseif FirstLine = 1.
      if loopindex = 1.
            begin = 1.
            if DataLine <= Line.
                    end = DataLine.
            else.
                    end = Line.
            endif.
      elseif loop index gt 1.
            begin = ( Line - 1 ) * ( loopindex - 1 ) + 2.
            end =   ( Line - 1 ) * ( loopindex - 1 ) + Line.
            if end gt DataLine.
                    end = DataLine.
            endif.
      endif.
    endif.
    endform.
    Step6 using field sysbol in your BDC, for example: in ME21, but you should calculate each item will correponding to which index in steploop/Table Control
    form creat_bdc.
    field-symbols: <material>, <quan>, <indicator>.
    data: name1(14) value 'EKPO-EMATN(XX)',
          name2(14) value 'EKPO-MENGE(XX)',
          name3(15) value 'RM06E-SELKZ(XX)'.
    assign:         name1 to <material>,
                    name2 to <quan>,
                    name3 to <indicator>.
    do pageno times.
    if sy-index gt 1
    *insert scroll page ok_code"
    endif.
            perform calrange using Line DataLine FirstLine sy-index
                             changing begin end.
    loop at DataTable from begin to end.
            perform calindex using Line FirstLine DataTable-LineIndex changing Index.
            name1+11(2) = Index.
            name2+11(2) = Index.
            name3+12(2) = Index.
            perform bdcfield using <material> DataTable-matnr.
            perform bdcfield using <quan>     DataTable-menge.
            perform bdcfield using <indicator> DataTable-indicator.
    endloop.
    enddo.
    An example abap program of handling Table Control during bdc programming.
    REPORT zmm_bdcp_purchaseorderkb02
           NO STANDARD PAGE HEADING LINE-SIZE 255.
                    Declaring internal tables                            *
    *-----Declaring line structure
    DATA : BEGIN OF it_dummy OCCURS 0,
             dummy(255) TYPE c,
           END OF it_dummy.
    *-----Internal table for line items
    DATA :  BEGIN OF it_idata OCCURS 0,
              ematn(18),      "Material Number.
              menge(13),      "Qyantity.
              netpr(11),      "Net Price.
              werks(4),       "Plant.
              ebelp(5),       "Item Number.
            END OF it_idata.
    *-----Deep structure for header data and line items
    DATA  :  BEGIN OF it_me21 OCCURS 0,
               lifnr(10),      "Vendor A/c No.
               bsart(4),       "A/c Type.
               bedat(8),       "Date of creation of PO.
               ekorg(4),       "Purchasing Organisation.
               ekgrp(3),       "Purchasing Group.
               x_data LIKE TABLE OF it_idata,
             END OF it_me21.
    DATA  :  x_idata LIKE LINE OF it_idata.
    DATA  :  v_delimit VALUE ','.
    DATA  :  v_indx(3) TYPE n.
    DATA  :  v_fnam(30) TYPE c.
    DATA  :  v_count TYPE n.
    DATA  :  v_ne TYPE i.
    DATA  :  v_ns TYPE i.
    *include bdcrecx1.
    INCLUDE zmm_incl_purchaseorderkb01.
                    Search help for file                                 *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          program_name  = syst-cprog
          dynpro_number = syst-dynnr
        IMPORTING
          file_name     = p_file.
    START-OF-SELECTION.
           To upload the data into line structure                        *
      CALL FUNCTION 'WS_UPLOAD'
        EXPORTING
          filename = p_file
          filetype = 'DAT'
        TABLES
          data_tab = it_dummy.
        Processing the data from line structure to internal tables       *
      REFRESH:it_me21.
      CLEAR  :it_me21.
      LOOP AT it_dummy.
        IF it_dummy-dummy+0(01) = 'H'.
          v_indx = v_indx + 1.
          CLEAR   it_idata.
          REFRESH it_idata.
          CLEAR   it_me21-x_data.
          REFRESH it_me21-x_data.
          SHIFT it_dummy.
          SPLIT it_dummy AT v_delimit INTO it_me21-lifnr
                                           it_me21-bsart
                                           it_me21-bedat
                                           it_me21-ekorg
                                           it_me21-ekgrp.
          APPEND it_me21.
        ELSEIF it_dummy-dummy+0(01) = 'L'.
          SHIFT it_dummy.
          SPLIT it_dummy AT v_delimit INTO it_idata-ematn
                                           it_idata-menge
                                           it_idata-netpr
                                           it_idata-werks
                                           it_idata-ebelp.
          APPEND it_idata TO it_me21-x_data.
          MODIFY it_me21 INDEX v_indx.
        ENDIF.
      ENDLOOP.
                    To open the group                                    *
      PERFORM open_group.
            To populate the bdcdata table for header data                *
      LOOP AT it_me21.
        v_count = v_count + 1.
        REFRESH it_bdcdata.
        PERFORM subr_bdc_table USING:   'X' 'SAPMM06E'    '0100',
                                        ' ' 'BDC_CURSOR'  'EKKO-LIFNR',
                                        ' ' 'BDC_OKCODE'  '/00',
                                        ' ' 'EKKO-LIFNR'  it_me21-lifnr,
                                        ' ' 'RM06E-BSART' it_me21-bsart,
                                        ' ' 'RM06E-BEDAT' it_me21-bedat,
                                        ' ' 'EKKO-EKORG'  it_me21-ekorg,
                                        ' ' 'EKKO-EKGRP'  it_me21-ekgrp,
                                        ' ' 'RM06E-LPEIN' 'T'.
        PERFORM subr_bdc_table USING:   'X' 'SAPMM06E'    '0120',
                                        ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                        ' ' 'BDC_OKCODE'  '/00'.
        MOVE 1 TO v_indx.
    *-----To populate the bdcdata table for line item data
        LOOP AT it_me21-x_data INTO x_idata.
          CONCATENATE 'EKPO-EMATN(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-ematn.
          CONCATENATE 'EKPO-MENGE(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-menge.
          CONCATENATE 'EKPO-NETPR(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-netpr.
          CONCATENATE 'EKPO-WERKS(' v_indx ')'  INTO v_fnam.
          PERFORM  subr_bdc_table USING ' ' v_fnam x_idata-werks.
          v_indx = v_indx + 1.
          PERFORM subr_bdc_table USING:  'X' 'SAPMM06E'    '0120',
                                         ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                         ' ' 'BDC_OKCODE'  '/00'.
        ENDLOOP.
        PERFORM subr_bdc_table USING:    'X' 'SAPMM06E'    '0120',
                                         ' ' 'BDC_CURSOR'  'RM06E-EBELP',
                                         ' ' 'BDC_OKCODE'  '=BU'.
        PERFORM bdc_transaction USING 'ME21'.
      ENDLOOP.
      PERFORM close_group.
                      End of selection event                             *
    END-OF-SELECTION.
      IF session NE 'X'.
    *-----To display the successful records
        WRITE :/10  text-001.          "Sucess records
        WRITE :/10  SY-ULINE(20).
        SKIP.
        IF it_sucess IS INITIAL.
          WRITE :/  text-002.
        ELSE.
          WRITE :/   text-008,          "Total number of Succesful records
                  35 v_ns.
          SKIP.
          WRITE:/   text-003,          "Vendor Number
                 17 text-004,          "Record number
                 30 text-005.          "Message
        ENDIF.
        LOOP AT it_sucess.
          WRITE:/4  it_sucess-lifnr,
                 17 it_sucess-tabix CENTERED,
                 30 it_sucess-sucess_rec.
        ENDLOOP.
        SKIP.
    *-----To display the erroneous records
        WRITE:/10   text-006.          "Error Records
        WRITE:/10   SY-ULINE(17).
        SKIP.
        IF it_error IS INITIAL.
          WRITE:/   text-007.          "No error records
        ELSE.
          WRITE:/   text-009,          "Total number of erroneous records
                 35 v_ne.
          SKIP.
          WRITE:/   text-003,          "Vendor Number
                 17 text-004,          "Record number
                 30 text-005.          "Message
        ENDIF.
        LOOP AT it_error.
          WRITE:/4  it_error-lifnr,
                 17 it_error-tabix CENTERED,
                 30 it_error-error_rec.
        ENDLOOP.
        REFRESH it_sucess.
        REFRESH it_error.
      ENDIF.
    CODE IN INCLUDE.
    Include           ZMM_INCL_PURCHASEORDERKB01
    DATA:   it_BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE.
    DATA:   it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
    DATA:   E_GROUP_OPENED.
    *-----Internal table to store sucess records
    DATA:BEGIN OF it_sucess OCCURS 0,
           msgtyp(1)   TYPE c,
           lifnr  LIKE  ekko-lifnr,
           tabix  LIKE  sy-tabix,
           sucess_rec(125),
         END OF it_sucess.
    DATA: g_mess(125) type c.
    *-----Internal table to store error records
    DATA:BEGIN OF it_error OCCURS 0,
           msgtyp(1)   TYPE c,
           lifnr  LIKE  ekko-lifnr,
           tabix  LIKE  sy-tabix,
           error_rec(125),
         END OF it_error.
           Selection screen
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS session RADIOBUTTON GROUP ctu.  "create session
    SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session.
    SELECTION-SCREEN POSITION 45.
    PARAMETERS ctu RADIOBUTTON GROUP ctu.     "call transaction
    SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group.
    SELECTION-SCREEN POSITION 25.
    PARAMETERS group(12).                      "group name of session
    SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'.
    "A: show all dynpros
    "E: show dynpro on error only
    "N: do not display dynpro
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD keep.
    SELECTION-SCREEN POSITION 25.
    PARAMETERS: keep AS CHECKBOX.       "' ' = delete session if finished
    "'X' = keep   session if finished
    SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS e_group(12).             "group name of error-session
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_keep.
    SELECTION-SCREEN POSITION 70.
    PARAMETERS: e_keep AS CHECKBOX.     "' ' = delete session if finished
    "'X' = keep   session if finished
    SELECTION-SCREEN END OF LINE.
    PARAMETERS:p_file LIKE rlgrap-filename.
      at selection screen                                                *
    AT SELECTION-SCREEN.
    group and user must be filled for create session
      IF SESSION = 'X' AND
         GROUP = SPACE. "OR USER = SPACE.
        MESSAGE E613(MS).
      ENDIF.
      create batchinput session                                          *
    FORM OPEN_GROUP.
      IF SESSION = 'X'.
        SKIP.
        WRITE: /(20) 'Create group'(I01), GROUP.
        SKIP.
    *----open batchinput group
        CALL FUNCTION 'BDC_OPEN_GROUP'
          EXPORTING
            CLIENT = SY-MANDT
            GROUP  = GROUP
            USER   = sy-uname.
        WRITE:/(30) 'BDC_OPEN_GROUP'(I02),
                (12) 'returncode:'(I05),
                     SY-SUBRC.
      ENDIF.
    ENDFORM.                    "OPEN_GROUP
      end batchinput session                                             *
    FORM CLOSE_GROUP.
      IF SESSION = 'X'.
    *------close batchinput group
        CALL FUNCTION 'BDC_CLOSE_GROUP'.
        WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
                (12) 'returncode:'(I05),
                     SY-SUBRC.
      ELSE.
        IF E_GROUP_OPENED = 'X'.
          CALL FUNCTION 'BDC_CLOSE_GROUP'.
          WRITE: /.
          WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).
        ENDIF.
      ENDIF.
    ENDFORM.                    "CLOSE_GROUP
           Start new transaction according to parameters                 *
    FORM BDC_TRANSACTION USING TCODE TYPE ANY.
      DATA: L_SUBRC LIKE SY-SUBRC.
    *------batch input session
      IF SESSION = 'X'.
        CALL FUNCTION 'BDC_INSERT'
          EXPORTING
            TCODE     = TCODE
          TABLES
            DYNPROTAB = it_BDCDATA.
        WRITE: / 'BDC_INSERT'(I03),
                 TCODE,
                 'returncode:'(I05),
                 SY-SUBRC,
                 'RECORD:',
                 SY-INDEX.
      ELSE.
        REFRESH it_MESSTAB.
        CALL TRANSACTION TCODE USING it_BDCDATA
                         MODE   CTUMODE
                         UPDATE CUPDATE
                         MESSAGES INTO it_MESSTAB.
        L_SUBRC = SY-SUBRC.
        WRITE: / 'CALL_TRANSACTION',
                 TCODE,
                 'returncode:'(I05),
                 L_SUBRC,
                 'RECORD:',
                 SY-INDEX.
      ENDIF.
      Message handling for Call Transaction                              *
      perform subr_mess_hand using g_mess.
    *-----Erzeugen fehlermappe
      IF L_SUBRC <> 0 AND E_GROUP <> SPACE.
        IF E_GROUP_OPENED = ' '.
          CALL FUNCTION 'BDC_OPEN_GROUP'
            EXPORTING
              CLIENT = SY-MANDT
              GROUP  = E_GROUP
              USER   = sy-uname
              KEEP   = E_KEEP.
          E_GROUP_OPENED = 'X'.
        ENDIF.
        CALL FUNCTION 'BDC_INSERT'
          EXPORTING
            TCODE     = TCODE
          TABLES
            DYNPROTAB = it_BDCDATA.
      ENDIF.
      REFRESH it_BDCDATA.
    ENDFORM.                    "BDC_TRANSACTION
         Form  subr_bdc_table                                            *
          text
         -->P_0220   text                                                *
         -->P_0221   text                                                *
         -->P_0222   text                                                *
    FORM subr_bdc_table  USING      VALUE(P_0220) TYPE ANY
                                    VALUE(P_0221) TYPE ANY
                                    VALUE(P_0222) TYPE ANY.
      CLEAR it_bdcdata.
      IF P_0220 = ' '.
        CLEAR it_bdcdata.
        it_bdcdata-fnam     = P_0221.
        it_bdcdata-fval     = P_0222.
        APPEND it_bdcdata.
      ELSE.
        it_bdcdata-dynbegin = P_0220.
        it_bdcdata-program  = P_0221.
        it_bdcdata-dynpro   = P_0222.
        APPEND it_bdcdata.
      ENDIF.
    ENDFORM.                    " subr_bdc_table
         Form  subr_mess_hand                                            *
          text                                                           *
         -->P_G_MESS  text                                               *
    FORM subr_mess_hand USING  P_G_MESS TYPE ANY.
      LOOP AT IT_MESSTAB.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            ID     = it_messtab-msgid
            LANG   = it_messtab-msgspra
            NO     = it_messtab-msgnr
            v1     = it_messtab-msgv1
            v2     = it_messtab-msgv2
          IMPORTING
            MSG    = P_G_MESS
          EXCEPTIONS
            OTHERS = 0.
        CASE it_messtab-msgtyp.
          when 'E'.
            it_error-error_rec   =  P_G_MESS.
            it_error-lifnr       =  it_me21-lifnr.
            it_error-tabix       =  v_count.
            APPEND IT_ERROR.
          when 'S'.
            it_sucess-sucess_rec =  P_G_MESS.
            it_sucess-lifnr      =  it_me21-lifnr.
            it_sucess-tabix      =  v_count.
            APPEND IT_SUCESS.
        endcase.
      ENDLOOP.
      Describe table it_sucess lines v_ns.
      Describe table it_error  lines v_ne.
    ENDFORM.                    " subr_mess_hand
    Also refer
    http://sap.ittoolbox.com/groups/technical-functional/sap-dev/bdc-table-control-668404
    and
    http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    Regards,
    srinivas
    <b>*reward for useful answers*</b>

  • How to use table control in bdc, plz somebody tell me.

    Hi Gurus,
    Ples tell me
    how to use table control in bdc, plz somebody tell me.
    And send Sample CODE also. Thnaks in advance.

    hi,
    Table control / step loop in BDC
    Steploop and table contol is inevitable in certain transactions. When we run BDC for such transactions, we will face the situation: how many visible lines of steploop/tablecontrol are on the screen?
    Although we can always find certain method to deal with it, such as function code 'NP', 'POPO', considering some extreme situation: there is only one line visible one the screen, our BDC program should display an error message. (See transaction 'ME21', we you resize your screen to let only one row visible, you can not enter mutiple lines on this screen even you use 'NP')
    we can determine the number of visible lines on Transaction Screen from our Calling BDC program.
    Demo ABAP code has two purposes:
    1. how to determine number of visible lines and how to calculte page number;
    (the 'calpage' routine has been modify to meet general purpose usage)
    2. using field symbol in BDC program, please pay special attention to the difference
    in Static ASSIGN and Dynamic ASSIGN.
    Step1: go to screen painter to display the screen 121, then we can count the fixed line on this screen, there is 7 lines above the steploop and 2 lines below the steploop, so there are total 9 fixed lines on this screen. This means except these 9 lines, all the other line is for step loop.
    Then have a look at steploop itselp, one entry of it will occupy two lines.
    (Be careful, for table control, the head and the bottom scroll bar will possess another two fixed lines, and there is a maximum number for table line)
    Now we have : FixedLine = 9
    LoopLine = 2(for table control, LoopLine is always equal to 1)
    Step2: go to transaction itself(ME21) to see how it roll page, in ME21, the first line of new page is always occupied by the last line of last page, so it begin with index '02', but in some other case, fisrt line is empty and ready for input.
    Now we have: FirstLine = 0
    or FirstLine = 1 ( in our case, FirstLine is 1 because the first line of new page is fulfilled)
    Step3: write a subroutine calcalculating number of pages
    (here, the name of actual parameter is the same as formal parameter)
    global data: FixedLine type i, " number of fixed line on a certain screen
    LoopLine type i, " the number of lines occupied by one steploop item
    FirstLine type i, " possbile value 0 or 1, 0 stand for the first line of new " scrolling screen is empty, otherwise is 1
    Dataline type i, " number of items you will use in BDC, using DESCRIBE to get
    pageno type i, " you need to scroll screen how many times.
    line type i, " number of lines appears on the screen.
    index(2) type N, " the screen index for certain item
    begin type i, " from parameter of loop
    end type i. " to parameter of loop
    *in code sample, the DataTable-linindex stands for the table index number of this line
    form calpage using FixedLine type i (see step 1)
    LoopLine type i (see step 1)
    FirstLine type i (see step 2)
    DataLine type i ( this is the item number you will enter in transaction)
    changing pageno type i (return the number of page, depends on run-time visible line in table control/ Step Loop)
    changing line type i.(visible lines one the screen)
    data: midd type i,
    vline type i, "visible lines
    if DataLine eq 0.
    Message eXXX.
    endif.
    vline = ( sy-srows - FixedLine ) div LoopLine.
    *for table control, you should compare vline with maximum line of
    *table control, then take the small one that is min(vline, maximum)
    *here only illustrate step loop
    if FirstLine eq 0.
    pageno = DataLine div vline.
    if pageno eq 0.
    pageno = pageno + 1.
    endif.
    elseif FirstLine eq 1.
    pageno = ( DataLine - 1 ) div ( vline - 1 ) + 1.
    midd = ( DataLine - 1 ) mod ( vline - 1).
    if midd = 0 and DataLine gt 1.
    pageno = pageno - 1.
    endif.
    endif.
    line = vline.
    endform.
    Step4 write a subroutine to calculate the line index for each item.
    form calindex using Line type i (visible lines on the screen)
    FirstLine type i(see step 2)
    LineIndex type i(item index)
    changing Index type n. (index on the screen)
    if FirstLine = 0.
    index = LineIndex mod Line.
    if index = '00'.
    index = Line.
    endif.
    elseif FirstLine = 1.
    index = LineIndex mod ( Line - 1 ).
    if ( index between 1 and 0 ) and LineIndex gt 1.
    index = index + Line - 1.
    endif.
    if Line = 2.
    index = index + Line - 1.
    endif.
    endif.
    endform.
    Step5 write a subroutine to calculate the loop range.
    form calrange using Line type i ( visible lines on the screen)
    DataLine type i
    FirstLine type i
    loopindex like sy-index
    changing begin type i
    end type i.
    If FirstLine = 0.
    if loopindex = 1.
    begin = 1.
    if DataLine <= Line.
    end = DataLine.
    else.
    end = Line.
    endif.
    elseif loopindex gt 1.
    begin = Line * ( loopindex - 1 ) + 1.
    end = Line * loopindex.
    if end gt DataLine.
    end = DataLine.
    endif.
    endif.
    elseif FirstLine = 1.
    if loopindex = 1.
    begin = 1.
    if DataLine <= Line.
    end = DataLine.
    else.
    end = Line.
    endif.
    elseif loop index gt 1.
    begin = ( Line - 1 ) * ( loopindex - 1 ) + 2.
    end = ( Line - 1 ) * ( loopindex - 1 ) + Line.
    if end gt DataLine.
    end = DataLine.
    endif.
    endif.
    endif.
    endform.
    Step6
    using field sysbol in your BDC, for example: in ME21, but you should calculate each item will correponding to which index in steploop/Table Control
    form creat_bdc.
    field-symbols: , , .
    data: name1(14) value 'EKPO-EMATN(XX)',
    name2(14) value 'EKPO-MENGE(XX)',
    name3(15) value 'RM06E-SELKZ(XX)'.
    assign: name1 to ,
    name2 to ,
    name3 to .
    do pageno times.
    if sy-index gt 1
    *insert scroll page ok_code"
    endif.
    perform calrange using Line DataLine FirstLine sy-index
    changing begin end.
    loop at DataTable from begin to end.
    perform calindex using Line FirstLine DataTable-LineIndex changing Index.
    name1+11(2) = Index.
    name2+11(2) = Index.
    name3+12(2) = Index.
    perform bdcfield using DataTable-matnr.
    perform bdcfield using DataTable-menge.
    perform bdcfield using DataTable-indicator.
    endloop.
    enddo.
    example 1
    BDC table control is an area on the screen in which you can display data in tabular form. You process it using a loop. Table controls are comparable to step loop tables. While a table control consists of a single definition row, step loop blocks may extend over more than one row. Table controls are more flexible than step loops, and are intended to replace them
    When you need to handle a scenario like in sales order,it may contain more than one material,if you have more than one material We have to use table control,it will have number of columns and number of rows.
    Table controls allow you to enter, display, and modify tabular data easily on the screen
    Check this code,
    PARAMETERS: file1 LIKE rlgrap-filename.
    *Internal Table Declarations
    DATA: BEGIN OF itab OCCURS 0,
    matnr(18) TYPE c, "MaterialNumber
    werks(4) TYPE c, "Plant
    vdatu(10) TYPE c, "Valid From Date
    bdatu(10) TYPE c, "Valid To Date
    lifnr(10) TYPE c, "Vendor Number
    ekorg(4) TYPE c, "Purchasing Organization
    feskz TYPE c, "Fixed
    autet TYPE c, "MRP Indicator
    END OF itab.
    DATA: bdcdata LIKE TABLE OF bdcdata WITH HEADER LINE.
    *VARIABLES Declarations
    DATA: wa1 LIKE LINE OF itab. "Workarea for ITAB
    DATA: n TYPE i, "Check
    count TYPE i.
    DATA: cnt(2), "Counter
    wa(15). "Workarea to hold concatenatedvalue
    DATA v_msg(100).
    DATA: flag.
    DATA: file TYPE string.
    *Initialization event
    INITIALIZATION.
    *At-selection-screen event
    *To provide Input help for file name
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR file1.
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
    program_name = syst-cprog
    dynpro_number = syst-dynnr
    IMPORTING
    file_name = file1.
    *START-OF-SELECTION EVENT
    START-OF-SELECTION.
    MOVE file1 TO file.
    CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
    filename = file
    filetype = 'ASC'
    has_field_separator = 'X'
    TABLES
    data_tab = 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.
    *To populate BDCDATA and start data transfer
    LOOP AT itab .
    To validate Plant range
    IF itab-werks = '1000' OR itab-werks = '2000'
    OR itab-werks = '1008'.
    AT NEW werks.
    CLEAR: n.
    cnt = 1.
    PERFORM bdc_dynpro USING 'SAPLMEOR' '0200'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'EORD-MATNR'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '/00'.
    PERFORM bdc_field USING 'EORD-MATNR'
    itab-matnr.
    PERFORM bdc_field USING 'EORD-WERKS'
    itab-werks.
    PERFORM bdc_dynpro USING 'SAPLMEOR' '0205'.
    CONCATENATE 'EORD-EKORG(' cnt ')' INTO wa.
    PERFORM bdc_field USING 'BDC_CURSOR'
    wa.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=BU'.
    ENDAT.
    IF n = 12.
    READ TABLE bdcdata WITH KEY fval = '=BU'.
    bdcdata-fval = '=NS'.
    MODIFY bdcdata INDEX sy-tabix TRANSPORTING fval.
    PERFORM bdc_dynpro USING 'SAPLMEOR' '0205'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'EORD-VDATU(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=BU'.
    cnt = 2.
    n = 2.
    ENDIF.
    CONCATENATE 'EORD-VDATU(' cnt ')' INTO wa.
    PERFORM bdc_field USING wa
    itab-vdatu.
    CONCATENATE 'EORD-BDATU(' cnt ')' INTO wa.
    PERFORM bdc_field USING wa
    itab-bdatu.
    CONCATENATE 'EORD-LIFNR(' cnt ')' INTO wa.
    PERFORM bdc_field USING wa
    itab-lifnr.
    CONCATENATE 'EORD-EKORG(' cnt ')' INTO wa.
    PERFORM bdc_field USING wa
    itab-ekorg.
    CONCATENATE 'RM06W-FESKZ(' cnt ')' INTO wa.
    PERFORM bdc_field USING wa
    itab-feskz.
    CONCATENATE 'EORD-AUTET(' cnt ')' INTO wa.
    PERFORM bdc_field USING wa
    itab-autet.
    IF n <> 12.
    n = cnt.
    ENDIF.
    cnt = cnt + 1.
    AT END OF werks.
    CALL TRANSACTION 'ME01' USING bdcdata
    UPDATE 'S'
    MODE 'A'.
    CLEAR:bdcdata,bdcdata[].
    CALL FUNCTION 'FORMAT_MESSAGE'
    EXPORTING
    id = sy-msgid
    lang = 'EN'
    no = sy-msgno
    v1 = sy-msgv1
    v2 = sy-msgv2
    v3 = sy-msgv3
    v4 = sy-msgv4
    IMPORTING
    msg = v_msg.
    WRITE:/ v_msg.
    CLEAR: bdcdata,bdcdata[],flag.
    ENDAT.
    ENDIF.
    ENDLOOP.
    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 values
    FORM bdc_field USING fnam fval.
    IF NOT fval IS INITIAL.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    APPEND bdcdata.
    ENDIF.
    CLEAR wa.
    ENDFORM.
    Sample code 2
    THis is example to upload the Bank details of the Vendor which has the TC.
    REPORT zprataptable2
    NO STANDARD PAGE HEADING LINE-SIZE 255.
    DATA : BEGIN OF itab OCCURS 0,
    i1 TYPE i,
    lifnr LIKE rf02k-lifnr,
    bukrs LIKE rf02k-bukrs,
    ekorg LIKE rf02k-ekorg,
    ktokk LIKE rf02k-ktokk,
    anred LIKE lfa1-anred,
    name1 LIKE lfa1-name1,
    sortl LIKE lfa1-sortl,
    land1 LIKE lfa1-land1,
    akont LIKE lfb1-akont,
    fdgrv LIKE lfb1-fdgrv,
    waers LIKE lfm1-waers,
    END OF itab.
    DATA : BEGIN OF jtab OCCURS 0,
    j1 TYPE i,
    banks LIKE lfbk-banks,
    bankl LIKE lfbk-bankl,
    bankn LIKE lfbk-bankn,
    END OF jtab.
    DATA : cnt(4) TYPE n.
    DATA : fdt(20) TYPE c.
    DATA : c TYPE i.
    INCLUDE bdcrecx1.
    START-OF-SELECTION.
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
    filename = 'C:\first1.txt'
    filetype = 'DAT'
    TABLES
    data_tab = itab.
    CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
    filename = 'C:\second.txt'
    filetype = 'DAT'
    TABLES
    data_tab = jtab.
    LOOP AT itab.
    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'
    itab-lifnr.
    PERFORM bdc_field USING 'RF02K-BUKRS'
    itab-bukrs.
    PERFORM bdc_field USING 'RF02K-EKORG'
    itab-ekorg.
    PERFORM bdc_field USING 'RF02K-KTOKK'
    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-ANRED'
    itab-anred.
    PERFORM bdc_field USING 'LFA1-NAME1'
    itab-name1.
    PERFORM bdc_field USING 'LFA1-SORTL'
    itab-sortl.
    PERFORM bdc_field USING 'LFA1-LAND1'
    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(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTR'.
    cnt = 0.
    LOOP AT jtab WHERE j1 = itab-i1.
    cnt = cnt + 1.
    CONCATENATE 'LFBK-BANKS(' cnt ')' INTO fdt.
    PERFORM bdc_field USING fdt jtab-banks.
    CONCATENATE 'LFBK-BANKL(' cnt ')' INTO fdt.
    PERFORM bdc_field USING fdt jtab-bankl.
    CONCATENATE 'LFBK-BANKN(' cnt ')' INTO fdt.
    PERFORM bdc_field USING fdt jtab-bankn.
    IF cnt = 5.
    cnt = 0.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFBK-BANKS(01)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=P+'.
    PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.
    PERFORM bdc_field USING 'BDC_CURSOR'
    'LFBK-BANKN(02)'.
    PERFORM bdc_field USING 'BDC_OKCODE'
    '=ENTR'.
    ENDIF.
    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'
    itab-akont.
    PERFORM bdc_field USING 'LFB1-FDGRV'
    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'
    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_transaction USING 'XK01'.
    ENDLOOP.
    PERFORM close_group.
    Header file:
    1 63190 0001 0001 0001 mr bal188 b in 31000 a1 inr
    2 63191 0001 0001 0001 mr bal189 b in 31000 a1 inr
    TC file:
    1 in sb 11000
    1 in sb 12000
    1 in sb 13000
    1 in sb 14000
    1 in sb 15000
    1 in sb 16000
    1 in sb 17000
    1 in sb 18000
    1 in sb 19000
    1 in sb 20000
    1 in sb 21000
    1 in sb 22000
    2 in sb 21000
    2 in sb 22000
    Regards

  • Error  while uploading data in table t_499s through BDC Prog

    Hi
    am facing problem while uploading data in table t_499s through BDC Program  , if there is more than 15 records in file its not allowing to upload kindly suggest what to do
    Thanx
    Mukesh s

    Hi,
    See if you want to update only single table, which has User maintenance allowed
    Use Modify statement.
    EX:
    LOOP AT ITAB INTO WA_TAB.
        MOVE-CORRESPONDING WA_TAB TO T499S.
        MODIFY T499S.
        CLEAR T499S.
      ENDLOOP.
    It will update the table, to check go to sm30 , and check in V_T499S.
    Rgds
    Aeda

  • Error while updating data using session and call transaction method

    Hi all,
        i have to update data using MM01 transaction from flat file to database.i have used both session method and call transaction method to do that.in both the methods data has been transferred from internal tables to screens but while updating the data that is by clicking the ok-code at the end of the transaction iam getting a dialogue box stating
       SAP EXPRESS DOCUMENT "UPDATE WAS TERMINATED" RECEIVED FROM AUTHOR "SAP".
      please tell whether the problem lies and solution for that.
                                       thanks and regards.

    hi,
    check your recording.check whether u saved your material no in recording or not.
    once again record the transacton mm01.
           MATNR LIKE RMMG1-MATNR,
           MBRSH LIKE RMMG1-MBRSH,
           MTART LIKE RMMG1-MTART,
           MAKTX LIKE MAKT-MAKTX,
           MEINS LIKE MARA-MEINS,
           MATKL LIKE MARA-MATKL,
           BISMT LIKE MARA-BISMT,
           EXTWG LIKE MARA-EXTWG,
    these are the fields which u have to take in internal table.
    this is the record which i took in my flatfile.use filetype as asc and hasfieldseperator as 'X'.
    SUDHU-6     R     ROH     MATSUDHU     "     001     7890     AA
    i did the same.but i didn't get any error.

  • How to transfer data in table control in bdc

    hi
    how to transfer data in table control in bdc . I need the theory regarding this
    bye

    Hi,
    just check in the forum , there is many threads available to ur questions.
    Table control in BDC
    http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
    You can even refer to these related threads
    bdc table control
    Re: table control in bdc
    table control in BDC
    Reward if helpful.
    Thanks
    Naveen khan

  • How to use table control in bdc briefly?

    how to use table control in bdc briefly in description manner ?

    Hi friend,
    here i am giving exm. code of table control.see if help full to u.
    REPORT zxk_01
           NO STANDARD PAGE HEADING LINE-SIZE 255.
    include bdcrecx1.
    TYPES : BEGIN OF ty_data,
           line(100) TYPE c,
           END OF ty_data.
    PARAMETERS: p_pcfile   LIKE ibipparms-path DEFAULT 'D:\NKS.TXT'.
    DATA : g_filename    TYPE string.
    TYPES : BEGIN OF ty_file,
            lifnr(16) TYPE c,                             " vendor
            bukrs(4)  TYPE c,                             "company code
            ktokk(4)   TYPE  c,                             " Acc grp
            anred(15) TYPE c,                             " Title
            name1(35) TYPE c,                             " name
            sortl(10) TYPE c,                             " search term
            stras(35) TYPE c,                             " street
            ort01(35) TYPE c,                             " city
            ort02(35) TYPE c,                             " district
            land1(3)  TYPE c,                              " country
            pfach(10) TYPE c,                             " PO BOx
            spras(2)  TYPE c,                             " language
            kunnr(10) TYPE c,                             " Customer
            vbund(6)  TYPE c,                              " trading partner
            banks(3) TYPE c,                              " BANK COUNTRY
            bankl(15) TYPE c,                             " BANK KEY
            bankn(18) TYPE c,                             " BANK ACC
            koinh(60) TYPE c,                             " ACC HOLDER
            bkont(2) TYPE c,                              " CK
            bvtyp(4) TYPE c,                              " BNKT
            bkref(20) TYPE c,                             " REFERENCE DETAILS
            namev(35)   TYPE c,                                 " first NAME
            name2(35)   TYPE c,                                 " NAME
            telf1(16) TYPE c,                                   " TELEPHONE
            abtnr(4)  TYPE c,                                   " DEPTT
            pafkt(2)  TYPE c,                                   " FUNCTION
            akont(10) TYPE c,                             " REC ACCOUNT
            zuawa(3)  TYPE c,                             " SORT KEY
            lnrze(10) TYPE c,                             "HEAD OFFICE
            fdgrv(10) TYPE c,                             " CASH MGMT GRP,
            frgrp(4)  TYPE c,                             " RELEASE GRP
            zterm(4)  TYPE c,                             " PAY TERMS
            togru(4)  TYPE c,                             " TOLERENCE GRP,
            reprf,                                        "CHECK DOUBLE INV
            zwels(10) TYPE c,                            " PAYMENTS METHODS
            zahls,                                       " PAYMENTS BLOCK
            hbkid(5)  TYPE c,                             " house bank
            zgrup(2)  TYPE c,                             " grouping key
            mahna(4)  TYPE c,                             " dunn procedure
            mansp,                                       "  DUNNING BLOCK'
            gmvdt(10) TYPE c,                            "  LEGAL DONE PROCEDURE
            lfrma(10) TYPE c,                            " DUNN RECEPIENT
            madat(10) TYPE c,                            " LAST DUNNED
            mahns(1)  TYPE c,                         " dunning level
            mgrup(2)  TYPE  c,                            " grouping key
            busab(2)  TYPE c,                             "dunning clerk
           END OF ty_file.
    DATA : BEGIN OF it_xk01 OCCURS 0,
           lifnr(16) TYPE c,                             " vendor
           bukrs(4)  TYPE c,                             "company code
           ktokk(4)   TYPE  c,                             " Acc grp
           anred(15) TYPE c,                             " Title
           name1(35) TYPE c,                             " name
           sortl(10) TYPE c,                             " search term
           stras(35) TYPE c,                             " street
           ort01(35) TYPE c,                             " city
           ort02(35) TYPE c,                             " district
           land1(3)  TYPE c,                              " country
           pfach(10) TYPE c,                             " PO BOx
           spras(2)  TYPE c,                             " language
           kunnr(10) TYPE c,                             " Customer
           vbund(6)  TYPE c,                              " trading partner
           akont(10) TYPE c,                             " REC ACCOUNT
           zuawa(3)  TYPE c,                             " SORT KEY
           lnrze(10) TYPE c,                             "HEAD OFFICE
           fdgrv(10) TYPE c,                             " CASH MGMT GRP,
           frgrp(4)  TYPE c,                             " RELEASE GRP
           zterm(4)  TYPE c,                             " PAY TERMS
           togru(4)  TYPE c,                             " TOLERENCE GRP,
           reprf,                                        "CHECK DOUBLE INV
           zwels(10) TYPE c,                            " PAYMENTS METHODS
           zahls,                                       " PAYMENTS BLOCK
           hbkid(5)  TYPE c,                             " house bank
           zgrup(2)  TYPE c,                             " grouping key
           mahna(4)  TYPE c,                             " dunn procedure
           mansp,                                       "  DUNNING BLOCK'
           gmvdt(10) TYPE c,                            "  LEGAL DONE PROCEDURE
           lfrma(10) TYPE c,                            " DUNN RECEPIENT
           madat(10) TYPE c,                            " LAST DUNNED
           mahns(1)  TYPE c,                         " dunning level
           mgrup(2)  TYPE  c,                            " grouping key
           busab(2)  TYPE c,                             "dunning clerk
           END OF it_xk01.
         internal table  for bank detaiils
    DATA : BEGIN OF it_bank OCCURS 0,
           banks(3) TYPE c,                              " BANK COUNTRY
           bankl(15) TYPE c,                             " BANK KEY
           bankn(18) TYPE c,                             " BANK ACC
           koinh(60) TYPE c,                             " ACC HOLDER
           bkont(2) TYPE c,                              " CK
           bvtyp(4) TYPE c,                              " BNKT
           bkref(20) TYPE c,                             " REFERENCE DETAILS
           lifnr(16) TYPE c,                             " vendor
          xezer,                                        " CHECK
           END OF it_bank.
    INTERNAL TABLE FOR CONTACT PERSON
    TYPES  : BEGIN OF ty_cust,
           lifnr(16) TYPE c,
           namev(35)   TYPE c,                                 " first NAME
           name1(35)   TYPE c,                                 " NAME
           telf1(16) TYPE c,                                   " TELEPHONE
           abtnr(4)  TYPE c,                                   " DEPTT
           pafkt(2)  TYPE c,                                   " FUNCTION
           END OF ty_cust.
    INTERNAL TABLES DECLARATION
    DATA : it_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
           it_bdcmsgcoll LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
           it_file TYPE TABLE OF ty_file,
           it_data TYPE TABLE OF ty_data,
           it_cust TYPE TABLE OF ty_cust.
       WORK AREAS FOR TYPES
    DATA : wa_xk01 LIKE it_xk01,
           wa_data TYPE ty_data,
           wa_file TYPE ty_file,
           wa_bank LIKE it_bank,
           wa_cust TYPE ty_cust.
    *CALL METHOD cl_gui_frontend_services=>gui_upload
       EXPORTING
         filename = lt_file
         filetype = 'ASC'
       CHANGING
         data_tab = iT_DATA.
    IF sy-subrc <> 0.
    ENDIF.
    g_filename = p_pcfile.
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                      =  g_filename "'D:\TESTDATA1_XK01.txt'
       filetype                      =  'TXT'
        has_field_separator           = 'X'
      HEADER_LENGTH                 = 0
       read_by_line                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
        replacement                   = ' '
      CHECK_BOM                     = ' '
      VIRUS_SCAN_PROFILE            =
      NO_AUTH_CHECK                 = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
      TABLES
        data_tab                      = it_file
    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.
    LOOP AT it_file INTO wa_file .
    ON CHANGE OF WA_FILE-LIFNR.
      wa_xk01-lifnr =   wa_file-lifnr.
      wa_xk01-bukrs =   wa_file-bukrs.
      wa_xk01-ktokk =   wa_file-ktokk.
      wa_xk01-anred  = wa_file-anred.
      wa_xk01-name1  = wa_file-name1.
      wa_xk01-sortl  = wa_file-sortl.
      wa_xk01-stras =  wa_file-stras.
      wa_xk01-ort01 =  wa_file-ort01.
      wa_xk01-ort02 =  wa_file-ort02.
      wa_xk01-land1 =  wa_file-land1.
      wa_xk01-pfach =  wa_file-pfach.
      wa_xk01-spras =  wa_file-spras.
      wa_xk01-kunnr =  wa_file-kunnr.
      wa_xk01-vbund =  wa_file-vbund.
      wa_xk01-akont =  wa_file-akont.
      wa_xk01-zuawa =  wa_file-zuawa.
      wa_xk01-lnrze =  wa_file-lnrze.
      wa_xk01-fdgrv =  wa_file-fdgrv.
      wa_xk01-frgrp =  wa_file-frgrp.
      wa_xk01-zterm =  wa_file-zterm.
      wa_xk01-togru =  wa_file-togru.
      wa_xk01-reprf =  wa_file-reprf.
      wa_xk01-zwels =  wa_file-zwels.
      wa_xk01-zahls =  wa_file-zahls.
      wa_xk01-hbkid =  wa_file-hbkid.
      wa_xk01-zgrup =  wa_file-zgrup.
      wa_xk01-mahna =  wa_file-mahna.
      wa_xk01-mansp =  wa_file-mansp.
      wa_xk01-gmvdt =  wa_file-gmvdt.
      wa_xk01-lfrma =  wa_file-lfrma.
      wa_xk01-madat =  wa_file-madat.
      wa_xk01-mahns =  wa_file-mahns.
      wa_xk01-mgrup =  wa_file-mgrup.
      wa_xk01-busab =  wa_file-busab.
       APPEND wa_xk01 TO it_xk01.
       CLEAR : WA_XK01.
      CONTINUE.
       ENDON.
    IF WA_FILE-BANKS NE ''.
      wa_bank-lifnr = wa_file-lifnr.
      wa_bank-banks  = wa_file-banks.
      wa_bank-bankl  = wa_file-bankl.
      wa_bank-bankn  = wa_file-bankn.
      wa_bank-koinh  = wa_file-koinh.
      wa_bank-bkont = wa_file-bkont.
      wa_bank-bvtyp  = wa_file-bvtyp.
      wa_bank-bkref  = wa_file-bkref.
      wa_cust-lifnr =  wa_file-lifnr.
      wa_cust-namev = wa_file-namev.
      wa_cust-name1 = wa_file-name2.
      wa_cust-telf1 = wa_file-telf1.
      wa_cust-abtnr =  wa_file-abtnr.
      wa_cust-pafkt =  wa_file-pafkt.
      APPEND wa_bank TO it_bank.
      APPEND wa_cust TO it_cust.
    APPEND wa_xk01 TO it_xk01.
      CLEAR :  wa_bank , wa_cust.
    ENDIF.
    ENDLOOP.
    START-OF-SELECTION.
      LOOP AT it_xk01 INTO wa_xk01.
        REFRESH it_bdcdata.
        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'
                                       wa_xk01-lifnr.                                        " vendor
        PERFORM bdc_field       USING 'RF02K-BUKRS'
                                      wa_xk01-bukrs.                                        " company cpode
        PERFORM bdc_field       USING 'RF02K-KTOKK'
                                      wa_xk01-ktokk.                                        " Acc group
        PERFORM bdc_dynpro      USING 'SAPMF02K' '0110'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'LFA1-SPRAS'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'LFA1-ANRED'
                                      wa_xk01-anred.                                          " title
        PERFORM bdc_field       USING 'LFA1-NAME1'
                                      wa_xk01-name1.                                        " name
        PERFORM bdc_field       USING 'LFA1-SORTL'
                                      wa_xk01-sortl.                                       "  ' search term'
        PERFORM bdc_field       USING 'LFA1-STRAS'
                                      wa_xk01-stras.                                    "street'
        PERFORM bdc_field       USING 'LFA1-PFACH'
                                      wa_xk01-pfach.                                     " po box
        PERFORM bdc_field       USING 'LFA1-ORT01'
                                      wa_xk01-ort01.                                  " city
        PERFORM bdc_field       USING 'LFA1-ORT02'
                                      wa_xk01-ort02.                                       " district
        PERFORM bdc_field       USING 'LFA1-LAND1'
                                      wa_xk01-land1.                                         " country
        PERFORM bdc_field       USING 'LFA1-SPRAS'
                                      wa_xk01-spras.                                         " language
        PERFORM bdc_dynpro      USING 'SAPMF02K' '0120'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'LFA1-VBUND'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'LFA1-KUNNR'                                   " customer
                                      wa_xk01-kunnr.
        PERFORM bdc_field       USING 'LFA1-VBUND'
                                      wa_xk01-vbund.                                       " trading partner
        PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'LFBK-BKREF(01)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTR'.
        DATA : fnam(20) TYPE c,
               int      TYPE c.
        MOVE 1 TO int.
        CLEAR wa_bank.
        LOOP AT it_bank INTO wa_bank WHERE lifnr = wa_xk01-lifnr.
          CONCATENATE 'LFBK-BANKS(' int ')' INTO fnam.
          PERFORM bdc_field       USING fnam
                                        wa_bank-banks.                                           " city
          CONCATENATE 'LFBK-BANKL(' int ')' INTO fnam.
          PERFORM bdc_field       USING fnam
                                        wa_bank-bankl.
          CONCATENATE 'LFBK-BANKN(' int ')' INTO fnam.
          PERFORM bdc_field       USING fnam
                                        wa_bank-bankn.
          CONCATENATE 'LFBK-KOINH(' int ')' INTO fnam.
          PERFORM bdc_field       USING  fnam
                                        wa_bank-koinh.
          CONCATENATE 'LFBK-BKONT(' int ')' INTO fnam.
          PERFORM bdc_field       USING fnam
                                        wa_bank-bkont.
          CONCATENATE 'LFBK-BVTYP(' int ')' INTO fnam.
          PERFORM bdc_field       USING  fnam
                                        wa_bank-bvtyp.
          CONCATENATE 'LFBK-BKREF(' int ')' INTO fnam.
          PERFORM bdc_field       USING fnam
                                       wa_bank-bkref.
          int = int + 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' '0380'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'KNVK-PAFKT(05)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTR'.
        DATA : fnam1(20) TYPE c,
               cnt.
        cnt = 1.
        CLEAR : wa_cust.
        LOOP AT it_cust INTO wa_cust WHERE lifnr = wa_xk01-lifnr.
          CONCATENATE 'KNVK-NAMEV(' cnt ')' INTO fnam1.
          PERFORM bdc_field       USING  fnam1
                                        wa_cust-namev.
          CONCATENATE 'KNVK-NAME1(' cnt ')' INTO fnam1.
          PERFORM bdc_field       USING  fnam1
                                         wa_cust-name1.
          CONCATENATE 'KNVK-TELF1(' cnt ')' INTO fnam1.
          PERFORM bdc_field       USING  fnam1
                                        wa_cust-telf1.
          CONCATENATE 'KNVK-ABTNR(' cnt ')' INTO fnam1.
          PERFORM bdc_field       USING  fnam1
                                       wa_cust-abtnr.
          CONCATENATE 'KNVK-PAFKT(' cnt ')' INTO fnam1.
          PERFORM bdc_field       USING fnam1
                                        wa_cust-pafkt.
          cnt = cnt + 1.
        ENDLOOP.
        PERFORM bdc_dynpro      USING 'SAPMF02K' '0380'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'KNVK-NAMEV(01)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTR'.
        PERFORM bdc_dynpro      USING 'SAPMF02K' '0210'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'LFB1-FRGRP'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'LFB1-AKONT'
                                      wa_xk01-akont.                           " REC aCC
        PERFORM bdc_field       USING 'LFB1-ZUAWA'
                                       wa_xk01-zuawa.                                " SORT KEY
        PERFORM bdc_field       USING 'LFB1-LNRZE'
                                       wa_xk01-lnrze.                            " HEAD OFFICE
        PERFORM bdc_field       USING 'LFB1-FDGRV'
                                      wa_xk01-fdgrv.                              " CASH MGMT GRP
        PERFORM bdc_field       USING 'LFB1-FRGRP'
                                      wa_xk01-frgrp.                          " RELEASE GRP
        PERFORM bdc_field       USING 'LFB1-CERDT'
        PERFORM bdc_dynpro      USING 'SAPMF02K' '0215'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'LFB1-ZGRUP'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'LFB1-ZTERM'
                                      wa_xk01-zterm.                            " PAYMENT TERMS'
        PERFORM bdc_field       USING 'LFB1-TOGRU'
                                       wa_xk01-togru.                            " TOLERENCE GRP
        PERFORM bdc_field       USING 'LFB1-REPRF'
                                       wa_xk01-reprf.                                " CHECK DOUBLE INV
        PERFORM bdc_field       USING 'LFB1-ZWELS'
                                       wa_xk01-zwels.                            " PAYMENT METHOD
        PERFORM bdc_field       USING 'LFB1-ZAHLS'
                                       wa_xk01-zahls.                                " PAYMENT BLOCK
        PERFORM bdc_field       USING 'LFB1-HBKID'
                                       wa_xk01-hbkid.                             " HOUSE BANK
        PERFORM bdc_field       USING 'LFB1-ZGRUP'
                                       wa_xk01-zgrup.                              " GROUPING KEY
        PERFORM bdc_dynpro      USING 'SAPMF02K' '0220'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'LFB5-BUSAB'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'LFB5-MAHNA'
                                       wa_xk01-mahna.                           " DUNN  PROCEDURE
        PERFORM bdc_field       USING 'LFB5-MANSP'
                                       wa_xk01-mansp.                              " DUNNING BLOCK
        PERFORM bdc_field       USING 'LFB5-LFRMA'
                                       wa_xk01-lfrma.                        " Dunn representative
        PERFORM bdc_field       USING 'LFB5-GMVDT'
                                       wa_xk01-gmvdt.                      " legal dunn proc
        PERFORM bdc_field       USING 'LFB5-MADAT'
                                       wa_xk01-madat.                      " last dunned
        PERFORM bdc_field       USING 'LFB5-MAHNS'
                                       wa_xk01-mahns.                               " dunn level
        PERFORM bdc_field       USING 'LFB5-BUSAB'
                                       wa_xk01-busab.                             "  dunning clerk
        PERFORM bdc_field       USING 'LFB1-MGRUP'
                                       wa_xk01-mgrup.                             " grouping key
        CALL TRANSACTION 'XK01' USING it_bdcdata
                               MODE  'A'.
      ENDLOOP.
    Start new screen *
    FORM bdc_dynpro USING program dynpro.
      CLEAR it_bdcdata.
      it_bdcdata-program = program.
      it_bdcdata-dynpro = dynpro.
      it_bdcdata-dynbegin = 'X'.
      APPEND it_bdcdata.
    ENDFORM.                    "BDC_DYNPRO
    Insert field
    FORM bdc_field USING fnam fval TYPE any.
      CLEAR it_bdcdata.
      it_bdcdata-fnam = fnam.
      it_bdcdata-fval = fval.
      APPEND it_bdcdata.
    ENDFORM. "bdc_field
    *perform close_group.

  • Can not insert/update data from table which is created from view

    Hi all
    I'm using Oracle database 11g
    I've created table from view as the following command:
    Create table table_new as select * from View_Old
    I can insert/update data into table_new by command line.
    But I can not Insert/update data of table_new by SI Oject Browser tool or Oracle SQL Developer tool .(read only)
    Anybody tell me, what's happend? cause?
    Thankyou
    thiensu
    Edited by: user8248216 on May 5, 2011 8:54 PM
    Edited by: user8248216 on May 5, 2011 8:55 PM

    I can insert/update data into table_new by command line.
    But I can not Insert/update data of table_new by SI Oject Browser tool or Oracle SQL Developer tool .(read only)so what is wrong with the GUI tools & why posting to DATABASE forum when that works OK?

  • Modifying data in Table Control thr' BDC

    Hi,
    I have a following requirement.
    I need to modify(update/delete) the data in the table control through BDC. The number of records of the table control, seen on the screen are only 4. If i need to modify 11th record, how do i go forward?
    Your help is highly appreciated.
    Regards
    Shankar

    Due to rudeness, your thread is denied.
    Note.  If you want help from people it's best to a) follow the rules, and b) not antagonise those who could help you.
    locked.

  • Updating a DB table by a BDC session in background

    Hi,
    I need to  update a DB table with records using a BDC session. I need to run this session in background. But the Error Log I'm getting suggests that Table Maintenance is required for the same.
    Note that I can very well insert records in this table thru se11 and also by running the session in foreground.
    Is there any work-around for this issue?
    Thanks.

    Hi
    If at all you are using any DOWNLOAD and UPLOAD related function modules you can't run the BDC program in the background.
    If it is a Z table update you can create the table maintenance generator.
    other wise you can do it.
    You can run session in background.
    Reward points if useful
    Regards
    Anji

  • Error Updating Data using a Web Service from BPM

    Hi there,
    I'm trying to update data in an oracle database using a webservice created in DSP and get the following errors. It appears that BPM is unable to find a name, but I'm not sure what name this is referring to. The web service is straight forward and takes in the original and current objects as arguments. I can successfully call the query and insert web services and have double checked my code for the update web service but can't figure out why this is failing. Any idea on why this error might be occurring, or any pointers on what I need to be aware of?
    Caused by: Task '0' in activity '/PlanSubmittal#Default-1.0/Interactive[ViewEditPlan]' for instance '/PlanSubmittal#Default-1.0/1/0' could not be successfully executed. The task failed while executing method 'AddEditWell_Router'.
    Caused by: The method 'AddEditWell_Router' from class 'xobject.Fuego__AutoGen__Screenflows__.__EditPlan' could not be successfully executed.
    Caused by: Could not retrieve name
    fuego.web.exception.WapiTaskFailedException: Task failed.
    Thanks.
    Azeem.

    Hi,
    For the same 'omni portlet' tutorial I am stuck whiile using 'http://webservices.oracle.com/WeatherWS/WeatherWS?WSDL' the error
    'Failed to open specified URL. Check the following: is the URL is active; is there a valid proxy setting or, if HTTP authentication is required, check user name and password. [http://webservices.oracle.com/WeatherWS/WeatherWS?WSDL]'
    get dispalyed. Any quick pointers to resolve this please..
    Thanks,
    Kalyan.

  • Not able to fetch updated data using jdbc and oracle 10g

    Whenever i m updating the data and fetching the same record after updating i m not able to get the fresh/new updated data , old record is fetched every time, but when i checked in database the record gets updated successfully , even if i fire the query two times after 10 seconds using Thread.sleep even then problem persist.
    Please help me out!!!!!!!!
    Implementation has been stucked up!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :(

    Well its okWhat is OK? Your stuff working now?
    i m doing the same thing Apparently not.
    please go thru the below code fragment:
    code for Update :::
    DataAccessBean1 partsHistoryDataAccessBean = new
    DataAccessBean1(context);
    partsHistoryDataAccessBean.setData(data);
    partsHistoryDataAccessBean.update();
    After Updating i m forwading it to the other servletForwarding what? Why do you need another servlet? Just do the query, put the new data into the response object, and return.
    According to your assumption i should get the updated
    data on the other screen but Nope, you don't understand what I'm saying.
    %

  • Interfaces used for insert/update data in tables

    for providing security the procedures are not allowed to directly insert/update the values in tables.some one suggested that use interfaces for this .i want infomation about this interfaces. how this works and how to use

    An interface is an intermediate set of procedures/functions that do the job for you.
    You haven't explained what it is you're trying to achieve exactly, but here's an example scenario.
    We don't want to allow our developers to query, or write to the tables directly so they are set up with certain database users that have no permissions granted on the tables for such things.
    Instead they have been granted permission to call procedures and functions belonging to another schema, and it is those procedures and functions that do the required table access and/or pass information/data back or write to the tables.
    The developers have to write their applications to call these procedures to do any access to the tables. This means that they are limited to the functionality provided by these interface procedures so, if there is internal auditing or columns of data etc. on the tables then it may be that they can't access this data, but only the "user facing" data.
    The interface can also ensure that data meets certain requirements before being written to tables, allowing for business or technical level restrictions to be implemented.

  • How to update data using BAPI for MD61

    Hello,
    IN my zprogram i used to bapis for uploading data from flat file to sap-system
    1)BAPI_requirement_create
    2)BAPI_requirement_change
    i)my program is taking data from my flat file but it is wipping out old data i nned to update not to overwrite is there any BAPI for this query
    ii)One more thing if data is already entered in on date (i.e 10.07.2009) and when he upload data from flat file for another date same month (12.07.2009) old date data sholud not removed ...
    Please reply me if my query is not understand..
    Thanks in advance..

    Assuming you have your new requirements in table IT_REQ.
    You could do something like:
    DATA: it_req TYPE TABLE OF BAPISSHDIN.
    DATA: l_req TYPE BAPISSHDIN.
    DATA: it_req_out TYPE TABLE OF bapisitmeo.
    DATA: l_req_out TYPE bapisitmeo.
    *   Get existing requirements
        CLEAR it_req_out[].
        CALL FUNCTION 'BAPI_REQUIREMENTS_GETDETAIL'
             EXPORTING
                  material         = p_matnr
                  plant            = p_werks
                  requirementstype = p_bedae
                  version          = p_versb
                  reqmtsplannumber = ''
             TABLES
                  requirements_out = it_req_out[]
                  return           = lt_return[].
    *   Append old requirements to requirements table
        LOOP AT it_req_out INTO l_req_out.
          MOVE: l_req_out-date_type TO l_req-date_type,
                l_req_out-req_date TO l_req-req_date,
                l_req_out-req_qty TO l_req-req_qty,
                l_req_out-unit TO l_req-unit.
          APPEND l_req TO it_req.
        ENDLOOP.
    *   Change requirements
        CALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE'
             EXPORTING
                  material                 = p_matnr
                  plant                    = p_werks
                  requirementstype         = p_bedae
                  version                  = p_versb
                  reqmtsplannumber         = ''
                  vers_activ               = p_vervs
             TABLES
                  requirements_schedule_in = it_req[]
                  return                   = lt_return[].

  • How populate the data in table control in  BDC?

    pls urgent?

    hi,
    see the below code .
    FORM create_bdc_session .
      DATA : w_saved_tx.
      DATA g_r_itab TYPE typ_itab_rec.
      CLEAR g_t_itab.
      CLEAR g_r_itab.
      LOOP AT g_t_itab INTO g_r_itab.
    skip error lines
        IF g_r_itab-ebeln = 'ERROR'.
          CONTINUE.
        ENDIF.
    open Bdc session
        AT FIRST.
          PERFORM bdc_open_group.
        ENDAT.
        g_t_itab = g_r_itab.
    On change in agreement number
        AT NEW ebeln.
          PERFORM bdc_header.
          CLEAR: w_dtl_cnt_i, w_line_i.
        ENDAT.
    save at full page
        IF w_line_i > 11.
          PERFORM bdc_save.
          PERFORM bdc_header_change.
          w_line_i = 1.
        ENDIF.
    detail material processing
        PERFORM bdc_detail.
        CLEAR w_saved_tx .
    save at end of agreement
        AT END OF ebeln.
          IF w_saved_tx NE 'Y' AND w_dtl_cnt_i > 0.
            PERFORM bdc_save.
          ENDIF.
          w_saved_tx = 'Y'.
        ENDAT.
      ENDLOOP.
      PERFORM bdc_close_group.
    ENDFORM.                    " CREATE_BDC_SESSION
    *&      Form  BDC_OPEN_GROUP
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_open_group .
      DATA w_user_tx LIKE apqi-userid.
      w_user_tx = sy-uname.
      CALL FUNCTION 'BDC_OPEN_GROUP'
        EXPORTING
          client              = sy-mandt
          group               = p_bdc
          keep                = 'X'
          user                = w_user_tx
        EXCEPTIONS
          client_invalid      = 01
          destination_invalid = 02
          group_invalid       = 03
          holddate_invalid    = 04
          internal_error      = 05
          queue_error         = 06
          running             = 07
          user_invalid        = 08.
      CASE sy-subrc.
        WHEN 0.
        WHEN OTHERS.
          WRITE: / 'BDC OPEN ERROR', sy-subrc.
      ENDCASE.
    ENDFORM.                    " BDC_OPEN_GROUP
    *&      Form  BDC_HEADER
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_header .
      REFRESH bdcdata.
      CLEAR   bdcdata.
    determine now if text exists
      CLEAR w_text_lines_i.
    Transaction ME31K.
      PERFORM bdc_dynpro      USING 'SAPMM06E' '0200'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
      PERFORM bdc_field       USING 'EKKO-LIFNR' g_t_itab-lifnr.
      PERFORM bdc_field       USING 'RM06E-EVART' 'MK'.
      PERFORM bdc_field       USING 'RM06E-EVRTN' g_t_itab-ebeln.
      PERFORM bdc_field       USING 'EKKO-EKORG'  g_t_itab-ekorg.
      PERFORM bdc_field       USING 'EKKO-EKGRP'  g_t_itab-ekgrp.
    Item category is on a detail line, but is entered on the entry screen
      IF g_t_itab-pstyp = '3'.
        g_t_itab-pstyp = 'L'.
      ELSE.
        CLEAR g_t_itab-pstyp.
      ENDIF.
      PERFORM bdc_field       USING 'RM06E-EPSTP' g_t_itab-pstyp.
      PERFORM bdc_field       USING 'RM06E-WERKS' p_nwerks.
      PERFORM bdc_field       USING 'RM06E-LGORT' g_t_itab-lgort.
      PERFORM bdc_dynpro      USING 'SAPMM06E' '0201'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
      PERFORM bdc_field       USING 'EKKO-WAERS' g_t_itab-waers.
      WRITE sy-datum TO w_date_tx DD/MM/YYYY.
      PERFORM bdc_field       USING 'EKKO-KDATB' '01.06.2004'.
      PERFORM bdc_field       USING 'EKKO-KDATE' '31.12.2999'.
      w_tcode = 'ME31K'.
    ENDFORM.                    " BDC_HEADER
    *&      Form  BDC_SAVE
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_save .
    final save
      PERFORM bdc_dynpro      USING 'SAPMM06E' '0220'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '=BU'.
    needed for some boxes (save anyway message)
    PERFORM bdc_dynpro      USING 'SAPLSPO1' '0300'.
    PERFORM bdc_field       USING 'BDC_OKCODE' '=YES'.
    Insert the transaction into the BDC session.
      PERFORM bdc_insert USING w_tcode.
      REFRESH bdcdata.
      CLEAR   bdcdata.
    ENDFORM.                    " BDC_SAVE
    *&      Form  BDC_HEADER_change
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_header_change .
      DATA: w_pos LIKE rm06e-ebelp.
      REFRESH bdcdata.
      CLEAR   bdcdata.
    determine now if text exists
      CLEAR w_text_lines_i.
    Transaction ME32K.
      PERFORM bdc_dynpro      USING 'SAPMM06E' '0205'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
      PERFORM bdc_field       USING 'RM06E-EVRTN' g_t_itab-ebeln.
      PERFORM bdc_dynpro      USING 'SAPMM06E' '0220'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '/00'.
      w_pos = g_t_itab-ebelp - 10.
      PERFORM bdc_field       USING 'RM06E-EBELP' w_pos.
      w_tcode = 'ME32K'.
    ENDFORM.                    " BDC_HEADER_change
    *&      Form  BDC_INSERT
          text
         -->P_W_TCODE  text
    FORM bdc_insert  USING    p_w_tcode.
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          tcode          = w_tcode
        TABLES
          dynprotab      = bdcdata
        EXCEPTIONS
          internal_error = 01
          not_open       = 02
          queue_error    = 03
          tcode_invalid  = 04.
      CASE sy-subrc.
        WHEN 0.
        WHEN OTHERS.
          WRITE: / 'BDC INSERT ERROR', sy-subrc.
      ENDCASE.
    ENDFORM.                    " BDC_INSERT
    *&      Form  BDC_CLOSE_GROUP
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_close_group .
      CALL FUNCTION 'BDC_CLOSE_GROUP'
        EXCEPTIONS
          not_open    = 1
          queue_error = 2
          OTHERS      = 3.
      CASE sy-subrc.
        WHEN 0.
        WHEN OTHERS.
          WRITE: / 'BDC CLOSE ERROR', sy-subrc.
      ENDCASE.
    ENDFORM.                    " BDC_CLOSE_GROUP
    *&      Form  bdc_dynpro
          text
         -->P_0658   text
         -->P_0659   text
    FORM bdc_dynpro USING program dynpro.
      CLEAR bdcdata.
      bdcdata-program = program.
      bdcdata-dynpro  = dynpro.
      bdcdata-dynbegin = 'X'.
      APPEND bdcdata.
    ENDFORM.                    "BDC_DYNPRO
    *&      Form  BDC_FIELD
          text
         -->P_0688   text
         -->P_W_POS  text
    FORM bdc_field USING field value.
      CLEAR bdcdata.
      bdcdata-fnam = field.
      bdcdata-fval = value.
      APPEND bdcdata.
    ENDFORM.                    "BDC_FIELD
    *&      Form  load_dataset
          text
    -->  p1        text
    <--  p2        text
    FORM load_dataset .
    load dataset
      LOOP AT g_t_itab INTO g_r_itab.
    Load dataset with records needed for direct input
        MOVE-CORRESPONDING g_r_itab TO g_t_itab.
        AT NEW ebeln.
          PERFORM load_dataset_mbepoh USING w_phys_outfil1_tx.
        ENDAT.
        PERFORM load_dataset_mbepoi USING w_phys_outfil1_tx.
      ENDLOOP.
    ENDFORM.                    " load_dataset
    *&      Form  load_dataset_mbepoh
          text
         -->P_W_PHYS_OUTFIL1_TX  text
    FORM load_dataset_mbepoh  USING   p_dataset.
      CLEAR rec1.
      MOVE-CORRESPONDING g_t_itab TO rec1.
      rec1-stype = '1'.
      rec1-ernam = sy-uname.
      TRANSFER  rec1 TO p_dataset.
    ENDFORM.                    " load_dataset_mbepoh
    *&      Form  load_dataset_mbepoi
          text
         -->P_W_PHYS_OUTFIL1_TX  text
    FORM load_dataset_mbepoi  USING    p_dataset.
      CLEAR rec2.
    fields for MBEPOH
      ADD 1 TO w_good_i.
      MOVE-CORRESPONDING g_t_itab TO rec2.
      rec2-stype = '2'.
      rec2-werks = p_nwerks.
      rec2-ematn = g_t_itab-matnr.
      TRANSFER  rec2 TO p_dataset.
    ENDFORM.                    " load_dataset_mbepoi
    *&      Form  BDC_DETAIL
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_detail .
      DATA:   w_ktmng_tx(11),
               w_peinh_tx(5) TYPE c,
               w_price_p(13) TYPE p DECIMALS 6,
               w_price2_p(13) TYPE p DECIMALS 2,
               w_price3_p(13) TYPE p DECIMALS 3,
               w_price0_p(13) TYPE p DECIMALS 0,
               w_cent_p TYPE p DECIMALS 2,
               w_peinh_n(5) TYPE n,
               w_price_tx(14).
    accumulate lines to determine if page_down required
      ADD 1 TO w_addit_i.
      ADD 1 TO w_dtl_cnt_i.
      ADD 1 TO w_line_i.
      IF w_line_i > 12.
        w_line_i = 2.
        PERFORM bdc_dynpro      USING 'SAPMM06E' '0220'.
        PERFORM bdc_field       USING 'BDC_OKCODE' '=NP'.
      ENDIF.
    get material unit of measure
      CLEAR mara-meins.
      SELECT SINGLE * FROM mara WHERE matnr = g_t_itab-matnr.
      w_price_tx = g_t_itab-netpr.
      w_peinh_tx = g_t_itab-peinh.
      IF g_t_itab-ktmng = 0.
        g_t_itab-ktmng = 1.
      ENDIF.
      w_ktmng_tx = g_t_itab-ktmng.
    get decimal places of currency
      TCURX-CURRDEC = 2.
      SELECT SINGLE * FROM TCURX WHERE CURRKEY = g_t_itab-waers.
    multiply Price
      W_PRICE_P = g_t_itab-netpr.
      CASE TCURX-CURRDEC.
        WHEN 0.
          W_PRICE_P = g_t_itab-netpr * 100.
          W_PRICE0_P = W_PRICE_P.
          W_PRICE_TX = W_PRICE0_P.
        WHEN 2.
          W_PRICE2_P = W_PRICE_P.
          W_PRICE_TX = W_PRICE2_P.
        WHEN 3.
          W_PRICE3_P = W_PRICE_P.
          W_PRICE_TX = W_PRICE3_P.
      ENDCASE.
    material overview screen (with enter)
      PERFORM bdc_dynpro     USING 'SAPMM06E' '0220'.
      PERFORM bdc_field      USING 'BDC_OKCODE' '=DETA'.
      PERFORM bdc_field_idx  USING 'RM06E-TCSELFLAG'  'X' w_line_i.
      PERFORM bdc_field_idx  USING 'EKPO-EMATN' g_t_itab-matnr w_line_i.
      PERFORM bdc_field_idx  USING 'EKPO-KTMNG' w_ktmng_tx  w_line_i.
      PERFORM bdc_field_idx  USING 'EKPO-NETPR' w_price_tx w_line_i.
      PERFORM bdc_field_idx  USING 'EKPO-PEINH' w_peinh_tx w_line_i.
      PERFORM bdc_field_idx  USING 'EKPO-BPRME' mara-meins w_line_i.
      PERFORM bdc_field_idx USING 'EKPO-WERKS' p_nwerks w_line_i.
      PERFORM bdc_field_idx USING 'EKPO-LGORT' g_t_itab-lgort w_line_i.
    IF g_t_itab-pstyp = '3'.
       g_t_itab-pstyp = 'L'.
    ELSE.
       CLEAR g_t_itab-pstyp.
    ENDIF.
    PERFORM bdc_field_idx USING 'RM06E-EPSTP' g_t_itab-pstyp w_line_i.
    item details screen
      PERFORM bdc_dynpro      USING 'SAPMM06E' '0211'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '=OR'.
      PERFORM bdc_field       USING 'EKPO-SPINF' 'B'.
      PERFORM bdc_field       USING 'EKPO-BSTAE' '0001'.
      PERFORM bdc_field       USING 'EKPO-MWSKZ' g_t_itab-mwskz.
      PERFORM bdc_field       USING 'EKPO-IDNLF' g_t_itab-idnlf.
      PERFORM bdc_field       USING 'EKPO-REPOS' 'X'.
      PERFORM bdc_field       USING 'EKPO-EVERS' g_t_itab-evers.
      PERFORM bdc_field       USING 'EKPO-KZABS' 'X'.
      PERFORM bdc_field       USING 'EKPO-NETPR' w_price_tx.  "deliberate
      PERFORM bdc_field       USING 'EKPO-PEINH' w_peinh_tx . "Overwriting
    Source list
      PERFORM bdc_dynpro      USING 'SAPLMEOR' '0220'.
      PERFORM bdc_field       USING 'BDC_OKCODE' 'EN'.
      PERFORM bdc_field       USING 'BDC_CURSOR' 'EORD-AUTET(01)'.
      PERFORM bdc_field       USING 'EORD-VDATU(01)' '01062004'.
      PERFORM bdc_field       USING 'EORD-BDATU(01)' '31122999'.
      PERFORM bdc_field       USING 'EORD-FEBEL(01)' ' '.
      PERFORM bdc_field       USING 'EORD-AUTET(01)' '1'.
    GOTO Conditions
      PERFORM bdc_dynpro      USING 'SAPMM06E' '0211'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '=KO'.
      PERFORM bdc_dynpro      USING 'SAPMV13A' '0201'.
      PERFORM bdc_field       USING 'BDC_OKCODE' '=BACK'.
    ENDFORM.                    " BDC_DETAIL
    *&      Form  BDC_FIELD_IDX
          text
         -->P_1390   text
         -->P_G_T_ITAB_PSTYP  text
         -->P_W_LINE_I  text
    FORM bdc_field_idx USING    field LIKE bdcdata-fnam
                                value  p_index TYPE i.
      DATA: w_index_tx(2).
      UNPACK p_index TO w_index_tx.
      CLEAR bdcdata.
      CONCATENATE field '(' w_index_tx ')' INTO field.
      bdcdata-fnam = field.
      bdcdata-fval = value.
      APPEND bdcdata.
    ENDFORM.                    " BDC_FIELD_IDX
    regards,

Maybe you are looking for

  • Error message MH084 Assignment of material to material group missing in classification system

    hi dear expert we are encounter some issues, when we are edit/display a generic article, error message popup show MH084, as below picture we has been search this issues from our forum, some thread like this:http://scn.sap.com/thread/1027185, but we a

  • SQL 2012 Reporting Services

    Doesn't SQL 2012 Reporting Services require IIs to be installed? It appears to be working on a Windows 2012 server without IIs installed.

  • 10.2.0.1 x86_64 on FC5 install stuck forever in "Linking 'Oracle Net Requir

    Hi, Trying to install 64-bit 10.2.0.1 database on FC5. Selecting all default options during the install. When the installer reaches linking stage, it gets stuck indefinitely and installActions log has the following: INFO: Start output from spawned pr

  • Calling OSB from Java

    Hi, Can anybody give me an idea of how to call an OSB proxy service form a java class. Thanks & Regards

  • MS Word Error '13'

    I'm experiencing the following error when trying to log-on to BI Publisher from MS word ("Oracle BI Publisher" menu): Microsoft Visual Basic Run-time error '13': Type mismatch Thanks Ribhi