CleanCore Check

Pega un report, una clase o un include, o abre varios archivos a la vez. Elige el sistema donde va a funcionar y te dice qué no compilará, qué se rompe al migrar a S/4HANA, qué lo hace lento y qué es un riesgo de seguridad, con la corrección de cada caso. Gratis y sin registro. El análisis se hace en tu navegador: el código no se envía a ningún servidor.

También en tu navegador. Con la extensión gratuita CleanCore para GitHub, el análisis aparece al abrir código ABAP en GitHub, también en pull requests. Instalar en Edge · Descargar para Chrome · Firefox, próximamente.

Ctrl + Enter

Ejemplos:
Código ABAP0 líneas
1
Pega código y pulsa Analizar, o carga uno de los ejemplos de arriba.

Qué revisa

72 reglas en siete categorías: preparado para ABAP Cloud, migración a S/4HANA, compatibilidad con la versión de ABAP, sintaxis obsoleta, rendimiento, seguridad y buenas prácticas. Cada hallazgo explica por qué es un problema y cómo se corrige.

Qué corrige solo

MOVE, COMPUTE, ADD, REFRESH, DESCRIBE LINES, CREATE OBJECT, CALL METHOD, CONCATENATE simple y, en ABAP Cloud, sy-datum, sy-uzeit y sy-uname. Las correcciones se adaptan a la versión: en un ECC 7.40 no propone +=, en un 7.0x no propone NEW.

Qué no es

No sustituye al ATC de SAP, que conoce el estado real de cada objeto en tu sistema. Sirve para revisar código antes de tenerlo en un sistema, preparar una migración o hacer una revisión rápida.

Sistemas

Qué cambia según el sistema destino

SistemaQué se comprueba además de lo común
ECC 6.0 · ABAP 7.00 a 7.31Sintaxis que no compila en esas versiones: declaraciones en línea, expresiones de constructor, expresiones de tabla, SQL con @, +=
ECC 6.0 · ABAP 7.40 / 7.50Operadores += (7.54). Correcciones automáticas sin sintaxis de 7.54
S/4HANA on-premiseSimplificación de S/4HANA: VBUK, VBUP, KONV, MKPF/MSEG, BSIS y totales sustituidos; orden de SELECT en HANA; MATNR de 40; Business Partner; transacciones MB* y batch input
S/4HANA Cloud Private EditionLo de on-premise y las reglas de ABAP Cloud como aviso (recomendación clean core)
S/4HANA Cloud Public EditionABAP Cloud estricto: objetos liberados, sin SAP GUI, sin acceso a tablas de SAP, sin COMMIT WORK
SAP BTP ABAP EnvironmentIgual que Public Edition
Para dejar una excepción documentada en tu propio código (por ejemplo, un SUBMIT dinámico que ya validas), añade al final de la línea " cleancore:ignorar SEC-010 motivo. La regla no se aplicará a esa sentencia.

Catálogo

Reglas que aplica

La columna "Sistemas" indica dónde se aplica cada regla.

