Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Hi abap gurus, i got a problem when using BDC table control.

bikash
Explorer
0 Likes
699

Every thing is going correct up to uploading data to Table control. The first fields of table control are not uploading. But other fields are showing data. I have attached my code below.

Every thing is going correct up to uploading data to Table control. The first fields of table control are not uploading. But other fields are showing data. I have attached my code below.

4 REPLIES 4
Read only

FredericGirod
Active Contributor
0 Likes
668

Hi,

when you play with BDC & Table Control enter data only in one line an press ENTER ("/00")  never try to insert all the line of your tables.

a lot of time, in background, the las line stay blank to allow you to insert data.

regards

Fred

Read only

gouravkumar64
Active Contributor
0 Likes
668

Hi Bikash,

Kindly do not cross post for same topic.

Thanks

Gourav.

Read only

mayur_priyan
Active Participant
0 Likes
668

Hi,

Which method are you using in your process . If you are using CALL TRANSACTION method, u can run the BDC in foreground and check the steps, for better understanding as in how the values in the BDCDATA table is being maintained.

Regards,

Mayur Priyan. S

PS: We are unable to view any code attachment. Request you to please upload it.

Read only

0 Likes
668

Here is my Code.

TYPE-POOLS: truxs.

* Structure of Vendor Data

TYPES:

       BEGIN OF ty_lfa1,

         lifnr(10)  TYPE  c,

         bukrs(4)   TYPE  c,

         ekorg(4)   TYPE  c,

         ktokk(4)   TYPE  c,

         anred(15)  TYPE  c,

         name1      TYPE  lfa1-name1,

         sortl      TYPE  lfa1-sortl,

         land1      TYPE  lfa1-land1,

         spras      TYPE  lfa1-spras,

         akont      TYPE  lfb1-akont,

         fdgrv      TYPE  lfb1-fdgrv,

         waers      TYPE  lfm1-waers,

       END OF ty_lfa1.

* Structure of Vendor Bank Data

TYPES:

       BEGIN OF ty_bank,

         lifnr(10)  TYPE  c,

         banks  TYPE      banks,

         bankl  TYPE      bankl,

         bankn  TYPE      bankn,

       END OF ty_bank.

*Table Type Declaration

TYPES:

       ty_tbl_bank_ex  TYPE  TABLE OF alsmex_tabline,

       ty_tbl_lfa1     TYPE  TABLE OF ty_lfa1,

       ty_tbl_bank     TYPE  TABLE OF ty_bank,

       ty_tbl_bdc      TYPE  TABLE OF bdcdata.

*Internal Table Declaration

DATA:

       t_tab TYPE  ty_tbl_lfa1,

       t_bdc TYPE  ty_tbl_bdc.

DATA:

       t_bank TYPE  ty_tbl_bank,

       t_xel  TYPE  truxs_t_text_data.

DATA:

       v_banks TYPE char10,

       v_bankl TYPE char15,

       v_bankn TYPE char15,

       li      TYPE num2.

DATA:

       lt_bank_ex TYPE ty_tbl_bank_ex,

       ls_excel   TYPE alsmex_tabline.

* Selection Screen Design

PARAMETER: p_file  TYPE  rlgrap-filename OBLIGATORY,

           p_file1 TYPE  rlgrap-filename OBLIGATORY.

* F4 Help for P_FILE

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

  PERFORM value_request USING p_file.

*F4 Help for P_FILE1

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.

  PERFORM value_request USING p_file1.

*Start of Selection

START-OF-SELECTION.

  " Fetch Vendor Data from Excel file

  PERFORM    fetch_data

    USING    t_xel

             p_file

    CHANGING t_tab.

  CHECK t_tab IS NOT INITIAL.

  " Fetch Vendor's Bank Data from Excel file to Excel Table

  PERFORM    fetch_bank_data

    USING    p_file1

    CHANGING lt_bank_ex.

  BREAK-POINT.

  CHECK lt_bank_ex IS NOT INITIAL.

  " Fetch Vendor's Bank Data from Excel Table to Internal Table

  PERFORM    fill_bank

    USING    lt_bank_ex

    CHANGING t_bank.

  BREAK-POINT.

  IF sy-subrc = 0.

    "Fill Vendor and Bank Data from Internal tables to database by vk11

    PERFORM    fill_vk11

      USING    t_tab

               t_bank

      CHANGING t_bdc.

  ENDIF.

