|
#1
|
|||
|
|||
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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|