cancel
Showing results for 
Search instead for 
Did you mean: 

How to upload datas in excel sheet through BDC

Former Member
0 Kudos

Hi,

I know how to upload datas in Text format through BDC...Suppose even when datas are in .xls format,I saved that file as Text(tab delimited) format...then file become text format and it can be easily uploaded....

So, I want to know How to upload datas in excel sheet through BDC

Accepted Solutions (1)

Accepted Solutions (1)

gopi_narendra
Active Contributor
0 Kudos

Use the FM : ALSM_EXCEL_TO_INTERNAL_TABLE

Check the sample code

PARAMETERS : p_ifname TYPE rlgrap-filename.

DATA : it_data TYPE TABLE OF alsmex_tabline INITIAL SIZE 0,
is_data TYPE alsmex_tabline.


* flatfile internal table.
TYPES : BEGIN OF ty_tab,
zuonr TYPE bsid-zuonr,
END OF ty_tab.

DATA : it_tab TYPE TABLE OF ty_tab INITIAL SIZE 0,
is_tab TYPE ty_tab.
start-of-selection.
perform upload_date_excel.
*&--------------------------------------------------------------
*& Form upload_data_excel
*&--------------------------------------------------------------
*&text
*---------------------------------------------------------------
*--> p1 text
*<-- p2 text
*---------------------------------------------------------------
FORM upload_data_excel.


*  IF input FILE name IS NOT INITIAL.
  IF NOT p_ifname IS INITIAL.

*    upload excel data into internal table
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
         EXPORTING
              filename                = p_ifname
              i_begin_col             = 1
              i_begin_row             = 1
              i_end_col               = 256
              i_end_row               = 65356
         TABLES
              intern                  = it_data
         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.
  ENDIF.


*  append excel data into a internal table
  LOOP AT it_data INTO is_data.
    AT NEW row.
      CLEAR is_tab.
    ENDAT.
    IF is_data-col = '001'.
      MOVE is_data-value TO is_tab-zuonr.
    ENDIF.
    AT END OF row.
      APPEND is_tab TO it_tab.
    ENDAT.
    CLEAR : is_data.
  ENDLOOP.
ENDFORM.

Regards

Gopi

Former Member
0 Kudos

Use the FMs

ALSM_EXCEL_TO_INTERNAL_TABLE

or

TEXT_CONVERT_XLS_TO_SAP

Narendra

Answers (3)

Answers (3)

Former Member
0 Kudos

hi,

try this Example, hope useful to u, assign me point.

report ZMSV1_BDC_CALL

no standard page heading line-size 255.

*include bdcrecx1.

*parameters: dataset(132) lower case.

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

*

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

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

  • 2.) The first line shows exactly the comment

  • '* data element: ' followed with the data element

  • which describes the field.

  • If you don't have a data element use the

  • comment without a data element name

  • 3.) The second line shows the fieldname of the

  • structure, the fieldname must consist of

  • a fieldname and optional the character '_' and

  • three numbers and the field length in brackets

  • 4.) Each field must be type C.

*

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

data: begin of record,

  • data element: BUKRS

BUKRS_001(004),

  • data element: KTOKK

KTOKK_002(004),

  • data element: NAME1_GP

NAME1_003(035),

  • data element: SORTL

SORTL_004(010),

  • data element: ORT01_GP

ORT01_005(035),

  • data element: LAND1_GP

LAND1_006(003),

  • data element: SPRAS

SPRAS_007(002),

  • data element: BANKS

BANKS_01_008(003),

  • data element: BANKK

BANKL_01_009(015),

  • data element: BANKN

BANKN_01_010(018),

end of record.

      • End generated data section ***

data: itab like record occurs 0 .

data: it_bdc type bdcdata occurs 0 with header line.

data: it_msg type bdcmsgcoll occurs 0 with header line.

parameter p_file type rlgrap-filename default 'c:\vendor.txt' obligatory

.

start-of-selection.

perform open_dataset using p_file.

perform open_group.

*perform close_group.

*perform close_dataset using dataset.

&----


*& Form open_dataset

&----


  • text

----


  • -->P_P_FILE text

----


form open_dataset using p_p_file.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

  • CODEPAGE = ' '

FILENAME = p_file

FILETYPE = 'DAT'

  • HEADLEN = ' '

  • LINE_EXIT = ' '

  • TRUNCLEN = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • DAT_D_FORMAT = ' '

  • IMPORTING

  • FILELENGTH =

TABLES

data_tab = itab

  • EXCEPTIONS

  • CONVERSION_ERROR = 1

  • FILE_OPEN_ERROR = 2

  • FILE_READ_ERROR = 3

  • INVALID_TYPE = 4

  • NO_BATCH = 5

  • UNKNOWN_ERROR = 6

  • INVALID_TABLE_WIDTH = 7

  • GUI_REFUSE_FILETRANSFER = 8

  • CUSTOMER_ERROR = 9

  • NO_AUTHORITY = 10

  • OTHERS = 11

.

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

&----


*& Form open_group

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form open_group .

loop at itab into record.

perform bdc_dynpro using 'SAPMF02K' '0105'.

perform bdc_field using 'BDC_CURSOR'

'RF02K-KTOKK'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02K-BUKRS'

record-BUKRS_001.

perform bdc_field using 'RF02K-KTOKK'

record-KTOKK_002.

perform bdc_dynpro using 'SAPMF02K' '0110'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-ORT01'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFA1-NAME1'

record-NAME1_003.

perform bdc_field using 'LFA1-SORTL'

record-SORTL_004.

perform bdc_field using 'LFA1-ORT01'

record-ORT01_005.

perform bdc_field using 'LFA1-LAND1'

record-LAND1_006.

perform bdc_field using 'LFA1-SPRAS'

record-SPRAS_007.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-KUNNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-KOINH(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_field using 'LFBK-BANKS(01)'

record-BANKS_01_008.

perform bdc_field using 'LFBK-BANKL(01)'

record-BANKL_01_009.

perform bdc_field using 'LFBK-BANKN(01)'

record-BANKN_01_010.

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

perform bdc_field using 'BDC_OKCODE'

'/00'.

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 'SAPLSPO1' '0300'.

perform bdc_field using 'BDC_OKCODE'

'=YES'.

call transaction 'FK01' using it_bdc mode 'A' update 'S'

messages into it_msg.

write:/ sy-subrc.

perform message_formatwrite.

refresh it_bdc.

clear it_bdc.

endloop.

endform. " open_group

&----


*& Form message_formatwrite

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form message_formatwrite .

data:l_msg(10).

loop at it_msg.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = SY-MSGID

LANG = sy-langu

NO = SY-MSGNO

V1 = SY-MSGV1

V2 = SY-MSGV2

V3 = SY-MSGV3

V4 = SY-MSGV4

IMPORTING

MSG = l_msg

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2

.

IF sy-subrc <> 0.

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

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

ENDIF.

endloop.

endform. " message_formatwrite

&----


*& Form bdc_dynpro

&----


  • text

----


  • -->P_0112 text

  • -->P_0113 text

----


form bdc_dynpro using value(p_0112)

value(p_0113).

it_bdc-program = p_0112.

it_bdc-dynpro = p_0113.

it_bdc-dynbegin = 'X'.

append it_bdc.

clear it_bdc.

endform. " bdc_dynpro

&----


*& Form bdc_field

&----


  • text

----


  • -->P_0117 text

  • -->P_0118 text

----


form bdc_field using value(p_0117)

value(p_0118).

it_bdc-fnam = p_0117.

it_bdc-fval = p_0118.

append it_bdc.

clear it_bdc.

endform. " bdc_field

Regards

fareedas

Former Member
0 Kudos

Use the FMs

ALSM_EXCEL_TO_INTERNAL_TABLE

or

TEXT_CONVERT_XLS_TO_SAP

Narendra

former_member609120
Contributor
0 Kudos

FORM UPLOAD_EXCEL_FILE .

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = P_FNAME " File Name

I_BEGIN_COL = 1 " start Column

I_BEGIN_ROW = 2 " start row

I_END_COL = 22 " total columns

I_END_ROW = 9999 " max rows

TABLES

INTERN = IT_FILE_UPLOAD. " internal table

ENDFORM.

Use function module above to upload data in excel sheet.

Thanks..