*&---------------------------------------------------------------------*

*&      Form  bdc_dynpro

*&---------------------------------------------------------------------*

*       BDC Screen

*----------------------------------------------------------------------*

FORM bdc_dynpro  USING    value(p_0107)

                          value(p_0108).

  DATA:

        ls_bdc TYPE bdcdata.

  ls_bdc-dynbegin = 'X'.

  ls_bdc-program = p_0107.

  ls_bdc-dynpro  = p_0108.

  APPEND ls_bdc TO t_bdc.

  CLEAR: ls_bdc.

ENDFORM.                    " bdc_dynpro

*&---------------------------------------------------------------------*

*&      Form  bdc_field

*&---------------------------------------------------------------------*

*       BDC Field

*----------------------------------------------------------------------*

FORM     bdc_field

  USING  value(p_0122)

         value(p_0123).

  DATA:

        ls_bdc TYPE bdcdata.

  ls_bdc-fnam = p_0122.

  ls_bdc-fval = p_0123.

  APPEND ls_bdc TO t_bdc.

  CLEAR: ls_bdc.

ENDFORM.                    " bdc_field

*&---------------------------------------------------------------------*

*&      Form  value_request

*&---------------------------------------------------------------------*

*       Value Request for P_FILE

*----------------------------------------------------------------------*

FORM       value_request

  USING    fp_file.

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      program_name  = syst-cprog

      dynpro_number = syst-dynnr

    IMPORTING

      file_name     = fp_file.

ENDFORM.                    " value_request

*&---------------------------------------------------------------------*

*&      Form  fetch_data

*&---------------------------------------------------------------------*

*       Value Request for P_FILE

*----------------------------------------------------------------------*

FORM       fetch_data

  USING    fp_t_xel    TYPE   truxs_t_text_data

           fp_p_file   TYPE   rlgrap-filename

  CHANGING fp_t_tab    TYPE   ty_tbl_lfa1.

  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

    EXPORTING

      i_tab_raw_data       = fp_t_xel

      i_filename           = fp_p_file

    TABLES

      i_tab_converted_data = fp_t_tab

    EXCEPTIONS

      conversion_failed    = 1

      OTHERS               = 2.

ENDFORM.                    " fetch_data

*&---------------------------------------------------------------------*

*&      Form  fetch_bank_data

*&---------------------------------------------------------------------*

*       Fetch Bank Data

*----------------------------------------------------------------------*

FORM       fetch_bank_data

  USING    fp_p_file1      TYPE   rlgrap-filename

  CHANGING fp_lt_bank_ex   TYPE   ty_tbl_bank_ex.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

    EXPORTING

      filename                = fp_p_file1

      i_begin_col             = 1

      i_begin_row             = 2

      i_end_col               = 100

      i_end_row               = 100

    TABLES

      intern                  = fp_lt_bank_ex

    EXCEPTIONS

      inconsistent_parameters = 1

      upload_ole              = 2

      OTHERS                  = 3.

  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.                    " fetch_bank_data

*&---------------------------------------------------------------------*

*&      Form  fill_bank

*&---------------------------------------------------------------------*

*       Fill Bank Data from Excel Table

*----------------------------------------------------------------------*

