Repository navigation
Releases: Jack-Liang/zadv-validator
Releases · Jack-Liang/zadv-validator
Release list
v2.0.0
v2.0.0 — 生态与场景
规则免代码可配置、大表分批校验、端到端管线文档与工程化配套。
✨ 新增
- 规则配置表
ZADV_RULES:客户端相关定制表(定制传输类 C,随定制请求传输),COLUMN / COMPARE / UNIQUE 三类规则按场景(SCENARIO)维护,add_rules_from_db( iv_scenario )一行加载——顾问免改代码、配置随传输走。动态 SELECT 无激活顺序依赖,表缺失/场景无记录宽容返回 0;未知 RULE_TYPE 跳过,未知字段/非法操作符照常报 STRUCTURE - 分批校验:
validate( iv_row_offset )让大表切片校验保持全局行号(列级/比较/查重 finding 一致);顺带修复哈希表输入时查重行号恒为 0 的问题;查重与分批互斥、并行调用模式(每片独立实例)在 README 文档化 - Excel 上传端到端示例(README 中英双语):abap2xlsx → string 暂存 → 截断预检 → MOVE → 校验 → ALV/BAL 完整管线;本库不依赖 abap2xlsx,管线自暂存表起对 CSV/AL11 同样适用
- ABAP Cloud 可行性调研:docs/abap-cloud.md——结论 v2.x 维持 on-prem(DDIC 直读/动态 SQL/转换出口/SALV/BAL 均未 released),向 Cloud 演进的第一步(元数据提供者接口化)已记录
- CI 工作流就绪:
abap-unit.yml在 abaplint 之后对 self-hosted runner 执行 abapGit 拉取激活 + ABAP Unit,经仓库变量ABAP_RUNNER控制启停、默认关闭 - 单测 47 → 50:配置表映射(三类/锚点/未知类型/端到端回显)、宽容加载、行号偏移
🔧 修复(真机 7.40 SP08 激活)
ZADV_RULES数据类CUS1→APPL2(CUS1 非标准交付值,报 DT609)db_rules_mapping用例误用 demo 字段名 REMARK(ty_row 无此组件),改用 DATEapply_db_rules的INSERT行类型兼容性(C(30) →CONV string( ))
📦 安装
abapGit 拉取本仓库,建议包名 ZADV_VALIDATOR;包内含 SE91 消息类 ZADV_VALIDATOR(001–020)与定制表 ZADV_RULES,整包激活即可。要求 ABAP 7.40 SP08+(on-prem)。
完整变更见 CHANGELOG.md。
v1.1.0
v1.1.0 — 插件化 · 声明式规则 · 日志与预检
传入任意内表、基于 DDIC 元数据自动校验的 ABAP 通用校验器。本版补齐扩展点:自定义插件、声明式跨字段/行间规则、BAL 日志、截断预检。
✨ 新增
- 校验插件化:实现自包含接口
ZIF_ADV_COLUMN_CHECK并用add_column_check( )注册,自定义单列校验即刻可用;插件收到 值 + 整行引用(ir_row),简单跨字段规则不用等框架 - 声明式跨字段与行间规则
add_compare_rule( ):行级比较field operator other(EQ/NE/LT/LE/GT/GE),如DATE_FROM <= DATE_TO;任一操作数为初始值时跳过add_unique_rule( ):文件内查重——字段组合全表唯一,首次放行、后续报错并在消息里注明首次所在行
- finding 增强:
ty_finding新增severity(E/W/I,永不为空)与rule_id(规则来源回显);ty_rule同步 - ALV helper
display_findings( ):SALV 优化列宽 + 可选标题,无 SALV 系统回退经典列表 - BAL helper
log_findings( ):每条 finding 一条消息写入应用日志(severity → 消息类型),SLG1 查看,全程宽容不抛异常 - 截断预检
precheck_truncation( ):string 暂存表 vs 目标 DDIC 结构同名列长度,超长值入库前预警(TRUNCATION,缺省 W) - 单测 35 → 47:含小写域、区间型域值两项历史补遗(样例对象运行期发现自 DD01L/DD07L,无跨版本硬编码依赖)
- README 英文版 README_EN.md;README 新增「用法总览(API)」速查章节(中英同步)
🔧 修复
- 7.40 SP08 真机激活兼容:动态建表保真 DDIC 行类型(
CREATE DATA ... TYPE STANDARD TABLE OF (name))、泛型字段符号显式定型、SALV CHANGING 传副本、WHERE 列对列比较右侧表名限定(dd07l~domvalue_h)等 - 真机单测修复:比较规则 finding 的 object/消息用操作符符号(
DATE_FROM <= DATE_TO而非LE);SORT/DELETE ADJACENT DUPLICATES遇EMPTY KEY空转(改BY table_line)
📦 安装
abapGit 拉取本仓库,建议包名 ZADV_VALIDATOR;包内含 SE91 消息类 ZADV_VALIDATOR(001–020),整包激活即可。要求 ABAP 7.40 SP08+(on-prem)。
完整变更见 CHANGELOG.md。
v1.0.0
首个正式发布。基于 DDIC 的 ABAP 内表通用校验器——传入任意内表,自动按域固定值、外键(含组合键)、货币/单位参照、格式规则逐行逐字段校验,适合文件上传/批量导入入库前的合法性检查。
✨ v1.0.0 新特性
完整外键映射(DD05S)
- DDIC 检查表字段的真实映射读自 DD05S:非同名检查字段自动生效(如
KNA1-REGIO → T005A-BLAND) - 组合外键按字段组合校验(
LAND1+REGIO → T005A),不再按单字段误判 - 组合键批量预取:去重元组分批 OR-of-ANDs 查库(每批 100 个),伙伴字段为空的行回退单列批量预取
- 宽容语义:伙伴缺失/被列过滤排除 → 单字段语义;伙伴为空 → 宽容回退;MANDT 不参与组合键
CURR/QUAN 参照校验
- CURR/QUAN 金额字段按
DFIES-REFFIELD定位同结构货币/单位代码列,无自有外键/规则时自动补TCURC/WAERS、T006/MSEHI检查 - 完全复用检查表机制:批量预取、命中缓存、宽容回退、CUNIT 转换出口全部继承
工程化
- 库元数据接口
ZIF_ADV_METADATA(c_version/c_author/c_repository/c_license/c_description),主类经 ALIASES 同名暴露 ZADV_DEMO新增 v1.0 演示段:组合外键 / 单位参照 / 货币参照(DDIC 表运行期解析,最小系统自动跳过,不阻塞激活)
🔧 兼容性(7.40 SP08 真机实测修复)
build_msg参数clike化;动态 SELECT 补@转义并调整INTO子句位置;移除abap_componentdescr_tab独立类型依赖describe_by_name前置dd02l/dd04l存在性预检:未知类型不再出现无法捕获的短转储- 测试类动态建表:无 KNA1/MARA/VBAK 的精简系统不再阻塞激活,相关用例自动跳过
📦 安装与要求
- abapGit 拉取本仓库,包名建议
ZADV_VALIDATOR,整包激活(含 SE91 消息类ZADV_VALIDATOR001–015) - ABAP 7.40 SP08+(on-prem;不适用于 ABAP Cloud / Steampunk)
- 28 个 ABAP Unit 用例;abaplint CI 全绿
- v0.1–v0.3 的演进(批量预取、消息类化、列过滤、单值校验等)详见 CHANGELOG.md