:::: MENU ::::

este blog tiene como objetivo de compartir los conocimientos prácticos de cada lenguaje de programación más conocidos.

  • Lo mejor está por suceder

  • Easy to Customize

  • Customizable fonts.

miércoles, 28 de agosto de 2013


USER EXIT:

Cómo encontrar una User Exit (lo más fácil, pero menos efectiva).

Para encontrar una User podemos hacerlo de la siguiente forma: 
OJO esta parte solo es para encontrar una User y ahorarte el tiempo de debuggear. en otro punto agregaré cómo encontrar la user para la tx que necesitamos.



Esta oportunidad buscaremos para la tx MIGO.



Nos vamos a la pestaña Sistema opción Status...



Doble clic al nombre del programa:
























Clic en Buscar:

y Buscamos la Siguiente palabra: CUSTOMER-EXIT.


y listo Lista de USER's:





viernes, 23 de agosto de 2013

VARIABLES DE SISTEMA BÁSICO

SY-ABCDE   CONSTANT: Alfabeto (A,B,C,…)
SY-APPLI   Aplicaciones SAP
SY-BATCH   Batch activo (X)
SY-BATZD  SUBMIT fondo: Diario
SY-BATZM   SUBMIT fondo: Mensual
SY-BATZO   UBMIT fondo: Unico
SY-BATZS    SUBMIT batch: Inmediatamente
SY-BATZW   SUBMIT fondo: Semanal
SY-BINPT     Batch input activo (X)
SY-BREP4     SUBMIT fondo: Nombre de raíz del report de llamada
SY-BSPLD     SUBMIT fondo: Salida de lista en SPOOL
SY-CALLD    Call modo activo (X)
SY-CALLR    IMPRIMIR: ID para funciones de diálogo
SY-CCURS    Tipo cambio/Campo resultado CURRENCY CONVERT
SY-CCURT    Tipo de cambio en tabla de aplicación CURRENCY CONVERSION
SY-CDATE    Fecha de tipo de cambio de CURRENCY CONVS.
SY-CFWAE    Utilización interna
SY-CHWAE   Utilización interna
SY-COLNO    Columna actual en la creación de la lista
SY-CPAGE     Número de página actual
SY-CPROG    RUNTIME: Programa principal
SY-CTABL    Tabla de tipo de cambio en CURRENCY CONVERSION
SY-CTYPE    Tipo de cambio ‘M’,’B’,’G’ de CURRENCY CONVERSION
SY-CUCOL    Posición del cursor (columna)
SY-CUROW    Posición del cursor (línea)
SY-DATAR    Indicador: Datos recibidos
SY-DATLO    Fecha local, en relación con el usuario
SY-DATUM    SYSTEM: Fecha del día
SY-DATUT    Fecha global, en relación con UTC
SY-DAYST    ¿ Horario de verano activo ?
SY-DBCNT    Cantidad elementos en conjunto tratado para operaciones BD
SY-DBNAM    Base de datos lógica en report ABAP/4
SY-DBSYS     SYSTEM: Sistema de base de datos
SY-DCSYS    SYSTEM: Sistema de diálogo
SY-DEBUG    Utilización interna
SY-DSNAM    RUNTIME: Nombre del set de datos para salida en SPOOL
SY-DYNGR    Grupo de dynpros del dynpro actual
SY-DYNNR    Número de la imagen en pantalla actual
SY-ENTRY     Utilización interna
SY-FDAYW    Día de semana en el calendario de fábrica
SY-FDPOS    Lugar de hallazgo de un string
SY-FFILE     INTERNO: Flatfile (USING/GENERATING DATASET)
SY-FLENG    Utilización interna (longitud de campo)
SY-FMKEY    Menú de códigos de funciones actual
SY-FODEC    Utilización interna (campo posiciones decimales)
SY-FOLEN    Utilización interna (longitud de salida de campo)
SY-FTYPE     Utilización interna (tipo de campo)
SY-GROUP    INTERNO: Concatenación
SY-HOST      Nombre de la máquina
SY-INDEX     Cantidad de repeticiones de bucles
SY-INPUT     Utilización interna
SY-LANGU    Clave de idioma para entrar al Sistema SAP
SY-LDBPG    PROGRAM: Programa ABAP/4 de base de datos para SY-DBNAM
SY-LILLI      Número de la línea de lista actual
SY-LINCT    Cantidad de líneas de lista
SY-LINNO    Línea actual en la creación de una lista
SY-LINSZ    Longitud de línea de la lista
SY-LISEL     INTERACT.: Línea seleccionada
SY-LISTI      Número de la línea de lista actual
SY-LOCDB    Existe base de datos local
SY-LOCOP    Operación local en base de datos
SY-LOOPC    Cantidad de líneas LOOP en steploop de dynpro
SY-LPASS    Utilización interna
SY-LSIND     Número de la lista de bifurcación
SY-LSTAT    INTERACT.: Información de status por nivel de lista
SY-MACDB    PROGRAM: Nombre del fichero para el acceso con matchcode
SY-MACOL    Cantidad de columnas de instrucción SET MARGIN
SY-MANDT    Número de mandante para acceder al Sistema SAP
SY-MARKY    Letra de línea actual para MARK
SY-MAROW    Cantidad de líneas de instrucción SET MARGIN
SY-MODNO    Cantidad de modos alternativos
SY-MSGID     ID de mensaje
SY-MSGLI     INTERACT.: Línea de mensaje (línea 23)
SY-MSGNO    Número del mensaje
SY-MSGTY    Tipo de mensaje (E,I,W,etc.)
SY-MSGV1    Variable en mensaje
SY-MSGV2    Variable en mensaje
SY-MSGV3    Variable en mensaje
SY-MSGV4    Variable en mensaje
SY-NEWPA    Utilización interna
SY-NRPAG     Utilización interna
SY-ONCOM    INTERNO: On Commit Flag
SY-OPSYS    SYSTEM: Sistema operativo
SY-PAART    IMPRESION: Edición
SY-PAGCT    Límite de página de lista en instrucción REPORT
SY-PAGNO    RUNTIME: Página actual en creación de lista
SY-PAUTH    Utilización interna
SY-PDEST    IMPRIMIR: Dispositivo de salida
SY-PEXPI    IMPRIMIR: Tiempo de permanencia en SPOOL
SY-PFKEY    RUNTIME: Status de teclas-F actual
SY-PLAYO    Utilización interna
SY-PLAYP    Utilización interna
SY-PLIST    IMPRESION: Nombre de la orden SPOOL (nombre de lista)
SY-PNWPA    Utilización interna
SY-PRABT    IMPRIMIR: Departamento en la portada
SY-PRBIG    IMPRIMIR: Portada de selección
SY-PRCOP    IMPRIMIR: Cantidad de ejemplares
SY-PRDSN     IMPRIMIR: Nombre del set de datos SPOOL
SY-PREFX    Prefijo ABAP/4 para jobs batch
SY-PRI40    Utilización interna
SY-PRIMM    IMPRESION: Salida inmediata
SY-PRINI    Utilización interna
SY-PRLOG    Utilización interna
SY-PRNEW    IMPRESION: Nueva orden SPOOL (lista)
SY-PRREC    IMPRIMIR: Destinatario
SY-PRREL     IMPRESION: Borrar tras salida
SY-PRTXT    IMPRIMIR: Texto para portada
SY-REPI2    Utilización interna
SY-REPID    PROGRAM: Nombre de un programa ABAP/4
SY-RSTRT    Utilización interna
SY-RTITL    IMPRIMIR: Título de report del programa de impresión
SY-SAPRL    SISTEMA: Release SAP
SY-SCOLS    Columnas en la pantalla
SY-SFNAM    Sin utilizar
SY-SFOFF    Utilización interna
SY-SLSET     Nombre de SELECTON-SETS
SY-SPONO    RUNTIME: Número SPOOL para salida de una lista
SY-SPONR    RUNTIME: Número SPOOL de instrucción TRANSFER
SY-SROWS    Líneas en la pantalla
SY-STACO    INTERACT.: Lista visualizada a partir de la columna
SY-STARO    INTERACT.: Lista visualizada a partir de línea
SY-STEPL     Número de la línea LOOP en step dynpro
SY-SUBCS    INTERNO: Status call del report
SY-SUBRC    Valor de retorno tras determinadas sentencias ABAP/4
SY-SUBTY    ABAP: Forma de llamada en SUBMIT
SY-SYSID    SYSTEM: Identificador del Sistema SAP
SY-TABID    Utilización interna
SY-TABIX    RUNTIME: Línea actual de una tabla interna
SY-TCODE   SESSION: Código de transacción actual
SY-TFDSN     RUNTIME: Nombre del set de datos para extractos de datos
SY-TFILL      Cantidad actual de entradas en la tabla interna
SY-TIMLO    Hora local, en relación con el usuario
SY-TIMUT    Hora global, en relación con UTC
SYTITLE      PROGRAM: Título del programa ABAP/4
SY-TLENG    Tamaño de la línea de una tabla interna
SY-TLOPC    Utilización interna
SY-TMAXL    Cantidad máxima de entradas en la tabla interna
SY-TNAME    Nombre de la tabla interna después de un acceso
SY-TOCCU    Parámetro occurs en tablas internas
SY-TPAGI     Indicador para almacenar tabla interna en bloque paging
SY-TSTIS     Utilización interna
SY-TSTLO    Cronomarcador (fecha y hora), en relación con el usuario
SY-TSTUT    Cronomarcador (fecha y hora), en relación con UTC
SY-TTABC    Número de la última línea de tabla interna leída
SY-TTABI     Offset de tablas internas en el área de roll
SY-TVAR0    RUNTIME: Var. de texto para elementos de texto ABAP/4
SY-TVAR1    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TVAR2    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TVAR3    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TVAR4    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TVAR5    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TVAR6    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TVAR7    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TVAR8    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TVAR9    RUNTIME: Variable de texto para elementos de texto ABAP/4
SY-TZONE    Diferencia de tiempo con ‘Hora media de Greenwich’ (UTC)
SY-UCOMM    INTERACT.: Indicar función en el código OK
SY-ULINE      CONSTANT: Línea de subrayado (____________…)
SY-UNAME    SESSION: Nombre de usuario según entrada a SAP
SY-UZEIT      SYSTEM: Hora
SY-VLINE     CONSTANT: raya vertical
SY-WAERS    T001: Moneda de sociedad tras leer segmento B
SY-WILLI      Número de la línea de ventana actual
SY-WINCO    Posición de cursor en la ventana (columna)
SY-WINDI    Indice de la línea de ventana actual
SY-WINRO    Posición de cursor en la ventana (línea)
SY-WINSL     INTERACT.: Línea en ventana seleccionada
SY-WINX1    Coordenada de ventana (columna izquierda)
SY-WINX2    Coordenada ventana (columna derecha)
SY-WINY1    Coordenada ventana (línea izquierda)
SY-WINY2    Coordenada de ventana (línea derecha)
SY-WTITL     Indicador para cabecera estándar de página
SY-XCODE    Código OK ampliado
SY-XFORM    Utilización interna (form SYSTEM-EXIT)
SY-XPROG    Utilización interna (programa SYSTEM-EXIT)