FORM       fill_bank

  USING    fp_lt_bank_ex  TYPE ty_tbl_bank_ex

  CHANGING fp_t_bank      TYPE ty_tbl_bank.

  DATA:

        ls_bank  TYPE  ty_bank,

        ls_excel TYPE  alsmex_tabline.

  LOOP AT fp_lt_bank_ex INTO ls_excel.

    CASE ls_excel-col.

      WHEN '0001'.

        ls_bank-lifnr = ls_excel-value.

      WHEN '0002'.

        ls_bank-banks = ls_excel-value.

      WHEN '0003'.

        ls_bank-bankl = ls_excel-value.

      WHEN '0004'.

        ls_bank-bankn = ls_excel-value.

    ENDCASE.

    CLEAR ls_excel.

    AT END OF row.

      APPEND ls_bank TO fp_t_bank.

      CLEAR : ls_bank.

    ENDAT.

  ENDLOOP.

ENDFORM.                    " fill_bank

*&---------------------------------------------------------------------*

*&      Form  fill_vk11

*&---------------------------------------------------------------------*

*       Fill Data from VK11 transaction

*----------------------------------------------------------------------*

FORM       fill_vk11

  USING    fp_t_tab   TYPE  ty_tbl_lfa1

           fp_t_bank  TYPE  ty_tbl_bank

  CHANGING fp_t_bdc   TYPE  ty_tbl_bdc.

  DATA:

      ls_bank  TYPE  ty_bank,

      ls_tab   TYPE  ty_lfa1.

  LOOP AT fp_t_tab INTO ls_tab.

    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'

                                   ls_tab-lifnr.

    PERFORM bdc_field       USING 'RF02K-BUKRS'

                                   ls_tab-bukrs.

    PERFORM bdc_field       USING 'RF02K-EKORG'

                                   ls_tab-ekorg.

    PERFORM bdc_field       USING 'RF02K-KTOKK'

                                   ls_tab-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'

                                   ls_tab-anred.

    PERFORM bdc_field       USING 'LFA1-NAME1'

                                   ls_tab-name1.

    PERFORM bdc_field       USING 'LFA1-SORTL'

                                   ls_tab-sortl.

    PERFORM bdc_field       USING 'LFA1-LAND1'

                                   ls_tab-land1.

    PERFORM bdc_field       USING 'LFA1-SPRAS'

                                   ls_tab-spras.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0120'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFA1-KUNNR'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                                  '/00'.

    PERFORM bdc_dynpro      USING 'SAPMF02K' '0130'.

    PERFORM bdc_field       USING 'BDC_CURSOR'

                                  'LFBK-BANKS(01)'.

    PERFORM bdc_field       USING 'BDC_OKCODE'

                              '/00'.

    LOOP AT fp_t_bank INTO ls_bank WHERE lifnr = ls_tab-lifnr.

      li = li + 1.

      CONCATENATE 'LFBK-BANKS(' li ')' INTO v_banks.

      PERFORM bdc_field       USING v_banks

                              ls_bank-banks.

      CONCATENATE 'LFBK-BANKL(' li ')' INTO v_bankl.

      PERFORM bdc_field       USING v_bankl

                                    ls_bank-bankl.

      CONCATENATE 'LFBK-BANKN(' li ')' INTO v_bankn.

      PERFORM bdc_field       USING v_bankn

                              ls_bank-bankn.

      CONDENSE v_banks NO-GAPS.

      CONDENSE v_bankl NO-GAPS.

      CONDENSE v_bankn NO-GAPS.

      PERFORM bdc_field       USING 'BDC_CURSOR'

                                     v_banks.

      CLEAR: v_banks, v_bankl, v_bankn.

    ENDLOOP.

    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'

                                   ls_tab-akont.

    PERFORM bdc_field       USING 'LFB1-FDGRV'

                                   ls_tab-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'

                                  '=UPDA'.

    PERFORM bdc_field       USING 'LFM1-WAERS'

                                   ls_tab-waers.

    CALL TRANSACTION 'XK01' USING fp_t_bdc

    MODE 'A'

    UPDATE 'A'.

    CLEAR: ls_tab.

    REFRESH: fp_t_bdc.

  ENDLOOP.

ENDFORM.                                                    " fill_vk11