2009 Jan 07 11:36 AM
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
2009 Jan 07 11:44 AM
2009 Jan 07 11:44 AM
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
2009 Jan 07 11:45 AM
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
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |