permitir la selección de filas en un ALV

Cómo permitir la selección de filas en un ALV Grid

Para que el usuario pueda seleccionar filas en un ALV (por ejemplo, para luego borrarlas, procesarlas o exportarlas), debes configurar la propiedad sel_mode en la estructura de layout (LVC_S_LAYO). El valor ‘A’ activa la selección de filas completa. Código a…

Sentencia include structure

Include structure en ABAP

INCLUDE STRUCTURE incorpora todos los campos de una estructura existente dentro de una nueva estructura o tabla interna. Dicho de otra forma, permite reutilizar una estructura ya definida como parte de otra estructura más grande. Sintaxis de INCLUDE STRUCTURE: INCLUDE…

Como poner o quitar ceros iniciales a las variables con la nueva sixtaxis

Cómo añadir o quitar los ceros iniciales de una variable

En ABAP, trabajar con campos alfanuméricos que representan números con ceros a la izquierda (como ‘000000123’) es muy común. Necesitas poner ceros para guardar datos correctamente (ej. en una tabla) y quitarlos para mostrarlos al usuario (ej. ‘123’). Aquí tienes…

cómo traducir el metadata de una cds view

Cómo traducir una Metadata Extension de CDS View

Las metadata extensions de CDS Views (EXTEND VIEW con @Metadata) contienen textos que también se pueden traducir (etiquetas de UI, tooltips, etc.). A diferencia de la CDS base, la traducción se hace en SE63 con un tipo de objeto específico:…

Crear un fieldcatalog de manera dinámica

Cómo crear un fieldcatalog dinámico

Cuando trabajas con ALV, una de las tareas más repetitivas es definir el fieldcatalog: decirle a ALV qué columnas mostrar, con qué título, etc. Hacerlo dinámico significa que el programa no necesita saber de antemano la estructura de la tabla;…

Clases

Clases en SAP ABAP

Las clases en ABAP permiten organizar tu código de manera estructurada, reutilizable y fácil de entender. En este artículo veremos: ¿Qué es una clase en ABAP? En ABAP, una clase es como una plantilla que describe cómo deben ser ciertos…

Cómo traducir una CDS View

Cómo traducir una CDS View

Las CDS Views pueden mostrar descripciones en el idioma del usuario si están traducidas. Por defecto, el texto que ves en @EndUserText.label o en el título de la vista está en el idioma de desarrollo (normalmente inglés). Para que aparezca…

Cómo contar el número de registros de una tabla

Cómo contar el número de registros de una tabla interna

Saber cuántas líneas tiene una tabla interna es una necesidad muy habitual. Pues a veces, lo necesitamos saber para controlar bucles, mostrar totales al usuario o simplemente saber si hay datos antes de procesar. En ABAP hay dos formas principales…

Operaciones con tablas internas en ABAP

Operaciones más importantes con tablas internas en ABAP

Las tablas internas son una de las estructuras más utilizadas en ABAP. Gran parte de la lógica de negocio consiste en leer, modificar, ordenar, filtrar y procesar datos almacenados en ellas. Aunque muchos desarrolladores conocen las operaciones básicas, ABAP ofrece…

Cómo referenciar el campo moneda y cantidad en un ALV

Cómo referenciar un campo de precio con su moneda en ALV

Cuando muestras importes en un ALV, es fundamental que el sistema sepa qué moneda aplica a cada cantidad. Si no, el ALV no podrá formatear correctamente los números (decimales, separadores de miles) ni mostrar el símbolo de moneda adecuado. En…

User exits en sap

¿Qué son los user exits en SAP ABAP?

Uno de los retos más habituales en SAP es adaptar el estándar a las necesidades de una empresa sin modificar el código original. Las User Exits permiten añadir lógica personalizada en puntos concretos del estándar SAP sin necesidad de modificar…

Cómo eliminar registros duplicados

Eliminar registros duplicados en ABAP

Cuando tienes una tabla interna con registros repetidos, necesitas quedarte solo con los únicos. En ABAP, la forma clásica de hacerlo es con DELETE ADJACENT DUPLICATES. Pero atención: solo elimina duplicados adyacentes. Es decir, los repetidos tienen que estar uno…

Que es un function import

Function Imports en SAP Gateway

Cuando desarrollas servicios OData en SAP, a menudo necesitas hacer algo que no es crear, leer, actualizar o borrar un registro. Por ejemplo: aprobar un pedido, calcular el total de ventas o enviar un correo. Para esos casos, OData tiene…

Diferencia entre initial y null

Diferencia entre INITIAL y NULL

En ABAP, NULL e INITIAL no significan lo mismo. Y aunque muchas veces parezca que sí, entender la diferencia es importante cuando trabajas con Open SQL, CDS Views, HANA, APIs o integraciones externas. Porque en ABAP clásico normalmente trabajamos con…

filtrar en AMDP usando SELECT-OPTIONS

Cómo filtrar en AMDP usando SELECT-OPTIONS

Uno de los problemas más comunes cuando empiezas con AMDP es intentar usar un SELECT-OPTIONS directamente en la consulta a base de datos, y no funciona. La razón es que SELECT-OPTIONS es una característica de ABAP, no de SQLScript. Por…

Happy indentation

Happy indentation en ABAP

Uno de los problemas más comunes en ABAP (y en cualquier lenguaje) es el exceso de indentación. Empiezas con un IF, luego otro dentro, luego otro más… y acabas con código que parece una escalera. Difícil de leer, difícil de…

Buenas practicas en abap dentro de un LOOP

No hagas esto nunca dentro de un LOOP

Una de las malas prácticas más conocidas en ABAP —y también una de las más comunes cuando empiezas— es hacer consultas a base de datos dentro de un LOOP. Al principio parece algo lógico e incluso cómodo. Necesitas un dato…