2011 Feb 03 5:26 AM
Hi,
I have field on my selection screen to enter file path. This parameter has F4 help to choose the file path. However, I have a concern over here...
If user enters file path manually(meaning that without using F4), there is chance that he may enter file path without any extension or without any drive/or the file which doesn't exist in the system ...In this case I want to validate the file path. And I should give an error saying "Invalid file path or name".
Could you please help me out with any FM or any other go for the same?
Thanks,
Sandeep
Hi,
I have field on my selection screen to enter file path. This parameter has F4 help to choose the file path. However, I have a concern over here...
If user enters file path manually(meaning that without using F4), there is chance that he may enter file path without any extension or without any drive/or the file which doesn't exist in the system ...In this case I want to validate the file path. And I should give an error saying "Invalid file path or name".
Could you please help me out with any FM or any other go for the same?
Thanks,
Sandeep
2011 Feb 03 5:32 AM
Dear Sandeep,
Just hard code that and make as default.
Regards,
Madhu.
2011 Feb 03 5:36 AM
Is it about validating in Application Server ? If yes, check the method OPEN in class CL_RSAN_UT_APPSERV_FILE_READER. Method returns sy-subrc 1 if there is an error in opening the specified file name.
If it is validation from GUI, check the methods "DIRECTORY_EXIST" and "FILE_EXIST" in class CL_GUI_FRONTEND_SERVICES.
2011 Feb 03 5:45 AM
Hi Sandeep Reddy,
To validate the file path use the Function module
CV120_DOC_FILE_EXISTENCE_CHECK
It will check whether the file path you entered in the parameter PF_FILE exists or not.
Hope it helps.
Regards,
Phani Kumar M
2011 Feb 03 6:15 AM
If you need to validate only the extension, you can do like the following code. Hopefully you must know the extension of the file.
filelen = strlen( filepath ).
filelen = filelen - 4 .
file_extn = filepath+filelen.
translate file_extn to upper case.
if file_extn ne '.csv'.
message 'Invalid file format.File extension should be '.CSV''.
endif.
Thanks & Regards,
Karthi
2011 Feb 03 7:17 AM
If its an application server simply you can check this
open dataset d1........
if sy-subrc 0.
write:/ 'File path not found'.
endif.
If sy-subrc is zero, it means no file exists.
else you can use a function module
FILE_GET_NAME_USING_PATH
Regards,
Uttam Agrawal
Edited by: uttamagrawal on Feb 22, 2011 9:22 AM
2011 Feb 03 8:19 AM
Dear Sandeep,
You can try the following approach:
1. In the declaration part of the parameter in Selection-screen, hard code the directory name, say 'C:\temp\'.
PARAMETERS: p_file TYPE localfile DEFAULT 'C:\temp\'.
2. Event: AT SELECTION-SCREEN OUTPUT.
Set the parameter to input disabled (Screen-input = 0). This way the user will not be able to manually change the value.
3. Event: AT SELECTION-SCREEN ON VALUE-REQUEST FOR <parameter_name>, make use of the method 'File_open_dialog' of the class 'CL_GUI_FRONTEND_SERVICES' to read the filename. Once you have the file name, you need to update the same on the screen. So make use of this function module, DYNP_VALUES_UPDATE.
Hope you find this useful.
Cheers!!!
Amit
Edited by: Amit Kumar Singh on Feb 3, 2011 9:20 AM
2011 Feb 03 8:45 AM
Hi,
Use can use the folowing approach:
1. Get the file name using
- CALL FUNCTION 'F4_FILENAME' or
- CL_GUI_FRONTEND_SERVICES->GUI_UPLOAD
2. Validate the file path - pass the file name found in step 1 above
- CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file = lv_file
RECEIVING
result = lv_result.
IF lv_result NE c_x.
MESSAGE e114(zzsam). " Invalid file name entered. Display error message.
endif.
2011 Feb 03 8:46 AM
Hi,
Use the Method DIRECTORY_EXIST in class CL_GUI_FRONTEND_SERVICES.
After the POP UP use this method. If the sy-subrc is zero then the filepath exists other wise no.
With Regards,
Sumodh.P
2011 Feb 03 9:32 AM
HI
For the presentation server first you have to split the path entered into directory and file.You can used FM SO_SPLIT_FILE_AND_PATH for this purpose.
Now you can validate the directory and file independently using cl_gui_frontend_services=>directory_exist & cl_gui_frontend_services=>file_exist
*--FM to split File Path into Directory and File Name
CALL FUNCTION 'SO_SPLIT_FILE_AND_PATH'
EXPORTING
full_name = v_fname
IMPORTING
stripped_name = v_file
file_path = v_dir
EXCEPTIONS
x_error = 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.
*--Method to Validate Directory
CALL METHOD cl_gui_frontend_services=>directory_exist
EXPORTING
directory = v_dir
RECEIVING
result = lv_res
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
not_supported_by_gui = 4
OTHERS = 5.
IF lv_res IS INITIAL.
MESSAGE e000 WITH 'Directory does not exist'(010).
ELSE.
CLEAR lv_res.
*--Method to Validate File
CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file = v_file
RECEIVING
result = lv_res
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
wrong_parameter = 3
not_supported_by_gui = 4
OTHERS = 5.
IF lv_res IS INITIAL.
MESSAGE e000 WITH 'File does not exist'(009).
ENDIF.
ENDIF.For Application server you have to use open dataset only
OPEN DATASET v_fname FOR INPUT
IN TEXT MODE
ENCODING DEFAULT
IGNORING CONVERSION ERRORS.
IF sy-subrc = 8.
MESSAGE e000 WITH 'Invalid Directory or Filename'(015).
ELSE.Edited by: Rahuljn on Feb 3, 2011 3:27 PM
2011 Feb 03 11:03 AM
Sandeep,
Wy dont you search in SCN before posting. This has been discussed many times.
| User | Count |
|---|---|
| 6 | |
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |