SAP ABAP: Creación de Rangos en ABAP

La creación de rangos en ABAP es algo muy habitual para un desarrollador ABAP. Lo que quizás no todos conozcan es que hay varias maneras de crearlo.

En el post de hoy os vamos a mostrar 3 formar posibles para la creación de de rangos en ABAP.

PRIMERA FORMA: CLÁSICA

Creamos una estructura y un rango del mismo tipo y vamos añadiendo los valores que deseemos. En este caso, es un rango simple con dos valores.

DATA: lr_process_type TYPE RANGE OF crmd_orderadm_h-process_type,
      ls_process_type LIKE LINE OF lr_process_type.

CONSTANTS: lc_i     TYPE c VALUE 'I',
           lc_eq(2) TYPE c VALUE 'EQ'.

CLEAR ls_process_type.
ls_process_type-option = lc_eq.
ls_process_type-sign = lc_i.
ls_process_type-low = 'PROCESO1'.
APPEND ls_process_type TO lr_process_type.

CLEAR ls_process_type.
ls_process_type-option = lc_eq.
ls_process_type-sign = lc_i.
ls_process_type-low = 'PROCESO2'.
APPEND ls_process_type TO lr_process_type.

SEGUNDA FORMA: NUEVAS SENTENCIAS SAP 7.50

Una forma más actual de la versión 7.50 de SAP y que nos ahorra varias líneas de código:

TYPES: ly_tipos_proceso TYPE RANGE OF crmd_orderadm_h-process_type.

DATA(lr_rango_tipo2) = VALUE ly_tipos_proceso( ( sign = lc_i option = lc_eq low = 'PROCESO1' )
( sign = lc_i option = lc_eq low = 'PROCESO2' ) ).

TERCERA OPCIÓN: SELECCIÓN

Traeremos el rango creado directamente desde la selección.

SELECT 'I' AS sign, 'EQ' AS option, object_id AS low
  FROM crmd_orderadm_h
  APPENDING TABLE @lt_feobjeto
    WHERE posting_date EQ @sy-datum.
IF sy-subrc EQ 0.
  SORT lt_feobjeto .
ENDIF.

Esperemos que os sirva de ayuda este truco acerca de los rangos 🙂

Puedes consultar más tips de nuestra web en este enlace.