lunes, 14 de enero de 2013

SAP backup de programas Z

Programa para hacer un backup de todos los programas z de SAP


**************************************************************
* Programa : Z_PROGRAMS_DOWNLOAD.                            *
* Módulo   : BC - Basis.                                     *
* Consultor ABAP     : Alvaro Tejada Galindo.                *
* February 14, 2006   12:33:22 PM                            *
**************************************************************

REPORT  Z_DUMMY_ATG NO STANDARD PAGE HEADING.
TABLES TRDIR.
*=============================================================
* 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.
SELECT-OPTIONS PRGNAME FOR TRDIR-NAME.
PARAMETERS:
           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 IN PRGNAME.

  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                                 *
*&----------------------------------------------------------*
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

viernes, 11 de enero de 2013


¿Como encontrar el programa de control de un formulario?

Utiliza la transacción SE16 para ver la tabla TNAPR. Introduce el nombre del formulario en el campo FONAM.
El programa está en PGNAM.