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:





AL11 – Directorios SAP (Archivos en el servidor)

22 10 2007

Con la transacción AL11 podemos acceder a los directorios de SAP (del servidor) e incluso abrir los archivos.

Ingresando a la transacción AL11 nos listará todos los directorios disponibles; haciendo doble click sobre cualquiera de ellos podremos ver los archivos que hay adentro. Y si los archivos son de texto incluso podemos ver su contenido haciendo nuevamente dobleclick.


Technorati tags:





RV80HGEN – Activación de rutinas

21 10 2007

Muchas veces nos piden crear una fórmula de cálculo o cualquier tipo de rutina. En esos casos no basta con activar nuestro código y activar nuestra fórmula desde la VOFM.

Entonces tenemos que correr un programa que se encarga de activar todas las rutinas. Simplemente tenemos ir a la SE38, y correr el reporte RV80HGEN. Una vez que se termina de ejecutar, el reporte nos confirma que se activaron todas las rutinas.


Technorati tags:





Calcula fecha a futuro o pasado

20 10 2007

Esta función calcula una fecha según la cantidad de días que se le pase por parametro al campo ANZAHL_TAGE. Se pueden calcular días anteriores o futuros.


WRITE P_FECHA TO LV_FECHA DD/MM/YYYY.
PERFORM RESTAR_DIA CHANGING LV_FECHA LV_FECHA_SAL.

*&———————————————————————*
*& Form RESTAR_DIA
*&———————————————————————*
* llamo a la función que le resta un día a la fecha
* pasada por parámetro
*———————————————————————-*
* –>P_LV_FECHA text
*———————————————————————-*
FORM RESTAR_DIA CHANGING P_LV_FECHA P_LV_FECHA_SAL.

   CALL FUNCTION ‘DATE_IN_FUTURE’
    EXPORTING
     ANZAHL_TAGE = ‘-1’ «un día atrás
     IMPORT_DATUM = P_LV_FECHA «fecha a la que le quiero restar un dia
    IMPORTING
     * EXPORT_DATUM_EXT_FORMAT = P_LV_FECHA_SAL
     EXPORT_DATUM_INT_FORMAT = P_LV_FECHA_SAL. «fecha que se obtiene

ENDFORM. » RESTAR_DIA


Technorati tags:





Completar o quitar ceros a la izquierda de una variable

17 10 2007

* Función que saca los ceros a la izquierda de una variable
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’
 EXPORTING
  INPUT = VG_VARIABLE
 IMPORTING
  OUTPUT = VG_VARIABLE.

* Función que completa con ceros a la izquierda de una variable
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
 EXPORTING
  INPUT = VG_VARIABLE
 IMPORTING
  OUTPUT = VG_VARIABLE.


Technorati tags:





Select con filtro de tipo patrón [ * ]:

15 10 2007

Este código sirve para hacer búsquedas a tablas utilizando filtros de tipo Patrón. Patron


*&Hago un select a la tabla JCDS donde el campo OBJNR sea el patrón PR*

DATA: LV_VALOR(3) VALUE ‘PR%’. «Donde quiero un asterisco pongo el caracter %

SELECT *
 FROM JCDS
  INTO CORRESPONDING FIELDS OF TABLE IT_JCDS
  WHERE OBJNR LIKE LV_VALOR.


Technorati tags:





Reloj – Mostrar progreso:

14 10 2007

Este código permite agregar un reloj que indica el progreso de un reporte en la barra de status.

Reloj - Mostrar progreso


*& Muestra el reloj de progreso en la barra de estado
PERFORM MOSTRAR_PROGRESO USING TEXT-P01 1.

*&——————————————————————-*
*& Form MOSTRAR_PROGRESO
*&——————————————————————-*
FORM MOSTRAR_PROGRESO USING P_TEXT_P01 TYPE C
P_INCREMENTO TYPE I.

STATICS: LV_PORCENTAJE TYPE I.

*Setea el porcentaje
LV_PORCENTAJE = LV_PORCENTAJE + P_INCREMENTO.

 IF LV_PORCENTAJE => 100.
  LV_PORCENTAJE = 10.
 ENDIF.

*Muestra el indicador en la barra de status
CALL FUNCTION ‘SAPGUI_PROGRESS_INDICATOR’
 EXPORTING
  PERCENTAGE = LV_PORCENTAJE
  TEXT = P_TEXT_P01.

ENDFORM. » MOSTRAR_PROGRESO


Technorati tags: