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.
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
| Sistema | Qué se comprueba además de lo común |
|---|---|
| ECC 6.0 · ABAP 7.00 a 7.31 | Sintaxis 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.50 | Operadores += (7.54). Correcciones automáticas sin sintaxis de 7.54 |
| S/4HANA on-premise | Simplificació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 Edition | Lo de on-premise y las reglas de ABAP Cloud como aviso (recomendación clean core) |
| S/4HANA Cloud Public Edition | ABAP Cloud estricto: objetos liberados, sin SAP GUI, sin acceso a tablas de SAP, sin COMMIT WORK |
| SAP BTP ABAP Environment | Igual que Public Edition |
" 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.
| Regla | Qué detecta | Categoría | Gravedad | Sistemas |
|---|---|---|---|---|
| OBS-001 | MOVE ... TO | Sintaxis obsoleta | Aviso | Todos |
| OBS-002 | MOVE-CORRESPONDING | Sintaxis obsoleta | Sugerencia | ECC 7.40, S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| OBS-003 | COMPUTE | Sintaxis obsoleta | Aviso | Todos |
| OBS-004 | ADD / SUBTRACT / MULTIPLY / DIVIDE | Sintaxis obsoleta | Aviso | Todos |
| OBS-005 | Tabla con cabecera (WITH HEADER LINE / OCCURS) | Sintaxis obsoleta | Error | Todos |
| OBS-006 | Sentencia TABLES | Sintaxis obsoleta | Aviso | Todos |
| OBS-007 | FORM / PERFORM | Sintaxis obsoleta | Aviso | Todos |
| OBS-008 | RANGES | Sintaxis obsoleta | Aviso | Todos |
| OBS-009 | REFRESH | Sintaxis obsoleta | Aviso | Todos |
| OBS-010 | DESCRIBE TABLE ... LINES | Sintaxis obsoleta | Sugerencia | Todos |
| OBS-011 | CREATE OBJECT | Sintaxis obsoleta | Sugerencia | ECC 7.40, S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| OBS-012 | CALL METHOD | Sintaxis obsoleta | Sugerencia | Todos |
| OBS-013 | ON CHANGE OF | Sintaxis obsoleta | Error | Todos |
| OBS-014 | LOOP sin área de trabajo | Sintaxis obsoleta | Error | Todos |
| OBS-015 | READ TABLE en lugar de expresión de tabla | Sintaxis obsoleta | Sugerencia | ECC 7.40, S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| OBS-016 | CONCATENATE | Sintaxis obsoleta | Sugerencia | Todos |
| OBS-017 | Open SQL sin host variables (@) | Sintaxis obsoleta | Sugerencia | ECC 7.40, S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| PERF-001 | SELECT dentro de un bucle | Rendimiento | Error | Todos |
| PERF-002 | SELECT * | Rendimiento | Aviso | Todos |
| PERF-003 | FOR ALL ENTRIES sin comprobar que la tabla tenga datos | Rendimiento | Error | Todos |
| PERF-004 | BINARY SEARCH sin SORT previo | Rendimiento | Error | Todos |
| PERF-005 | DELETE ADJACENT DUPLICATES sin SORT previo | Rendimiento | Aviso | Todos |
| PERF-006 | LOOP ... WHERE anidado | Rendimiento | Aviso | Todos |
| PERF-007 | MODIFY dentro del LOOP con área de trabajo | Rendimiento | Aviso | Todos |
| PERF-008 | BYPASSING BUFFER | Rendimiento | Aviso | Todos |
| PERF-009 | COMMIT WORK dentro de un bucle | Rendimiento | Aviso | Todos |
| PERF-010 | SELECT ... ENDSELECT | Rendimiento | Aviso | Todos |
| CLD-001 | Campos de sistema sy-datum / sy-uzeit / sy-uname | Preparado para Cloud | Aviso | S/4 PCE, S/4 Public, BTP |
| CLD-002 | Acceso directo a tabla estándar de SAP | Preparado para Cloud | Error | S/4 PCE, S/4 Public, BTP |
| CLD-003 | Interfaz SAP GUI (WRITE, dynpros, ALV clásico, pantallas de selección) | Preparado para Cloud | Error | S/4 PCE, S/4 Public, BTP |
| CLD-004 | Ficheros de PC o del servidor | Preparado para Cloud | Error | S/4 PCE, S/4 Public, BTP |
| CLD-005 | CALL TRANSACTION / SUBMIT / LEAVE TO TRANSACTION | Preparado para Cloud | Error | S/4 PCE, S/4 Public, BTP |
| CLD-006 | Módulo de función no liberado | Preparado para Cloud | Aviso | S/4 PCE, S/4 Public, BTP |
| CLD-007 | EXPORT/IMPORT MEMORY, SET/GET PARAMETER | Preparado para Cloud | Error | S/4 PCE, S/4 Public, BTP |
| CLD-008 | COMMIT WORK / ROLLBACK WORK directo | Preparado para Cloud | Aviso | S/4 PCE, S/4 Public, BTP |
| CLD-010 | Clase de SAP no liberada | Preparado para Cloud | Error | S/4 PCE, S/4 Public, BTP |
| CLD-009 | MESSAGE con tipo (diálogo) | Preparado para Cloud | Aviso | S/4 PCE, S/4 Public, BTP |
| SEC-001 | Cláusula WHERE dinámica | Seguridad | Error | Todos |
| SEC-002 | Tabla o campos dinámicos en SQL | Seguridad | Aviso | Todos |
| SEC-003 | Credenciales en el código | Seguridad | Error | Todos |
| SEC-004 | Usuario escrito en el código | Seguridad | Error | Todos |
| SEC-005 | CLIENT SPECIFIED / USING CLIENT | Seguridad | Aviso | Todos |
| SEC-006 | CALL TRANSACTION sin comprobar autorización | Seguridad | Error | Todos |
| SEC-007 | Generación de código o SQL nativo | Seguridad | Error | Todos |
| QA-001 | BREAK-POINT en el código | Buenas prácticas | Error | Todos |
| QA-002 | CATCH vacío | Buenas prácticas | Aviso | Todos |
| QA-003 | CATCH cx_root | Buenas prácticas | Aviso | Todos |
| QA-004 | WAIT UP TO | Buenas prácticas | Aviso | Todos |
| QA-005 | Pseudocomentario "#EC | Buenas prácticas | Sugerencia | Todos |
| QA-006 | Procedimiento muy largo | Buenas prácticas | Sugerencia | Todos |
| QA-007 | Texto literal en un mensaje | Buenas prácticas | Sugerencia | Todos |
| QA-008 | Valor organizativo fijo en el código | Buenas prácticas | Aviso | Todos |
| QA-009 | MESSAGE de tipo A o X | Buenas prácticas | Aviso | Todos |
| QA-010 | Bloque de código comentado | Buenas prácticas | Sugerencia | Todos |
| PERF-011 | SELECT COUNT(*) para comprobar si existe | Rendimiento | Sugerencia | Todos |
| PERF-012 | SORT dentro de un bucle | Rendimiento | Aviso | Todos |
| PERF-013 | COLLECT para sumar | Rendimiento | Sugerencia | Todos |
| SEC-008 | Escritura directa en tablas estándar de SAP | Seguridad | Error | Todos |
| SEC-009 | Ruta de fichero sin validar | Seguridad | Aviso | Todos |
| SEC-010 | Transacción o programa dinámico | Seguridad | Aviso | Todos |
| REL-001 | Declaración en línea (requiere 7.40) | Compatibilidad de versión | Error | ECC 7.0x |
| REL-002 | Expresión de constructor (requiere 7.40) | Compatibilidad de versión | Error | ECC 7.0x |
| REL-003 | Expresión de tabla o line_exists (requiere 7.40) | Compatibilidad de versión | Error | ECC 7.0x |
| REL-004 | SQL con @ y comas (requiere 7.40 SP05) | Compatibilidad de versión | Error | ECC 7.0x |
| REL-005 | Operador +=, -=, *= o /= (requiere 7.54) | Compatibilidad de versión | Error | ECC 7.0x, ECC 7.40 |
| REL-006 | String template (requiere 7.02) | Compatibilidad de versión | Sugerencia | ECC 7.0x |
| S4-001 | Tabla eliminada o sustituida en S/4HANA | Migración a S/4HANA | Error | S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| S4-002 | Se da por hecho el orden de una SELECT sin ORDER BY | Migración a S/4HANA | Aviso | S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| S4-003 | Material con longitud fija de 18 caracteres | Migración a S/4HANA | Aviso | S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| S4-004 | Clientes y proveedores fuera de Business Partner | Migración a S/4HANA | Error | S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| S4-005 | Transacción de movimientos de stock obsoleta | Migración a S/4HANA | Error | S/4 on-prem, S/4 PCE, S/4 Public, BTP |
| S4-006 | Batch input (CALL TRANSACTION ... USING) | Migración a S/4HANA | Aviso | S/4 on-prem, S/4 PCE, S/4 Public, BTP |