es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“La operación de cálculo de cadena no está permitida aquí” se produce en REDUCE.

Tengo algunos nombres de campos en LT_FIELDS. Estoy tratando de concatenar los datos en esa tabla interna en un formato específico y agregarlo a LT_WHERE para una consulta de selección dinámica.

A continuación se muestra el fragmento que escribí:

TYPES: BEGIN OF ty_whr,
fieldname TYPE string,
END OF ty_whr.

DATA(lt_fields) = VALUE rsds_frange_t( ).
DATA(lt_where) = REDUCE ty_whr(
INIT whereclause = VALUE ty_whr( )
FOR IN lt_fields
NEXT whereclause =
COND #( WHEN whereclause IS NOT INITIAL
THEN -fieldname && | IN | && |@| && -fieldname && | AND |
ELSE -fieldname && | IN | && |@| && -fieldname
) ).

Estoy obteniendo este error en la parte de concatenación:

No se permite el cálculo de cadenas aquí

¿Es incorrecta la sintaxis aquí?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, la sintaxis está mal. No se puede utilizar && para concatenar cadenas en un statement REDUCE. En su lugar, debe usar CONCATENATE.

    La sintaxis correcta sería:

    DATA(lt_where) = REDUCE ty_whr(
    INIT whereclause = VALUE ty_whr( )
    FOR IN lt_fields
    NEXT whereclause =
    COND #( WHEN whereclause IS NOT INITIAL
    THEN CONCATENATE
    -fieldname | IN | @ -fieldname | AND |
    ELSE CONCATENATE
    -fieldname | IN | @ -fieldname
    ) ).

Comments are closed.