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

REGARDING FM

Former Member
0 Likes
649

hi,

i am uploading data from excel to sap where it is stored in internal table ,i have written the code but it is not getting the values into the internal table . Here is the code:

can u please find where the error is.....


PARAMETERS:P_FILE TYPE RLGRAP-FILENAME.
types: begin of ty_ps,
       begda(8) type c,
       massn(2) type c,
       pernr(8) type c,
       bukrs(4) type c,
       werks(4) type c,
       btrtl(4) type c,
       persg(1) type c,
       persk(2) type c,
       ansvh(2) type c,
       mstbr(25) type c,
       nachn(25) type c,
       vorna(25) type c,
       schkz(8) type c,
       usrty(4) type c,
       end of ty_ps.

       types : begin of ty_file,
        line(200) type c,
        end of ty_file.

DATA:  it_ps type standard table of ty_ps,
       it_file type standard table of ty_file,
       ITAB TYPE STANDARD TABLE OF  ALSMEX_TABLINE,
       WTAB TYPE ALSMEX_TABLINE,
       wa_file type ty_file,
       wa_ps type ty_ps,
       L_FILE TYPE STRING.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR  P_FILE.



                                                 CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
                                                  EXPORTING
                                                    PROGRAM_NAME        = SYST-REPID
                                                    DYNPRO_NUMBER       = SYST-DYNNR
*                                                    FIELD_NAME          = ' '
*                                                    STATIC              = ' '
*                                                    MASK                = ' '
                                                   CHANGING
                                                     file_name           = P_FILE
*                                                  EXCEPTIONS
*                                                    MASK_TOO_LONG       = 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.

                                                 L_FILE = P_FILE.

                  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
                    EXPORTING
                      filename                      = P_FILE
                      i_begin_col                   ='1'
                      i_begin_row                   ='1'
                      i_end_col                     ='14'
                      i_end_row                     ='2'
                    tables
                      intern                        = ITAB
*                   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.



 END-OF-SELECTION.

 SORT ITAB BY ROW COL.
LOOP AT ITAB INTO WTAB.

CASE WTAB-COL.
WHEN '1'.
WA_PS-BEGDA = WTAB-VALUE.
WHEN '2'.
WA_PS-MASSN = WTAB-VALUE.
WHEN '3'.
WA_PS-PERNR = WTAB-VALUE.
WHEN '4'.
WA_PS-BUKRS = WTAB-VALUE.
WHEN '5'.
WA_PS-WERKS = WTAB-VALUE.
WHEN '6'.
WA_PS-BTRTL = WTAB-VALUE.
WHEN '7'.
WA_PS-PERSG = WTAB-VALUE.
WHEN '8'.
WA_PS-PERSK = WTAB-VALUE.
WHEN '9'.
WA_PS-ANSVH = WTAB-VALUE.
WHEN '10'.
WA_PS-MSTBR = WTAB-VALUE.
WHEN '11'.
WA_PS-NACHN = WTAB-VALUE.
WHEN '12'.
WA_PS-VORNA = WTAB-VALUE.
WHEN '13'.
WA_PS-SCHKZ = WTAB-VALUE.
WHEN '14'.
WA_PS-USRTY = WTAB-VALUE.


ENDCASE.
AT END OF ROW.
*WA_PS-MANDT = SY-MANDT.

append WA_PS to IT_PS.
CLEAR WA_PS.
ENDAT.
endloop.

thanks.

<LOCKED BY MODERATOR - USE APPROPRIATE TITLES>

Edited by: Alvaro Tejada Galindo on Jan 7, 2009 12:16 PM

hi,

i am uploading data from excel to sap where it is stored in internal table ,i have written the code but it is not getting the values into the internal table . Here is the code:

can u please find where the error is.....


PARAMETERS:P_FILE TYPE RLGRAP-FILENAME.
types: begin of ty_ps,
       begda(8) type c,
       massn(2) type c,
       pernr(8) type c,
       bukrs(4) type c,
       werks(4) type c,
       btrtl(4) type c,
       persg(1) type c,
       persk(2) type c,
       ansvh(2) type c,
       mstbr(25) type c,
       nachn(25) type c,
       vorna(25) type c,
       schkz(8) type c,
       usrty(4) type c,
       end of ty_ps.

       types : begin of ty_file,
        line(200) type c,
        end of ty_file.

DATA:  it_ps type standard table of ty_ps,
       it_file type standard table of ty_file,
       ITAB TYPE STANDARD TABLE OF  ALSMEX_TABLINE,
       WTAB TYPE ALSMEX_TABLINE,
       wa_file type ty_file,
       wa_ps type ty_ps,
       L_FILE TYPE STRING.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR  P_FILE.



                                                 CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
                                                  EXPORTING
                                                    PROGRAM_NAME        = SYST-REPID
                                                    DYNPRO_NUMBER       = SYST-DYNNR
*                                                    FIELD_NAME          = ' '
*                                                    STATIC              = ' '
*                                                    MASK                = ' '
                                                   CHANGING
                                                     file_name           = P_FILE
*                                                  EXCEPTIONS
*                                                    MASK_TOO_LONG       = 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.

                                                 L_FILE = P_FILE.

                  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
                    EXPORTING
                      filename                      = P_FILE
                      i_begin_col                   ='1'
                      i_begin_row                   ='1'
                      i_end_col                     ='14'
                      i_end_row                     ='2'
                    tables
                      intern                        = ITAB
*                   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.



 END-OF-SELECTION.

 SORT ITAB BY ROW COL.
LOOP AT ITAB INTO WTAB.

