La sentencia PARAMETERS es una palabra clave de ABAP que se utiliza exclusivamente en la parte de declaración de programas ejecutables (REPORT), grupos de funciones o module pools. Su propósito es definir un campo de entrada individual en la pantalla de selección estándar (Dynpro 1000) del programa.
A través de este campo, el usuario puede introducir exactamente un valor, que luego estará disponible en el programa en una variable global con el mismo nombre que el parámetro.
Diferenciación importante con SELECT-OPTIONS:
PARAMETERS: Para la entrada de un único valor (p. ej., un número de cliente, una fecha, una planta). Crea una variable.SELECT-OPTIONS: Para delimitaciones complejas (p. ej., un rango de números de cliente, varios materiales individuales, exclusión de ciertos valores). Crea internamente una tabla (tabla de rangos).
Sintaxis
PARAMETERS <nombre_param> { {TYPE <tipo_datos> [LENGTH <longitud>] [DECIMALS <decimales>]} | {LIKE <objeto_datos>} } [DEFAULT <valor_estandar>] [OBLIGATORY] [LOWER CASE] [AS CHECKBOX [USER-COMMAND <cod_funcion>]] [RADIOBUTTON GROUP <nombre_grupo> [USER-COMMAND <cod_funcion>]] [MEMORY ID <pid>] [NO-DISPLAY] [VISIBLE LENGTH <longitud_visible>] [MODIF ID <grupo_modificacion>] [VALUE-REQUEST] " Para ayuda F4 personalizada [HELP-REQUEST]. " Para ayuda F1 personalizada " Adiciones más antiguas/raras como MATCHCODE OBJECT, AS SEARCHPATTERN etc.Componentes
<nombre_param>: El nombre del parámetro. Bajo este nombre se crea una variable global en el programa y (si no esNO-DISPLAY) se genera un campo de entrada en la pantalla de selección.TYPE <tipo_datos> ...oLIKE <objeto_datos>: (Obligatorio) Define el tipo de datos del parámetro y de la variable asociada.TYPE: ¡Preferido! Puede ser un tipo ABAP incorporado (I,D,STRING,C,P…), un elemento de datos del Diccionario ABAP (kunnr,matnr,werks_d…) o un tipo local. Al hacer referencia a tipos del Diccionario, a menudo se proporcionan automáticamente verificaciones de entrada, ayudas F1 y F4.LIKE: Sintaxis más antigua, se refiere a un objeto de datos ya declarado. Debería reemplazarse porTYPE.
DEFAULT <valor_estandar>: (Opcional) Especifica un valor con el que se precarga el campo de entrada en la pantalla de selección.OBLIGATORY: (Opcional) Hace que el campo sea obligatorio. El usuario debe introducir un valor antes de poder ejecutar el programa.LOWER CASE: (Opcional) Permite la entrada de minúsculas e impide la conversión automática a mayúsculas (comportamiento predeterminado para muchos tipos de datos).AS CHECKBOX: (Opcional) Muestra el parámetro como casilla de verificación (Checkbox). La variable<nombre_param>debería entonces serTYPE c LENGTH 1('X'= marcado,' '= no marcado).RADIOBUTTON GROUP <nombre_grupo>: (Opcional) Muestra el parámetro como botón de selección (Radiobutton). Todos los parámetros con el mismo<nombre_grupo>forman un grupo, del cual solo se puede seleccionar una opción. Requiere al menos dos radiobuttons por grupo.<nombre_param>a menudoTYPE c LENGTH 1.MEMORY ID <pid>: (Opcional) Vincula el parámetro con un ID de memoria SAP. El campo se precarga con el valor de la memoria SAP (GET PARAMETER), si está disponible.NO-DISPLAY: (Opcional) La variable<nombre_param>se declara, pero no se muestra ningún campo de entrada en la pantalla de selección. Útil para parámetros “ocultos” que se pasan, por ejemplo, mediante variantes oSUBMIT ... WITH ....VISIBLE LENGTH <longitud_visible>: (Opcional) Controla el ancho visible del campo de entrada en la pantalla (puede ser más corto que la longitud real del campo).MODIF ID <grupo_modificacion>: (Opcional) Asigna un grupo de modificación al parámetro. Esto permite la manipulación dinámica del campo (p. ej., ocultar, desactivar) en el eventoAT SELECTION-SCREEN OUTPUT.
Funcionamiento
- El programa lee las declaraciones al inicio.
- Para cada sentencia
PARAMETERSse crea una variable global. - El sistema genera automáticamente la pantalla de selección estándar (Dynpro 1000) con los campos de entrada correspondientes (excepto con
NO-DISPLAY). - El usuario introduce valores en los campos y ejecuta el programa (F8).
- Después del procesamiento de la pantalla de selección, los valores introducidos (o predeterminados) están disponibles en las variables globales (
<nombre_param>) y pueden utilizarse en el flujo posterior del programa (p. ej., a partir deSTART-OF-SELECTION).
Ejemplos
REPORT z_parameter_demo.
" --- Parte de declaración ---TABLES: spfli. " Para referencia al Diccionario
" Parámetro simple con tipado mediante DiccionarioPARAMETERS p_carrid TYPE spfli-carrid.
" Parámetro obligatorio de fecha con valor predeterminado (hoy)PARAMETERS p_date TYPE d OBLIGATORY DEFAULT sy-datum.
" Checkbox para ejecución de pruebaPARAMETERS p_test AS CHECKBOX.
" Radiobuttons para modo de salidaPARAMETERS: p_list RADIOBUTTON GROUP mode DEFAULT 'X' USER-COMMAND radio, p_grid RADIOBUTTON GROUP mode.
" Parámetro que no se muestraPARAMETERS p_intern TYPE i NO-DISPLAY.
" Parámetro que permite minúsculasPARAMETERS p_text TYPE c LENGTH 40 LOWER CASE.
" --- Lógica de procesamiento ---START-OF-SELECTION.
WRITE: / 'Aerolínea:', p_carrid. WRITE: / 'Fecha:', p_date.
IF p_test = 'X'. WRITE: / 'Ejecución de prueba está activa.'. ELSE. WRITE: / 'Ejecución real.'. ENDIF.
IF p_list = 'X'. WRITE: / 'Salida como lista seleccionada.'. ELSE. WRITE: / 'Salida como Grid seleccionada.'. ENDIF.
WRITE: / 'Texto introducido:', p_text.
" p_intern podría usarse aquí si fue llenado mediante SUBMIT, por ejemplo.Notas Importantes / Mejores Prácticas
PARAMETERSpertenece siempre a la parte de declaración de un programa.- Utiliza la adición
TYPEcon referencia a elementos de datos o campos de tabla del Diccionario ABAP (SE11). Así obtienes automáticamente el tipo de datos correcto, longitud, ayuda F1, ayuda de valores F4 y posibles verificaciones de entrada. - Usa
PARAMETERSpara entradas simples donde el usuario solo debe especificar un único valor. Para delimitaciones más complejas (rangos, valores múltiples, exclusiones) está previstoSELECT-OPTIONS. - Haz que los campos sean obligatorios con
OBLIGATORYcuando una entrada es indispensable para la lógica del programa. - Utiliza
AS CHECKBOXyRADIOBUTTON GROUPpara decisiones simples de sí/no u opciones de selección exclusivas.