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

upload excel file into internal table

Former Member
0 Likes
1,151

Hi,

I have one requirement.

I have to write one bdc program for that i have to upload data from excel file.

i am getting error in the function module 'ALSM_EXCEL_TO_INTERNAL_TABLE'

i am sending my code...

please give me some guidelines...

data: begin of record occurs 3,

LAND1_01_001(003),

ZONE1_01_002(010),

VTEXT_01_003(020),

end of record.

DATA BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE.

data: begin of record occurs 3,

LAND1_01_001(003),

ZONE1_01_002(010),

VTEXT_01_003(020),

  • TRKORR_004(020),

end of record.

DATA BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE.

PARAMETERS : P_FNAME LIKE RLGRAP-FILENAME.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = P_FNAME

I_BEGIN_COL = 1

I_BEGIN_ROW = 1

I_END_COL = 3

I_END_ROW = 3

TABLES

INTERN = record

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

thans in advance.............

Regards.

Kumar.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,083

Hi,

Check the following link:

[Removed by the moderator.]

Hope this helps.

Reward if helpful.

Regards,

Sipra

hi,

chk the sample code...

REPORT ZNTERACTIVEREPORTS NO STANDARD PAGE HEADING

LINE-COUNT 65(2).

PARAMETERS:

P_INFL like RLGRAP-FILENAME.

DATA:

BEGIN OF T_DATA1 OCCURS 0,

RESOURCE(25) TYPE C,

DATE(10) TYPE C,

DURATION TYPE P DECIMALS 2,

ACTIVITY(25) TYPE C,

B_NBILL(1) TYPE C,

END OF T_DATA1,

T_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,

BEGIN OF T_FINAL OCCURS 0,

RESOURCE(25) TYPE C,

DATE(10) TYPE C,

DURATION(15) TYPE C,

ACTIVITY(25) TYPE C,

B_NBILL(10) TYPE C,

END OF T_FINAL.

DATA : HEADER TYPE XSTRING.

  • Work Variables Declaration.

CONSTANTS:

W_Y TYPE C VALUE 'Y',

W_N TYPE C VALUE 'N'.

  • Work area.

DATA:

WA_DATA LIKE T_FINAL.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_INFL.

PERFORM GET_FILENAME CHANGING P_INFL.

----


START-OF-SELECTION.

----


PERFORM UPLOAD_DATA_FROMEXCEL.

PERFORM PROCESS_DATA.

&----


*& Form download_data

&----


  • text

----


FORM UPLOAD_DATA_FROMEXCEL.

  • Downloading the data from presentation server

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = p_infl

I_BEGIN_COL = 1

I_BEGIN_ROW = 2

I_END_COL = 8

I_END_ROW = 1000

TABLES

INTERN = T_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.

ENDFORM. " upload_data_fromexcel

&----


*& Form process_data

&----


  • text

----


FORM PROCESS_DATA .

T_FINAL-RESOURCE = 'Resource'.

T_FINAL-DATE = 'Date'.

T_FINAL-DURATION = 'Duration'.

T_FINAL-ACTIVITY = 'Activity'.

T_FINAL-B_NBILL = 'Billable'.

APPEND T_FINAL.

SORT T_DATA BY ROW COL.

LOOP AT T_DATA.

CASE T_DATA-COL.

WHEN 3.

T_DATA1-RESOURCE = T_DATA-VALUE.

WHEN 4.

T_DATA1-DATE = T_DATA-VALUE.

WHEN 5.

T_DATA1-DURATION = T_DATA-VALUE.

WHEN 6.

  • t_data1-activity = t_data-value.

WHEN 7.

T_DATA1-B_NBILL = T_DATA-VALUE.

ENDCASE.

AT END OF ROW.

COLLECT T_DATA1.

ENDAT.

ENDLOOP.

LOOP AT T_DATA1.

T_FINAL-RESOURCE = T_DATA1-RESOURCE.

T_FINAL-DATE = T_DATA1-DATE.

T_FINAL-DURATION = T_DATA1-DURATION.

T_FINAL-ACTIVITY = T_DATA1-ACTIVITY.

T_FINAL-B_NBILL = T_DATA1-B_NBILL.

APPEND T_FINAL.

ENDLOOP.

ENDFORM. " process_data

hope this helps,

do reward if it helps,

priya.

8 REPLIES 8
Read only

Former Member
0 Likes
1,083

check the function module ws_excel

Read only

Former Member
0 Likes
1,083

hi

pls see this thread

thx

pavan

Read only

Former Member
0 Likes
1,083

Why dont u use GUI_UPLOAD

Thanks & Regards

Santhosh

Read only

Former Member
0 Likes
1,084

Hi,

Check the following link:

[Removed by the moderator.]

Hope this helps.

Reward if helpful.

Regards,

Sipra

Read only

Former Member
0 Likes
1,083

Hi Anil,

Try wi th this code:

DATA: L_FILENAME TYPE STRING.

DATA: BEGIN OF I_EXEL OCCURS 0.

INCLUDE STRUCTURE ALSMEX_TABLINE.

DATA: END OF I_EXEL.

FIELD-SYMBOLS: <FS>.

CONSTANTS: C_BEGNROW TYPE I VALUE '1',

C_LASTROW TYPE I VALUE '100',

C_BEGNCOL TYPE I VALUE '1',

C_LASTCOL TYPE I VALUE '6596'.

MOVE P_FILE TO L_FILENAME.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = P_FILE

I_BEGIN_COL = C_BEGNCOL

I_BEGIN_ROW = C_BEGNROW

I_END_COL = C_LASTCOL

I_END_ROW = C_LASTROW

TABLES

INTERN = I_EXEL

EXCEPTIONS

INCONSISTENT_PARAMETERS = 1

UPLOAD_OLE = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

MESSAGE E002(ZWH) WITH 'ERROR WHILE UPLAODING'.

ELSE.

LOOP AT I_EXEL.

ASSIGN COMPONENT I_EXEL-COL OF STRUCTURE I_INPUT TO <FS>.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

<FS> = I_EXEL-VALUE.

AT END OF ROW.

APPEND I_INPUT.

CLEAR I_INPUT.

ENDAT.

ENDLOOP.

ENDIF.

Here I_INPUT is have the input file structure,

Hope this helps you. Reply for queries, shall post the updates.

Regards.

Kumar

Read only

Former Member
0 Likes
1,083

Hi,

See the Changed Code below:

data: begin of record occurs 3,

LAND1_01_001(003),

ZONE1_01_002(010),

VTEXT_01_003(020),

  • TRKORR_004(020),

end of record.

DATA BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE.

*PARAMETERS :

<b>DATA:

P_FNAME LIKE RLGRAP-FILENAME.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

FIELD_NAME = ' '

IMPORTING

FILE_NAME = P_FNAME</b>

.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = P_FNAME

I_BEGIN_COL = 1

I_BEGIN_ROW = 1

I_END_COL = 3

I_END_ROW = 3

TABLES

INTERN = record

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

Make sure that no of fields and their data types are also matching.

Hope this helps you.

Regards,

Rama chary.Pammi

Read only

Former Member
0 Likes
1,083

You can use the Function module ALSM_EXCEL_TO_INTERNAL_TABLE to read the Excel file into the internal table of type alsmex_tabline. From this internal table you can fill the target internal table.

TYPES:

BEGIN OF ty_upload,

field1 TYPE c length 12,

field2 TYPE c length 12,

field3 TYPE c length 12,

END OF ty_upload.

DATA it_upload TYPE STANDARD TABLE OF ty_upload WITH DEFAULT KEY.

DATA wa_upload TYPE ty_upload.

DATA itab TYPE STANDARD TABLE OF alsmex_tabline WITH DEFAULT KEY.

FIELD-SYMBOLS: &lt;wa&gt; type alsmex_tabline.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = filename

