Skip to content

Releases: Jack-Liang/zadv-validator

v2.0.0

Choose a tag to compare

@Jack-Liang Jack-Liang released this 10 Oct 16:48

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 无此组件),改用 DATE
  • apply_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

Choose a tag to compare

@Jack-Liang Jack-Liang released this 10 Oct 12:13

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

Choose a tag to compare

@Jack-Liang Jack-Liang released this 10 Oct 06:31

首个正式发布。基于 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_VALIDATOR 001–015)
  • ABAP 7.40 SP08+(on-prem;不适用于 ABAP Cloud / Steampunk)
  • 28 个 ABAP Unit 用例;abaplint CI 全绿
  • v0.1–v0.3 的演进(批量预取、消息类化、列过滤、单值校验等)详见 CHANGELOG.md