PDA

Ver la Versión Completa : Descarga de programa a local


mbonilla
05/06/06, 09:00:25
Buenas,
¿Alguien me puede decir si conoce algún programa que baje un
programa a local, pero con los elementos de texto también?

Saludos, Mª del Mar

Blag
07/06/06, 14:54:36
Hola mbonilla:

Hace un tiempo hice un pequeño programa que hace lo que necesitas :) Baja el fuente, los includes y los elementos de texto ;)


************************************************************************
* Programa : Z_PROGRAMS_DOWNLOAD. *
* Módulo : BC - Basis. *
* Consultor funcional: Alvaro Tejada Galindo. *
* Consultor ABAP : Alvaro Tejada Galindo. *
************************************************************************

REPORT Z_DUMMY_ATG NO STANDARD PAGE HEADING.

***D010INC --> Tabla con Includes.

*=======================================================================
* VARIABLES
*=======================================================================

DATA: FULLNAME(30) TYPE C,
ONE LIKE PCFILE-DRIVE,
TWO LIKE PCFILE-PATH,
FILEPATH(128) TYPE C.

DATA: APP_NAME TYPE STRING,
DDTEXT_NAME TYPE STRING,
DUMMY TYPE STRING,
INCLUDE_NAME TYPE STRING.

*=======================================================================
* TABLAS INTERNAS
*=======================================================================

DATA: BEGIN OF SOURCE_TABLE OCCURS 0,
LINEA(150) TYPE C.
DATA: END OF SOURCE_TABLE.

DATA: BEGIN OF INCLUDE_TABLE OCCURS 0,
LINEA(150) TYPE C.
DATA: END OF INCLUDE_TABLE.

DATA: BEGIN OF DYNPRO_TABLE OCCURS 0,
LINEA(250) TYPE C.
DATA: END OF DYNPRO_TABLE.

DATA: BEGIN OF T_TRDIR OCCURS 0,
NAME LIKE TRDIR-NAME,
END OF T_TRDIR.

DATA: BEGIN OF T_LOG OCCURS 0,
ERROR TYPE STRING,
END OF T_LOG.

DATA: DATA_DDTEXT TYPE STANDARD TABLE OF TEXTPOOL WITH HEADER LINE.

*=======================================================================
* SELECTION-SCREEN
*=======================================================================

SELECTION-SCREEN BEGIN OF BLOCK TEST WITH FRAME.
PARAMETERS:
PRGNAME LIKE TRDIR-NAME,
LISTNAME LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK TEST.

*=======================================================================
* AT SELECTION-SCREEN
*=======================================================================

AT SELECTION-SCREEN ON VALUE-REQUEST FOR LISTNAME.
PERFORM GET_FILENAME CHANGING LISTNAME.

*=======================================================================
* START-OF-SELECTION
*=======================================================================

START-OF-SELECTION.
PERFORM LOAD_DATA.

IF NOT T_LOG[] IS INITIAL.
WRITE: 'Se encontraron los siguientes errores: '.
ENDIF.

ULINE.
SKIP 1.

LOOP AT T_LOG.
WRITE:/ T_LOG-ERROR.
ENDLOOP.

*---------------------------------------------------------------------*
* FORM GET_FILENAME *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM GET_FILENAME CHANGING LISTNAME.

CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = LISTNAME
DEF_PATH = 'C:\downloads\lista'
MASK = ',*.*,*.*. '
MODE = 'S'
TITLE = 'Guardar en'
IMPORTING
FILENAME = LISTNAME
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
ENDFORM. "GET_FILENAME

*---------------------------------------------------------------------*
* FORM LOAD_DATA *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM LOAD_DATA.
DATA: W_FILE LIKE PCFILE-PATH.
W_FILE = LISTNAME.
CALL FUNCTION 'PC_SPLIT_COMPLETE_FILENAME'
EXPORTING
COMPLETE_FILENAME = W_FILE
IMPORTING
DRIVE = ONE
PATH = TWO
EXCEPTIONS
INVALID_DRIVE = 1
INVALID_EXTENSION = 2
INVALID_NAME = 3
INVALID_PATH = 4
OTHERS = 5.
CONCATENATE ONE ':' TWO INTO FILEPATH.

CONCATENATE PRGNAME '%' INTO FULLNAME.

SELECT NAME
INTO TABLE T_TRDIR
FROM TRDIR
WHERE NAME LIKE FULLNAME.

IF SY-SUBRC EQ 0.
PERFORM FILL_LIST.