CASE WTAB-COL.
WHEN '1'.
WA_PS-BEGDA = WTAB-VALUE.
WHEN '2'.
WA_PS-MASSN = WTAB-VALUE.
WHEN '3'.
WA_PS-PERNR = WTAB-VALUE.
WHEN '4'.
WA_PS-BUKRS = WTAB-VALUE.
WHEN '5'.
WA_PS-WERKS = WTAB-VALUE.
WHEN '6'.
WA_PS-BTRTL = WTAB-VALUE.
WHEN '7'.
WA_PS-PERSG = WTAB-VALUE.
WHEN '8'.
WA_PS-PERSK = WTAB-VALUE.
WHEN '9'.
WA_PS-ANSVH = WTAB-VALUE.
WHEN '10'.
WA_PS-MSTBR = WTAB-VALUE.
WHEN '11'.
WA_PS-NACHN = WTAB-VALUE.
WHEN '12'.
WA_PS-VORNA = WTAB-VALUE.
WHEN '13'.
WA_PS-SCHKZ = WTAB-VALUE.
WHEN '14'.
WA_PS-USRTY = WTAB-VALUE.


ENDCASE.
AT END OF ROW.
*WA_PS-MANDT = SY-MANDT.

append WA_PS to IT_PS.
CLEAR WA_PS.
ENDAT.
endloop.

thanks.

<LOCKED BY MODERATOR - USE APPROPRIATE TITLES>

Edited by: Alvaro Tejada Galindo on Jan 7, 2009 12:16 PM

3 REPLIES 3
Read only

former_member404244
Active Contributor
0 Likes
617

Hi,

Check the link

http://www.sap-img.com/abap/upload-direct-excel.htm

Regards,

Nagaraj

Read only

Former Member
0 Likes
617

DATA : it_excel LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA: xcel TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
DATA : gd_scol TYPE i VALUE '1',
gd_srow TYPE i VALUE '3',
v_partner LIKE kna1-kunnr,
gd_ecol TYPE i VALUE '256',
v_vbeln TYPE vbak-vbeln,
gd_erow TYPE i VALUE '65536'

DATA: BEGIN OF gt_out OCCURS 0,
soind(1) TYPE c, " Sales Order indicator (H) - Header
auart LIKE vbak-auart, " Order Type
kunnr LIKE kna1-kunnr, "Sold To Party
bstkd LIKE vbkd-bstkd, "PO Number
matnr LIKE vbap-matnr, "Article Number
req_qty LIKE vbap-kwmeng, "Quantity
werks LIKE vbap-werks, "Site
rsite LIKE vbap-werks,
END OF gt_out.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY .
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: c1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b2.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM get_file.
*===========================================================




Start of selection 

*===========================================================
START-OF-SELECTION.
PERFORM upload_excel_file TABLES gt_out
USING p_file
gd_scol
gd_srow
gd_ecol
gd_erow.

&---------------------------------------------------------------------
*& Form get_file
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

--> p1 text 
<-- p2 text 
----------------------------------------------------------------------
FORM get_file .
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = syst-repid
dynpro_number = syst-dynnr
field_name = p_file
CHANGING
file_name = p_file.
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. " get_file
&---------------------------------------------------------------------
*& Form upload_excel_file
&---------------------------------------------------------------------

text 
----------------------------------------------------------------------

-->P_IT_DATATAB text 
-->P_P_FILE text 
-->P_GD_SCOL text 
-->P_GD_SROW text 
-->P_GD_ECOL text 
-->P_GD_EROW text 
---------------------------------------------------------------------

FORM upload_excel_file TABLES gt_out
"Insert correct name for <...>
USING p_p_file
p_gd_scol
p_gd_srow
p_gd_ecol
p_gd_erow.
DATA : lt_intern TYPE kcde_cells OCCURS 0 WITH HEADER LINE.
DATA : ld_index TYPE i.
FIELD-SYMBOLS: <fs> TYPE ANY.


CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' 
EXPORTING 
filename = p_p_file 
i_begin_col = p_gd_scol 
i_begin_row = p_gd_srow 
i_end_col = p_gd_ecol 
i_end_row = p_gd_erow 
TABLES 
intern = lt_intern[]. 
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 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = p_p_file
i_begin_col = p_gd_scol
i_begin_row = p_gd_srow
i_end_col = p_gd_ecol
i_end_row = p_gd_erow
TABLES
intern = lt_intern[]
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.

IF lt_intern[] IS INITIAL.
FORMAT COLOR COL_BACKGROUND INTENSIFIED.
WRITE:/ 'No Data Uploaded'.
EXIT.
ELSE.
SORT lt_intern BY row col.
LOOP AT lt_intern.
MOVE lt_intern-col TO ld_index.
ASSIGN COMPONENT ld_index OF STRUCTURE gt_out TO <fs>.
MOVE lt_intern-value TO <fs>.
AT END OF row.
APPEND gt_out.
CLEAR gt_out.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " upload_excel_file

Hope this code is helpful to you. Follow the steps as it is, change only your output internal tables. It will work.

Regards,

Santosh Kumar M.

Code Formatted by: Alvaro Tejada Galindo on Jan 7, 2009 12:16 PM

Read only

Former Member
0 Likes
617

hi,,,,,,

declare internal table like with out work area.


ITAB TYPE  ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,

and follow the below logic like this.


* Move data across into item table
  LOOP AT itab.
    AT NEW row.
      CLEAR it_ps.
    ENDAT.

    CASE itab-col.
      WHEN 1.
        MOVE itab-value(10) TO wa_ps-vbeln(10).
     ENDCASE.

    AT END OF row.
      APPEND it_ps from wa_ps.
     clear wa_ps.
    ENDAT.
  ENDLOOP.

Thanks

Saurabh

Code Formatted by: Alvaro Tejada Galindo on Jan 7, 2009 12:17 PM