Anda di halaman 1dari 4

Search help to find files on application server

*&---------------------------------------------------------------------*
*& Module pool
ZDEV_SEARCHHELP_APPL
*
*
*&---------------------------------------------------------------------*
* Program Name:
* SAP Name : Version :
* Programmer :
* Last Update :
* Analyst/Specifier : *
* Program Type : ABAP *
*-----------------------------------------------------------------*
* Description *
*-----------------------------------------------------------------*
INCLUDE zdev_searchhelp_appl_top

" global Data

INCLUDE zdev_searchhelp_appl_e01

" Events-Routines

INCLUDE zdev_searchhelp_appl_f01

" FORM-Routines

*&---------------------------------------------------------------------*
*& Include ZDEV_SEARCHHELP_APPL_TOP
*&---------------------------------------------------------------------*
REPORT zdev_searchhelp_appl.
*----------------------------------------------------------------------*
* Global Types
TYPES : BEGIN OF ty_yalb_f4struct_applfile,
app_file_name TYPE char40,
END OF ty_yalb_f4struct_applfile.
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
*CONSTANTS
*----------------------------------------------------------------------*
CONSTANTS : gc_app_file_name
TYPE dfies-fieldname VALUE 'APP_FILE_NAME'.
CONSTANTS : gc_value_org
TYPE char1
VALUE 'S'.
CONSTANTS : gc_fpath
TYPE string
VALUE 'P_FPATH'.
*----------------------------------------------------------------------*
* Global Internal table
*----------------------------------------------------------------------*
DATA: gt_yalb_f4struct_applfile TYPE TABLE OF ty_yalb_f4struct_applfile.
*----------------------------------------------------------------------*
*SELECTION CRITERIA
*----------------------------------------------------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS
: p_fpath
TYPE dxfilename OBLIGATORY DEFAULT '.'.
PARAMETERS
: p_filext TYPE char3 OBLIGATORY DEFAULT 'CSV'.
SELECTION-SCREEN: END OF BLOCK b1.

*&---------------------------------------------------------------------*
*& Include ZDEV_SEARCHHELP_APPL_E01
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fpath.
* get app_file_name from file name.
PERFORM get_app_file_name_from_path CHANGING p_fpath.
AT SELECTION-SCREEN.
* Check and validate app file name.
PERFORM check_app_file_name.

*&---------------------------------------------------------------------*
*& Include ZDEV_SEARCHHELP_APPL_F01
*&---------------------------------------------------------------------*
FORM get_app_file_name_from_path CHANGING p_fpath TYPE dxfilename.
* Local work area
DATA: lwa_return_tab
TYPE ddshretval.
DATA: lwa_dynpread
TYPE dynpread.
* Local internal table
DATA: lt_return_tab
TYPE TABLE OF ddshretval.
DATA: lt_dynpread
TYPE STANDARD TABLE OF dynpread.
* Local variable
DATA : lv_dir_path TYPE epsf-epsdirnam.
* assign value
lwa_dynpread-fieldname = gc_fpath.
APPEND lwa_dynpread TO lt_dynpread.
* Read screen values
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname
= sy-repid
dynumb
= sy-dynnr
TABLES
dynpfields
= lt_dynpread
EXCEPTIONS
invalid_abapworkarea = 04
invalid_dynprofield = 08
invalid_dynproname
= 12
invalid_dynpronummer = 16
invalid_request
= 20
no_fielddescription = 24
undefind_error
= 28.
IF sy-subrc EQ 0.
READ TABLE lt_dynpread INTO lwa_dynpread INDEX 1.
IF sy-subrc = 0.
lv_dir_path = lwa_dynpread-fieldvalue.
PERFORM get_app_file_name USING lv_dir_path.
ENDIF.
ENDIF.
* search help FM
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= gc_app_file_name

dynpprog
= sy-repid
dynpnr
= sy-dynnr
value_org
= gc_value_org
TABLES
value_tab
= gt_yalb_f4struct_applfile
return_tab
= lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS
= 3.
IF sy-subrc = 0.
READ TABLE lt_return_tab INTO lwa_return_tab INDEX 1.
IF sy-subrc = 0.
p_fpath = lwa_return_tab-fieldval.
ENDIF.
ENDIF.
ENDFORM.
" GET_app_file_name_FROM_PATH
*&---------------------------------------------------------------------*
*&
Form CHECK_app_file_name
*&---------------------------------------------------------------------*
*
Validate the app file name
*&---------------------------------------------------------------------*
FORM check_app_file_name.
* Local internal table
DATA : lt_dynpread TYPE STANDARD TABLE OF dynpread.
* Local work area
DATA : lwa_dynpread TYPE dynpread.
* Local variable
DATA : lv_dir_path TYPE epsf-epsdirnam.
lwa_dynpread-fieldname = gc_fpath.
APPEND lwa_dynpread TO lt_dynpread.
* Read screen values
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname
= sy-repid
dynumb
= sy-dynnr
TABLES
dynpfields
= lt_dynpread
EXCEPTIONS
invalid_abapworkarea = 04
invalid_dynprofield = 08
invalid_dynproname
= 12
invalid_dynpronummer = 16
invalid_request
= 20
no_fielddescription = 24
undefind_error
= 28.
IF sy-subrc EQ 0.
READ TABLE lt_dynpread INTO lwa_dynpread INDEX 1.
IF sy-subrc EQ 0.
lv_dir_path = lwa_dynpread-fieldvalue.
*
Get the app_file_name from the path provided
PERFORM get_app_file_name USING lv_dir_path.
ENDIF.
ENDIF.
ENDFORM.
" CHECK_app_file_name
*&---------------------------------------------------------------------*

*&
Form GET_app_file_name
*&---------------------------------------------------------------------*
*
Get the app file name
*&---------------------------------------------------------------------*
FORM get_app_file_name USING pv_dir_path TYPE epsf-epsdirnam.
* Local internal table
DATA : lt_dir_list
TYPE STANDARD TABLE OF epsfili.
* Local work area
DATA : lwa_dir TYPE epsfili.
* Local variables
DATA : lv_str_len TYPE i.
* Get all directory files in specified path
CALL FUNCTION 'EPS_GET_DIRECTORY_LISTING'
EXPORTING
dir_name
= pv_dir_path
TABLES
dir_list
= lt_dir_list
EXCEPTIONS
invalid_eps_subdir
= 1
sapgparam_failed
= 2
build_directory_failed = 3
no_authorization
= 4
read_directory_failed = 5
too_many_read_errors
= 6
empty_directory_list
= 7
OTHERS
= 8.
IF sy-subrc = 0.
LOOP AT lt_dir_list INTO lwa_dir.
lv_str_len = STRLEN( lwa_dir-name ).
IF lv_str_len >= 3.
lv_str_len = lv_str_len - 3.
ENDIF.
IF lwa_dir-name+lv_str_len(3) EQ p_filext OR lwa_dir-name+lv_str_len(3)
EQ p_filext.
lv_str_len = STRLEN( lwa_dir-name ).
APPEND lwa_dir TO gt_yalb_f4struct_applfile.
ENDIF.
ENDLOOP.
SORT gt_yalb_f4struct_applfile ASCENDING.
DELETE ADJACENT DUPLICATES FROM gt_yalb_f4struct_applfile.
IF sy-subrc <> 0.
CLEAR lwa_dir.
ENDIF.
ENDIF.
ENDFORM.
" GET_app_file_name

Anda mungkin juga menyukai