‎2006 Mar 28 9:32 AM
i want to give user a search screen for its flat file while the user is doing recording.how should i use function module ws_filename_ge.
‎2006 Mar 28 9:33 AM
Hi divya,
use the FM tmp_gui_file_open_dialog.
it opens a dialog for the user to search for a file..
a sample..
DATA itab LIKE TABLE OF FILE_TABLE WITH HEADER LINE.
data : filename type string.
*filetable type standard table of file_table with header line,
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS : DATASET(128).
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR DATASET.
CALL FUNCTION 'TMP_GUI_FILE_OPEN_DIALOG'
* EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
* INIT_DIRECTORY =
* MULTISELECTION =
* IMPORTING
* RC =
TABLES
FILE_TABLE = itab
* EXCEPTIONS
* CNTL_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.
READ TABLE ITAB index 1.
DATASET = itab-FILENAME.regards
satesh
‎2006 Mar 28 9:38 AM
Hi Divya,
You can use the class CL_GUI_FRONTENDSERVICES.
Here is a program to display a search screen for flat file..
REPORT ZJAYRA_FILEPROG .
data: it_tab type filetable with header line,
gd_subrc type i.
tables: rlgrap.
parameters file_nam type rlgrap-filename .
data: user_act type i.
at selection-screen on value-request for file_nam.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
WINDOW_TITLE = 'select a file'
DEFAULT_EXTENSION = '*.txt
DEFAULT_FILENAME = ''
FILE_FILTER = '*.txt'
INITIAL_DIRECTORY = ''
MULTISELECTION = abap_false
WITH_ENCODING =
CHANGING
file_table = it_tab[]
rc = gd_subrc
USER_ACTION = user_act
FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
others = 5
.
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 user_act = '0'.
loop at it_tab.
file_nam = it_tab-filename.
endloop.
endif.
Hope your query is solved.
Regards,
Sylendra.
‎2006 Mar 28 9:40 AM
hi Divya,
Welcome to SDN.
Try this sample code.
Copy and Paste:
DATA: BEGIN OF DATA_TAB OCCURS 0,
TEXT(20),
VAL TYPE I,
CHK,
END OF DATA_TAB.
DATA: P_FNAME LIKE RLGRAP-FILENAME,
V_ANS.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_PATH = 'C:\'
MASK = ',TEXT FILES,.TXT;.DOC,ALL FILES,..'
TITLE = 'SELECT FILE'
IMPORTING
FILENAME = P_FNAME
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_FNAME
FILETYPE = 'DAT'
TABLES
DATA_TAB = DATA_TAB
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10.
IF SY-SUBRC EQ 0.
WRITE:/'DATA IN', P_FNAME.
ULINE.
LOOP AT DATA_TAB.
WRITE: / DATA_TAB-TEXT,DATA_TAB-VAL.
DATA_TAB-CHK = 'X'.
MODIFY DATA_TAB.
ENDLOOP.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = P_FNAME
FILETYPE = 'DAT'
TABLES
DATA_TAB = DATA_TAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10.
IF SY-SUBRC EQ 0.
WRITE:/ P_FNAME, 'UPDATED AND DOWNLOADED'.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
TEXTLINE1 = 'PERMANENTLY DELETE THIS FILE?'
TEXTLINE2 = P_FNAME
TITEL = 'PERMANENTLY DELETE A FILE'
IMPORTING
ANSWER = V_ANS.
IF V_ANS EQ 'J'.
CALL FUNCTION 'WS_FILE_DELETE'
EXPORTING
FILE = P_FNAME.
WRITE:/ P_FNAME, 'DELETED'.
ELSE.
WRITE:/ P_FNAME, 'NOT DELETED'.
ENDIF.
ELSE.
WRITE:/ P_FNAME, 'NOT DOWNLOADED'.
ENDIF.
ELSE.
WRITE:/ 'COULD NOT UPLOAD FILE', P_FNAME.
ENDIF.
ELSE.
WRITE:/ 'COULD NOT OPEN FILE', P_FNAME.
ENDIF.
Hope this will help you.
Cheers
Sunny
Rewrd points, if found helpful
Message was edited by: Sunny
‎2006 Mar 28 9:51 AM
Hi,
The FM 'WS_FILENAME_GET' is flagged as obsolete in 4.7 version
Use Class
CL_GUI_FRONTEND_SERVICES
For saving:
cl_gui_frontend_services=>file_save_dialog
and for opening file
cl_gui_frontend_services=>file_open_dialog
REPORT ztest .
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
PARAMETERS p_fnam2 LIKE rlgrap-filename MEMORY ID pid.
SELECTION-SCREEN END OF BLOCK b4.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fnam2.
data: filename type string.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = 'xyz.TXT'
def_path = 'C:TEMP'
mask = ', File,*.txt.'
mode = '0'
title = 'Save File As'
IMPORTING
filename = filename
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
p_fnam2 = filename.
END-OF-SELECTION.
WRITE :'hi'.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
PARAMETERS p_fnam2 LIKE rlgrap-filename memory id pid.
SELECTION-SCREEN END OF BLOCK b4.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fnam2.
DATA: li_filetable TYPE STANDARD TABLE OF file_table,
lv_return TYPE i,
lw_filetable TYPE file_table.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select file for download'
default_extension = '.txt'
* DEFAULT_FILENAME = '.txt'
* file_filter = '*.txt ,*.txt.'
initial_directory = 'C:'
CHANGING
file_table = li_filetable
rc = lv_return
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
OTHERS = 4
.
IF sy-subrc <> 0.
* MESSAGE e003 WITH text-015.
ELSE.
READ TABLE li_filetable INTO lw_filetable INDEX 1.
p_fnam2 = lw_filetable-filename.
ENDIF.
END-OF-SELECTION.
write :'hi'.
Regards,
Anjali
‎2006 Mar 28 9:54 AM
Hi Divya,
the FM ws_filename_get is given
"OBSOLETE: Call File Selector" in its description..
thats why i suggested you the ABove mentioned FM..
regards
satesh
‎2006 Mar 28 10:05 AM
hi Divya,
<b>WS_FILENAME_GET</b> function module is obsolete, and results in errors on Unicode systems.
Suggest to use <b>FILE_OPEN_DIALOG</b> und <b>FILE_SAVE_DIALOG</b> Unicode-enabled methods of the cl_gui_frontend_services class.
Note:
New applications should restart on these methods instead of the function module. The function module is extended by a Support Package so that it diverts calls to the methods without the application having to be changed.
DATA ITAB_FILE1_TABLE TYPE FILETABLE.
DATA W_WSU_FILENAME01 TYPE STRING.
DATA RC_FILE TYPE I.
W_WSU_FILENAME01 = PR_IFILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=><b>FILE_OPEN_DIALOG</b>
EXPORTING
DEFAULT_FILENAME = W_WSU_FILENAME01
CHANGING
FILE_TABLE = ITAB_FILE1_TABLE
RC = RC_FILE
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
others = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DATA W_WSD_FILENAME02 TYPE STRING.
DATA W_WSD_FILETYPE02 TYPE CHAR10.
DATA W_WSD_FNAME TYPE STRING.
DATA W_WSD_PATH TYPE STRING.
DATA W_WSD_FPATH TYPE STRING.
DATA W_WSD_APPEND02 TYPE CHAR01.
CONSTANTS C_CANCEL TYPE C VALUE 'X'.
W_WSD_FILENAME02 = PR_EFILE.
W_WSD_FILETYPE02 = 'ASC'.
W_WSD_APPEND02 = 'A' .
IF W_WSD_APPEND02 = 'A' .
W_WSD_APPEND02 = 'X' .
ENDIF.
CALL METHOD CL_GUI_FRONTEND_SERVICES=><b>FILE_SAVE_DIALOG</b>
EXPORTING
DEFAULT_FILE_NAME = W_WSD_FILENAME02
CHANGING
FILENAME = W_WSD_FNAME
PATH = W_WSD_PATH
FULLPATH = W_WSD_FPATH
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
others = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Regards,
Santosh