@qwe8652591/abap-recursive-query 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +223 -0
  3. package/dist/cli/consumer-cli.d.ts +8 -0
  4. package/dist/cli/consumer-cli.d.ts.map +1 -0
  5. package/dist/cli/consumer-cli.js +180 -0
  6. package/dist/cli/producer-cli.d.ts +8 -0
  7. package/dist/cli/producer-cli.d.ts.map +1 -0
  8. package/dist/cli/producer-cli.js +249 -0
  9. package/dist/cli/query-object.d.ts +3 -0
  10. package/dist/cli/query-object.d.ts.map +1 -0
  11. package/dist/cli/query-object.js +486 -0
  12. package/dist/common/FilterCache.d.ts +62 -0
  13. package/dist/common/FilterCache.d.ts.map +1 -0
  14. package/dist/common/FilterCache.js +119 -0
  15. package/dist/common/RedisQueueManager.d.ts +170 -0
  16. package/dist/common/RedisQueueManager.d.ts.map +1 -0
  17. package/dist/common/RedisQueueManager.js +663 -0
  18. package/dist/common/abapStructures.d.ts +391 -0
  19. package/dist/common/abapStructures.d.ts.map +1 -0
  20. package/dist/common/abapStructures.js +2 -0
  21. package/dist/common/config.d.ts +66 -0
  22. package/dist/common/config.d.ts.map +1 -0
  23. package/dist/common/config.js +56 -0
  24. package/dist/common/index.d.ts +13 -0
  25. package/dist/common/index.d.ts.map +1 -0
  26. package/dist/common/index.js +38 -0
  27. package/dist/common/recursiveQueryConfig.d.ts +77 -0
  28. package/dist/common/recursiveQueryConfig.d.ts.map +1 -0
  29. package/dist/common/recursiveQueryConfig.js +129 -0
  30. package/dist/common/tableStructures.d.ts +176 -0
  31. package/dist/common/tableStructures.d.ts.map +1 -0
  32. package/dist/common/tableStructures.js +10 -0
  33. package/dist/common/types.d.ts +104 -0
  34. package/dist/common/types.d.ts.map +1 -0
  35. package/dist/common/types.js +31 -0
  36. package/dist/common/utils.d.ts +57 -0
  37. package/dist/common/utils.d.ts.map +1 -0
  38. package/dist/common/utils.js +300 -0
  39. package/dist/consumer/FileDownloadConsumer.d.ts +127 -0
  40. package/dist/consumer/FileDownloadConsumer.d.ts.map +1 -0
  41. package/dist/consumer/FileDownloadConsumer.js +1003 -0
  42. package/dist/consumer/generators/baseGenerator.d.ts +38 -0
  43. package/dist/consumer/generators/baseGenerator.d.ts.map +1 -0
  44. package/dist/consumer/generators/baseGenerator.js +103 -0
  45. package/dist/consumer/generators/domainGenerator.d.ts +78 -0
  46. package/dist/consumer/generators/domainGenerator.d.ts.map +1 -0
  47. package/dist/consumer/generators/domainGenerator.js +241 -0
  48. package/dist/consumer/generators/guiStatusGenerator.d.ts +16 -0
  49. package/dist/consumer/generators/guiStatusGenerator.d.ts.map +1 -0
  50. package/dist/consumer/generators/guiStatusGenerator.js +48 -0
  51. package/dist/consumer/generators/guiTitleGenerator.d.ts +16 -0
  52. package/dist/consumer/generators/guiTitleGenerator.d.ts.map +1 -0
  53. package/dist/consumer/generators/guiTitleGenerator.js +48 -0
  54. package/dist/consumer/generators/index.d.ts +14 -0
  55. package/dist/consumer/generators/index.d.ts.map +1 -0
  56. package/dist/consumer/generators/index.js +38 -0
  57. package/dist/consumer/generators/messageGenerator.d.ts +16 -0
  58. package/dist/consumer/generators/messageGenerator.d.ts.map +1 -0
  59. package/dist/consumer/generators/messageGenerator.js +73 -0
  60. package/dist/consumer/generators/metadataGenerator.d.ts +29 -0
  61. package/dist/consumer/generators/metadataGenerator.d.ts.map +1 -0
  62. package/dist/consumer/generators/metadataGenerator.js +135 -0
  63. package/dist/consumer/generators/screenGenerator.d.ts +173 -0
  64. package/dist/consumer/generators/screenGenerator.d.ts.map +1 -0
  65. package/dist/consumer/generators/screenGenerator.js +859 -0
  66. package/dist/consumer/generators/structureGenerator.d.ts +36 -0
  67. package/dist/consumer/generators/structureGenerator.d.ts.map +1 -0
  68. package/dist/consumer/generators/structureGenerator.js +131 -0
  69. package/dist/consumer/generators/textElementGenerator.d.ts +16 -0
  70. package/dist/consumer/generators/textElementGenerator.d.ts.map +1 -0
  71. package/dist/consumer/generators/textElementGenerator.js +70 -0
  72. package/dist/consumer/handlers/handleGetClass.d.ts +8 -0
  73. package/dist/consumer/handlers/handleGetClass.d.ts.map +1 -0
  74. package/dist/consumer/handlers/handleGetClass.js +18 -0
  75. package/dist/consumer/handlers/handleGetFunction.d.ts +8 -0
  76. package/dist/consumer/handlers/handleGetFunction.d.ts.map +1 -0
  77. package/dist/consumer/handlers/handleGetFunction.js +19 -0
  78. package/dist/consumer/handlers/handleGetFunctionGroup.d.ts +8 -0
  79. package/dist/consumer/handlers/handleGetFunctionGroup.d.ts.map +1 -0
  80. package/dist/consumer/handlers/handleGetFunctionGroup.js +19 -0
  81. package/dist/consumer/handlers/handleGetInclude.d.ts +8 -0
  82. package/dist/consumer/handlers/handleGetInclude.d.ts.map +1 -0
  83. package/dist/consumer/handlers/handleGetInclude.js +18 -0
  84. package/dist/consumer/handlers/handleGetProgram.d.ts +8 -0
  85. package/dist/consumer/handlers/handleGetProgram.d.ts.map +1 -0
  86. package/dist/consumer/handlers/handleGetProgram.js +27 -0
  87. package/dist/consumer/handlers/handleZTableQuery.d.ts +8 -0
  88. package/dist/consumer/handlers/handleZTableQuery.d.ts.map +1 -0
  89. package/dist/consumer/handlers/handleZTableQuery.js +20 -0
  90. package/dist/consumer/handlers/index.d.ts +10 -0
  91. package/dist/consumer/handlers/index.d.ts.map +1 -0
  92. package/dist/consumer/handlers/index.js +27 -0
  93. package/dist/consumer/index.d.ts +9 -0
  94. package/dist/consumer/index.d.ts.map +1 -0
  95. package/dist/consumer/index.js +24 -0
  96. package/dist/consumer/utils/download.d.ts +13 -0
  97. package/dist/consumer/utils/download.d.ts.map +1 -0
  98. package/dist/consumer/utils/download.js +38 -0
  99. package/dist/consumer/utils/index.d.ts +5 -0
  100. package/dist/consumer/utils/index.d.ts.map +1 -0
  101. package/dist/consumer/utils/index.js +20 -0
  102. package/dist/handlers/handleGetClass.d.ts +8 -0
  103. package/dist/handlers/handleGetClass.d.ts.map +1 -0
  104. package/dist/handlers/handleGetClass.js +19 -0
  105. package/dist/handlers/handleGetFunction.d.ts +8 -0
  106. package/dist/handlers/handleGetFunction.d.ts.map +1 -0
  107. package/dist/handlers/handleGetFunction.js +20 -0
  108. package/dist/handlers/handleGetFunctionGroup.d.ts +8 -0
  109. package/dist/handlers/handleGetFunctionGroup.d.ts.map +1 -0
  110. package/dist/handlers/handleGetFunctionGroup.js +19 -0
  111. package/dist/handlers/handleGetInclude.d.ts +8 -0
  112. package/dist/handlers/handleGetInclude.d.ts.map +1 -0
  113. package/dist/handlers/handleGetInclude.js +19 -0
  114. package/dist/handlers/handleGetInterface.d.ts +8 -0
  115. package/dist/handlers/handleGetInterface.d.ts.map +1 -0
  116. package/dist/handlers/handleGetInterface.js +19 -0
  117. package/dist/handlers/handleGetPackage.d.ts +8 -0
  118. package/dist/handlers/handleGetPackage.d.ts.map +1 -0
  119. package/dist/handlers/handleGetPackage.js +42 -0
  120. package/dist/handlers/handleGetProgram.d.ts +8 -0
  121. package/dist/handlers/handleGetProgram.d.ts.map +1 -0
  122. package/dist/handlers/handleGetProgram.js +19 -0
  123. package/dist/handlers/handleGetStructure.d.ts +8 -0
  124. package/dist/handlers/handleGetStructure.d.ts.map +1 -0
  125. package/dist/handlers/handleGetStructure.js +19 -0
  126. package/dist/handlers/handleGetTable.d.ts +8 -0
  127. package/dist/handlers/handleGetTable.d.ts.map +1 -0
  128. package/dist/handlers/handleGetTable.js +19 -0
  129. package/dist/handlers/handleGetTableContents.d.ts +8 -0
  130. package/dist/handlers/handleGetTableContents.d.ts.map +1 -0
  131. package/dist/handlers/handleGetTableContents.js +22 -0
  132. package/dist/handlers/handleGetTransaction.d.ts +8 -0
  133. package/dist/handlers/handleGetTransaction.d.ts.map +1 -0
  134. package/dist/handlers/handleGetTransaction.js +19 -0
  135. package/dist/handlers/handleGetTypeInfo.d.ts +8 -0
  136. package/dist/handlers/handleGetTypeInfo.d.ts.map +1 -0
  137. package/dist/handlers/handleGetTypeInfo.js +32 -0
  138. package/dist/handlers/handleSearchObject.d.ts +8 -0
  139. package/dist/handlers/handleSearchObject.d.ts.map +1 -0
  140. package/dist/handlers/handleSearchObject.js +20 -0
  141. package/dist/handlers/handleZObjectQuery.d.ts +8 -0
  142. package/dist/handlers/handleZObjectQuery.d.ts.map +1 -0
  143. package/dist/handlers/handleZObjectQuery.js +25 -0
  144. package/dist/handlers/handleZTableQuery.d.ts +8 -0
  145. package/dist/handlers/handleZTableQuery.d.ts.map +1 -0
  146. package/dist/handlers/handleZTableQuery.js +20 -0
  147. package/dist/index.d.ts +17 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +45 -0
  150. package/dist/lib/download.d.ts +49 -0
  151. package/dist/lib/download.d.ts.map +1 -0
  152. package/dist/lib/download.js +78 -0
  153. package/dist/lib/index.d.ts +9 -0
  154. package/dist/lib/index.d.ts.map +1 -0
  155. package/dist/lib/index.js +23 -0
  156. package/dist/lib/utils.d.ts +31 -0
  157. package/dist/lib/utils.d.ts.map +1 -0
  158. package/dist/lib/utils.js +272 -0
  159. package/dist/producer/RecursiveQueryProducer.d.ts +92 -0
  160. package/dist/producer/RecursiveQueryProducer.d.ts.map +1 -0
  161. package/dist/producer/RecursiveQueryProducer.js +496 -0
  162. package/dist/producer/handlers/handleZObjectQuery.d.ts +8 -0
  163. package/dist/producer/handlers/handleZObjectQuery.d.ts.map +1 -0
  164. package/dist/producer/handlers/handleZObjectQuery.js +24 -0
  165. package/dist/producer/handlers/index.d.ts +6 -0
  166. package/dist/producer/handlers/index.d.ts.map +1 -0
  167. package/dist/producer/handlers/index.js +21 -0
  168. package/dist/producer/index.d.ts +7 -0
  169. package/dist/producer/index.d.ts.map +1 -0
  170. package/dist/producer/index.js +22 -0
  171. package/dist/recursive/abapStructures.d.ts +377 -0
  172. package/dist/recursive/abapStructures.d.ts.map +1 -0
  173. package/dist/recursive/abapStructures.js +2 -0
  174. package/dist/recursive/generate/baseGenerator.d.ts +34 -0
  175. package/dist/recursive/generate/baseGenerator.d.ts.map +1 -0
  176. package/dist/recursive/generate/baseGenerator.js +112 -0
  177. package/dist/recursive/generate/domainGenerator.d.ts +26 -0
  178. package/dist/recursive/generate/domainGenerator.d.ts.map +1 -0
  179. package/dist/recursive/generate/domainGenerator.js +128 -0
  180. package/dist/recursive/generate/functionGroupGenerator.d.ts +30 -0
  181. package/dist/recursive/generate/functionGroupGenerator.d.ts.map +1 -0
  182. package/dist/recursive/generate/functionGroupGenerator.js +90 -0
  183. package/dist/recursive/generate/index.d.ts +12 -0
  184. package/dist/recursive/generate/index.d.ts.map +1 -0
  185. package/dist/recursive/generate/index.js +34 -0
  186. package/dist/recursive/generate/messageGenerator.d.ts +16 -0
  187. package/dist/recursive/generate/messageGenerator.d.ts.map +1 -0
  188. package/dist/recursive/generate/messageGenerator.js +73 -0
  189. package/dist/recursive/generate/screenGenerator.d.ts +173 -0
  190. package/dist/recursive/generate/screenGenerator.d.ts.map +1 -0
  191. package/dist/recursive/generate/screenGenerator.js +858 -0
  192. package/dist/recursive/generate/structureGenerator.d.ts +22 -0
  193. package/dist/recursive/generate/structureGenerator.d.ts.map +1 -0
  194. package/dist/recursive/generate/structureGenerator.js +88 -0
  195. package/dist/recursive/generate/textElementGenerator.d.ts +16 -0
  196. package/dist/recursive/generate/textElementGenerator.d.ts.map +1 -0
  197. package/dist/recursive/generate/textElementGenerator.js +68 -0
  198. package/dist/recursive/handleRecursiveObjectQuery.d.ts +94 -0
  199. package/dist/recursive/handleRecursiveObjectQuery.d.ts.map +1 -0
  200. package/dist/recursive/handleRecursiveObjectQuery.js +219 -0
  201. package/dist/recursive/recursiveObjectQuery.d.ts +159 -0
  202. package/dist/recursive/recursiveObjectQuery.d.ts.map +1 -0
  203. package/dist/recursive/recursiveObjectQuery.js +1358 -0
  204. package/dist/recursive/recursiveQueryConfig.d.ts +129 -0
  205. package/dist/recursive/recursiveQueryConfig.d.ts.map +1 -0
  206. package/dist/recursive/recursiveQueryConfig.js +133 -0
  207. package/dist/recursive/tableStructures.d.ts +196 -0
  208. package/dist/recursive/tableStructures.d.ts.map +1 -0
  209. package/dist/recursive/tableStructures.js +10 -0
  210. package/package.json +47 -0
