Mostrando entradas con la etiqueta TRANSACCIONES. Mostrar todas las entradas
Mostrando entradas con la etiqueta TRANSACCIONES. Mostrar todas las entradas

jueves, 5 de febrero de 2015

Comparar dos Programas ABAP con el editor SplitScreen. SE39

En este post vamos a hablar de como comparar dos programas ABAP (Ya hemos tocado el tema anteriormente para ver como comparar dos programas en entornos diferentes. Dejo el link).
En este caso el tema cambia un poquito, pues lo que proponemos es tener en la misma pantalla dos editores cada uno con un programa cargado. Además pudiendo tener los programas en modo editable para poder irles modificando.
Por ejemplo, se me ocurre que estamos construyendo una nueva transacción y nos damos cuenta que en otro programa tenemos una porción de código que nos interesa. Podemos abrir ambos programas a la vez para tomar uno como referencia para el otro.

Para poder disponer de esta funcionalidad debemos utilizar la transacción SE39. La transacción nos da opción de comparar programas, módulos de funciones o clases.


Incluso podemos comparar  con programas en diferentes sistemas. Para utilizar esta funcionalidad debemos presionar en botón de la parte superior "Comparar diferentes sistemas".


Una vez hemos informado que programas vamos a comparar podemos simplemente visualizarlos o ejecutar la transacción en modo editable para tener la opción de modificarlos.

El resultado final es el que veis en la siguiente imagen:


viernes, 29 de agosto de 2014

Configuración de SAP para el envío de correos electrónicos ( SCOT & SOST )

En este post os voy a comentar como configurar el servidor SMTP de correo electrónico. Si queremos enviar email a través de SAP deberemos tenerlo configurado correctamente. Es muy sencillo y se hace en pocos pasos.

En este caso vamos a utilizar un host donde tenemos albergado nuestro servidor de correo electrónico.

La configuración la vamos a realizar a través de la transacción SCOT. Accedemos a ella y hacemos doble clic sobre "SMTP".


Le marcamos como nodo en funcionamiento con la opción "Nodo en operación" y le indicados el host de nuestro servidor de correco electrónico:


Además en el tipo de dirección soportada (Internet) debemos indicarle que se aceptan todos:


Una vez realizados estos pasos la configuración ha finalizado y podriamos comenzar a enviar correos electrónicos desde SAP.

Un último paso sería indicar en nuestro usuario SAP una dirección de correo electrónico. Cuando enviemos un email SAP lo hará a través de la dirección que tengamos indicada en ese campo de nuestro usuario.


Una vez que comencemos a enviar email a través de SAP disponemos de una transacción que nos permitirá monitorizarlos. Se trata de la transacción SOST


Aqui iremos viendo listados todos los mensajes que vayamos generando, indicando el status en el que se encuentran. Lo habitual es que los mensajes no se envien automaticamente y se programe un job cada X minutos que los envie.

El job se programa desde la transacción SCOT. En el menu hacemos clic sobre Opciones-->Jobs de envio

 
Tras estos se nos abrirá una ventana donde deberemos crear un job indicando la opción para el envio a todo tipo de direcciones.


Y finalmente se nos abré la ventana de configuración del job. Lo principal indicar la frecuencia con la que se ejecutará.

miércoles, 9 de julio de 2014

Function Builder. Crear secuencias de Funciones

Cuando se está desarrollando en ABAP, en determinadas situaciones resulta necesario ejecutar dos o más funciones en secuencia. La idea en estos casos es que las funciones secuenciadas operen como una unidad, de manera que el output de la precendente sirva de input a la siguiente, y se garantice la ejecución conjunta de las mismas para llegar al resultado deseado.

Entre inumerables ejemplos, un caso clásico son las actualizaciones a las bases de datos. Por ejemplo, si se utiliza una BAPI para dar un alta en una base de datos NO se verá el registro agregado hasta que otra BAPI que ejecute un COMMIT. Si la aplicación requiere la disponibilidad inmediata del registro puede asegurarse la secuencia de BAPIS utilizando una secuencia de funciones que incluya primero el alta, e inmediatamente, el COMMIT.

La transacción SE37 (Function Builder) ofrece la herramienta “Test Sequence” que permite armar y “Testear” secuencias de funciones con este fin.

Ejemplo de Function Module Test Sequence