SY-ZONLO    Huso horario del usuario

jueves, 22 de agosto de 2013

CREAR UNA ORDEN DE TRASPORTE:

Para crear una OT lo podemos hacer de dos formas para nuestro ejemplo, ya que también se puede crear por la tx SE80 pero no es visiblemente recomendable, la primera es desde la tx SE10 o desde el programa que no pide agregar el objeto en una orden.

Vamos a ver ambos casos.

CASO 1: 
Ingresamos la tx se10:



Luego le damos visualizar, teniendo en cuenta las clases de ordenes y el status de nuestra orden:




Nos mostrará una lista de OT's, nos vamos al botón de la esquina superior izquierda, cuya imagen es un papel en blanco y le damos clic: 



Se mostrará un popup que tiene los tipos de ordenes en dos radiobutton la primera Customizing que quiere decir si va a ser personalizado eso tiene que ver con la creación de tablas y la data q vallamos a manejar, y por otro lado tenemos el tipo de OT Workbench que se el tipo área de trabajo y el que nosotros usaremos.

Luego le agregamos la descripción respectiva, manejando cierto criterio, a lo mejor el criterio que le pongo les sirva: el nombre del modulo - la descripción - sus iniciales  y la fecha, les ayudará a majar un historial de ordenes. Le damos en guardar y Listo.


