Sentencia ADD en ABAP: Suma aritmética (obsoleta)

Kategorie
ABAP-Statements
Veröffentlicht
Autor
Johannes

La sentencia ADD realiza una suma aritmética en ABAP. Sin embargo, esta sentencia está obsoleta y se recomienda usar el operador + en su lugar.

Sintaxis (obsoleta)

ADD <operando> TO <variable>.

Ejemplo clásico

" Obsoleto - NO usar
DATA: lv_sum TYPE i VALUE 10.
ADD 5 TO lv_sum. " lv_sum = 15
ADD lv_sum TO lv_sum. " lv_sum = 30

Alternativa moderna (recomendada)

" Moderno - USAR esto
DATA: lv_sum TYPE i VALUE 10.
lv_sum = lv_sum + 5. " lv_sum = 15
lv_sum += 5. " lv_sum = 20 (operador compuesto)

Comparación

ObsoletoModerno
ADD 5 TO lv_sumlv_sum = lv_sum + 5
ADD 5 TO lv_sumlv_sum += 5
ADD lv_a TO lv_blv_b = lv_b + lv_a

Operadores aritméticos modernos

" Suma
lv_result = lv_a + lv_b.
lv_result += lv_a.
" Resta
lv_result = lv_a - lv_b.
lv_result -= lv_a.
" Multiplicación
lv_result = lv_a * lv_b.
lv_result *= lv_a.
" División
lv_result = lv_a / lv_b.
lv_result /= lv_a.
" Resto (módulo)
lv_result = lv_a MOD lv_b.
" Potencia
lv_result = lv_a ** 2.

Cálculos con expresiones

" Expresión completa
DATA(lv_total) = ( lv_price * lv_quantity ) + lv_tax - lv_discount.
" Con funciones
DATA(lv_rounded) = round( val = lv_amount dec = 2 ).
DATA(lv_absolute) = abs( lv_negative ).
DATA(lv_ceiling) = ceil( lv_decimal ).
DATA(lv_floor) = floor( lv_decimal ).

Por qué ADD está obsoleto

  1. Legibilidad: lv_sum += 5 es más claro que ADD 5 TO lv_sum
  2. Consistencia: Los operadores son estándar en todos los lenguajes
  3. ABAP Cloud: La sintaxis moderna es compatible con ABAP Cloud
  4. ATC Warnings: El ABAP Test Cockpit genera advertencias para ADD

Migración de código legacy

" Código legacy
ADD lv_amount TO lv_total.
ADD 1 TO lv_counter.
" Código migrado
lv_total += lv_amount.
lv_counter += 1.
" O más conciso para incremento
lv_counter = lv_counter + 1.

Notas importantes / Mejores prácticas

  • No uses ADD en código nuevo.
  • Usa los operadores aritméticos estándar (+, -, *, /).
  • Los operadores compuestos (+=, -=, etc.) son más concisos.
  • Considera usar REDUCE para sumas de tablas.
  • Consulta ABAP Cleaner para migración automática.