‎2007 Jun 19 10:21 AM
Hi,
I want to put a parameter for entering the file path, in the Selection Screen dynamically. If the user will enter a wrong file path, it should throw error.
I hope, this can be done through the use of RLGRAP structure.
Can anybody drop me a piece of code for doing the same in my S. Screen.
Thanks
Sangram
‎2007 Jun 19 10:23 AM
parameters : p_file like rlgrap-filename.
data : v_repid like sy-repid.
INITIALIZATION.
v_repid = sy-repid.
*Input Help for the Download Directory
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = v_repid
dynpro_number = syst-dynnr
field_name = 'P_FILE'
IMPORTING
file_name = p_file.Message was edited by:
Chandrasekhar Jagarlamudi
‎2007 Jun 19 10:24 AM
************************************************************************
Selection Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER: p_file LIKE ibipparms-path OBLIGATORY.
SELECTION-SCREEN end of block b1.
regards
prabhu
reward if it is helpful
‎2007 Jun 19 10:25 AM
PARAMETERS : p_ifname TYPE rlgrap-filename OBLIGATORY.
* At Selection Screen for Input File Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ifname.
* Making F4 enale at selection scree for input file location
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_ifname.Regards
Gopi
‎2007 Jun 19 10:25 AM
Hello,
Check this sample code.
PARAMETERS: FILENAME LIKE EPSF-EPSDIRNAM
DEFAULT 'FS000P01D48ANSKASAP_R3_ANSKA_FILES.TXT'.
PARAMETERS: AP RADIOBUTTON GROUP GRP1,
PC RADIOBUTTON GROUP GRP1.
SELECTION-SCREEN END OF BLOCK BLCK1.
SELECTION-SCREEN BEGIN OF BLOCK BLCK2 WITH FRAME TITLE TEXT-004.
IF NOT AP IS INITIAL.
PERFORM GET_FILENAME CHANGING FILENAME
RC.
PERFORM UPLOAD_APPLICATION_SERVER TABLES IT_FILE
USING FILENAME
CHANGING RC.
ENDIF.
IF NOT PC IS INITIAL.
PERFORM UPLOAD_WORKSTATION TABLES IT_FILE
USING FILENAME
CHANGING RC.
ENDIF.
FORM GET_FILENAME CHANGING P_FILENAME
P_RC.
DATA: FILE_TABLE TYPE TABLE OF SDOKPATH WITH HEADER LINE.
DATA: DIR_TABLE TYPE TABLE OF SDOKPATH WITH HEADER LINE.
DATA: DIRECTORY TYPE SDOKPATH.
* PERFORM check_filename_or_directory USING p_filename
* CHANGING rc.
PERFORM GET_DIRECTORY USING P_FILENAME
CHANGING DIRECTORY.
*
* CHECK rc = 0.
*
* CALL FUNCTION 'TMP_GUI_DIRECTORY_LIST_FILES'
* EXPORTING
* directory = p_filename
* filter = 'SAPR3_*.TXT'
** IMPORTING
** FILE_COUNT =
** DIR_COUNT =
* TABLES
* file_table = file_table
* dir_table = dir_table
* 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.
OPEN DATASET P_FILENAME FOR INPUT IN TEXT MODE.
IF SY-SUBRC = 0.
DO.
READ DATASET P_FILENAME INTO FILE_TABLE.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
APPEND FILE_TABLE.
ENDDO.
CLOSE DATASET P_FILENAME.
P_RC = 0.
ELSE.
P_RC = 4.
ENDIF.
P_RC = 4.
* Der Dateiname hat folgendes Format SAPR3_YYYYMMDDHHMMSS.TXT
* LOOP AT dir_list WHERE rc = 0.
LOOP AT FILE_TABLE.
* Dateien vom heutigen Tag überprüfen ob schon verarbeitet
* CHECK dir_list-name(5) = 'SAPR3'.
IF FILE_TABLE-PATHNAME+6(8) = SY-DATUM.
CONCATENATE DIRECTORY FILE_TABLE-PATHNAME INTO P_FILENAME.
* Wurde die Datei schon einmal verarbeitet
SELECT SINGLE * FROM Z48C_ANSKA_SAP_P
WHERE FILENAME = P_FILENAME.
* Die Datei wurde schon einmal verarbeitet Filename löschen damit, die
* Datei nicht geöffnet werden kann
IF SY-SUBRC = 0.
CLEAR P_FILENAME.
ELSE.
* Die Datei wurde noch nicht verarbeitet. Die Datei in Tabelle speicher
* damit sie nicht noch einmal verarbeitet wird
GET TIME.
Z48C_ANSKA_SAP_P-FILENAME = P_FILENAME.
Z48C_ANSKA_SAP_P-DATUM = SY-DATUM.
Z48C_ANSKA_SAP_P-UZEIT = SY-UZEIT.
INSERT Z48C_ANSKA_SAP_P.
COMMIT WORK.
CLEAR P_RC.
EXIT. "from loop
ENDIF.
ENDIF.
ENDLOOP.
IF P_RC = 4.
P_FILENAME = DIRECTORY.
ENDIF.
ENDFORM. " get_filename
FORM GET_DIRECTORY USING P_FILENAME
CHANGING P_DIRECTORY.
DATA: SAVE_FDPOS LIKE SY-FDPOS.
P_DIRECTORY = P_FILENAME.
DO.
SHIFT P_DIRECTORY BY 1 PLACES LEFT.
IF P_DIRECTORY(1) = SPACE.
EXIT.
ENDIF.
IF P_DIRECTORY(1) CP '*/*' OR
P_DIRECTORY(1) CP '**'.
SAVE_FDPOS = SY-INDEX.
ENDIF.
ENDDO.
ADD 1 TO SAVE_FDPOS.
P_DIRECTORY = P_FILENAME(SAVE_FDPOS).
ENDFORM. " get_directory
FORM UPLOAD_APPLICATION_SERVER TABLES P_ITAB_DATA STRUCTURE IT_FILE
USING P_FILENAME
CHANGING P_RC.
CHECK P_RC IS INITIAL.
OPEN DATASET P_FILENAME FOR INPUT IN TEXT MODE.
IF SY-SUBRC = 0.
DO.
READ DATASET P_FILENAME INTO P_ITAB_DATA.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
APPEND P_ITAB_DATA.
ENDDO.
CLOSE DATASET P_FILENAME.
P_RC = 0.
ELSE.
P_RC = 4.
ENDIF.
ENDFORM. " upload_application_server
FORM UPLOAD_WORKSTATION TABLES P_ITAB_DATA STRUCTURE IT_FILE
USING P_FILENAME
CHANGING P_RC.
DATA: FILENAME LIKE RLGRAP-FILENAME.
FILENAME = P_FILENAME.
CLEAR P_RC.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
* CODEPAGE = ' '
FILENAME = FILENAME
FILETYPE = 'ASC'
* HEADLEN = ' '
* LINE_EXIT = ' '
* TRUNCLEN = ' '
* USER_FORM = ' '
* USER_PROG = ' '
* DAT_D_FORMAT = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = P_ITAB_DATA
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 <> 0.
P_RC = SY-SUBRC.
ENDIF.
ENDFORM. " upload_workstation
If useful reward.
Vasanth
‎2007 Jun 19 10:31 AM
Hi,
see this code.
TABLES : VBAP.
TABLES:SSCRFIELDS.
DATA : T_VBAP LIKE VBAP OCCURS 0 WITH HEADER LINE.
DATA : S_FILE TYPE STRING.
SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TIT1.
PARAMETERS : P_FILE(30) TYPE C DEFAULT 'C:\VBAP.TXT',
RB_DWLD RADIOBUTTON GROUP GR1 DEFAULT 'X',
RB_UPLD RADIOBUTTON GROUP GR1.
SELECTION-SCREEN END OF BLOCK BL1.
INITIALIZATION.
TIT1 = 'VBAP DETAILS'.
AT SELECTION-SCREEN.
S_FILE = P_FILE.
CASE SSCRFIELDS-UCOMM.
WHEN 'ONLI'.
IF RB_DWLD = 'X'.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE T_VBAP.
T_VBAP-VBELN = 'gfhgh'.
T_VBAP-POSNR = 'GFGDFG'.
append t_vbap.
loop at t_vbap.
write:/ t_vbap-vbeln.
endloop.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME = S_FILE
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = '*'
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = T_VBAP.
ENDIF.
ENDCASE.
<b>reward points if helpful</b>
rgds,
bharat.
‎2007 Jun 19 10:37 AM
Hi,
Find the sample code for your query...
*********************************************************************
PARAMETERS : P_FILE1 LIKE RLGRAP-FILENAME
OBLIGATORY DEFAULT C_FNAME1 "'C:\TEST'
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE1.
IF PRES EQ C_X.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = P_FILE1.
ENDIF.
*********************************************************************
Hope this will be helpful to you.
Best regards,
Devesh
‎2007 Jun 19 10:44 AM
Hi,
Check this sample Code:
DATA : str1 TYPE localfile,
str2 TYPE char3.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_file2 TYPE localfile OBLIGATORY."FILE NAME
SELECTION-SCREEN END OF BLOCK b1 .
************************************************************************
AT-SELECTION-SCREEN DECALRATION *
*
************************************************************************
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file2.
----
*clear : P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file2.
AT SELECTION_SCREEN.
CASE sy-ucomm.
WHEN 'ONLI'.
IF p_file2 IS NOT INITIAL.
VALIDATE FILE TYPE
SPLIT p_file2 AT '.' INTO str1 str2.
TRANSLATE str2 TO LOWER CASE.
IF str2 NE 'txt'or str2 NE 'xls'.
please enter '.txt' file format
MESSAGE i001(zz) WITH 'Enter a valid path'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDCASE.
‎2007 Jun 19 10:57 AM
PARAMETERS: p_infile LIKE rlgrap-filename
OBLIGATORY DEFAULT '/usr/sap/'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_infile.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = p_infile
mask = ',*.txt.'
mode = 'O'
title = 'Upload File'(078)
IMPORTING
filename = p_infile
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
.rewardd points if it is usefull ...
Girish