Ver Mensaje Individual
  #2  
Viejo 30/05/12, 14:10:58
SAPING SAPING is offline
Senior Member
 
Fecha de Ingreso: may 2010
Localización: Buenos Aires, Argentina
Mensajes: 199

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
Responder Con Cita