PDA

Ver la Versión Completa : Función para buscar carpetas en Servidor


matiasguillermon
30/05/12, 13:11:44
Hola, necesito una función para seleccionar una carpeta (no archivo) del servidor. Una que funcione como la "TMP_GUI_BROWSE_FOR_FOLDER" pero para servidor. Muchas gracias

SAPING
30/05/12, 14:10:58
Hola, necesito una función para seleccionar una carpeta (no archivo) del servidor. Una que funcione como la "TMP_GUI_BROWSE_FOR_FOLDER" pero para servidor. Muchas gracias

Hola, fijate si esto te sirve: (si no es que entendi mal lo que necesitas)

*&---------------------------------------------------------------------*
*& Form F_TRAER_CONTENIDO
*----------------------------------------------------------------------*
* Adaptación / Copia de la función "RZL_READ_DIR_LOCAL"
*
* Descripción:
* -La función RZL_READ_DIR_LOCAL devuelve el contenido del directorio
* indicado con una extención de nombre de no mas de 32 caracteres.
* La adaptación consiste en que devuelva el contenido del directorio
* sin importar la extención del nombre
*----------------------------------------------------------------------*
* --> pe_name ruta del directorio a examinar
* <-- te_archivos tabla que contiene el listado de objetos del dir.
*----------------------------------------------------------------------*
FORM f_traer_contenido TABLES te_archivos TYPE tt_tabla
USING pe_name .
*** El type utilizado es de acuerdo al declarado globalmente segun
*** la necesidad de utilizacion de cada caso.
*** En este caso es del siguiente tipo:
* TYPES: BEGIN OF ty_tabla,
* name TYPE char100,
* size TYPE pfeflsize,
* END OF ty_tabla.
*
* TYPES tt_tabla TYPE STANDARD TABLE OF ty_tabla.


**********************************************************************
*** OBJETOS PROPIOS DE LA FUNCION "RZL_READ_DIR_LOCAL"
**********************************************************************
DATA: BEGIN OF line_tbl OCCURS 100.
INCLUDE STRUCTURE spflist.
DATA: END OF line_tbl.

DATA: loc_name(200).
DATA: loc_dir(200).
DATA: tmp_loc_dir(200).
DATA: loc_dir_len TYPE i.
DATA: full_name(400).
DATA: ad_rzl TYPE i VALUE 20. "reserviert für RZ-Leitstand
DATA: rzl_op_rd_dir TYPE i VALUE 14. " read directory

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

IF pe_name <> space.
loc_name = pe_name.
loc_dir = pe_name.
SHIFT loc_dir LEFT BY 2 PLACES.
loc_dir_len = STRLEN( loc_dir ).
loc_dir_len = loc_dir_len - 1.
SHIFT loc_dir CIRCULAR LEFT BY loc_dir_len PLACES.
IF loc_name(2) = '$(' AND loc_dir(1) = ')'.
loc_dir(1) = space.
SHIFT loc_dir CIRCULAR RIGHT BY loc_dir_len PLACES.
CALL 'C_SAPGPARAM' ID 'NAME' FIELD loc_dir
ID 'VALUE' FIELD loc_dir.

IF sy-subrc = 0.
full_name = loc_dir.
ELSE.
full_name = pe_name.
ENDIF.

ELSE.
full_name = pe_name.
ENDIF.

ELSE.
full_name = pe_name.
ENDIF.

REFRESH line_tbl.
************************************************************************
* Send Request, wait for Response
************************************************************************
CALL 'ALERTS' ID 'ADMODE' FIELD ad_rzl
ID 'OPCODE' FIELD rzl_op_rd_dir
ID 'FILE_NAME' FIELD full_name
ID 'DIR_TBL' FIELD line_tbl-*sys*.

**********************************************************************
*** WG_ARCHIVOS debe ser declarado del mismo tipo que se declaro el
*** parametro TABLA de este form
CASE sy-subrc.
WHEN 0.
LOOP AT line_tbl.
wg_archivos-size = line_tbl(11).
wg_archivos-name = line_tbl+12.
APPEND wg_archivos TO tg_archivos.
CLEAR wg_archivos.
ENDLOOP.
WHEN OTHERS. RAISE not_found.
ENDCASE.

ENDFORM. " F_TRAER_CONTENIDO

mysmb2
30/05/12, 14:27:12
Hola,
la función RZL_READ_DIR_LOCAL te va servir.
Saludos.
Hola, necesito una función para seleccionar una carpeta (no archivo) del servidor. Una que funcione como la "TMP_GUI_BROWSE_FOR_FOLDER" pero para servidor. Muchas gracias

matiasguillermon
30/05/12, 14:48:09
Gracias por las respuestas pero quizas no me entendieron, necesito una función que funcione exactamente igual que la función "TMP_GUI_BROWSE_FOR_FOLDER" (dicha función ejecuta un POPUP con la opción de elegir la carpeta localmente) pero para el servidor. La función que me pasaron "RZL_READ_DIR_LOCAL" se usa para obtener los archivos de una carpeta del servidor. En este momento estoy utilizando la función "F4_DXFILENAME_TOPRECURSION" y al finalizar elimino el nombre del archivo. Pero me gustaría que haga directamente la selección de carpeta. Por favor el que haya hecho esto se lo agradecería. Saludos

mysmb2
30/05/12, 18:04:30
con esta función podes seleccionar carpetas del servidor /SAPDMC/LSM_F4_SERVER_FILE aunque también permite elegir archivos.
Espero te sirva.
Saludos.

Ariel-StaFe
20/05/14, 17:00:11
ISU_M_GET_FILES_OF_DIR
Saludos