Cambiar separador decimal a un importe (puntos o comas)

31 10 2007

Generalmente entre distintas computadoras el separador decimal de un importe puede variar. Puede ser un punto o una coma, por ejemplo 100.60 o bien 100,60 .
Como no sabemos qué configuración tiene el sistema donde se va a ejecutar nuestro programa, con lo siguiente vamos a poder poner el separador decimal correcto automáticamente.


DATA: FORMATO_DEC LIKE USR01-DCPFM.

*Obtenemos el formato decimal del sistema en la variable FORMATO_DEC
   SELECT SINGLE DCPFM
     INTO FORMATO_DEC
     FROM USR01
     WHERE BNAME = SY-UNAME.

*Cambiamos el separador decimal a la variable de importe (LV_DMBTR)
   CASE FORMATO_DEC.
     WHEN ‘ ‘. “Coma Decimal
      REPLACE ‘.’ IN LV_DMBTR WITH ‘,’.
     WHEN ‘X’. “Punto Decimal
      REPLACE ‘,’ IN LV_DMBTR WITH ‘.’.
   ENDCASE.


Technorati tags:





Transportar registros de una tabla de un ambiente a otro

28 10 2007

Lo siguiente sirve para transportar los datos de una tabla de un ambiente a otro. Por ejemplo de desarrollo a calidad, o bien de calidad a producción.

Esto es muy simple, debemos ingresar a la transacción SM30 y elegir la tabla de la cual queremos pasar la información. Clickeamos en el botón Transporte y creamos una orden de customizing.

Ahora sólo nos resta seleccionar los registros que queremos transportar, apretar el botón Incluir en la orden y luego el botón GUARDAR.

Con esto ya tenemos nuestra orden creada para ser transportada (transacción SE10) a otro ambiente.


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: