Matchcode Browser Server (buscador de directorios del servidor)

13 08 2008

Con la siguiente función vamos a poder habilitar el matchcode para que abra un browser file (explorador de directorios) del servidor. Esto nos va a servir para hacer upload y download de archivos.

Acá el código que debemos ingresar en nuestros programas:

* Constantes locales
  CONSTANTS:lc_p TYPE c VALUE ‘P’,
                      lc_a TYPE dxfields-location VALUE ‘A’.

* Variables locales
  DATA: li_host TYPE STANDARD TABLE OF msxxlist,
             lw_host TYPE msxxlist,
             lv_path TYPE dxfields-longpath,
             lv_ubicacion(1) TYPE c,
             lv_abend  TYPE c.

*En P_FILE va a quedar guardada la ruta del archivo del servidor
PARAMETERS: P_FILE LIKE RLGRAP-FILENAME.

*- Machcode busqueda de archivo del servidor
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

*-Nombre del servidor
  CALL FUNCTION ‘RFC_GET_LOCAL_SERVERS’
    TABLES
      hosts         = li_host
    EXCEPTIONS
      not_available = 1
      OTHERS        = 2.

  IF sy-subrc IS INITIAL.

*-Nombre del servidor a la estructura
    CLEAR lw_host.
    READ TABLE li_host
               INTO lw_host
               INDEX 1.

*-Obtengo el path
    CALL FUNCTION ‘F4_DXFILENAME_TOPRECURSION’
      EXPORTING
        i_location_flag = lc_a
        i_server        = lw_host-name
      IMPORTING
        o_location_flag = lv_ubicacion
        o_path          = lv_path
        abend_flag      = lv_abend
      EXCEPTIONS
        rfc_error       = 1
        error_with_gui  = 2
        OTHERS          = 3.

*-Si se obtiene un path
    IF sy-subrc    IS INITIAL AND
       NOT lv_path IS INITIAL AND
       lv_abend    IS INITIAL.

*-Devuelvo ruta al parametro de selección
      p_file = lv_path.

    ENDIF.

  ENDIF.


Technorati tags:





Cómo obtener los Status de Sistema y Usuario

28 06 2008

En todo tipo de órdenes… ya sean de fabricación, de trabajo, etc. Una de las cosas que identifican en qué estado se encuentran las órdenes son los status de sistema y de usuario:
image 

Para cuando tengan que programar reportes donde deben mostrar o saber los status de las órdenes pueden utilizar las siguientes 2 funciones:

  • Status de sistema: STATUS_TEXT_EDIT
  • Status de usuario: ALM_ME_READ_USER_STATUS

Technorati tags:





Enviar e-mails desde SAP

23 01 2008

Con la función SO_DOCUMENT_SEND_API1 se pueden enviar mails desde nuestros programas.
Hay que tener en cuenta que una vez que se ejecuta la función, el email debe ser liberado con la transacción SCOT (guía de configuración).


Technorati tags:





Download de archivo con formato CSV (campos separados por coma)

21 11 2007

Usando el módulo de función SAP_CONVERT_TO_CSV_FORMAT vamos a poder convertir nuestra tabla interna en una tabla con formato de separación por coma. Para luego poder generar un archivo.


Veamos el siguiente ejemplo:

*Declaramos el Type pool para la tabla de salida
TYPE-POOLS: truxs.

*Declaración de la tabla interna donde vamos poner los datos
DATA: BEGIN OF IT_TABLA1 OCCURS 0,
                  campo1  LIKE tabla-campo1,
                  campo2  LIKE tabla-campo2,
                  campo3  LIKE tabla-campo3,
           END OF IT_TABLA1.

*Declaración de la tabla con formato CSV
DATA: IT_TABLA2 TYPE truxs_t_text_data.

 

*Luego de llenar la tabla IT_TABLA1 con los datos
*Convertimos la tabla a formato CSV
CALL FUNCTION ‘SAP_CONVERT_TO_CSV_FORMAT’
    EXPORTING
       i_field_seperator = ‘;’
    TABLES
       i_tab_sap_data = IT_TABLA1

    CHANGING
       i_tab_converted_data = IT_TABLA2
    EXCEPTIONS
       conversion_failed = 1
       others = 2.
IF sy-subrc <> 0.
   MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

*Hacemos la bajada del archivo utilizando la tabla
*que obtuvimos en el paso anterior.
CALL FUNCTION ‘GUI_DOWNLOAD’
    EXPORTING
       filename = ‘C:\prueba.txt’
    TABLES
       data_tab = IT_TABLA2

    EXCEPTIONS
       FILE_WRITE_ERROR = 1
       NO_BATCH = 2
       GUI_REFUSE_FILETRANSFER = 3
       INVALID_TYPE = 4
       NO_AUTHORITY = 5
       UNKNOWN_ERROR = 6.


Technorati tags:





Función para sumarle meses a una fecha

17 11 2007

La siguiente función sirve para sumarle/agregarle meses a una fecha.

A la función le pasamos como parámetros una fecha de entrada (inicial) y un número de meses. La función nos devolverá una fecha que será el resultado de agregar el número de meses a la fecha inicial.


*——————————————————————————-
*LV_DATE_ENT : Fecha de entrada a la que le calculo los meses
*LV_MES: Cantidad de meses que le sumo a LV_DATE_ENT
*LV_DATE_SAL : Fecha que me devuelve la función

*——————————————————————————-

CALL FUNCTION ‘HR_PSD_DATES_ADD_MONTHS’
    EXPORTING
      V_DATE       = LV_DATE_ENT
      V_MONTHS     = LV_MES
    IMPORTING
      E_DATE       = LV_DATE_SAL
    EXCEPTIONS
      NOT_POSITIVE = 1
      OTHERS       = 2.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


Technorati tags:





Editar registros de una tabla sin permisos

27 10 2007

diablo.jpg El usuario es responsable del mal uso de lo siguiente diablo.jpg

Lo que voy a explicar a continuación permite modificar cualquier registro de una tabla desde la transacción SE16 siempre y cuando los campos no sean claves. Con esto no es necesario pasar por alguna transacción ni tener permisos especiales para cambiar un campo del algún registro específico.


Pasos a seguir:
Ir a la transacción SE16 (Browser de datos), ingresar a la tabla que se quiera y buscar el registro que se quiere modificar.
Una vez que estamos visualizando el registro en cuestión, seleccionarlo… poner /h y hacer doble click sobre el registro.
Avanzar en el debugg hasta llegar al Form SET_STATUS_VAL. Encontrarán un IF para la variable CODE. Antes de entrar al ciclo IF, modificarle el valor a la variable CODE de SHOW a EDIT utilizando el ícono del lapiz.
Solo resta apretar F8 para terminar el debugg. Y en la siguiente pantalla vamos a poder editar los campos del registro. Por último apretar el botón guardar para conservar los cambios.


Technorati tags:





Convertir Sapscript en archivo de texto

25 10 2007

Hace un tiempo en el trabajo me pidieron que a un formulario sapscript lo pase a texto y que le de formato para luego bajarlo en un archivo. Acá dejo los pasos necesarios para hacerlo.


Primero vamos a tener que hacer una copia del programa impresor del sapscript en cuestión.
Una vez hecho, hay que agregar en la parte de las declaraciones la tabla interna donde van a quedar guardadas las lineas del formulario:
     DATA: BEGIN OF INT_TLINE1 OCCURS 100.
       INCLUDE STRUCTURE TLINE.
     DATA: END OF INT_TLINE1.

El siguiente paso es encontrar en el impresor la llamada a la función ‘OPEN_FORM’ y modificarle el campo DEVICE y ponerle ‘OTF_MEM’:
     CALL FUNCTION ‘OPEN_FORM’
      DEVICE = ‘OTF_MEM’

Por último luego de la llamada CALL FUNCTION ‘CLOSE_FORM’. tenemos que insertar la función ‘CONVERT_OTF_MEMORY’ de la siguiente manera:
     CALL FUNCTION ‘CONVERT_OTF_MEMORY’
      EXPORTING
       FORMAT = ‘ASCII’
       MAX_LINEWIDTH = 132
      *IMPORTING
       *BIN_FILESIZE =
      TABLES
       LINES = INT_TLINE1
      EXCEPTIONS
       MEMORY_EMPTY = 1
       ERR_MAX_LINEWIDTH = 2
       ERR_FORMAT = 3
       ERR_CONV_NOT_POSSIBLE = 4.

Con esto ya tenemos nuestro formulario sapscript cargado en nuestra tabla interna INT_TLINE1. Ahora a esta tabla le podemos modificar, agregar o quitar lineas a nuestro gusto; y de ser necesario podemos bajarla a un archivo.


Technorati tags: