Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Parameters

Former Member
0 Likes
852

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

8 REPLIES 8
Read only

Former Member
0 Likes
807


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

Read only

Former Member
0 Likes
807

************************************************************************

  • 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

Read only

gopi_narendra
Active Contributor
0 Likes
807
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

Read only

Former Member
0 Likes
807

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

Read only

Former Member
0 Likes
807

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.

Read only

Former Member
0 Likes
807

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

Read only

Former Member
0 Likes
807

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.

Read only

Former Member
0 Likes
807
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