{"_id":"@changzhaohui/abap-lib","name":"@changzhaohui/abap-lib","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.2":{"name":"@changzhaohui/abap-lib","version":"1.0.2","description":"ABAP 分析工具库 - 整合屏幕解析、流程追踪、PBO/PAI分析和CSV导出","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc && npm run copy-python","copy-python":"mkdir -p dist/server-scripts/python && cp -r src/server-scripts/python/*.py dist/server-scripts/python/","dev":"tsc --watch","clean":"rm -rf dist","prepublishOnly":"npm run build","test":"jest","lint":"eslint src/**/*.ts","example:screen-parser":"ts-node examples/01-screen-parser.ts","example:flow-tracer":"ts-node examples/02-flow-tracer.ts","example:pbo-pai-analyzer":"ts-node examples/03-pbo-pai-analyzer.ts","example:csv-exporter":"ts-node examples/04-csv-exporter.ts","example:all-in-one":"npx tsx examples/05-all-in-one.ts","example:abaplint":"npx tsx examples/06-abaplint-integration.ts","example:table-parser":"npx tsx examples/07-table-parser.ts","example:remote":"npx tsx examples/08-remote-analyzer.ts","example:serena-client":"npx tsx examples/09-serena-mcp-client.ts","example:server-analyzer":"npx tsx examples/10-server-analyzer.ts","example:script-deployer":"npx tsx examples/11-script-deployer.ts","example:server-scripts":"npx tsx examples/12-server-scripts-usage.ts","deploy-scripts":"npx tsx examples/11-script-deployer.ts","deploy-scripts:force":"npx tsx examples/11-script-deployer.ts --force","example":"npm run example:all-in-one"},"keywords":["sap","abap","parser","screen-analysis","flow-tracer","pbo-pai","csv-export","reverse-engineering"],"author":{"name":"824000672@qq.com"},"license":"MIT","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/changzhaohui/sap-abap-reverse-engineering.git","directory":"packages/abap-lib"},"dependencies":{"@abaplint/core":"^2.113.237","@modelcontextprotocol/sdk":"^1.0.0"},"devDependencies":{"@types/node":"^20.10.0","@typescript-eslint/eslint-plugin":"^6.13.0","@typescript-eslint/parser":"^6.13.0","eslint":"^8.54.0","jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.3.3"},"engines":{"node":">=16.0.0"},"_id":"@changzhaohui/abap-lib@1.0.2","gitHead":"9da0fbb40c78b14ed721c718c440f92153a13961","bugs":{"url":"https://github.com/changzhaohui/sap-abap-reverse-engineering/issues"},"homepage":"https://github.com/changzhaohui/sap-abap-reverse-engineering#readme","_nodeVersion":"22.13.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-WE7YMKfJ6n6Rts0uwJerZP0AMMcM9Pdozb+2jjfFr05p3UNfrLshPSiljViGqfKtgv6UCI0u+namHCuwzpzAOg==","shasum":"9ad03260bf908a4edb939db50de3b71aae0a64bf","tarball":"https://registry.npmjs.org/@changzhaohui/abap-lib/-/abap-lib-1.0.2.tgz","fileCount":115,"unpackedSize":727160,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCzpVy2PtbouAeKsjUyblRAz2hVH3fT2FLSW72qMHzhxwIgfRcCwgz+dyKaNbZbdGH2jv9UyEpnBWU8xLi9XlzEDDo="}]},"_npmUser":{"name":"changzhaohui","email":"741603762@qq.com"},"directories":{},"maintainers":[{"name":"changzhaohui","email":"741603762@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/abap-lib_1.0.2_1765885542028_0.05240216653360097"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-16T11:45:41.863Z","1.0.2":"2025-12-16T11:45:42.169Z","modified":"2025-12-16T11:45:42.537Z"},"maintainers":[{"name":"changzhaohui","email":"741603762@qq.com"}],"description":"ABAP 分析工具库 - 整合屏幕解析、流程追踪、PBO/PAI分析和CSV导出","homepage":"https://github.com/changzhaohui/sap-abap-reverse-engineering#readme","keywords":["sap","abap","parser","screen-analysis","flow-tracer","pbo-pai","csv-export","reverse-engineering"],"repository":{"type":"git","url":"git+https://github.com/changzhaohui/sap-abap-reverse-engineering.git","directory":"packages/abap-lib"},"author":{"name":"824000672@qq.com"},"bugs":{"url":"https://github.com/changzhaohui/sap-abap-reverse-engineering/issues"},"license":"MIT","readme":"# @qwe8652591/abap-lib\n\nABAP 分析工具库 - 整合屏幕解析、流程追踪、PBO/PAI分析和CSV导出的完整解决方案\n\n## 📦 安装\n\n```bash\nnpm install @qwe8652591/abap-lib\n```\n\n## ✨ 核心能力\n\n### 1️⃣ 屏幕解析器 (Screen Parser)\n解析 SAP 屏幕 XML，提取屏幕、字段、流程逻辑\n\n### 2️⃣ 执行流程追踪器 (Flow Tracer)\n追踪屏幕加载和执行流程，构建调用图\n\n### 3️⃣ PBO/PAI 分析器 (PBO/PAI Analyzer)\n分析 PBO/PAI 模块和控件级事件，提取调用链\n\n### 4️⃣ CSV 导出器 (CSV Exporter)\n导出屏幕总览、路径、调用链和控件清单为 CSV\n\n## 🚀 快速开始\n\n### 一键执行所有分析\n\n```typescript\nimport { ABAPAnalyzer } from '@qwe8652591/abap-lib';\n\nconst analyzer = new ABAPAnalyzer('./saplmegui.prog.xml');\n\n// 一键执行：解析 + 分析 + 导出\nawait analyzer.analyzeAll('./output', {\n  parser: {\n    includeControlEvents: true,\n    includeCallChains: true\n  },\n  analyzer: {\n    traceDepth: 5\n  },\n  exporter: {\n    filePrefix: 'my_'\n  }\n});\n\n// 查看统计信息\nconst stats = analyzer.getStatistics();\nconsole.log(`解析了 ${stats.totalScreens} 个屏幕`);\n```\n\n### 分步执行\n\n```typescript\nimport { ABAPAnalyzer } from '@qwe8652591/abap-lib';\n\nconst analyzer = new ABAPAnalyzer('./saplmegui.prog.xml');\n\n// 步骤1: 解析屏幕\nconst screens = await analyzer.parseScreens();\nconsole.log(`找到 ${screens.length} 个屏幕`);\n\n// 步骤2: 生成屏幕路径\nconst paths = await analyzer.generateScreenPaths();\nconsole.log(`生成 ${paths.length} 条路径`);\n\n// 步骤3: 分析 PBO/PAI\nconst { moduleCallChains, controlEvents } = await analyzer.analyzePBOPAI();\nconsole.log(`找到 ${moduleCallChains.length} 个模块`);\n\n// 步骤4: 追踪执行流程\nconst flow = await analyzer.traceExecutionFlow('0014');\nconsole.log(`追踪了 ${flow.steps.length} 个步骤`);\n\n// 步骤5: 导出 CSV\nawait analyzer.exportAllCSV('./output');\n```\n\n## 📊 使用独立模块\n\n### 屏幕解析器\n\n```typescript\nimport { ScreenParser } from '@qwe8652591/abap-lib';\n\nconst parser = new ScreenParser();\nconst screens = await parser.parse('./saplmegui.prog.xml', {\n  screenNumberFilter: ['0014', '0010'] // 可选：只解析特定屏幕\n});\n```\n\n### 执行流程追踪器\n\n```typescript\nimport { ExecutionFlowTracer } from '@qwe8652591/abap-lib';\n\nconst tracer = new ExecutionFlowTracer();\nconst flow = await tracer.trace('0014', screens, {\n  traceDepth: 10,\n  includeDynamicCalls: true\n});\n\nconsole.log('执行步骤:');\nflow.steps.forEach(step => {\n  console.log(`${step.stepNumber}. ${step.type}: ${step.description}`);\n});\n```\n\n### PBO/PAI 分析器\n\n```typescript\nimport { PBOPAIAnalyzer } from '@qwe8652591/abap-lib';\n\nconst analyzer = new PBOPAIAnalyzer();\nconst { moduleCallChains, controlEvents } = await analyzer.analyze(screens);\n\n// 查看模块调用链\nmoduleCallChains.forEach(chain => {\n  console.log(`${chain.moduleName}: ${chain.callChain}`);\n});\n\n// 查看控件级事件\ncontrolEvents.forEach(event => {\n  console.log(`${event.controlName}: ${event.moduleName} (${event.timing})`);\n});\n```\n\n### CSV 导出器\n\n```typescript\nimport { CSVExporter } from '@qwe8652591/abap-lib';\n\nconst exporter = new CSVExporter();\n\n// 导出屏幕总览\nawait exporter.exportScreenOverview(screens, './屏幕总览.csv');\n\n// 导出控件清单（含事件）\nawait exporter.exportControlsWithEvents(screens, controlEvents, './控件清单.csv');\n```\n\n## 📁 生成的 CSV 文件\n\n执行 `analyzeAll()` 后会生成以下 CSV 文件：\n\n1. **屏幕总览.csv** - 所有屏幕的基本信息\n2. **屏幕路径.csv** - 屏幕层级关系和导航路径\n3. **PBO-PAI方法调用链.csv** - 每个模块的详细调用链\n4. **控件清单(含事件).csv** - 所有控件及其事件信息\n\n## 🔧 API 文档\n\n### ABAPAnalyzer\n\n主分析器类，整合所有功能。\n\n```typescript\nclass ABAPAnalyzer {\n  constructor(xmlFilePath: string)\n  \n  // 解析屏幕\n  parseScreens(config?: ParserConfig): Promise<Screen[]>\n  \n  // 追踪执行流程\n  traceExecutionFlow(entryScreen: string, config?: AnalyzerConfig): Promise<ExecutionFlow>\n  \n  // 分析 PBO/PAI\n  analyzePBOPAI(config?: ParserConfig): Promise<{\n    moduleCallChains: ModuleCallChain[];\n    controlEvents: ControlEvent[];\n  }>\n  \n  // 生成屏幕路径\n  generateScreenPaths(): Promise<ScreenPath[]>\n  \n  // 导出所有 CSV\n  exportAllCSV(outputDir: string, config?: ExporterConfig): Promise<void>\n  \n  // 一键执行所有\n  analyzeAll(outputDir: string, config?: {...}): Promise<void>\n  \n  // 获取统计信息\n  getStatistics(): Statistics\n  \n  // 获取数据\n  getData(): { screens, screenPaths, moduleCallChains, controlEvents }\n}\n```\n\n### 类型定义\n\n```typescript\ninterface ParserConfig {\n  xmlFilePath?: string;\n  screenNumberFilter?: string[];\n  parseScreens?: boolean;\n  parseFunctions?: boolean;\n  parseClasses?: boolean;\n  parseDictionary?: boolean;\n  parseTables?: boolean;      // 🆕 独立解析表\n  parseDomains?: boolean;     // 🆕 独立解析域\n  parsePrograms?: boolean;\n  parseInterfaces?: boolean;\n  parseFunctionGroups?: boolean;\n}\n\ninterface AnalyzerConfig {\n  traceDepth?: number;\n  includeDynamicCalls?: boolean;\n  resolveVariables?: boolean;\n}\n\ninterface ExporterConfig {\n  outputDir?: string;\n  filePrefix?: string;\n  csvOptions?: CSVExportOptions;\n}\n\ninterface Screen {\n  screenNumber: string;\n  type: string;\n  description: string;\n  pboModules: string[];\n  paiModules: string[];\n  fields: ScreenField[];\n}\n```\n\n## 🆕 表解析功能\n\nABAPAnalyzer 现在支持独立的表定义解析。\n\n### 基本用法\n\n```typescript\nimport { ABAPAnalyzer } from '@qwe8652591/abap-lib';\n\n// 使用 abaplint 深度解析（推荐）\nconst analyzer = new ABAPAnalyzer(projectPath, true);\n\n// 只解析表定义\nawait analyzer.analyzeAll({\n  parseScreens: false,\n  parseTables: true\n});\n\n// 获取表列表\nconst tables = analyzer.getTables();\n\n// 获取特定表的详细信息\nconst tableDetail = analyzer.getTableDetails('VBAK');\nconsole.log(`表 ${tableDetail.name} 有 ${tableDetail.fields.length} 个字段`);\n```\n\n### 配置选项\n\n- `parseTables: boolean` - 独立解析表定义\n- `parseDomains: boolean` - 独立解析域定义\n- `parseDictionary: boolean` - 同时解析表和域（兼容旧版）\n\n### 详细文档\n\n查看 [表解析文档](./docs/table-parsing.md) 了解更多信息。\n\n## 🌟 示例项目\n\n查看 `examples/` 目录获取更多示例：\n\n- `01-screen-parser.ts` - 屏幕解析示例\n- `02-flow-tracer.ts` - 流程追踪示例\n- `03-pbo-pai-analyzer.ts` - PBO/PAI 分析示例\n- `04-csv-exporter.ts` - CSV 导出示例\n- `05-all-in-one.ts` - 完整流程示例 ⭐\n- `08-table-parser-standalone.ts` - 表解析示例 🆕\n\n## 📝 开发指南\n\n### 构建\n\n```bash\nnpm run build\n```\n\n### 开发模式\n\n```bash\nnpm run dev\n```\n\n### 运行示例\n\n```bash\nnpm run example:all-in-one\n```\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 📄 许可证\n\nMIT\n\n## 👤 作者\n\n824000672@qq.com\n\n## 🔗 相关项目\n\n- [@qwe8652591/abap-parser](../abap-parser) - ABAP 解析器\n- [@qwe8652591/mcp-abap-adt](../abap-download) - ABAP ADT MCP Server\n\n","readmeFilename":"README.md","_rev":"1-2cb62666474b0541308549c2fd42b3ad"}