@@ -0,0 +1,129 @@
1
+ /**
2
+ * 递归查询配置文件
3
+ */
4
+ export interface RecursiveQueryConfig {
5
+ /** 最大递归深度 */
6
+ maxRecursionDepth: number;
7
+ /** 下载根路径 */
8
+ downloadRootPath: string;
9
+ /** 是否下载include文件 */
10
+ downloadIncludes: boolean;
11
+ /** 是否下载结构体 */
12
+ downloadStructures: boolean;
13
+ /** 是否递归查询类 */
14
+ recursiveClasses: boolean;
15
+ /** 是否递归查询函数 */
16
+ recursiveFunctions: boolean;
17
+ /** 是否递归查询程序 */
18
+ recursivePrograms: boolean;
19
+ /** 循环引用检测 */
20
+ enableCircularReferenceCheck: boolean;
21
+ /** 并发请求限制 */
22
+ concurrentRequestLimit: number;
23
+ /** 请求间隔时间(毫秒) */
24
+ requestInterval: number;
25
+ /** 递归过滤规则 - 匹配的对象不进行递归查询 */
26
+ recursionFilters?: {
27
+ /** 排除的对象名称列表(精确匹配) */
28
+ excludeNames?: string[];
29
+ /** 排除的对象名称模式(支持通配符 * 和 ?) */
30
+ excludeNamePatterns?: string[];
31
+ };
32
+ }
33
+ /**
34
+ * 默认过滤规则
35
+ * 这些是推荐的通用过滤规则,可以避免递归查询大量标准 SAP 对象
36
+ * 主要过滤与业务逻辑无关的 SAP 框架、系统工具和技术组件
37
+ */
38
+ export declare const defaultFilters: {
39
+ excludeNames: string[];
40
+ excludeNamePatterns: string[];
41
+ };
42
+ /**
43
+ * 默认配置
44
+ */
45
+ export declare const defaultConfig: RecursiveQueryConfig;
46
+ /**
47
+ * 递归查询结果
48
+ */
49
+ export interface RecursiveQueryResult {
50
+ /** 原始查询对象 */
51
+ originalObject: any;
52
+ /** 递归查询的所有对象映射 */
53
+ allObjects: Map<string, any>;
54
+ /** 递归统计信息 */
55
+ statistics: {
56
+ totalObjects: number;
57
+ totalClasses: number;
58
+ totalFunctions: number;
59
+ totalPrograms: number;
60
+ totalIncludes: number;
61
+ totalStructures: number;
62
+ totalDomains: number;
63
+ downloadedIncludes: number;
64
+ downloadedStructures: number;
65
+ downloadedDomains: number;
66
+ maxDepthReached: number;
67
+ circularReferences: number;
68
+ };
69
+ /** 错误信息 */
70
+ errors: string[];
71
+ /** 总对象数 */
72
+ totalObjects: number;
73
+ /** 成功下载对象数 */
74
+ downloadedObjects: number;
75
+ /** 失败对象数 */
76
+ failedObjects: number;
77
+ /** 跳过对象数 */
78
+ skippedObjects: number;
79
+ /** 总文件数 */
80
+ totalFiles: number;
81
+ /** 成功下载文件数 */
82
+ downloadedFilesCount: number;
83
+ /** 失败文件数 */
84
+ failedFiles: number;
85
+ /** 对象详情列表 */
86
+ objectDetails: Array<{
87
+ objectType: string;
88
+ objectName: string;
89
+ status: 'success' | 'failed';
90
+ error?: string;
91
+ timestamp: Date;
92
+ }>;
93
+ /** 下载的文件信息 */
94
+ downloadedFiles: Array<{
95
+ objectName: string;
96
+ objectType: string;
97
+ filePath: string;
98
+ success: boolean;
99
+ error?: string;
100
+ metadata?: any;
101
+ }>;
102
+ /** 被过滤的对象信息 */
103
+ filteredObjects: Array<{
104
+ objectType: string;
105
+ objectName: string;
106
+ reason: string;
107
+ filterType: 'exact' | 'pattern';
108
+ filterRule?: string;
109
+ timestamp: Date;
110
+ }>;
111
+ /** 开始时间 */
112
+ startTime: Date;
113
+ /** 结束时间 */
114
+ endTime: Date;
115
+ }
116
+ /**
117
+ * 递归查询上下文
118
+ */
119
+ export interface RecursiveQueryContext {
120
+ /** 当前递归深度 */
121
+ currentDepth: number;
122
+ /** 已访问的对象路径(用于循环引用检测) */
123
+ visitedPaths: Set<string>;
124
+ /** 对象依赖关系图 */
125
+ dependencyGraph: Map<string, Set<string>>;
126
+ /** 查询配置 */
127
+ config: RecursiveQueryConfig;
128
+ }
129
+ //# sourceMappingURL=recursiveQueryConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursiveQueryConfig.d.ts","sourceRoot":"","sources":["../../src/recursive/recursiveQueryConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,aAAa;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc;IACd,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe;IACf,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa;IACb,4BAA4B,EAAE,OAAO,CAAC;IACtC,aAAa;IACb,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,gBAAgB,CAAC,EAAE;QACf,sBAAsB;QACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,6BAA6B;QAC7B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;KAClC,CAAC;CAEL;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;CA8H1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,oBAe3B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,aAAa;IACb,cAAc,EAAE,GAAG,CAAC;IACpB,kBAAkB;IAClB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,aAAa;IACb,UAAU,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,WAAW;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc;IACd,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,aAAa,EAAE,KAAK,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,IAAI,CAAC;KACnB,CAAC,CAAC;IACH,cAAc;IACd,eAAe,EAAE,KAAK,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,GAAG,CAAC;KAClB,CAAC,CAAC;IACH,eAAe;IACf,eAAe,EAAE,KAAK,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;QAChC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC;KACnB,CAAC,CAAC;IACH,WAAW;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW;IACX,OAAO,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,aAAa;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,cAAc;IACd,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,WAAW;IACX,MAAM,EAAE,oBAAoB,CAAC;CAChC"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultConfig = exports.defaultFilters = void 0;
4
+ /**
5
+ * 默认过滤规则
6
+ * 这些是推荐的通用过滤规则,可以避免递归查询大量标准 SAP 对象
7
+ * 主要过滤与业务逻辑无关的 SAP 框架、系统工具和技术组件
8
+ */
9
+ exports.defaultFilters = {
10
+ excludeNames: [
11
+ // 常见的系统程序
12
+ 'SAPLSMTR',
13
+ 'SAPLSMTR_NAVIGATION',
14
+ 'SAPLSTRD',
15
+ 'SAPLSLVC',
16
+ 'SAPLSLVC_FULLSCREEN',
17
+ 'SAPLSBAL',
18
+ 'SAPLSPOL',
19
+ 'SAPLSTXB',
20
+ 'SAPMSSY0',
21
+ 'SAPMSSY1',
22
+ 'SAPMSSY3',
23
+ 'SAPMSSYD'
24
+ ],
25
+ excludeNamePatterns: [
26
+ // ============ SAP 标准对象和命名空间 ============
27
+ 'SAP*', // SAP 标准程序和对象
28
+ '/SAP/*', // SAP 命名空间
29
+ '/1*', // SAP 内部命名空间
30
+ // ============ Repository 和系统工具 ============
31
+ 'RS*', // Repository 工具 (SE80, SE11等)
32
+ 'RM*', // 报表管理器
33
+ 'SE*', // 系统编辑器相关
34
+ 'SY*', // 系统相关
35
+ 'RSSCD*', // 变更文档
36
+ 'RSTS*', // 测试工具
37
+ // ============ GUI 和 ALV 框架 ============
38
+ 'CL_GUI_*', // GUI 控制类
39
+ 'CL_ALV_*', // ALV 表格类
40
+ 'CL_SALV_*', // 新版 ALV 类
41
+ 'SAPLSALV*', // ALV 函数组
42
+ // ============ ABAP 基础框架类 ============
43
+ 'CL_ABAP_*', // ABAP 基础类(类型描述、反射等)
44
+ 'CL_SYSTEM_*', // 系统类
45
+ 'CL_OS_*', // 操作系统相关类
46
+ // ============ Web Dynpro 框架 ============
47
+ 'CL_WD_*', // Web Dynpro 类
48
+ 'CL_WDR_*', // Web Dynpro Runtime
49
+ '/IWBEP/*', // Gateway Business Enablement
50
+ '/IWFND/*', // Gateway Foundation
51
+ '/IWCOR/*', // Gateway Core
52
+ // ============ OData 和 REST 框架 ============
53
+ 'CL_REST_*', // REST 框架
54
+ '/IWMB/*', // Model Builder
55
+ '/IWSRV/*', // Service 相关
56
+ // ============ UI5 和 Fiori 框架 ============
57
+ '/UI2/*', // UI2 框架
58
+ '/UI5/*', // UI5 框架
59
+ '/NEPTUNE/*', // Neptune (低代码平台)
60
+ // ============ HTTP、网络和通信框架 ============
61
+ 'CL_HTTP_*', // HTTP 客户端/服务器
62
+ 'CL_PROXY_*', // 代理类
63
+ 'CL_SOAP_*', // SOAP 框架
64
+ 'CL_REST_*', // REST 框架
65
+ // ============ XML、JSON 数据处理框架 ============
66
+ 'CL_XML_*', // XML 处理
67
+ 'CL_JSON_*', // JSON 处理
68
+ 'CL_IXML_*', // iXML 处理
69
+ 'CL_SXML_*', // Simple XML
70
+ 'CL_XSLT_*', // XSLT 处理
71
+ // ============ BCS 邮件和消息框架 ============
72
+ 'CL_BCS*', // Business Communication Services (邮件)
73
+ 'CL_CAM_*', // Communication Application
74
+ 'CL_SWF_*', // 工作流
75
+ // ============ 数据库和持久化框架 ============
76
+ 'CL_SQL_*', // SQL 相关
77
+ 'CL_OSQL_*', // Open SQL
78
+ // ============ Dynpro (经典屏幕) 框架 ============
79
+ 'CL_DYNP_*', // Dynpro 相关
80
+ // ============ BAPI 和标准接口框架 ============
81
+ 'BAPI_*', // 标准 BAPI (如果只关注自定义业务)
82
+ // ============ 日志和监控框架 ============
83
+ 'CL_LOGGER*', // 日志框架
84
+ 'CL_SLG*', // Application Log
85
+ 'CL_ATRA*', // Application Trace
86
+ // ============ 安全和授权框架 ============
87
+ 'CL_AUTH*', // 权限检查
88
+ 'CL_SEC*', // 安全相关
89
+ // ============ 打印和输出框架 ============
90
+ 'CL_SMARTFORM*', // Smartforms
91
+ 'CL_SSF_*', // SSF (Smart Style)
92
+ 'CL_FP_*', // Forms (Adobe Forms等)
93
+ // ============ 工具和实用类 ============
94
+ 'CL_DEMO_*', // 演示类
95
+ 'CL_PROGRESS_*', // 进度指示器
96
+ 'CL_DD_*', // Data Dictionary
97
+ // ============ 批处理和后台处理 ============
98
+ 'CL_BP_*', // 批处理相关
99
+ 'CL_BATCH*', // 批处理
100
+ // ============ BASIS 技术组件 ============
101
+ 'CL_SPOOL*', // Spool 系统
102
+ 'CL_BATCH*', // 批处理输入
103
+ // ============ 标准函数组 (SAP 系统层面) ============
104
+ 'SAPL*', // 大多数 SAP 标准函数组以 SAPL 开头
105
+ // ============ 标准表和结构 (系统级别) ============
106
+ 'STANDARD', // 标准表类型
107
+ 'SYSUUID*', // 系统 UUID
108
+ 'DD*', // Data Dictionary 对象
109
+ // ============ 旧版本兼容性对象 ============
110
+ '*_LEGACY',
111
+ '*_COMPAT',
112
+ '*_DEPRECATED'
113
+ ]
114
+ };
115
+ /**
116
+ * 默认配置
117
+ */
118
+ exports.defaultConfig = {
119
+ maxRecursionDepth: 1,
120
+ downloadRootPath: './downloads',
121
+ downloadIncludes: true,
122
+ downloadStructures: true,
123
+ recursiveClasses: true,
124
+ recursiveFunctions: true,
125
+ recursivePrograms: true,
126
+ enableCircularReferenceCheck: true,
127
+ concurrentRequestLimit: 10,
128
+ requestInterval: 100,
129
+ recursionFilters: {
130
+ excludeNames: [],
131
+ excludeNamePatterns: []
132
+ }
133
+ };
@@ -0,0 +1,196 @@
1
+ /**
2
+ * 数据库表结构定义
3
+ * 对应 table.json 文件的结构定义
4
+ *
5
+ * @description
6
+ * 此文件包含了 SAP 数据库表、字段、索引的完整结构定义
7
+ * 用于解析和处理从 SAP 系统导出的表结构信息
8
+ */
9
+ /**
10
+ * 数据库表信息结构
11
+ * 对应 table.json 中的 GT_TABLES 节点
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * {
16
+ * IDX: 1,
17
+ * TABNAME: "EKKO",
18
+ * TABCLASS: "TRANSP",
19
+ * DDTEXT_ZH: "采购凭证抬头",
20
+ * DDTEXT_EN: "Purchasing Document Header"
21
+ * }
22
+ * ```
23
+ */
24
+ export interface TableInfo {
25
+ /** 索引序号 */
26
+ IDX?: number;
27
+ /** 表名 */
28
+ TABNAME: string;
29
+ /** 表类别 (如 TRANSP: 透明表, POOL: 池表, CLUSTER: 簇表) */
30
+ TABCLASS?: string;
31
+ /** 中文描述 */
32
+ DDTEXT_ZH?: string;
33
+ /** 英文描述 */
34
+ DDTEXT_EN?: string;
35
+ }
36
+ /**
37
+ * 数据库表字段信息结构
38
+ * 对应 table.json 中的 GT_FIELDS 节点
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * {
43
+ * IDX: 1,
44
+ * TABNAME: "EKKO",
45
+ * FIELDNAME: "OIC_DCITYC",
46
+ * DDTEXT_ZH: "目的地城市代码",
47
+ * DDTEXT_EN: "Destination city code",
48
+ * POSITION: 153,
49
+ * DATATYPE: "CHAR",
50
+ * LENG: 4,
51
+ * DECIMALS: 0,
52
+ * KEYFLAG: "",
53
+ * CHECKTABLE: "T005G",
54
+ * DOMNAME: "CITYC",
55
+ * ROLLNAME: "OIC_DCITYC"
56
+ * }
57
+ * ```
58
+ */
59
+ export interface TableField {
60
+ /** 索引序号 */
61
+ IDX?: number;
62
+ /** 表名 */
63
+ TABNAME: string;
64
+ /** 字段名 */
65
+ FIELDNAME: string;
66
+ /** 中文描述 */
67
+ DDTEXT_ZH?: string;
68
+ /** 英文描述 */
69
+ DDTEXT_EN?: string;
70
+ /** 字段在表中的位置 */
71
+ POSITION?: number;
72
+ /** 数据类型 (如 CHAR, NUMC, DATS, CUKY, QUAN等) */
73
+ DATATYPE?: string;
74
+ /** 字段长度 */
75
+ LENG?: number;
76
+ /** 小数位数 (用于数值类型字段) */
77
+ DECIMALS?: number;
78
+ /** 主键标志 (X表示是主键) */
79
+ KEYFLAG?: string;
80
+ /** 辅助键标志 */
81
+ KEYFLAG2?: string;
82
+ /** 必填标志 (X表示必填) */
83
+ MANDATORY?: string;
84
+ /** 备用中文描述 */
85
+ DDTEXT_ZH2?: string;
86
+ /** 检查表 (外键引用的表) */
87
+ CHECKTABLE?: string;
88
+ /** 域名 (Domain) */
89
+ DOMNAME?: string;
90
+ /** 数据元素 (Data Element/Roll Name) */
91
+ ROLLNAME?: string;
92
+ /** 带符号标志 (X表示可以带正负号) */
93
+ SIGNFLAG?: string;
94
+ /** 小写标志 (X表示允许小写) */
95
+ LOWERCASE?: string;
96
+ /** 8位长度的检查表名 */
97
+ CHECKTABLE_8L?: string;
98
+ }
99
+ /**
100
+ * 数据库表索引字段结构
101
+ * 对应 table.json 中的 GT_INDEXS.FIELDNAME 节点
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * {
106
+ * FIELDNAME: "MANDT"
107
+ * }
108
+ * ```
109
+ */
110
+ export interface IndexField {
111
+ /** 索引字段名 */
112
+ FIELDNAME: string;
113
+ }
114
+ /**
115
+ * 数据库表索引信息结构
116
+ * 对应 table.json 中的 GT_INDEXS 节点
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * {
121
+ * SQLTAB: "EKKO",
122
+ * INDEXNAME: "1",
123
+ * DDTEXT: "每个供应商的采购凭证",
124
+ * UNIQUEFLAG: "",
125
+ * FIELDNAME: [
126
+ * { FIELDNAME: "MANDT" },
127
+ * { FIELDNAME: "LIFNR" },
128
+ * { FIELDNAME: "EKORG" }
129
+ * ]
130
+ * }
131
+ * ```
132
+ */
133
+ export interface TableIndex {
134
+ /** 数据库表名 */
135
+ SQLTAB: string;
136
+ /** 索引名称 */
137
+ INDEXNAME: string;
138
+ /** 索引描述 */
139
+ DDTEXT?: string;
140
+ /** 唯一索引标志 (X表示唯一索引) */
141
+ UNIQUEFLAG?: string;
142
+ /** 索引字段列表 */
143
+ FIELDNAME?: IndexField[];
144
+ }
145
+ /**
146
+ * 完整的表结构数据
147
+ * 对应整个 table.json 的顶层结构
148
+ *
149
+ * @description
150
+ * 这是从 SAP 系统导出的完整表结构信息,包含:
151
+ * - GT_TABLES: 表的基本信息
152
+ * - GT_FIELDS: 表的所有字段定义
153
+ * - GT_INDEXS: 表的所有索引定义
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * {
158
+ * GT_TABLES: [
159
+ * {
160
+ * IDX: 1,
161
+ * TABNAME: "EKKO",
162
+ * TABCLASS: "TRANSP",
163
+ * DDTEXT_ZH: "采购凭证抬头",
164
+ * DDTEXT_EN: "Purchasing Document Header"
165
+ * }
166
+ * ],
167
+ * GT_FIELDS: [...],
168
+ * GT_INDEXS: [...]
169
+ * }
170
+ * ```
171
+ */
172
+ export interface TableStructureData {
173
+ /** 表信息列表 */
174
+ GT_TABLES?: TableInfo[];
175
+ /** 字段信息列表 */
176
+ GT_FIELDS?: TableField[];
177
+ /** 索引信息列表 */
178
+ GT_INDEXS?: TableIndex[];
179
+ }
180
+ export interface TableData {
181
+ /** 索引序号 */
182
+ IDX?: number;
183
+ /** 表名 */
184
+ TABNAME: string;
185
+ /** 表类别 (如 TRANSP: 透明表, POOL: 池表, CLUSTER: 簇表) */
186
+ TABCLASS?: string;
187
+ /** 中文描述 */
188
+ DDTEXT_ZH?: string;
189
+ /** 英文描述 */
190
+ DDTEXT_EN?: string;
191
+ /** 字段信息列表 */
192
+ GT_FIELDS?: TableField[];
193
+ /** 索引信息列表 */
194
+ GT_INDEXS?: TableIndex[];
195
+ }
196
+ //# sourceMappingURL=tableStructures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableStructures.d.ts","sourceRoot":"","sources":["../../src/recursive/tableStructures.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,SAAS;IACtB,WAAW;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,UAAU;IACvB,WAAW;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACvB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,UAAU;IACvB,YAAY;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,kBAAkB;IAC/B,YAAY;IACZ,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,aAAa;IACb,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;IACzB,aAAa;IACb,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAGD,MAAM,WAAW,SAAS;IACtB,WAAW;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;IACzB,aAAa;IACb,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * 数据库表结构定义
4
+ * 对应 table.json 文件的结构定义
5
+ *
6
+ * @description
7
+ * 此文件包含了 SAP 数据库表、字段、索引的完整结构定义
8
+ * 用于解析和处理从 SAP 系统导出的表结构信息
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@qwe8652591/abap-recursive-query",
3
+ "version": "1.1.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "scripts": {
7
+ "test": "jest",
8
+ "build": "tsc -p tsconfig.json",
9
+ "query": "node ./dist/cli/query-object.js",
10
+ "producer": "node ./dist/cli/producer-cli.js",
11
+ "consumer": "node ./dist/cli/consumer-cli.js"
12
+ },
13
+ "keywords": [
14
+ "abap",
15
+ "sap",
16
+ "adt",
17
+ "download",
18
+ "source-code-analysis"
19
+ ],
20
+ "author": "824000672@qq.com",
21
+ "description": "ABAP Recursive Query Tool - SAP ABAP object extraction library",
22
+ "license": "MIT",
23
+ "files": [
24
+ "dist/**/*",
25
+ "LICENSE"
26
+ ],
27
+ "publishConfig": {
28
+ "access": "public"
29
+ },
30
+ "devDependencies": {
31
+ "@types/jest": "^29.5.14",
32
+ "@types/node": "^22.10.10",
33
+ "jest": "^29.7.0",
34
+ "ts-jest": "^29.2.5",
35
+ "typescript": "^5.7.3"
36
+ },
37
+ "dependencies": {
38
+ "@abaplint/core": "^2.113.244",
39
+ "@modelcontextprotocol/sdk": "^1.0.4",
40
+ "@qwe8652591/abap-parser": "^1.0.0",
41
+ "axios": "^1.7.9",
42
+ "dotenv": "^16.4.7",
43
+ "ioredis": "^5.3.2",
44
+ "uuid": "^10.0.0",
45
+ "xml-js": "^1.6.11"
46
+ }
47
+ }