ORDEN DE TRASPORTE CREADA...


__________________________________________________________________________________


CASO 2:  Creación de una OT desde el Programa:

al crear el objeto o programa, te pedirá primero que le agregues un paquete:

Luego le damos en guardar y nos pedirá una Orden de transporte. 




En caso que tengamos una orden creada hacer los siguiente sino  SALTA ESTE PASO HASTA EL NÚMERO 2 EN COLOR ROJO.

Le damos clic en Ordenes Propias: 



Luego se mostrará la lista de Ordenes creadas. Buscamos la creada y le damos doble clic en la orden.


Ahora le damos clic en el check o Enter y listo, el objeto se a grabado en la orden seleccionada.




2.- Sino has seguido el caso 1:

En la misma pantalla donde nos pide una orden, le damos en el botón de hoja nueva (Crear nueva orden)



Le agregamos la descripción respectiva con el formato que manejamos siempre y le damos en guardar.



Y LISTO ORDEN CREADA...

__________________________________________________________________________________



CREACIÓN DE TABLAS, DOMINIOS Y ELEMENTOS DE DATOS:


CREACIÓN DE DOMINIOS: 



El dominio es el tipo de dato que se crea para se usado por el elemento de datos, lleva las características de: el tipo de dato y la longitud de tipo de dato.



Adicionalmente podemos crear matchCode's desde un domnio, es el tipo de matchCode's más simples, pero que nos pueden servir de mucha ayuda, eso lo veremos en el tema de MAtchCode's.

Agregamos el nombre Respectivo a nuestro dominio, le damos al radioButton de Dominio y lo creamos:


Luego le Agregamos una Descripción, el tipo de Dato y la longitud de este:




Luego lo guardamos, nos pedirá primero un paquete, luego una Orden de transporte OJO: se tiene que guardar en la misma orden donde vamos a guardar nuestra tabla. Si quieren saber como crear una orden ver en el indice, como crear una OT http://blogalza.blogspot.com/2013/08/creacion-de-ordenes-de-trasporte.html . 


En este caso solo queramos probar, así que lo guardamos como objeto local y listo.




DOMINIO CREADO......


__________________________________________________________________________________


CREACIÓN DE ELEMENTOS DE DATO:



Vamos a crear el elemento de dato tomando el dominio creado:


Nos vamos al radio button de Tipo de Datos y agregados la descripción respectiva y creamos:




Nos aparece una opción que nos indica que es lo que queremos crear, le damos en el primer radio button, Elemento de Datos. 




Agregamos la descripción y el nombre de dominio y luego nos vamos a la pestaña Denom. Campo



Copiamos la descripción y Pegamos en cada casilla le damos enter y automáticamente agregará la longitud :


Guardamos, Activamos y listo


ELEMENTO DE DATO CREADO...


__________________________________________________________________________________


CREACIÓN DE TABLA ZETA CUSTOMIZING:



Ya luego de haber creado nuestros DOMINIOS y ESTRUCTURAS respectivas, vamos ahora a crear nuestra TABLA seta, la cual va a tener el nombre de ZTB_EMPLEADO. 


En esta oportunidad crearemos un tabla customizing,  la diferencia es que al guardar datos en esta tabla te pide una orden de trasporte por cada inserción y eso para que quede un registro de las modificaciones y actualizaciones de dicha tabla y para que los datos sean transportados tal cual a cualquier Entorno (DEV, QAS o PRD).