La idea es dar de alta un registro a una base de datos y hacerlo inmediatamente disponible a la aplicación.
Para ello, se requerirán dos BAPIs en secuencia:
  • BAPI_FLCUST_CREATEFROMDATA (que dará de alta un cliente)
  • BAPI_TRANSACTION_COMMIT.
En este caso, si se ejecuta sólo BAPI_FLCUST_CREATEFROMDATA, los cambios realizados por la misma, no serían inmediatamente visibles a la aplicación en curso. Las altas a una base de datos NO se reflejan en forma inmediata, sino recién cuando se halla ejecutado el COMMIT de dicha operación. Por lo tanto, para que el registro se haga visible, se requiere la ejecución exitosa de toda la secuencia de funciones, como si fueran una unidad.

Para realizar este ejemplo debemos seguir los siguientes pasos:

1) Acceder a la transacción SE37. Una vez allí, seleccionar de la barra de menú de SAP, la opción Function Module, luego “Test” y finalmente “Test Sequences”.


2) En la ventana de selección se ingresan las dos BAPIS a secuenciar, en este caso BAPI_FLCUST_CREATEFROMDATA y BAPI_TRANSACTION_COMMIT, obviamente en el orden deseado.


3) Al aceptar con Execute, el sistema abrirá la Initial Screen para esta función.
Debemos los parámetros para la función, que en este caso serán los campos necesarios para el alta de un cliente. Desde la Initial Screen, utilizando el ícono "Details View Edit" se abre la interfaz del "Structure Editor", donde se procederá a completar los datos.


En la pantalla de Structure Editor es conveniente presionar las teclas SHIFT + F7 para tener una mejor visión (vertical!) de los datos y que el ingreso sea más sencillo, como se muestra en la figura anterior.

Finalizada la entrada de datos con el icono de “Aceptar”, se desplegará el registro con los datos de testeo cargados, tal como vemos a continuación. Desde acá, se debe regresar a la Initial Screen de la función, utlizando el botón señalado en la misma figura.

4) Luego desde la Inicial Screen, se procede a su ejecución a través de la tecla F8 (o el ícono correspodiente)


Completada la ejecución, el sistema volverá a la Initial Screen. Sin embargo, se observará en la zona de tablas, la referencia a una nueva entrada con un mensaje. El número ("1" en este caso) informa cuántos mensajes o advertencias se han generado como resultado de la ejecución. Para acceder a la interfaz con el resultado de la ejecución, se deberá hacer click sobre esta referencia.


Allí, se puede verificar que la primera BAPI ejecutada en la secuencia haya operado correctamente, es decir, que el registro haya sido dado de alta. Aparecerá el mensaje correspondiente indicando que el cliente ha sido creado, como se muestra en la figura:

5) Para continuar el procedimiento debemos regresar hasta la Initial Screen de la segunda BAPI (BAPI_TRANSACTION_COMMIT). Presionar el botón "Atrás" dos veces para continuar con el procedimiento.

6) Se observa en la Inicial Screen para esta BAPI , que no hay parámetros para ingresar, ya que el resultado de la ejecución de la primera BAPI está sirviendo como input para esta otra. En la posición del cursor colocar una “x” y luego presionar F8 para ejecutar:

7) Al igual que en el caso anterior, el sistema nos llevará a la pantalla de resultados una vez completada.
De esta manera se ha creado una nueva entrada para el cliente ingresado recientemente en la tabla SCUSTOM utilizando la BAPI BAPI_FLCUST_CREATEFROMDATA para la creación del cliente y BAPI_TRANSACTION_COMMIT para que sea grabada en la Base de Datos.

sábado, 10 de mayo de 2014

Tratar tablas en SAP

En este post vamos a ver como es posible modificar el contenido de las tablas de SAP de forma sencilla. Cuidado!!!El modificar valores de las tablas, sobre todo algunas, puede conllevar algunos riegos. Siempre que modifiquemos el contenido de las tablas directamente deberemos hacerlo con responsabilidad.

Hay varias formas de hacerlo. Aqui comentaremos algunas:

Método 1: Transacción SE16

Con este método resulta sencillo modificar, añadir o borrar un solo registro, pero no es lo mas recomendado si necesitas modificar varios . Primero ingresa en la transacción SE16, buscar el registro que desees modificar y dale doble clic sobre él, luego ingresa /h donde digitas los códigos de transacciones y presiona la tecla Enter dos veces


