@abapify/adt-client

中文文档
0.4.33发布于 2026/11/02MITTypeScriptES Module构建来源已验证近 30 天下载 4544

SAP ABAP 开发工具基于 Speci的最小化APT 客户端

中文使用文档
文档目录20 节
  1. 为什么是V2?
  2. 特征
  3. 安装
  4. 快速启动
  5. API 参考
  6. 客户端创建
  7. 类操作
  8. 类型
  9. 类元数据
  10. 类别包含
  11. 类对象
  12. 实例
  13. 读取并修改类
  14. 创建新类
  15. 锁定、编辑、解锁模式
  16. 建筑
  17. 双层设计
  18. 与 att- client v1 的比较
  19. 相关软件包
  20. 许可证

@abapify/adt-客户端

version

由合同驱动的SAP ADT REST客户端 - 用途 speci + 键 ts-xsd 为全类型安全.

为什么是V2?

此软件包取代了遗产 adt-client 带有 合同第一设计数字 :

┌─────────────────────────────────────────────────────────────────┐
│                      adt-client                               │
│              (HTTP Client + Request Execution)                   │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                      adt-contracts                               │
│         (REST API Contracts using speci + ts-xsd)                │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                     adt-schemas                              │
│        (TypeScript schemas from SAP XSD definitions)             │
└─────────────────────────────────────────────────────────────────┘

优于v1:

  • ✅ XSD 的类型安全 - 正式SAP计划产生的类型
  • ✅ 第一合同 - API合同界定接口
  • ✅ 零手动类型 - 没有手写类型的定义
  • ✅ 易于扩展 - 通过界定合同添加终点
  • ✅ 可测试 - 合同是纯数据,易于取笑

特征

  • ✅ 合同驱动 - 用途 speci + 键 ts-xsd 合同
  • ✅ 完整类型的推论 - 从XSD到响应的类型
  • ✅ 零依赖关系 - 只使用本地获取 API
  • ✅ 清洁 API - 箭功能合同
  • ✅ 基于承诺 - 现代合成/等待API

安装

bun add @abapify/adt-client

快速启动

import { createAdtClient } from '@abapify/adt-client';

// Create client
const client = createAdtClient({
  baseUrl: 'https://sap-system.com:8000',
  username: 'YOUR_USER',
  password: 'YOUR_PASS',
  client: '100',
  language: 'EN',
});

// Get complete class with all includes
const classObj = await client.getClass('ZCL_MY_CLASS');
console.log(classObj.metadata.description);
console.log(classObj.includes.main);
console.log(classObj.includes.definitions);
console.log(classObj.includes.implementations);

// Update main source
await client.updateMainSource('ZCL_MY_CLASS', newSource);

API 参考

客户端创建

createAdtClient(config: AdtConnectionConfig): AdtClient

配置 :

  • baseUrl - SAP系统URL(例如, https://sap-system.com:8000(中文(简体) )
  • username - SAP 用户名
  • password - SAP密码
  • client - SAP客户端(可选,例如:, '100'(中文(简体) )
  • language - SAP语言(可选,例如:, 'EN'(中文(简体) )
  • headersTimeoutMs - 对SAP长期请求的响应头暂停 (可选;否则将适用本地 HTTP 客户端默认)

类操作

获得完整类

getClass(className: string): Promise<ClassObject>

返回类元数据并全部包括(主要,定义,执行,宏,测试类).

只获取元数据

getMetadata(className: string): Promise<ClassMetadata>

返回类元数据(名称、描述、包等).

获取全部包含

getIncludes(className: string): Promise<ClassIncludes>

返回包含所有类源 .

获取特定包含

getInclude(className: string, includeType: 'main' | 'definitions' | 'implementations' | 'macros' | 'testclasses'): Promise<string>

返回特定内容包括源代码.

更新主要来源

updateMainSource(className: string, source: string): Promise<OperationResult>

更新主类源代码.

创建类

createClass(className: string, metadata: Partial<ClassMetadata>): Promise<OperationResult>

创建带有指定元数据的新类.

删除类

deleteClass(className: string): Promise<OperationResult>

删除一个类.

锁定/ 解锁

lockClass(className: string): Promise<string>
unlockClass(className: string, lockHandle: string): Promise<OperationResult>

锁定和解锁类进行编辑.

类型

类元数据

interface ClassMetadata {
  name: string;
  description?: string;
  packageName?: string;
  responsible?: string;
  createdBy?: string;
  createdAt?: string;
  changedBy?: string;
  changedAt?: string;
  final?: boolean;
  abstract?: boolean;
  visibility?: 'public' | 'protected' | 'private';
}

类别包含

interface ClassIncludes {
  main?: string;
  definitions?: string;
  implementations?: string;
  macros?: string;
  testclasses?: string;
}

类对象

interface ClassObject {
  metadata: ClassMetadata;
  includes: ClassIncludes;
}

实例

读取并修改类

// Get class
const classObj = await client.getClass('ZCL_MY_CLASS');

// Modify source
const newSource = classObj.includes.main?.replace('OLD_TEXT', 'NEW_TEXT');

// Update
if (newSource) {
  await client.updateMainSource('ZCL_MY_CLASS', newSource);
}

创建新类

await client.createClass('ZCL_NEW_CLASS', {
  description: 'My new class',
  packageName: 'ZPACKAGE',
  visibility: 'public',
  final: false,
  abstract: false,
});

锁定、编辑、解锁模式

// Lock class
const lockHandle = await client.lockClass('ZCL_MY_CLASS');

try {
  // Edit class
  await client.updateMainSource('ZCL_MY_CLASS', newSource);
} finally {
  // Always unlock
  await client.unlockClass('ZCL_MY_CLASS', lockHandle);
}

建筑

双层设计

const client = createAdtClient({...});

// Layer 1: Low-level contracts (direct ADT REST access)
client.adt.core.http.sessions.getSession()
client.adt.cts.transportrequests.getTransport(id)

// Layer 2: High-level services (business logic)
client.services.transports.importAndActivate(transportId)  // Future

// Utility: Raw HTTP for debugging
client.fetch('/arbitrary/endpoint', { method: 'GET' })

合同 - 薄度,声明式HTTP定义,并用 1:1 映射到 SAP APT 端点 服务 - 合并多个合同呼叫的商业逻辑安排

与 att- client v1 的比较

特性v1 (语言)v2(新设)
类型安全手动类型从 XSD 生成
建筑基于服务第一合同
依赖关系许多无
扩展性复杂加合同
测试困难简单( 纯数据)

许可证

麻省理工学院

版本与发布记录

@abapify/adt-client 共发布 28 个版本,首次发布于 2026/04/21;过去 12 个月发布了 28 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.4.33latest2026/11/023 天前
0.4.312026/11/014 天前
0.4.292026/10/306 天前
0.4.272026/10/307 天前
0.4.252026/10/307 天前
0.4.232026/10/2611 天前

关于 @abapify/adt-client 的常见问题

@abapify/adt-client 是什么?

SAP ABAP 开发工具基于 Speci的最小化APT 客户端

如何安装 @abapify/adt-client?

在项目目录运行 npm install @abapify/adt-client,或使用 pnpm add / yarn add / bun add。

@abapify/adt-client 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@abapify/adt-client 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@abapify/adt-client 可以商用吗?

@abapify/adt-client 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@abapify/adt-client 的下载量有多少?

根据 npm 官方下载统计,@abapify/adt-client 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,544 次,日均约 151 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@abapify/adt-client 还在维护吗?

最新版本 0.4.33 发布于 2026/11/02(3 天前);至今共发布 28 个版本,其中过去 12 个月发布了 28 个;首次发布于 2026/04/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。