NOTA: El consejo es que siempre se respete la forma standard que se tiene para crear tablas, elementos, dominios, vistas, y todo los elementos del Diccionario de datos, ya que eso nos va a ayudar mucho.




Bueno le ponemos un nombre a la tabla a crear, en este caso mi tabla se va a llamar ZTB_EMPLEDO le damos clic en crear:







Agregamos los datos principales, como la descripción, la clase de entrega, visualización y Actualización .



En este caso tenemos la clase de entrega de la tabla, y como dijimos para nuestro caso será CUSTOMIZING.


En la siguiente opción agregamos los permisos que tendrá nuestra tabla, normal mente se marca la primera opción.

















Ahora pasamos a la pestaña Campos para agregar los respectivas campos que tendrá nuestra tabla:



Agregamos el campo MANDT que es el que debe de ir siempre en toda tabla y nuestros demás campos como vemos en la imagen, vemos que tenemos dos FLAG's; estos son de clave y valor, por lo tanto nuestras claves son MANDT y DNI y siempre tendrán valor; por otro lado el nombre no es una clave y puede que tenga o no valor.

En la columna siguiente es donde podremos nuestros elementos de datos creados anteriormente respetando la relación entre campo y elemento: Ejemplo: DNI el elemento de dato es ZE_DNI no puede ser ZE_NOMBRE.

Guardamos y Activamos :


Luego de agregar nuestros campos nos vamos a configuras las Opciones Técnicas:




ya en las pantalla de opciones definimos la Clase de datos: siempre APPL0


y luego nos posicionamos en Categ. Tamaño:


Acá podemos escoger dependiendo de la cantidad de registro a guardar en nuestra tabla, en nuestro caso como sólo se registrarán empleados usaremos la categoría 0 pero siempre hay que asegurarse de ello, en la mayoría de casos es mejor que sea 1.

Grabamos y retrocedemos con el botón BACK (de color verde).

Ahora nos vamos a Categorías de Ampliación donde configuramos el tema de los tipo de datos que se grabarán:


Y configuramos como está en la imagen y de acuerdo al criterio que tengas, en este caso es el más común:


Bueno ya después de esto solo queda Grabar y activar:


 y para el caso de solo pruebas, siempre graben en OBJETO LOCAL, así:



TABLA SETA CREADA...


__________________________________________________________________________________

CREACIÓN DE ESTRUCTURA :


Las estructuras creadas desde la transacción SE11 tienen la misma definición de estructura que creamos en un programa ABAP, la única diferencia es que esta se puede usar de manera global.

Para poder crear una estructura debemos de realizar los Siguientes pasos.


1. Nombre de la Estructura:

2. Agregamos la Descripción y luego los campos con los respectivos elementos de dato, en este caso por un tema de rapidez asigne el tipo de dato en duro, (siempre hay que crear elementos de datos para cada campo, a menos que se utilicen los elementos estándares, como por ejemplo el número de documento BELNR en elemento de dato es BELNR_D) 



3. Guardamos: Ojo-> Sólo guardar, si tratamos de activar nos saldrá un mensaje con referencia a las categorías de Ampliación:


4. Luego nos vamos a Categorías de Ampliación: Detalle/Categoría de Ampliación y escogemos la sig. opción:


5. Luego Guardamos y activamos: (si estas practicando, guárdalo como OBJETO LOCAL):






NOTA: En caso que no estés practicando, guárdalo en una orden de trasporte sigue los pasos de este link (como crear o usar una Orden de transporte TIENES QUE IR AL PASO 2 Y SEGUIR LA SECUENCIA 

Enlace: http://blogalza.blogspot.com/2013/08/creacion-de-ordenes-de-trasporte.html


Y LISTO ESTRUCTURA CREADA...
____________________________________________________________________________________


VISTA DE MANTENIMIENTO :


Una imagen o vista de actualización es una forma que SAP nos proporciona para poder introducir datos en tablas sin necesidad de entrar en el explorador de tablas ni tener que programar. No hay que olvidar que el explorador de tablas suele ser una transacción restringida para los usuarios finales. Así que necesitamos una forma simple y rápida de poder mantener la  información de tablas setas a disposición de usuarios.

Crearemos dos tipos de vista, la primera desde la propia tabla y la otra se creara la vista independientemente de la tabla:

CASO 1 VISTA DE MANTENIMIENTO DESDE LA TABLA:



El primer paso será acceder a la transacción SE11, donde será necesario ingresar el nombre de la tabla para la cual se desea crear la vista de mantenimiento.

Asumiendo que la tabla fue creada previamente, bastará con ingresar el nombre de la misma en el campo correspondiente.


En este caso, a modo de ejemplo, la tabla tiene como nombre ZDI_EMPLEADOS.


Luego será necesario seleccionar Change.

En la pantalla obtenida, se mostrará la estructura de la tabla y dirigirse a Utilities → Table Maintenance Generator.



te proceso será similar a la siguiente: Table Maintenance Generator.



Como se muestra en la figura precedente, será necesario seleccionar la opción Find Scr. Number(s).

En la mayoría de los casos bastará con dejar la opción por defecto que es la primera:


Finalmente, habrá que seleccionar el icono correspondiente a crear:



Luego se deberá seleccionar el motivo por el cual se está creando la vista de mantenimiento:



Es recomendable en la pantalla siguiente, dejar los valores que se muestran por defecto:


El mensaje siguiente informa que la vista ha sido creada satisfactoriamente.



Finalmente, para corroborar que la vista de mantenimiento ha sido creada correctamente, bastará con acceder a la transacción SM30 y colocar el nombre correspondiente a la tabla para la cual se ha creado la vista de mantenimiento, como se muestra en la figura siguiente:



CASO 2 VISTA DE MANTENIMIENTO INDEPENDIENTE:

Ingresar a la transacción SE11 y dar clic en radio button Vista


Luego clic en CREAR y escoger la opción de Vista de Actualización


Agregamos la tabla a la que crearemos la Vista de Actualización, agregamos una descripción a la vista.

Clic en campos Tabla y seleccionamos los campos a mostrar de dicha tabla:


Como la tabla creada es de tipo Customizing, entonces se configurará la vista para que también sea Customizing y no haya ningún poblema al querer insertar datos a la tabla a través de dicha vista.

Clic en la pestaña Stat. Actual y Cambiamos a tipo C y con actualización permitida:



Ahora generaremos la vista de actualización, ir a Utilidades y Generador actual. tab.





Agregar un grupo de autorización: Por defecto es el &NC&



Luego en grupo de Funciones, copiamos el nombre de la vista y lo pegamos en grupo de funciones.

El siguiente paso es agregar el tipo de actualización, tanto el nivel como el número de Imagen. Como sólo usaremos vista de un nivel, le damos en vista de un nivel y en imagen resumen le ponemos
0100 para el nombre de la Dynpro a generar y quedaría de la siguiente manera:



Finalmente hacer clic en Nuevo, se mostrará 3 veces la grabación de paquete por la generación de la vista, esta pantalla es la que se mostrará:



Simplemente asignar el nombre del paquete y dar cloc en grabar las veces que salga.

Con estos pasos se termina de crear la Vista de Actualización para agregar data y dar mantenimiento se tiene que ir a la transacción SM30, agregamos la vista y le damos clic en el botón Actualizar.



Ya en la vista, para agregar registro hacer clic en entradas nuevas, luego de grabar las entradas pedirá una OT, recuerda que estaba vista y esta tabla son Customizing y cualquier dato grabado se guardará en una OT y será transportable a otro ambiente. 



Este tipo de tabla se utiliza cuando los datos a grabar van a ser los mismos en todos los ambientes, donde sólo se graba una vez y simplemente se transporta la OT de ambiente a ambiente y la data también se transportará. 
A call-to-action text Contact us