## ADDED Requirements ### Requirement: Source Code Upload 系统 SHALL 上传本地源代码到 SAP 系统,执行锁定→写入→解锁流程,不执行语法检查和激活。 upload 不会自动创建对象——上传前对象必须已存在于 SAP 系统中。 #### Scenario: Upload success - **WHEN** 用户执行 upload 命令,对象已存在于 SAP,本地文件有效 - **THEN** 系统执行锁定、写入源码、解锁,报告写入的字符数和行数,不执行语法检查和激活 #### Scenario: Upload non-existent object - **WHEN** 用户上传一个 SAP 中不存在的对象 - **THEN** 系统报告对象不存在的错误(不自动创建,区别于 sync) #### Scenario: Upload with transport request - **WHEN** 用户通过 --corr_nr 指定传输请求号 - **THEN** 系统使用该传输请求号进行锁定和写入 #### Scenario: Upload type without source - **WHEN** 用户尝试上传不支持源码的类型(如 functiongroup、tabletype、messageclass、searchhelp、lockobject) - **THEN** 系统报告该类型不支持上传操作 #### Scenario: Upload local file not found - **WHEN** 用户指定的本地源码文件路径不存在 - **THEN** 系统报告文件不存在的错误 ### Requirement: Syntax Check 系统 SHALL 对 SAP 远程对象的源代码执行语法检查,不上传代码、不激活。 syntax-check 检查 SAP 上现有对象的源码(通常是 active 状态),用于验证结构变更后的依赖影响。 #### Scenario: Syntax check passed - **WHEN** 用户执行 syntax-check 命令,对象的源码无语法错误 - **THEN** 系统报告语法检查通过 #### Scenario: Syntax check failed - **WHEN** 对象源码包含语法错误 - **THEN** 系统报告语法检查未通过,显示每个错误的行号和描述 #### Scenario: Syntax check non-existent object - **WHEN** 用户对 SAP 中不存在的对象执行语法检查 - **THEN** 系统报告对象不存在的错误 #### Scenario: Syntax check type without source - **WHEN** 用户对不支持源码的类型(如 functiongroup、tabletype)执行语法检查 - **THEN** 系统报告该类型不支持语法检查操作