ReglaQué detectaCategoríaGravedadSistemas
OBS-001MOVE ... TOSintaxis obsoletaAvisoTodos
OBS-002MOVE-CORRESPONDINGSintaxis obsoletaSugerenciaECC 7.40, S/4 on-prem, S/4 PCE, S/4 Public, BTP
OBS-003COMPUTESintaxis obsoletaAvisoTodos
OBS-004ADD / SUBTRACT / MULTIPLY / DIVIDESintaxis obsoletaAvisoTodos
OBS-005Tabla con cabecera (WITH HEADER LINE / OCCURS)Sintaxis obsoletaErrorTodos
OBS-006Sentencia TABLESSintaxis obsoletaAvisoTodos
OBS-007FORM / PERFORMSintaxis obsoletaAvisoTodos
OBS-008RANGESSintaxis obsoletaAvisoTodos
OBS-009REFRESHSintaxis obsoletaAvisoTodos
OBS-010DESCRIBE TABLE ... LINESSintaxis obsoletaSugerenciaTodos
OBS-011CREATE OBJECTSintaxis obsoletaSugerenciaECC 7.40, S/4 on-prem, S/4 PCE, S/4 Public, BTP
OBS-012CALL METHODSintaxis obsoletaSugerenciaTodos
OBS-013ON CHANGE OFSintaxis obsoletaErrorTodos
OBS-014LOOP sin área de trabajoSintaxis obsoletaErrorTodos
OBS-015READ TABLE en lugar de expresión de tablaSintaxis obsoletaSugerenciaECC 7.40, S/4 on-prem, S/4 PCE, S/4 Public, BTP
OBS-016CONCATENATESintaxis obsoletaSugerenciaTodos
OBS-017Open SQL sin host variables (@)Sintaxis obsoletaSugerenciaECC 7.40, S/4 on-prem, S/4 PCE, S/4 Public, BTP
PERF-001SELECT dentro de un bucleRendimientoErrorTodos
PERF-002SELECT *RendimientoAvisoTodos
PERF-003FOR ALL ENTRIES sin comprobar que la tabla tenga datosRendimientoErrorTodos
PERF-004BINARY SEARCH sin SORT previoRendimientoErrorTodos
PERF-005DELETE ADJACENT DUPLICATES sin SORT previoRendimientoAvisoTodos
PERF-006LOOP ... WHERE anidadoRendimientoAvisoTodos
PERF-007MODIFY dentro del LOOP con área de trabajoRendimientoAvisoTodos
PERF-008BYPASSING BUFFERRendimientoAvisoTodos
PERF-009COMMIT WORK dentro de un bucleRendimientoAvisoTodos
PERF-010SELECT ... ENDSELECTRendimientoAvisoTodos
CLD-001Campos de sistema sy-datum / sy-uzeit / sy-unamePreparado para CloudAvisoS/4 PCE, S/4 Public, BTP
CLD-002Acceso directo a tabla estándar de SAPPreparado para CloudErrorS/4 PCE, S/4 Public, BTP
CLD-003Interfaz SAP GUI (WRITE, dynpros, ALV clásico, pantallas de selección)Preparado para CloudErrorS/4 PCE, S/4 Public, BTP
CLD-004Ficheros de PC o del servidorPreparado para CloudErrorS/4 PCE, S/4 Public, BTP
CLD-005CALL TRANSACTION / SUBMIT / LEAVE TO TRANSACTIONPreparado para CloudErrorS/4 PCE, S/4 Public, BTP
CLD-006Módulo de función no liberadoPreparado para CloudAvisoS/4 PCE, S/4 Public, BTP
CLD-007EXPORT/IMPORT MEMORY, SET/GET PARAMETERPreparado para CloudErrorS/4 PCE, S/4 Public, BTP
CLD-008COMMIT WORK / ROLLBACK WORK directoPreparado para CloudAvisoS/4 PCE, S/4 Public, BTP
CLD-010Clase de SAP no liberadaPreparado para CloudErrorS/4 PCE, S/4 Public, BTP
CLD-009MESSAGE con tipo (diálogo)Preparado para CloudAvisoS/4 PCE, S/4 Public, BTP
SEC-001Cláusula WHERE dinámicaSeguridadErrorTodos
SEC-002Tabla o campos dinámicos en SQLSeguridadAvisoTodos
SEC-003Credenciales en el códigoSeguridadErrorTodos
SEC-004Usuario escrito en el códigoSeguridadErrorTodos
SEC-005CLIENT SPECIFIED / USING CLIENTSeguridadAvisoTodos
SEC-006CALL TRANSACTION sin comprobar autorizaciónSeguridadErrorTodos
SEC-007Generación de código o SQL nativoSeguridadErrorTodos
QA-001BREAK-POINT en el códigoBuenas prácticasErrorTodos
QA-002CATCH vacíoBuenas prácticasAvisoTodos
QA-003CATCH cx_rootBuenas prácticasAvisoTodos
QA-004WAIT UP TOBuenas prácticasAvisoTodos
QA-005Pseudocomentario "#ECBuenas prácticasSugerenciaTodos
QA-006Procedimiento muy largoBuenas prácticasSugerenciaTodos
QA-007Texto literal en un mensajeBuenas prácticasSugerenciaTodos
QA-008Valor organizativo fijo en el códigoBuenas prácticasAvisoTodos
QA-009MESSAGE de tipo A o XBuenas prácticasAvisoTodos
QA-010Bloque de código comentadoBuenas prácticasSugerenciaTodos
PERF-011SELECT COUNT(*) para comprobar si existeRendimientoSugerenciaTodos
PERF-012SORT dentro de un bucleRendimientoAvisoTodos
PERF-013COLLECT para sumarRendimientoSugerenciaTodos
SEC-008Escritura directa en tablas estándar de SAPSeguridadErrorTodos
SEC-009Ruta de fichero sin validarSeguridadAvisoTodos
SEC-010Transacción o programa dinámicoSeguridadAvisoTodos
REL-001Declaración en línea (requiere 7.40)Compatibilidad de versiónErrorECC 7.0x
REL-002Expresión de constructor (requiere 7.40)Compatibilidad de versiónErrorECC 7.0x
REL-003Expresión de tabla o line_exists (requiere 7.40)Compatibilidad de versiónErrorECC 7.0x
REL-004SQL con @ y comas (requiere 7.40 SP05)Compatibilidad de versiónErrorECC 7.0x
REL-005Operador +=, -=, *= o /= (requiere 7.54)Compatibilidad de versiónErrorECC 7.0x, ECC 7.40
REL-006String template (requiere 7.02)Compatibilidad de versiónSugerenciaECC 7.0x
S4-001Tabla eliminada o sustituida en S/4HANAMigración a S/4HANAErrorS/4 on-prem, S/4 PCE, S/4 Public, BTP
S4-002Se da por hecho el orden de una SELECT sin ORDER BYMigración a S/4HANAAvisoS/4 on-prem, S/4 PCE, S/4 Public, BTP
S4-003Material con longitud fija de 18 caracteresMigración a S/4HANAAvisoS/4 on-prem, S/4 PCE, S/4 Public, BTP
S4-004Clientes y proveedores fuera de Business PartnerMigración a S/4HANAErrorS/4 on-prem, S/4 PCE, S/4 Public, BTP
S4-005Transacción de movimientos de stock obsoletaMigración a S/4HANAErrorS/4 on-prem, S/4 PCE, S/4 Public, BTP
S4-006Batch input (CALL TRANSACTION ... USING)Migración a S/4HANAAvisoS/4 on-prem, S/4 PCE, S/4 Public, BTP