PERFORM DOWNLOAD_APPS.
ENDIF.

ENDFORM. "LOAD_DATA

*---------------------------------------------------------------------*
* FORM FILL_LIST *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM FILL_LIST.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FILEPATH
FILETYPE = 'ASC'
TABLES
DATA_TAB = T_TRDIR
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 02
INVALID_FILESIZE = 03
INVALID_TABLE_WIDTH = 04
INVALID_TYPE = 05
NO_BATCH = 06
UNKNOWN_ERROR = 07.
ENDFORM. "FILL_LIST

*---------------------------------------------------------------------*
* FORM FILL_LIST *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM FILL_LIST_INCLUDE.

CONCATENATE FILEPATH 'Includes.txt' INTO LISTNAME.

CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = LISTNAME
FILETYPE = 'ASC'
MODE = 'A'
TABLES
DATA_TAB = INCLUDE_TABLE
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 02
INVALID_FILESIZE = 03
INVALID_TABLE_WIDTH = 04
INVALID_TYPE = 05
NO_BATCH = 06
UNKNOWN_ERROR = 07.
ENDFORM. "FILL_LIST_INCLUDE

*&---------------------------------------------------------------------*
*& Form DOWNLOAD_APPS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM DOWNLOAD_APPS.

LOOP AT T_TRDIR.
CLEAR: APP_NAME, INCLUDE_NAME.

REFRESH: SOURCE_TABLE.
CLEAR: SOURCE_TABLE.

READ REPORT T_TRDIR-NAME INTO SOURCE_TABLE.
READ TEXTPOOL T_TRDIR-NAME INTO DATA_DDTEXT LANGUAGE SY-LANGU.

CONCATENATE FILEPATH T_TRDIR-NAME '.abp' INTO APP_NAME.
CONCATENATE FILEPATH T_TRDIR-NAME '_DDTEXT.txt' INTO DDTEXT_NAME.

PERFORM DOWNLOAD_FORM USING APP_NAME.
PERFORM DOWNLOAD_DDTEXT USING DDTEXT_NAME.

LOOP AT SOURCE_TABLE.
SEARCH SOURCE_TABLE-LINEA FOR 'INCLUDE'.
IF SY-SUBRC EQ 0.

IF SOURCE_TABLE-LINEA+0(8) NE 'INCLUDE'.
CONTINUE.
ENDIF.

CLEAR INCLUDE_NAME.

SPLIT SOURCE_TABLE-LINEA AT SPACE
INTO DUMMY INCLUDE_NAME.
SPLIT INCLUDE_NAME AT '.'
INTO INCLUDE_NAME DUMMY.

REFRESH: SOURCE_TABLE.
CLEAR: SOURCE_TABLE.

MOVE INCLUDE_NAME TO INCLUDE_TABLE.
READ TABLE INCLUDE_TABLE WITH KEY LINEA = INCLUDE_TABLE.
IF SY-SUBRC NE 0.
APPEND INCLUDE_TABLE.
ENDIF.

READ REPORT INCLUDE_TABLE INTO SOURCE_TABLE.

IF SY-SUBRC EQ 0.
CONCATENATE FILEPATH INCLUDE_NAME '.abp' INTO INCLUDE_NAME.
PERFORM DOWNLOAD_FORM USING INCLUDE_NAME.
PERFORM FILL_LIST_INCLUDE.
ENDIF.

ENDIF.
ENDLOOP.

ENDLOOP.

ENDFORM. "DOWNLOAD_APPS

*---------------------------------------------------------------------*
* FORM DOWNLOAD_FORM *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM DOWNLOAD_FORM USING APP_NAME.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = APP_NAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = SOURCE_TABLE
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
FILE_NOT_FOUND = 19
OTHERS = 22.

IF SY-SUBRC NE 0.
T_LOG-ERROR = APP_NAME.
APPEND T_LOG.
ENDIF.
ENDFORM. "DOWNLOAD_FORM

*---------------------------------------------------------------------*
* FORM DOWNLOAD_DDTEXT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM DOWNLOAD_DDTEXT USING DDTEXT_NAME.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = DDTEXT_NAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = DATA_DDTEXT
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
FILE_NOT_FOUND = 19
OTHERS = 22.

IF SY-SUBRC NE 0.
T_LOG-ERROR = DDTEXT_NAME.
APPEND T_LOG.
ENDIF.
ENDFORM. "DOWNLOAD_DDTEXT


Saludos,

Blag :mad: