- 博客(18635)
- 资源 (8)
- 收藏
- 关注
原创 【2025最新版】ABAP 开发百科全书专栏文章目录(上)
本文汇总了一系列SAP ABAP技术文章,内容涵盖实用技巧合集、函数式编程实践(如Currying、reduce应用)、设计模式实现(如Visitor、Singleton)、动态代理与Mock技术、性能优化方案(如Lazy Loading)、日期处理与内存管理,以及ABAP与JavaScript的编程范式对比。还涉及CDS视图、Fiori字段追踪、单元测试优化等实战经验,深入剖析了ABAP底层机制(如Internal Session、Function Module实现原理),并提供了多种反模式改进方案。
2025-12-17 15:11:15
2458
2
原创 《30天入门 SAP BTP 开发》教程的目录和使用说明,建议收藏
本教程分为两部分:第一部分为SAP BTP入门系列,包含从基础概念到操作步骤的系统性学习内容,建议零基础用户按顺序学习;第二部分为专题文章集合,涵盖SAP BTP的多个技术点,适合已有基础的用户按需查阅。教程包含账号申请、Global Account操作、Java应用开发、AI工具使用等丰富内容,同时解答常见问题并提供实战案例。所有文章均附带详细链接,便于读者系统学习或针对性查阅。
2025-09-19 10:09:48
4371
3
原创 ABAP CDS View 从入门到精通教程目录:ABAP CDS View 在 SAP 技术体系中的重要地位
学习 ABAP CDS View 的开发技术,体会其背后的设计理念,也就掌握了 SAP S/4HANA 底层数据模型的设计精髓。
2025-03-13 19:37:33
4765
7
原创 SAP UI5 百科全书的目录
笔者 12 年 SAP UI5 开发岁月中写下的 595 篇 SAP UI5 学习笔记,全部收录到《SAP UI5 百科全书》专栏中去,目录如下。请大家按照自己的学习需要,根据关键字搜索到对应的文章,然后进行学习。
2024-12-17 19:08:59
3817
16
原创 一套适合 ABAP 初级和中级开发人员,从入门到提高的 ABAP 学习教程
曾几何时,ABAP 就是 SAP 的代名词。ABAP 这门编程语言造就了 SAP 名噪一时的 R/3 产品,同时也是如今 SAP 旗舰级产品,SAP S/4HANA 底层的实现语言。ABAP 不仅代表着 SAP 这家公司在企业级管理软件市场辉煌的过去,ABAP 自身也在不断地进化着。SAP 不仅在本地部署(On-Premise)领域继续保持着自己绝对的统治地位,而且在云应用领域(Software-as-a-Service, 简称 SaaS), 也推出了自己的解决方案,比如 SAP S/4HANA Clo
2023-10-12 19:43:52
5902
12
原创 Fiori Elements 从入门到精通开发教程的文章目录
Fiori Elements 开发技术相对 SAP 其他历史悠久,发展成熟的开发技术来说,是一个新事物。正因如此,迄今为止国内深入讲解 Fiori Elements 应用的中文材料几乎没有。
2023-07-09 10:24:07
4649
7
原创 零基础 ABAP 学习教程系列文章的目录
曾几何时,ABAP 就是 SAP 的代名词。ABAP 这门编程语言造就了 SAP 名噪一时的 R/3 产品,同时也是如今 SAP 旗舰级产品,SAP S/4HANA 底层的实现语言。ABAP 不仅代表着 SAP 这家公司在企业级管理软件市场辉煌的过去,ABAP 自身也在不断地进化着。SAP 不仅在本地部署(On-Premise)领域继续保持着自己绝对的统治地位,而且在云应用领域(Software-as-a-Service, 简称 SaaS), 也推出了自己的解决方案,比如 SAP S/4HANA Clo
2023-05-04 16:23:25
29112
28
原创 SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)
在 SAP 产品里,存在多种 OData 服务的开发方式,其中最典型的三类,SEGW, RAP(Restful ABAP Programming) 和 CDP(Cloud Application Program),就是笔者在本教程里会为大家分享和讲解的内容。同笔者的另一个 SAP UI5 教程《SAP UI5 应用开发教程的学习目录 - 循序渐进,由浅入深,适合不同水平的 SAP UI5 开发人员》一样,本教程笔者计划通过 300 篇以上的文章篇幅,分别介绍这三类 SAP 主流的 OData 服务开发技术。
2022-06-26 11:30:23
11253
17
原创 SAP UI5 应用开发教程的学习目录 - 循序渐进,由浅入深,适合不同水平的 SAP UI5 开发人员
笔者在业余时间设计了这份 SAP UI5 学习教程,把开发一个完整的 SAP UI5 应用的流程,拆分成若干个步骤,力求每个步骤里,把涉及到的知识点都涵盖到。建议零基础或者对 SAP UI5 知之甚少的 SAP UI5 初学者,按照顺序从第一个步骤开始循序渐进地学习,把这些代码下载到本地,配合教程的文字讲解,自己动手,以加深理解。对于已经有一定基础的 SAPUI5 开发人员,可以通过本文的目录,跳过前面一部分比较基础的章节,直接挑选对自己工作项目有关,或者包含某些知识点自己尚未掌握的章节来有针对性地学习。
2021-10-05 21:11:59
30787
9
原创 从草稿到运行时对象,深入理解 ADT MCP 的 abap_activate_objects 激活工具
在Agentic ABAP开发中,abap_activate_objects并非简单激活工具,而是连接代码生成与运行时状态的关键节点。它将AI生成的inactive版本推进至active,触发runtime更新,实现完整生命周期闭环。面对ABAP特有的Repository版本管理机制,该工具提供可机器解析的诊断反馈,支撑“编辑→检查→激活→修复”自动化回路。随着MCP Server演进,其接口正从URI依赖转向多标识符支持,强调以tools/list返回的schema为准。正确使用该工具,是构建稳定、自愈式
2026-11-06 10:13:21
12
原创 把创建失败挡在写入之前,深入理解 ADT MCP 的 abap_object_validate_creation
在Agentic Development中,abap_object_validate_creation并非冗余设计,而是确保Agent在创建ABAP对象前进行服务器端预校验的关键环节。它与abap_repository_list_creatable_types、abap_object_get_creatable_type_detail协同构成动态创建框架,避免模型通过“试错式”调用abap_object_create导致系统污染。该工具仅验证输入参数合法性,不写入对象,且依赖当前MCP Server的Sch
2026-11-06 10:12:26
9
原创 ABAP Development Tools 3.62 搭配 Claude Code,已经从旁路方案走到了 SAP 官方 MCP 路线
截至2026年10月,SAP已通过ADT 3.62正式支持Claude Code等AI Agent直接连接官方MCP Server,实现对ABAP Repository的完整操作。无需依赖本地文件或第三方封装,AI可调用abap_object_read、create、activate、run_tests等原生工具,完成代码读写、检查、测试与运输管理。新引入的get_document_symbols等精准工具有效降低上下文消耗,提升大型项目处理效率。该架构真正实现Agent在企业级ABAP开发中的安全、可控自
2026-11-06 10:03:28
9
原创 把一枚模拟时钟嵌进 ADT 的 ABAP Class Source Editor,一个不修改 SAP 源码的 Eclipse 插件实现
在 Eclipse 平台基础上,通过开发独立插件实现 ABAP 源码编辑器右上角悬浮时钟。不依赖 SAP ADT 内部类,利用 IStartup 与 IPartListener2 监听编辑器生命周期,通过 editor.getAdapter(Control.class) 获取底层 StyledText,在其上覆盖 Canvas 绘制模拟时钟。使用 Display.timerExec() 定时刷新,结合 Paint Listener 实现高效重绘,确保滚动、切换、缩放时钟位置自适应。全程仅依赖 Eclipse
2026-11-06 10:02:52
6
原创 SAP 为什么同时保留 SAP GUI、Eclipse ADT 与 VS Code ADT
2026年,SAP仍并存SAP GUI、Eclipse ADT与VS Code ADT,实为三种开发入口对应不同技术演进阶段。三者非平行体系,而是基于同一后端ABAP Repository的渐进式扩展:SAP GUI承载经典开发模型,ADT延续服务化开发,而VS Code则通过虚拟文件系统接入现代工作流。核心在于,ABAP始终依赖服务器端Repository,无法简单本地化。因此,SAP选择逐步迁移而非强制替换,确保旧系统兼容性。在ABAP Cloud中,传统GUI已退出,仅保留现代化开发工具,标志着从“服
2026-11-06 10:02:28
8
原创 SAP ECC 6.0 与 NW 7.00 也能接入 MCP,一套面向老 ABAP 系统的源码解读与代码走查方案
SAP ECC 6.0 + NW 7.00 虽不支持现代 ADT,但可通过 RFC 接口实现 MCP。在外部运行现代 MCP Server,通过轻量级 Z 函数组(如 Z_MCP_GET_PROGRAM_SOURCE)调用 READ REPORT 等经典 ABAP 语句读取源码与元数据,结合表结构、调用关系等信息,实现代码走查与逻辑分析。无需依赖 ADT 接口,仅需利用老系统成熟的 RFC 与 DDIC 能力,即可高效支撑 AI 辅助开发。
2026-11-06 09:59:32
124
原创 ADT MCP 明明能读却写不进去,问题往往不在 ABAP,而在编辑链路
在使用 SAP ADT for VS Code 1.2 及 MCP Server 时,出现“可读不可写”现象:Agent 能读取 ABAP 程序,却无法正确修改(如添加“Hello World”)。根本原因在于 Agent 混淆了 VS Code 自带的本地编辑工具与 SAP MCP Server 提供的 abap_object_edit_file 工具。新版 MCP Server 明确要求使用其专用工具链进行写操作,但若未正确配置或缓存未刷新,Agent 仍会误用本地 search/replace。此外,
2026-11-06 09:59:04
8
原创 Claude Code 和 GitHub Copilot 能否直接查询 SAP 业务数据?从销售订单提取到 MCP 架构的完整实践
在SAP ABAP项目中,借助Claude Code或GitHub Copilot,可通过标准OData API(如API_SALES_ORDER_SRV)查询最近一个月的销售订单。关键在于构建受控的数据访问通道:使用经授权的HTTP客户端或封装为MCP Server的Node.js服务,实现安全、分页、字段筛选的查询。通过$filter和$select精准获取订单号、金额等核心字段,并按销售组织汇总。避免直接暴露数据库,确保权限与合规性。最终,大模型可调用封装后的工具,完成自然语言到业务数据提取的闭环。
2026-11-06 09:57:23
7
原创 Claude Code 配置文件中的 statusLine,隐藏在终端底部的 AI 开发监控系统
statusLine 是 Claude Code 的可编程状态栏配置项,通过执行外部脚本(如 Shell、Python、Node.js)动态显示模型名称、上下文使用率、会话成本、Git 分支等开发信息。它采用事件驱动机制,由 Claude Code 客户端将会话数据以 JSON 形式通过 stdin 传入脚本,脚本处理后输出至 stdout,实现轻量级监控面板。该设计分离了界面展示与模型推理,不消耗额外 Token,支持自定义格式与定时刷新,是提升开发透明度与效率的重要扩展机制。
2026-11-06 09:57:21
4
原创 Claude Code 的 claude agents 到底用在什么场合,深入理解多 Agent 并行开发、后台任务管理与工程实践
2026年,Anthropic推出Claude Code的Agent View功能,通过claude agents命令实现多任务并行管理。该功能支持创建独立后台会话,集中监控状态(如Working、Needs input、Completed等),提升对ABAP代码审查、MCP服务调试、单元测试修复及文档更新等并行任务的管控效率。区别于主会话与Subagent,Background Session可脱离终端持续运行,配合--bg命令实现自动化调度。虽不自动协调依赖,但显著降低多任务管理复杂度,适用于跨项目、长
2026-11-06 09:56:30
3
原创 Claude Code 的 claude attach 命令详解,从后台 Agent 接管到多任务并行开发的实战应用
claude attach 是 Claude Code 中用于接入后台运行的 AI Agent 会话的核心命令,允许开发者在不中断任务的情况下切换工作。通过 attach <id|name> 可快速恢复已有的分析、测试或排查会话,实现多任务并行开发。适用于长时间代码审查、自动化测试、复杂问题诊断等场景,尤其适合需人工介入的关键节点。该功能基于 Claude Code 内部的 Supervisor 管理机制,仅连接自身后台 Session,不创建新实例,保持上下文连续性,显著提升开发效率与协作流畅度。
2026-11-05 20:19:01
16
原创 深入理解 SAP API_SALES_ORDER_SRV,从销售订单查询、创建、修改到企业系统集成的完整技术解析
SAP S/4HANA 通过 API_SALES_ORDER_SRV 提供标准化的 OData V2 接口,实现销售订单的创建、读取、修改与删除。该接口基于 HTTP 协议,支持 Deep Insert,可一次性提交订单抬头及多行项目,无需了解底层数据库结构。相比传统 BAPI 或 RFC 方案,它简化了外部系统(如 Node.js 平台、SAP BTP 应用)集成,提升开发效率与维护性。接口遵循统一元数据规范,支持分页、过滤与增量同步,适用于电商、CRM 等场景,是 SAP SD 业务能力开放的核心标准。
2026-11-05 20:18:32
15
原创 SAP Business Accelerator Hub 深度解析,从 API 发现、业务集成到 ABAP Cloud 开发的完整实践
SAP Business Accelerator Hub 是 SAP 生态系统集成的核心发现平台,提供标准 API、业务事件、CDS View、集成流程与数据产品等技术资源。它帮助开发人员快速定位 S/4HANA 等系统的可复用接口,支持基于 RAP、ABAP Cloud 与 SAP Integration Suite 的高效集成设计。平台不替代实际服务或网关,而是作为统一入口,实现从需求到技术实现的精准匹配,显著提升企业数字化集成效率。
2026-11-05 20:18:09
15
原创 深入解析 Claude Code 的 claude auto-mode defaults 命令,如何查看 AI Agent 的安全规则,以及它在自动化开发中的实际应用
claude auto-mode defaults 命令用于查看 Claude Code 自动模式下的内置安全规则,包括信任环境、允许行为、软性禁止与强制禁止项。该命令不修改配置,仅展示基于自然语言描述的分类器规则,帮助开发者理解自动化操作的安全边界。通过 --label 可筛选特定类别(如 Git 破坏性操作或数据外传),结合 PowerShell 或 VS Code 可高效分析规则细节,提升对 Claude Code 安全架构的认知与工程实践能力。
2026-11-05 20:16:59
13
原创 API_SALES_ORDER_SRV 只能在云端使用吗?详解 SAP S/4HANA On-Premise 的接口支持、配置方法与 ABAP 开发实践
API_SALES_ORDER_SRV 不仅适用于 SAP S/4HANA Cloud,也支持本地部署的 S/4HANA On-Premise 系统。SAP 官方文档明确将其列为可运行于 S/4HANA 及私有云版本的标准 OData 接口,且可通过 /IWFND/MAINT_SERVICE 激活使用。关键在于区分传统 ECC 与 S/4HANA:后者才具备该标准 API,ECC 即便运行在 HANA 上也不自动支持。接口调用需确保服务已注册并激活,实际功能受限于系统版本与配置。
2026-11-05 20:16:37
13
原创 开发电脑一旦失守,SAP ADT 与 MCP Server 的安全边界还能守住什么
2026年10月,SAP更新ABAP Development Tools MCP Server,支持与Claude Code、GitHub Copilot等智能体协同,提升开发效率。但安全模型随之变化:开发终端失陷风险上升,本地工作区、认证会话、工具调用链均成新攻击入口。尽管后端权限控制仍有效,攻击者可利用合法权限实施隐蔽篡改。MCP Server默认禁用、需显式配置,以降低误用风险。企业需强化终端安全、双人复核与变更审计,确保代码完整性与可信度。
2026-11-05 20:15:56
140
原创 深入理解大模型 Embeddings Endpoint,从语义向量、相似度计算到 Claude Code 与 OpenClaw 的智能知识检索
在大型SAP ABAP项目中,传统关键词搜索难以精准定位与“销售订单创建日期”相关的代码。借助Embeddings Endpoint,可将自然语言问题转化为语义向量,通过余弦相似度在向量空间中检索最相关代码片段。该技术作为RAG系统核心,实现从海量代码中高效语义匹配,突破关键词局限,提升AI代码分析能力。
2026-11-05 20:15:36
9
原创 大模型的 Context Window 究竟是什么?从 GPT、Claude Code 到 OpenClaw,深入理解 AI 的上下文窗口、工作记忆与长任务管理
本文深入解析大模型上下文窗口(Context Window)的核心机制,揭示其作为推理工作空间的本质。尽管模型具备数十万Token容量,仍可能遗忘早期信息,因上下文非永久存储。上下文窗口限制输入、输出与推理的总和,且受Token化差异影响,实际容量远低于字符数直觉。长上下文能力不等于强理解力,需结合上下文工程优化。模型知识源于训练参数,而具体任务信息依赖上下文注入,二者不可混淆。合理管理上下文,是高效使用AI Agent的关键。
2026-11-05 20:15:13
11
原创 深入理解 curl -fsSL | bash,从 OpenCode 一键安装命令看懂 Linux Shell、管道机制与远程脚本执行
curl -fsSL https://opencode.ai/v2/install | bash 是一条典型的命令行安装指令,通过 curl 下载 OpenCode V2 的 Shell 脚本,并用 bash 执行。该命令利用管道实现下载与执行的无缝衔接,体现了 Unix 系统“组合小工具”的设计哲学。其中 -fsSL 保障了下载的可靠性与安静性,而管道机制使脚本可边下载边执行,提升效率但带来安全风险。需注意版本区分(v1 与 v2),并警惕直接执行远程脚本可能引发的供应链攻击。
2026-11-05 20:14:38
8
原创 深入理解 Phantom Models,为什么大模型明明出现在列表里,却可能根本无法调用?从 GitHub Copilot、OpenCode 到 AI Agent 的模型路由机制
2026年,GitHub Copilot与models.dev模型目录不一致引发“幽灵模型”(Phantom Models)讨论。这些模型虽在目录中存在并配置参数,却无法调用,暴露了模型元数据与实际服务状态脱节的工程问题。其根源在于模型目录、运行时部署与用户权限三者间缺乏一致性机制,导致上下文压缩误判、工作流中断等风险。该现象在多供应商路由系统中尤为突出,凸显现代AI Agent对模型发现与能力校验的迫切需求。
2026-11-05 20:14:02
12
原创 Claude Code Remote Control 深度解析,从手机远程操控本地 AI 编程,到跨设备开发与企业级自动化
2026年2月,Anthropic推出Claude Code的Remote Control功能,实现开发者与本地AI编程环境的分离式交互。通过将控制端(如手机、平板)与执行端(本地电脑)解耦,用户可在无开发环境的设备上远程管理项目、查看代码分析、审批操作,而实际执行仍由本地完成。该功能支持服务模式、多会话管理与Git Worktree隔离,无需端口映射或复杂配置,依托主动出站连接与Anthropic云端同步,提升开发灵活性。尽管代码执行在本地,但对话记录与模型调用数据仍经云端处理,需注意企业数据安全。三种启
2026-11-04 17:54:36
31
原创 从 Claude Code 到 SAP OData API,深入理解 AI Agent 如何通过 Node.js 访问企业业务数据
本文探讨了如何通过 Claude Code 调用本地程序,实现自然语言指令访问 SAP S/4HANA 的业务数据。核心方案是利用 Node.js 编写的 OData 查询工具,结合 HTTP 请求与 SAP Gateway 认证,安全读取销售订单信息。该机制依赖三重权限控制:Claude Code 工具调用权限、SAP 身份认证及业务授权,确保仅执行受控的只读操作。通过标准 API 而非直接数据库访问,符合企业级集成安全规范,为 AI 驱动的业务分析提供了可落地的技术路径。
2026-11-04 17:54:08
15
原创 Claude Code 的 claude purge [path] 命令详解,项目历史清理、隐私保护、状态重置与实际使用场景
claude purge [path] 是 Claude Code 的项目级本地状态清理命令,用于删除指定项目在本地保存的会话记录、任务列表、调试日志、文件编辑历史及配置信息,但不涉及源代码或服务器数据。适用于项目结束、技术重构、实验性开发收尾或移交场景,帮助清除本地开发痕迹,重建干净工作环境。执行前建议使用 --dry-run 预览清理范围,避免误删。该命令仅影响本地状态,不影响 Git 提交或模型能力,是企业数据管理中重要的本地清理工具。
2026-11-04 17:53:43
19
原创 Claude Code 的 claude import [source] 命令详解,从 Codex、Gemini CLI、Cursor 迁移配置的原理与实战场景
claude import [source] 命令可将 OpenAI Codex、Google Gemini CLI 及 Cursor 的开发配置(如项目规范、Skills、MCP Server 等)迁移至 Claude Code,避免重复配置。该功能仅迁移开发者定义的环境设置,不涉及模型参数或运行时。建议先用 --dry-run 预览,再执行导入,确保兼容性与安全性。对于多工具协作团队,推荐采用共享规则文件(如 @AGENTS.md)实现持续同步,减少版本漂移。
2026-11-04 17:53:10
25
原创 深入理解 Claude Code 的 claude daemon run 命令,后台 Agent 的运行机制、实际使用场景与故障排查
claude daemon run 是 Claude Code 用于前台运行后台会话监督进程的管理命令,主要用于调试和观察后台任务的运行日志。它不直接执行开发任务,而是确保后台会话(如代码分析、测试修复)在无终端附着时仍能稳定运行。该进程负责管理会话生命周期、自动恢复异常任务,并支持版本更新时的平滑迁移。当 --bg 任务启动失败时,可通过此命令排查监督进程状态,尤其适用于企业环境中因 PowerShell 限制导致的启动问题。其核心价值在于提供可监控、可恢复的后台执行能力,而非替代常规开发流程。
2026-11-04 17:51:58
14
原创 SAP ABAP 开发正在进入 Visual Studio Code 时代,ADT、MCP Server 与 AI Agent 到底是什么关系
2026年10月,SAP发布ABAP Development Tools for Visual Studio Code 1.2,升级MCP Server,实现ABAP对象读写、检查、激活等能力的独立封装,使GitHub Copilot等Agent可深度参与开发。该架构以共享Java后端为核心,构建统一的ABAP Language Server,支持Eclipse、VS Code、MCP Client等多前端复用同一套开发能力。通过虚拟文件系统(Virtual Workspace),ABAP代码以“文件”形式
2026-11-04 09:57:34
39
原创 SAP abap-cleaner 不是 Pretty Printer,而是一套可自动执行的 Clean ABAP 重构引擎
SAP的abap-cleaner已从简单格式化工具演变为集代码清理、语法现代化与可配置重构于一体的自动化引擎。截至2026年,其规则增至100余条,支持自动重构变量声明、替换旧式语法、优化SELECT语句等,且确保不改变程序逻辑。通过default与essential等profile实现团队规范统一,结合Eclipse ADT、独立应用及VS Code扩展,支持多环境集成,显著减少代码评审中的机械争议,推动ABAP开发向更高效、一致的方向演进。
2026-11-04 09:57:10
19
原创 一个看似普通的复选框,决定 ADT MCP Server 能不能真正修改 ABAP 对象
设置 Adt › Mcp Server › Enable Edit File Tool For ABAP Objects 控制 ADT MCP Server 是否允许外部 MCP Agent(如 GitHub Copilot、Claude Code)通过 abap_object_edit_file 工具直接修改 ABAP Repository 中的源代码。该功能基于精确字符串替换,不涉及本地文件系统,而是通过 ADT 虚拟文件系统与远端 SAP 系统交互。启用后,可使 CLI 类 Agent 完整执行 AB
2026-11-04 09:55:33
21
原创 VSP 到底是什么,ABAP Agent 开发里那座连接 MCP 与 ADT 的桥
VSP 并非 SAP 官方工具,而是开源项目 Vibing Steampunk 的可执行程序,作为连接 AI Agent(如 Claude Code、GitHub Copilot)与 SAP ABAP Repository 的桥梁。它通过 MCP 协议封装 ADT 接口,实现代码读写、语法检查、激活、测试、调试、Transport 等完整开发流程,兼具 ABAP CLI 与 MCP Server 功能。项目以 Go 编写,支持多平台,已覆盖百余项 ADT 能力,显著推动 ABAP Agentic Devel
2026-11-04 09:54:06
22
使用 JavaScript 上传 PDF 和 Excel 文件到 ABAP 服务器并解析
2021-11-13
SAP Fiori 和 SAP UI5 开发学习路线图
2022-03-25
自己用Java编写的有道云笔记图片批量下载工具
2020-11-29
红白机 FC 全部游戏 ROM 名称列表
2025-05-03
UI5 Inspector,一款好用的 Chrome 扩展
2022-02-22
如何使用 ABAP 创建包含不同字体大小的 Word 文档-模板文件
2022-08-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