i_begin_col = 1

i_begin_row = 1

i_end_col = 3

i_end_row = 65535

TABLES

intern = itab.

LOOP AT itab ASSIGNING &lt;wa&gt;.

CASE &lt;wa&gt;-col.

WHEN '0001'.

wa_upload-field1 = &lt;wa&gt;-value.

WHEN '0002'.

wa_upload-field2 = &lt;wa&gt;-value.

WHEN '0003'.

wa_upload-field3 = &lt;wa&gt;-value.

ENDCASE.

APPEND wa_upload TO it_upload.

CLEAR wa_upload.

ENDLOOP.

Y.Ravi kumar

Read only

Former Member
0 Likes
1,083

hi,

chk the sample code...

REPORT ZNTERACTIVEREPORTS NO STANDARD PAGE HEADING

LINE-COUNT 65(2).

PARAMETERS:

P_INFL like RLGRAP-FILENAME.

DATA:

BEGIN OF T_DATA1 OCCURS 0,

RESOURCE(25) TYPE C,

DATE(10) TYPE C,

DURATION TYPE P DECIMALS 2,

ACTIVITY(25) TYPE C,

B_NBILL(1) TYPE C,

END OF T_DATA1,

T_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,

BEGIN OF T_FINAL OCCURS 0,

RESOURCE(25) TYPE C,

DATE(10) TYPE C,

DURATION(15) TYPE C,

ACTIVITY(25) TYPE C,

B_NBILL(10) TYPE C,

END OF T_FINAL.

DATA : HEADER TYPE XSTRING.

  • Work Variables Declaration.

CONSTANTS:

W_Y TYPE C VALUE 'Y',

W_N TYPE C VALUE 'N'.

  • Work area.

DATA:

WA_DATA LIKE T_FINAL.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_INFL.

PERFORM GET_FILENAME CHANGING P_INFL.

----


START-OF-SELECTION.

----


PERFORM UPLOAD_DATA_FROMEXCEL.

PERFORM PROCESS_DATA.

&----


*& Form download_data

&----


  • text

----


FORM UPLOAD_DATA_FROMEXCEL.

  • Downloading the data from presentation server

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

FILENAME = p_infl

I_BEGIN_COL = 1

I_BEGIN_ROW = 2

I_END_COL = 8

I_END_ROW = 1000

TABLES

INTERN = T_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.

ENDFORM. " upload_data_fromexcel

&----


*& Form process_data

&----


  • text

----


FORM PROCESS_DATA .

T_FINAL-RESOURCE = 'Resource'.

T_FINAL-DATE = 'Date'.

T_FINAL-DURATION = 'Duration'.

T_FINAL-ACTIVITY = 'Activity'.

T_FINAL-B_NBILL = 'Billable'.

APPEND T_FINAL.

SORT T_DATA BY ROW COL.

LOOP AT T_DATA.

CASE T_DATA-COL.

WHEN 3.

T_DATA1-RESOURCE = T_DATA-VALUE.

WHEN 4.

T_DATA1-DATE = T_DATA-VALUE.

WHEN 5.

T_DATA1-DURATION = T_DATA-VALUE.

WHEN 6.

  • t_data1-activity = t_data-value.

WHEN 7.

T_DATA1-B_NBILL = T_DATA-VALUE.

ENDCASE.

AT END OF ROW.

COLLECT T_DATA1.

ENDAT.

ENDLOOP.

LOOP AT T_DATA1.

T_FINAL-RESOURCE = T_DATA1-RESOURCE.

T_FINAL-DATE = T_DATA1-DATE.

T_FINAL-DURATION = T_DATA1-DURATION.

T_FINAL-ACTIVITY = T_DATA1-ACTIVITY.

T_FINAL-B_NBILL = T_DATA1-B_NBILL.

APPEND T_FINAL.

ENDLOOP.

ENDFORM. " process_data

hope this helps,

do reward if it helps,

priya.