Con esto entraras en modo debug, ahora digita CODE en la columna de variables luego haz doble clic sobre el icono del lápiz y cambia el valor de SHOW a EDIT, INSR o DELE, presiona la tecla enter para tomar los cambios y luego la tecla F8.


Si haz seguido todos los pasos ahora verás la pantalla en modo de edición, modifica los datos que desees y presiona el botón de Guardar.

Método 2: Transacción SE16N

Con este método tienes control completo sobre la tabla, puedes agregar, eliminar y modificar y como si fuera poco puedes copiar varias filas desde Excel y solo copiarlas con Ctrl+V, la única desventaja es que existe una transacción que inhabilita esta opción así que si la nota ya fue aplicada en tu sistema, esto no funcionará.
Para usar este método solo ingresa en la transacción SE16N, pon el nombre de la tabla que vas a editar y luego en donde digitas los códigos de las transacción ingresa esto: &sap_edit y presionas la tecla enter.


Ahora cuando visualice los datos podrás editarlos como desees. Dependiendo de la versión de SAP que tengas este sistema puede que te funcione o no. Si no te funciona es que tienes aplicada la nota en la que SAP te limita esta funcionalidad. A continuación explicamos como puedes saltartelo.

Método 3: Transacción SE16N

Este es mi método favorito ya que me permite editar completamente las tablas y no esta afectado por la nota que inhabilita el método anterior. Para hacerlo ingresa en al transacción SE16N, luego pones el nombre de la tabla e ingresas en modo debug (colocando /h y presionando dos veces la tecla enter), luego edita las variables GD-EDIT y GD-SAPEDIT cambiando sus valores por una letra X y presionas la tecla F8 para continuar.


Ahora cuando despliegues el contenido de la tabla estarás en modo de edición y podrás cambiar los registros de las tablas.

Funcionalidad muy util, pero a la vez delicada. Hay que tener cuidado a la hora de aplicarla.

sábado, 3 de mayo de 2014

Personalizar transacciones estandar

En este post os voy a describir como podeis personalizar transacciones estandar. Os explicare la funcionalidad que nos ofrece la transacción SHD0. Nos puede ser muy útil en ocasiones en las que queremos personalizar el comportamiento de las transacciones estándar (o incluso la desarrolladas por nosotros mismos).
 
En muchas transacciones podemos por customizing o por opciones de usuario personalizar valores predeterminados al entrar en ellas (clase de documento en transacciones de contabilización, valores predeterminados en documentos de compras, parametros de memoria para datos de unidades organizativas (sociedad, organización de ventas, sector), etc).
Pero a traves de las variantes de transacciones y de pantalla, podemos personalizar y simplificar los procesos mediante:
§  la asignación previa de campos con valores (valores predefinidos en campos)
§  la supresión y modificación de la disponibilidad para entrada de los campos.
§  la supresión y modificación de los atributos de las columnas en los table control (tablas de introducción de datos en muchas de las transacciones estándar).
§  la supresión de las funciones de menú.
§  la supresión de todas las imágenes.
Algunas de estas funcionalidades pueden estar disponibles a través del customizing (por ejemplo, mostrar o suprimir determinados campos en el mantenimiento de datos maestros de clientes, proveedores, materiales, cuentas o en los procesos de compras, ventas, contabilidad, etc), pero son opciones globales que afectan a todos los usuarios. En cambio, con las variantes de transacción podemos personalizar los procesos de transacción según el tipo de tarea o funciones que realiza un usuario, para hacer la introducción de datos más rápida, concisa, eliminando campos, pantallas u opciones de menú innecesarias o inicializando los valores con valores propios o repetitivos para hacer más productivo el trabajo del usuario. Aunque es importante remarcar que esta personalización siempre tendrá que respetar la lógica de las aplicaciones: campos obligatorios, verificación de valores introducidos, etc, que nunca nos vamos a poder saltar.

Vamos a realizar 3 ejemplos sencillos de lo que podríamos configurar utilizando esta funcionalidad:



1. Grabación de apuntes contables fijando la clase de documento y un texto de cabecera.
Queremos dejar preparada la entrada de datos a un usuario de forma que siempre se le inicialice el valor de la clase de documento (que no será modificable) y le proponga un texto de cabecera del documento (si modificable).
Pasos a seguir:
a) Creación de la variante: entramos en la transacción SHD0, indicamos la transacción para la que vamos a crear la variante (la FB50), el nombre de la variante de transacción (ZAPUNTES_CAJA) y pulsamos el icono Crear (F5).
La grabación nos lleva a la transacción que estamos personalizando. Introducimos los diferentes valores y pulsamos Intro.
 
Se nos grabará una variante de pantalla por cada pantalla  que existiera en la dynpro de la transacción. En las variantes podremos indicar para cada campo, si mantiene el contenido introducido al grabar, si es visible o no, obligatorio o de solo salida (impedimos que se pueda modificar su contenido).
b) Ajuste de la variante: al salir de la transacción, se recogen todas las variantes de pantalla creadas, y se crea la variante de transacción propiamente dicha, a la que habrá que poner una descripción.
 
 
Aquí podremos ajustar los diferentes campos de las pantallas, adaptandolos a nuestras necesidades, tal y como hemos comentado (visibles o no, obligatorios, solo salida, etc).
c) Creación de una transacción: la transacción de variante hay que convertirla a una transacción para que pueda ser ejecutada directamente por los usuarios, incluirla en los menús estandar o de rol. La crearemos con la transaccion SE93, indicando un código de transacción (por ejemplo, ZFB50), una descripción y el tipo de transacción “Transacción con variantes”.

 
 
Al crear la transacción, indicaremos la transacción estándar y el nombre de la variante que hemos creado. Importante siempre marcar el flag Valido para todos los mandantes.
d) Inclusión en el arbol de menú con la transacción SE43N para el menú estandar o bien en los roles asignados al usuario (transacción PFCG), para que aparezca en sus menús de usuario.
Al entrar en la transacción ZFB50, ya nos aparece los campos personalizados según nuestra configuración.
 
 
Siguiendo el mismo procedimiento, vamos a preparar dos transacciones personalizadas mas.
2. Creación de pedidos de venta, omitiendo la primera pantalla donde se introduce clase de documento y organización de ventas.
Personalizamos la transacción VA01 con la diferencia del ejemplo anterior que en la variante de pantalla para la primera dynpro de la transacción, marcamos el flag “No visualizar imagen” y llenamos los campos de clase de documento, organización de ventas, canal de distribución y sector.
 
 
Cuando el usuario entre a la transacción personalizada, no pasará por esa pantalla y accederá directamente a la grabación del pedido, con los valores indicados predeterminados.
3. Personalización del table control en la grabación de pedidos de compras, omitiendo opciones de menú.
En este caso vamos a personalizar la transacción ME21N. Entramos en la SHD0 y nos quedamos en principio solo con la dynpro 1211, que es la que tiene el detalle de las posiciones de compras. 
 
 
En este caso, suprimimos un montón de campos del table control que no son relevantes (marcando el flag invisible). Ademas, de la barra de botones disponible, ponemos como solo salida los que permiten borrar o bloquear posiciones. Esta opción solo la podrán realizar determinados usuarios en la transacción estandar.

 
Estos son algunos ejemplos de lo que nos permiten las variantes de transacción. Sin duda, algo muy interesante y potente. Y con muchas posibilidades para aquellos caso de usuarios que utilizan pocas funcionalidades del sistema o para los que queremos evitar errores o mejorar de forma notable su productividad.
También podriamos haber ajustado las opciones de menú disponibles, tal y como os muestra en la siguiente imagen para la transacción VA05n (listado de pedidos de venta).
 
Seleccionando el botón Funciones de menú al crear la variante, nos aparecen las opciones de menú, que podemos activar o desactivar (tanto opciones de menús y submenus, como botones y barras).
NOTA: la transacción SHD0 también nos permite asignar las variantes de transacción creadas como variantes predefinidas en las transacciones estandar. Aunque esta es una opción que habrá que tratar con mucha cautela, pues puede producir mas problemas que ventajas.
La SHD0 solo esta disponible para transacciones con dialogo. Y en las transacciones que ejecutan reports, solo las podremos utilizar para ajustar las opciones de menú disponibles.
 


Integración SAP

Cuando hablamos de SAP como sistema integrado que cubre toda la casuística de nuestro negocio estamos siendo bastante osados. Casi cualquier...