Tabla TNAPR – tratamiento de mensajes

11 12 2007

La tabla transparente TNAPR contiene toda la información referida al tratamiento de clase de mensajes.

Se puede buscar u obtener información de:

  • Clase de mensaje
  • Medio de envío
  • Aplicación
  • Programa impresor
  • Rutina form
  • Formulario

Es muy útil cuando hay que modificar formularios, ya sean sapscripts o smartforms.


Technorati tags:





TRY-CATCH para ABAP

8 12 2007

El otro día viendo la documentación de SAP me encontré que existe la posibilidad de utilizar en ABAP el TRY-CATCH (muy usado en Java).
TRY-CATCH sirve para el manejo de errores y excepciones. Y nos puede ser muy útil para evitar los odiosos Short Dumps.


Dejo un ejemplo donde trato de insertar un registro en una tabla Z usando try-catch para evitar errores de SQL:

*Intento insertar un registro en la tabla ZPROYECTOS, si hay algún tipo de error de SQL (que generalmente arroja un dump)… manejo la excepción con un mensaje de advertencia.
                TRY.
                    INSERT INTO ZPROYECTOS VALUES WA_ZPROYEC.  
                  CATCH CX_SY_DYNAMIC_OSQL_ERROR.
                    MESSAGE ‘Error al actualizar la tabla ZPROYECTOS’ TYPE ‘I’.
                ENDTRY.


Technorati tags:





RSTXPDFT4 – Pasar orden de spool (formulario) a PDF

7 12 2007

RSTXPDFT4 es un programa estándar que se corre desde la transacción SE38 y que sirve para convertir un sapscript (formulario) o orden de spool a pdf.

Solamente hay que pasarle como filtro el número de una orden de spool y si deseamos una ruta para guardarla en PDF.
Para encontrar una orden de spool, hay que ir al menú Sistema –> Órdenes SPOOL propias o bien buscarla en la tabla TSP01.


Technorati tags:





Pasar un formulario a PDF

6 12 2007

Es común que nos pidan hacer un resguardo de un formulario. Y probablemente tengamos que hacer el backup a PDF.
Con este código vamos a poder tomar una orden de spool, por ejemplo de un formulario, para luego crear el PDF.


  DATA: IT_TSP01 LIKE TSP01 OCCURS 0 WITH HEADER LINE.
  DATA: NUMBYTES TYPE I,
             PDFSPOOLID LIKE TSP01-RQIDENT,
             IT_PDF LIKE TLINE OCCURS 0.

*Lo primero es buscar el número de la orden de spool en la tabla  TSP01. *En este caso le paso el nombre del usuario y el mandante.
  SELECT RQIDENT
     INTO (IT_TSP01-RQIDENT)
     FROM TSP01
     WHERE RQOWNER EQ SY-UNAME
       AND RQCLIENT EQ SY-MANDT.
    APPEND IT_TSP01.
  ENDSELECT.

*Ordeno en forma descendente para quedarme con el último formulario *generado
  SORT IT_TSP01 DESCENDING.

*Al siguiente módulo de función le paso el número de la orden para que *me devuelva el formulario dentro de la tabla IT_PDF
  CALL FUNCTION ‘CONVERT_OTFSPOOLJOB_2_PDF’
    EXPORTING
      SRC_SPOOLID              = IT_TSP01-RQIDENT
    IMPORTING
      PDF_BYTECOUNT            = NUMBYTES
    TABLES
      PDF                      = IT_PDF
    EXCEPTIONS
      ERR_NO_OTF_SPOOLJOB      = 1
      ERR_NO_SPOOLJOB          = 2
      ERR_NO_PERMISSION        = 3
      ERR_CONV_NOT_POSSIBLE    = 4
      ERR_BAD_DSTDEVICE        = 5
      USER_CANCELLED           = 6
      ERR_SPOOLERROR           = 7
      ERR_TEMSEERROR           = 8
      ERR_BTCJOB_OPEN_FAILED   = 9
      ERR_BTCJOB_SUBMIT_FAILED = 10
      ERR_BTCJOB_CLOSE_FAILED  = 11
      OTHERS                   = 12.

  IF SY-SUBRC EQ 0.

*Una vez que tengo el formulario en la tabla hago el download 
    CALL FUNCTION ‘GUI_DOWNLOAD’
      EXPORTING
        BIN_FILESIZE            = NUMBYTES
        FILENAME                = P_FILE
        FILETYPE                = ‘BIN’
      TABLES
        DATA_TAB                = IT_PDF
      EXCEPTIONS
        FILE_WRITE_ERROR        = 1
        NO_BATCH                = 2
        GUI_REFUSE_FILETRANSFER = 3
        INVALID_TYPE            = 4
        NO_AUTHORITY            = 5
        UNKNOWN_ERROR           = 6.

    IF SY-SUBRC EQ 0.
      MESSAGE I014(ZSM) WITH P_FILE
           ‘ .Nombre de archivo creado’
           ‘ con Nro. Doc. Interno Sap.’.
    ELSE.
      MESSAGE I014(ZSM) WITH P_FILE.
      DELETE FROM TSP01 WHERE RQIDENT EQ T_TSP01-RQIDENT.
    ENDIF.

  ENDIF.


Technorati tags: