tag:blogger.com,1999:blog-29650326281073933572024-02-08T07:47:15.826-08:00Programación ABAP - SAPPallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-2965032628107393357.post-86624386507468523182008-04-09T13:17:00.000-07:002008-04-09T13:31:55.778-07:00Transacciones para QueriesHola!<br /><br />Después de un largo tiempo, vuelvo a publicar un nuevo consejo.<br /><br />En este caso les comento cómo crear una transacción para queries creados mediante las transacciones SQ01 y SQ02 (no sirve para la SQVI - no se pueden transportar estos queries de manera prolija).<br />Para transportar los queries, lo correcto es crear una transacción y luego transportar la transacción. La forma de crear la transacción no es buscando el nombre del programa que genera el query y asignarlo a la transacción, sino utilizando el tipo de transacción "Transacción de Parámetros" para la transacción "START_REPORT". Marcamos el tilde "Omitir imagen inicial" y usamos los siguientes valores de propuesta para los campos de la dynpro:<br /><br />D_SREPOVARI-REPORT-> Nombre del Grupo de Usuarios del Query<br />D_SREPOVARI-EXTDREPORT-> Nombre del query<br />D_SREPOVARI-REPORTTYPE = "AQ" (de ABAP Query)<br /><br />Hay que tener en cuenta el ámbito funcional con el que se creó el query. El mismo está en la transacción SQ01 en Entorno->Ambitos Funcionales.<br />Existen 2 posibiidades:<br /><ul><li>Ambito estándar</li><li>Ambito Global</li></ul>En general se debe usar el segundo porque es mejor para poder transportar todos los objetos del query. Dependiendo del ámbito funcional, el parámetro D_SREPOVARI-REPORT varía.<br />Para el ámbito estándar, se pone directamente el nombre del grupo de usuarios; pero para ámbito global se debe poner una G (g mayúscula) en la posición 12 de la variable D_SREPOVARI-REPORT. Si no hacen esto, aparecerá un mensaje diciendo que no existe el grupo de usuarios.<br /><br />Esta forma de crear transacciones para queries es la correcta porque si ponemos el nombre del programa directamente, nos va a traer problemas a la hora de transportar la transacción porque el nombre del programa generado por el query depende del ambiente y mandante.<br /><br />Si tienen alguna dudao sugerencia, por favor escríbanme un comentario!Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com6tag:blogger.com,1999:blog-2965032628107393357.post-12016968275554084882008-02-07T04:01:00.000-08:002008-02-07T04:04:30.549-08:00Debuggear procesos de fondo o jobs<div class="post_body clearfix"> <p>Mediante este truco vamos a poder debuggear jobs de la transacción SM37.</p><p>Ir a la SM37, seleccionar el job en cuestión e ingresar en la línea de comandos de SAP "JDBG". Una vez ingresado este comando, el sistema abrirá un modo con el debugging para el job.</p><p>Esta técnica puede resultarnos muy útil cuando queremos debuggear un job, pero tiene como desventaja que si el job no nos da tiempo para realizar el truco vamos a tener que buscar otra solución. En ese caso, podemos intentar poner un WAIT o un loop infinito si estamos en un ambiente de pruebas...</p>Comenten si les resultó útil!<br /></div>Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com1tag:blogger.com,1999:blog-2965032628107393357.post-89803483724381373712008-02-04T08:50:00.000-08:002008-02-04T08:56:07.229-08:00Saltear permisos en transacciones<p>Lo que viene es un truco para poder acceder a transacciones a las que no tenemos autorización.</p><br /><p></p>Desde la transaccion SE37 (Funciones ABAP), ejecutar el módulo de funciones RS_HDSYS_CALL_TC_VARIANT. Ingresar la transacción a la que queremos acceder en el parámetro TCODE y limpiar el parámetro AUTHORITY-CHECK. Presionar F8 para ejecutar la transacción y listo!<br /><p>Les aconsejo que utilicen esto con cuidado, y NUNCA en un ambiente de producción.<br /></p><p> Saludos! </p> Escriban si les parece útil!Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com0tag:blogger.com,1999:blog-2965032628107393357.post-20042362467165509382007-12-26T17:46:00.000-08:002007-12-26T17:53:06.789-08:00Tip - Activar las funciones de precios de la VOFMEste va a ser un post corto, pero muy útil.<br /><br />Alguna vez les pasó que crean una rutina de precios o algún otro objeto de la VOFM para el esquema de SD, lo prueban en el entorno de desarrollo y cuando lo transportan a QA o Producción les da un DUMP o no funciona?<br /><br />Bueno... la solución puede ser esta: ejecutar el reporte RV80HGEN en el sistema destino.<br /><br />Este reporte lo que hace es "activar" las rutinas de la VOFM en el sistema en el que se ejecuta; esto es necesario para que funcionen estas funciones.<br /><br />Otra solución es agregar en la orden de transporte un objeto R3TR XPRA RV80HGEN y esto hará que cuando se transporte la orden, se ejecute automáticamente el reporte en el sistema destino.<br /><br />En esta ocasión les voy a pasar la dirección de un foro en la que pueden hacer todo tipo de preguntas y que intentaré contestar con la mayor brevedad posible:<br /><br /><a href="http://www.todoabap.com.ar/forum/">Foro Programación SAP ABAP</a>Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com0tag:blogger.com,1999:blog-2965032628107393357.post-71059854389331638262007-12-07T06:32:00.000-08:002007-12-07T07:13:30.832-08:00BTE's - Business Transaction EventsLas BTE's, o Business Transaction Events son un tipo de extensión del sistema SAP. A diferencia de las BADI's, únicamente se puede modificar código con las BTE's; no es posible modificar dynpros o menúes.<br />Las BTE's están basadas en Módulos de Funciones y Productos, a diferencia de las BADI's que están basadas en objetos.<br />Al implementar una BTE, se debe crear una interfase para el módulo de funciones de la BTE. De esta manera, el sistema leé una tabla Z y llama dinámicamente la función implementada por el cliente.<br />Existe 2 tipos de interfases:<br />- Interfases de Publicación y Suscripción<br />- Interfases de Proceso<br /><br />Las interfases de Publicación y Suscripción brindan información sobre eventos en particular, como la creación o la modificación de un documento. Por otro lado, las interfases de proceso se utilizan para reemplazar la lógica estándar de SAP por lógica de cliente.<br /><br />En este link vas a encontrar más información acercar de las BTE's y todo lo relacionado con la programación ABAP:<br /><br /><a href="http://www.todoabap.com.ar/btes.html">Business Transaction Events - BTE's</a>Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com0tag:blogger.com,1999:blog-2965032628107393357.post-44605570227595578272007-11-15T14:30:00.001-08:002007-11-15T14:33:40.454-08:00Tipos de Transacciones SAPPor pedido del público, voy a hacer un resumen de los tipos de transacciones en SAP:<br /><br />Transacciones de Diálogo<br /><br />Son las transacciones más comunes dentro del estándar de SAP. Estas transacciones están ligadas a una Dynpro (pantalla) de un programa ABAP. Al llamar a estas transacciones, se carga el programa ABAP y se llama a la Dynpro. De esta manera, una transacción de diálogo llama a una secuencia de pantallas más que a un programa. Sólo durante la lógica de las pantallas se llaman efectivamente los módulos de diálogo del programa. De hecho, se pueden asignar diferentes transacciones de diálogo al mismo programa.<br /><br /> <br />Transacciones de Parámetros<br /><br />Estas transacciones son llamadas a otras transacciones existentes con parámetros de entrada. Es decir que son llamadas a transacciones con parámetros definidos, pudiendo omitir la pantalla inicial de la transacción original.<br /><br /> <br />Transacciones de Variantes<br /><br />Son transacciones ya existentes llamadas con una variante anteriormente creada. Al acceder a una transacción de variante, se ejecuta la transacción subyacente con la variante en cuestión. En las variantes se pueden definir valores para los diferentes valores de las diferentes pantallas, cambiar los atributos de los elementos de pantalla, etc. Las transacciones de variante se mantienen con la transacción SHD0.<br /><br /> <br />Transacciones de Reporte<br /><br />Son transacciones que llaman a un Reporte ABAP. La transacción se debe mapear con la pantalla de selección de un programa ejecutable. Internamente, cuando se llama a este tipo de transacciones el sistema ejecuta un SUBMIT al programa ejecutable.<br /><br /> <br />Transacciones Orientadas a Objetos (OO Transactions)<br /><br />Este tipo de transacciones apareció en la versión 6.10 de SAP. La transacción está linkeada a un método de una clase local o global. Cuando se llama a la transacción se carga el programa correspondiente.<br /><br />En el siguiente link tiene más información acerca de las transacciones, tipos programas y ejemplos de código ABAP:<br /><br /><a href="http://www.todoabap.com.ar/">Ejemplos de ABAP</a>Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com0tag:blogger.com,1999:blog-2965032628107393357.post-31636737936434271502007-11-04T06:50:00.000-08:002007-11-04T06:52:32.833-08:00BADI's (Business ADd Ins)Las BADI's (Business ADd Ins) son un nuevo tipo de extensión al sistema SAP basado en ABAP Objetcs. El objetivo de los mismos es cumplir con los requerimientos del cliente permitiendo agregar nuevas funcionalidades dentro del código estándar de SAP.<br />De la misma manera que con los User Exit's, las BADI's tienen dos vistas: la de definición y la de implementación. Mediante la transacción SE18 accedemos a la Definición de las BADI's. Allí se puede ver las características de la misma: parámetros de entrada, salida, tipo de BADI, etc. En la Implementación de la BADI, a la que se accede mediante la transacción SE19, se pueden ver todas las implementaciones que existan de una BADI determinada.<br /><br />La definición de las BADI's viene definida en el sistema estándar (muy pocas veces es necesario crear una nueva definición para una BADI). En la definición se indica si la BADI es de implementación simple (se puede utilizar sólo una vez, como los User Exits) o múltiple (pueden existir varias implementaciones activas de la misma BADI en el mismo sistema). Además, se pueden definir filtros para la ejecución de la misma permitiendo de esta forma tener diferentes procesos para, por ejemplo, países diferentes. Esto le permite a SAP poder utilizar las BADI's para realizar localizaciones del sistema; por eso es que el sistema estándar ya incluye varias implementaciones de BADI's.<br /><br />Mediante las implementaciones de BADI's también se pueden hacer aplicaciones para negocios específicos (papeleras, petroleras, químicas, etc). Esto hace que las BADI's sean muy útiles. Esto es así porque a diferencia de los User Exits las BADI's poseen una arquitectura Multicapa (SAP, partners, soluciones de clientes, localizaciones, soluciones específicas para industrias, etc); los User Exits son doble capa únicamente (SAP y soluciones de cliente).<br /><br />En <a href="http://www.todoabap.com.ar/badis.html">www.todoabap.com.ar</a> van a encontrar métodos para encontrar las BADI's de una transacción o programa.Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com2tag:blogger.com,1999:blog-2965032628107393357.post-63258722911710457302007-10-31T11:31:00.000-07:002007-10-31T11:43:01.983-07:00BAPI'sBueno... les voy a explicar cómo funcionan las BAPI's en SAP ABAP.<br /><br />Las BAPI's son funciones que sirven para realizar acciones sobre los objetos de negocios de SAP. Son en realidad métodos de los objetos de negocios, y gracias a ellos podemos realizar cargas evitando utilizar Batch Inputs por Call Transaction.<br /><br /><br />Básicamente son funciones como cualquier otra función en ABAP, así que poseen las mismas características: parámetros de entrada, de salida, tablas, excepciones...<br /><br />Por lo general cuando se hace un modificación de un objeto con una BAPI es necesario realizar un COMMIT explícito mediante la función BAPI_TRANSACTION_COMMIT. Si quieren probar si una función les sirve para cargar algún dato en particular, pueden utilizar la transacción SE37 e ir al menú Módulo de Funciones->Verificar->Secuencias Test. Allí se pueden encadenar funciones, de manera de poder ejecutar primero la BAPI y después la función BAPI_TRANSACTION_COMMIT para probar si efectivamente el dato que necesitan cargar es cargado por la BAPI que estén probando.<br /><br />En <a href ="http://www.todoabap.com.ar">www.todoabap.com.ar</a> tiene muchos ejemplos de cómo utilizar BAPI's y también BADI's, User Exits tradicionales, funcionesm el ABAP Workbench, etc.Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com0tag:blogger.com,1999:blog-2965032628107393357.post-7748232831467797102007-10-22T17:50:00.001-07:002007-10-22T17:55:20.061-07:00Programación en ABAP - SAPHola! En este blog vamos a discutir sobre las técnicas de programación en SAP ABAP. Todos los que deseen participar con sugerencias, consejos, links interesantes para explorar son invitados a hacerlo.<br />Para todos los que quieran conocer algo más de este lenguaje de programación utilizado en el sistema SAP les paso el siguiente link en donde encontrarán mucha información útil sobre ABAP, Enhancementes (las nuevas ampliaciones de SAP a partir de la versión 6.0), BAPI's, BADI's, User Exits y mucho más...<br /><br /><a href ="http://www.todoabap.com.ar">www.todoabap.com.ar</a>.<br /><br />Por favor, no dejen de participar en este blog para que podamos ayudarnos mutuamente con los problemas que nos puedan surgir en el mundo ABAP.Pallohttp://www.blogger.com/profile/00272013709553041027noreply@blogger.com1