01-10-2008 6:52 AM
Hi , Some one can answer this quick question.
While i am using GUI_upload i am not able to recieve the data properly.
*************************
GUI UPLOAD From Data
*************************
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = lvs_filenm
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
its not working properly . can i give any has field separtor like 'X'
And i copied the same data in excel to text file. GUI_upload is working fine and data is exactly coming in to the internal table.
*************************
GUI UPLOAD From Data
*************************
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = lvs_filenm
FILETYPE = 'DAT'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
Any one can help me out in this regard. Client wants to use GUI_upload functional module only...
01-10-2008 7:22 AM
Hi vamsi,
I will send sample code along with flat file.I will attach flat file at the end of program check it once.This program works fine for me for XLS FILE.
&----
*& Report YBDC_UPLOAD_MM01_XLS *
*& *
&----
*& DEVELOPER : KIRAN KUMAR.G *
*& PURPOSE : MAKE CHANGES TO DOWNLOADED FILE AND UPLOAD THE FILE *
*& CREATION DT: 3/12/2007 *
*& REQUEST : ERPK900035 *
&----
REPORT YBDC_UPLOAD_MM01_XLS.
----
Tables
----
TABLES : mara. "General Material Data
----
Global BDCDATA Structure and MESSAGE Structure
----
DATA: gt_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
gt_msgtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
----
Global Variables
----
DATA: gv_infile TYPE string,
gv_msg TYPE string,
gv_update VALUE 'A'.
----
Internal Table
*----
DATA: BEGIN OF gt_data OCCURS 0,
matnr(20), "Material Number
mbrsh(20), "Account Group
mtart(20), "Material Type
meins(20), "Base Unit Of Measure
maktx(20), "Material Description
END OF gt_data.
----
Selection-screen
----
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_file LIKE rlgrap-filename,
p_mode.
SELECTION-SCREEN : END OF BLOCK b1.
----
Select the File
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM fetch_file.
START-OF-SELECTION.
----
Fetch Data From XLS File
----
PERFORM fetch_data.
----
Fetch Data From XLS File
----
PERFORM delete_headerinfo.
----
Fetch Data From XLS File
----
PERFORM place_data.
&----
*& Form fetch_file
&----
text
----
--> p1 text
<-- p2 text
----
FORM fetch_file .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
FIELD_NAME = ' '
IMPORTING
file_name = p_file.
gv_infile = p_file.
ENDFORM. " fetch_file
&----
*& Form fetch_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM fetch_data .
refresh : gt_data. "Clear Body Of the Internal Table
clear : gt_data. "Clear Header Line
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = gv_infile
filetype = 'ASC'
has_field_separator = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
data_tab = gt_data
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
.
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_data
&----
*& Form place_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM place_data .
LOOP AT gt_data.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AUSW'.
PERFORM bdc_field USING 'RMMG1-MATNR'
gt_data-matnr.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'
'X'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
gt_data-maktx.
PERFORM bdc_field USING 'MARA-MTPOS_MARA'
'NORM'.
CALL TRANSACTION 'MM02' USING gt_bdcdata MODE p_mode
UPDATE gv_update
MESSAGES INTO gt_msgtab.
*For Error Messages Handling.
LOOP AT gt_msgtab.
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 = gv_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.
IF sy-tabix = 1.
WRITE: / 'Process Log' COLOR 3.
ENDIF.
WRITE:/ gv_msg.
ENDLOOP.
REFRESH gt_msgtab.
REFRESH gt_bdcdata.
ENDLOOP.
ENDFORM. " place_data
----
Start new screen *
----
FORM bdc_dynpro USING program dynpro.
CLEAR gt_bdcdata.
gt_bdcdata-program = program.
gt_bdcdata-dynpro = dynpro.
gt_bdcdata-dynbegin = 'X'.
APPEND gt_bdcdata.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM bdc_field USING fnam fval.
CLEAR gt_bdcdata.
gt_bdcdata-fnam = fnam.
gt_bdcdata-fval = fval.
APPEND gt_bdcdata.
ENDFORM. "BDC_FIELD
&----
*& Form delete_headerinfo
&----
text
----
--> p1 text
<-- p2 text
----
FORM delete_headerinfo .
DELETE gt_data INDEX 1.
ENDFORM. " delete_headerinfo
----
FLAT FILE
----
*MATERIAL NUMBER INDUSTRY SECTOR MATERIAL TYPE BASE UNIT OF
*MEASURE MATERIAL DESCRIPTION
*806 M FERT CM IRON
*807 M HALB KG STEEL
*808 M HAWA KG IRON
----
Award points if helpful.
Kiran Kumar.G.A
01-10-2008 3:27 PM
01-10-2008 4:55 PM
Hai,
Instead of using GUI_UPLOAD you can use 'TEXT_CONVERT_XLS_TO_SAP'.
If you have to upload either text file or excel file you can use both of the above.
Example Code:
DATA: BEGIN OF i_file_data OCCURS 0,
col1 TYPE text60,
col2 TYPE text60,
col3 TYPE text60,
col4 TYPE text60,
col5 TYPE text60,
col6 TYPE text60,
END OF i_file_data.
parameter: p_local TYPE rlgrap-filename MODIF ID m2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_local.
*F4 help to browse file in local server
PERFORM select_local_file.
Start-of-selection.
*Get file extension
SPLIT p_local AT '.' INTO lv_file lv_ext.
TRANSLATE lv_ext TO UPPER CASE.
CLEAR i_file_data.
REFRESH i_file_data.
IF lv_ext = c_xls.
*IF file is excel get data from excel sheet
PERFORM get_xls_file.
ELSE.
*Else get file from gui download
PERFORM get_txt_file.
ENDIF. "lv_ext
FORM get_xls_file.
data: i_raw TYPE truxs_t_text_data.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_field_seperator = 'X'
i_tab_raw_data = i_raw
i_filename = p_local
TABLES
i_tab_converted_data = i_file_data[]
EXCEPTIONS
conversion_failed = 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. " sy-subrc
ENDFORM. "get_xls_file
FORM get_txt_file.
DATA: lv_string TYPE string. " To get file path
CLEAR lv_string.
lv_string = p_local. " Get file path
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_string
filetype = 'ASC'
has_field_separator = 'X'
read_by_line = 'X'
TABLES
data_tab = i_file_data[]
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. " sy-subrc
ENDFORM. "get_txt_file
FORM select_local_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = sy-cprog
dynpro_number = sy-dynnr
field_name = space
IMPORTING
file_name = p_local.
ENDFORM. "select_local_file
*****Now i_file_data contains the field values. You can move to your internal table which is declared according to the actual data types. For this, you need to loop thru i_file_data and move specific column values to the internal table.
01-31-2008 12:28 PM
It worked for me. Hope it does for you as well.
just simply create as excel sheet using SAP itself. Not through Microsoft Office. I believe SAP creates an older MS Office type excel file (which version I'm not sure) and that is from where the problem creeps in. Then you can paste all your data in the excel sheet generated by SAP.
And use this excel sheet in your ABAP code.
Ways to create excel sheet:
1) You can use gui_download
2) System>List>Save from any List and save it as spreadsheet.
Hope this helps.