“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
NEXT whereclause =
COND #( WHEN whereclause IS NOT INITIAL
THEN
ELSE
) ).
Estoy obteniendo este error en la parte de concatenación:
No se permite el cálculo de cadenas aquí
¿Es incorrecta la sintaxis aquí?
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( IN lt_fields -fieldname | IN | @ -fieldname | AND | -fieldname | IN | @ -fieldname
INIT whereclause = VALUE ty_whr( )
FOR
NEXT whereclause =
COND #( WHEN whereclause IS NOT INITIAL
THEN CONCATENATE
ELSE CONCATENATE
) ).