Mark的技术博客

SAP顾问 | 咨询专家 | IT与AI技术探索者

吴让宇(Mark)

吴让宇(Mark)

SAP顾问 | 咨询专家 | IT与AI技术探索者

吴让宇(Mark)的个人技术博客,专注于SAP系统实施、行业方案咨询、IT技术与AI技术的研究与分享。

SAP Fiori ABAP CDS OData Dify Docker AI LLM

最新文章

服务确认与发票 (★★★)

#procurement #invoice

概览表

Item Key Point
服务确认表 ML81N,记录服务的实际执行
参照 PO 创建 确认表引用 PO 的服务规格
计划/未计划服务 两种服务类型在确认表中均可处理
服务接受 正式确认服务完成
发票校验 MIRO,参照服务确认表进行

服务确认表 (Service Entry Sheet)

事务码

事务码 功能
ML81N 创建/维护服务确认表
ML82 更改服务确认表
ML83 显示服务确认表

创建确认表(参照 PO)

1
2
3
4
5
6
7
8
9
10
11
12
13
采购订单 (PO, 行项目类别 D)

▼ 参照
┌────────────────────────────┐
│ 服务确认表 (Entry Sheet) │
│ ├── PO 编号: 4500000001 │
│ ├── 行项目: 10 │
│ ├── 服务行: │
│ │ ├── 服务1: 实际 8H │
│ │ ├── 服务2: 实际 5H │
│ │ └── 未计划服务: 2H │
│ └── 供应商确认 │
└────────────────────────────┘
💡服务确认表是服务的”收货”
服务确认表 (Entry Sheet) 相当于物料的收货 (MIGO)。它记录服务的实际执行情况。

计划和未计划服务在确认表中

类型 说明 在确认表中
计划服务 PO 服务规格中预定义的服务 从 PO 复制,输入实际数量
未计划服务 PO 中未定义的额外服务 手动添加,受限额控制
1
2
3
4
5
6
7
8
9
服务确认表内容:
┌───────────────────────────────────┐
│ 来自 PO 的计划服务: │
│ ├── 服务1: 计划 10H → 实际 8H │
│ └── 服务2: 计划 5H → 实际 5H │
├───────────────────────────────────┤
│ 新增的未计划服务: │
│ └── 服务X: 实际 2H (受限额控制) │
└───────────────────────────────────┘

服务接受流程 (Service Acceptance)

1
2
3
4
5
6
7
8
9
10
11
12
服务确认表状态流转:

草稿 (Draft)

▼ 提交
待接受 (Pending Acceptance)

▼ 负责人审核
已接受 (Accepted) ──→ 生成物料凭证

▼ 可进行发票校验
可结算 (Settleable)
状态 说明
草稿 正在编辑中
待接受 已提交,等待审核
已接受 负责人确认服务已完成
已拒绝 服务不满足要求
📌接受步骤
服务确认表必须经过接受 (Acceptance) 才能进行发票校验。这是服务采购特有的控制点。

接受时的物料凭证

  • 服务确认表被接受时,系统生成物料凭证
  • 与物料收货不同,服务确认的物料凭证主要记录服务执行
  • 同时可能产生财务过账(取决于配置)

发票校验 (MIRO)

服务相关发票

1
2
3
4
5
6
7
8
服务发票校验 (MIRO):
┌──────────────────────────────┐
│ 参照: PO / 服务确认表 │
│ ├── 选择 PO 编号 │
│ ├── 系统检索已接受的服务确认表 │
│ ├── 发票金额与确认表匹配 │
│ └── 过账发票 │
└──────────────────────────────┘
步骤 说明
1. 输入 PO 编号 系统检索相关的服务确认表
2. 选择确认表 选择要结算的已接受确认表
3. 输入发票金额 确认金额
4. 过账 生成发票凭证

服务相关发票行项目

  • 发票项目参照服务确认表中的服务行
  • 可以部分结算(不是全部一次性结算)
  • 金额与确认表中的实际数量和价格匹配

服务采购完整流程

1
2
3
4
5
6
7
服务主记录     采购订单         服务确认         发票
(AC03) (ME21N) (ML81N) (MIRO)
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│服务编号│────→│行类别D│──GR──→│确认表 │──IR──→│发票 │
│条件价格│ │服务规格│ │实际数量│ │结算 │
│ │ │限额 │ │接受 │ │ │
└──────┘ └──────┘ └──────┘ └──────┘

考试/测试模式

Scenario/Keyword Answer
“服务确认表的事务码” ML81N
“服务确认表相当于什么” 相当于物料的收货 (GR)
“服务确认的接受步骤” 必须接受后才能进行发票校验
“计划服务和未计划服务在确认表中如何处理” 计划服务从 PO 复制;未计划服务手动添加,受限额控制
“服务发票校验参照什么” 参照已接受的服务确认表
“接受确认表时是否生成物料凭证”
“MIRO 用于什么” 发票校验

每日科技简报

2026年05月11日 | 星期日

数据来源:新华网、人民网、央视网、科技日报等权威媒体


🤖 AI新方向

三部门联合印发《智能体规范应用与创新发展实施意见》

来源:新华网、国家网信办

智能体规范

国家网信办、国家发展改革委、工业和信息化部三部门联合印发《智能体规范应用与创新发展实施意见》,旨在落实国务院《关于深入实施”人工智能+”行动的意见》。政策明确将”安全、可靠、可信”作为智能体产业发展的底线要求,贯穿技术研发、应用部署与推广全过程。同步发布的《智能体国家标准》要求所有自称”智能体”的AI产品必须通过基础能力测试,同时提出推出1000个高水平工业智能体、打造100个工业领域高质量数据集的目标。


AI工具几分钟即可追溯基因对共同祖先

来源:科技日报、新浪财经

AI基因追溯

研究人员开发出一款新型人工智能工具,可解析DNA序列中的突变规律,在几分钟内即可追溯基因对的共同祖先,为重建生物进化史提供了全新模式。相比传统方法需要数天甚至数周的计算时间,该工具将效率提升了数个数量级。相关论文已发表于新一期《美国国家科学院院刊》(PNAS)。


AI化身靠谱”合伙人”:一人公司模式兴起

来源:人民网

杭州涌现出一批由AI驱动的”一人公司”(OPC)创业模式。据”鸿鹄汇”社区发布的《2026一人公司洞察报告》显示,当前OPC创业者中非技术背景者已占75%,HACR比值约为1:72(即1元AI成本可替代约72元人工成本),显著降低了创业门槛和运营成本。AI工具正帮助创业者独立完成产品设计、营销推广和客户服务等全流程业务。


词元经济发展不能止于数据规模

来源:人民网、科技日报

《全国数据资源调查报告(2025年)》显示,2025年全国年度数据生产总量达52.26泽字节(ZB),全球占比超27%;词元调用量约21100万亿,呈指数级增长。专家指出,词元经济的发展不能仅追求数据规模扩张,还需着力解决数据质量、数据孤岛、法规治理和商业模式等深层次问题,推动数据要素价值的高效释放。


💻 IT技术前沿

天舟十号货运飞船今日成功发射 实现”十战十捷”

来源:央视新闻、科技日报、新华网

天舟十号发射

北京时间2026年5月11日8时14分,搭载天舟十号货运飞船的长征七号遥十一运载火箭在文昌航天发射场点火发射,约10分钟后飞船顺利进入预定轨道,发射任务取得圆满成功。本次发射是天舟系列货运飞船的第十次飞行任务,实现”十战十捷”,也是我国载人航天工程2026年度首发任务。天舟十号搭载近6.3吨补给物资,包括第3套全新的舱外航天服,上海航天承制的多项核心系统交付周期缩短了40%。


第四代自主超导量子计算机”本源悟空-180”全球上线

来源:科技日报、新华网

量子计算机

本源量子发布第四代自主超导量子计算机”本源悟空-180”,搭载单核180个计算比特自主超导量子芯片(另有251个耦合量子比特),单比特逻辑门保真度99.9%,双比特逻辑门保真度99%。全链条自主可控,芯片系统、测控系统、环境支撑系统、操作系统4个核心体系均由本源量子全栈自研,即日起面向全球接收量子计算任务。


“太极计划”全功能干涉仪光学平台研制成功

来源:科技日报

中国科学院力学研究所团队成功研制”太极计划”全功能干涉仪光学平台,采用创新的”前后分离”三维布局设计,有效解决了热稳定性难题。该光学平台测量精度达到皮米级(头发丝直径万分之一),测量灵敏度提升了一个数量级,关键指标完全满足太空探测要求。成果标志着引力波探测设备从实验室样机走向工程应用。


全球首艘2.4万标箱甲醇双燃料集装箱船研制成功

来源:科技日报

全球最大级别2.4万标箱集装箱船”东方智慧”轮在江苏南通正式命名。总长399.99米,型宽61.3米,最大载箱量24168标箱,载重22.5万吨,搭载全球最大甲醇双燃料发动机。使用绿色甲醇时每年可减少二氧化碳排放15万吨,标志着我国在超大型绿色智能船舶领域再次领跑全球。


数智转型助推煤炭产业焕发新动能

来源:科技日报

智慧矿山

科技日报报道传统煤炭产业正加速数智化转型,实现从”人海战术”向技术化作业的根本转变。通过智能采矿系统、无人化采掘装备和5G+工业互联网等技术应用,煤炭开采变得更加安全高效,工人劳动强度大幅降低,传统”体力活”正在变成”技术活”。


📊 软件服务

2026世界数字教育大会今日在杭州开幕

来源:新华网、教育部

数字教育大会

2026世界数字教育大会于5月11日至13日在杭州举办,主题为”人工智能+教育:变革 发展 治理”。大会由教育部和杭州市人民政府共同主办,包含开幕式、全体会议、8场平行会议及闭幕式等环节,同期举办全球数字教育成果展。预计将发布8项成果,聚焦AI推动教育系统性变革、教育公平与质量提升等核心议题。


AI大厂投资融资热潮持续涌动

来源:上观新闻

2026年全球AI领域投资预计超过2万亿美元,阿里巴巴、字节跳动、腾讯等大厂正加速争夺C端用户市场。业内将2026年视为”智能体商业化元年”,AI投资融资呈现持续升温态势。数据显示,字节跳动AI投资达2000亿元,英伟达投入400亿美元,AI正从技术层面向产业资本和就业市场深度渗透。


AI领域大厂加速布局智能体商业化

来源:科技日报、新华网

随着三部门《智能体规范应用与创新发展实施意见》的出台,国内科技巨头纷纷加速智能体商业化布局。2026年被视为”智能体商业化元年”,40%的企业应用将嵌入任务型AI智能体(2025年不足5%)。工业领域计划推出1000个高水平工业智能体,打造100个高质量工业数据集。


📜 政策法规

政策名称 发布单位 核心内容
《智能体规范应用与创新发展实施意见》 国家网信办、国家发改委、工信部 将”安全、可靠、可信”确立为智能体发展底线,配套发布智能体国家标准
《人工智能终端智能化分级》(GB/Z 177-2026) 工信部、市场监管总局、商务部 对手机、电脑、电视等七大类AI终端进行L1-L4四级智能化分级
四部门AI与能源双向赋能行动方案 国家发改委等四部门 推动AI算力设施绿色低碳转型,促进新能源就近就地消纳
人工智能科技伦理审查与服务先导计划 相关部门 启动AI科技伦理审查先导计划,加强AI研发与应用的伦理规范
消费类网联摄像头网络安全标识实施规则征求意见 相关部门 公开征求意见,加强消费类联网设备网络安全管理

🔬 科创成果

第二十八届北京科博会圆满收官

来源:科技日报、人民网

北京科博会

第二十八届中国北京国际科技产业博览会于5月10日圆满落幕。展览面积约5万平方米,800余家中外企业和机构参展,发布各类成果148项,现场签约项目57个,协议总金额5.9亿元,线上观展人次突破50万。亮点展品包括100千瓦热声斯特林发电机组、”灵铠一号”稀释制冷机、心脏介入手术机器人等前沿科技成果,充分展示了北京国际科技创新中心建设的最新进展。


人类”非凡之手”的进化故事

来源:科技日报

科技日报发表专题报道,探讨人类手部独特的骨骼特征如何使”钳状抓握”成为可能。美国纽约州立大学石溪分校的研究指出,这种精准抓握能力是人类进化中最重要但容易被忽视的篇章之一,为理解人类工具使用和文明发展提供了新的进化视角。


📰 今日要闻速览



pie
    title 今日要闻分类统计
    "AI新技术" : 4
    "IT技术突破" : 5
    "政策法规" : 5
    "软件服务" : 3
    "科创成果" : 2

分类 要闻
🤖 AI 三部门出台智能体规范实施意见;AI工具几分钟追溯基因祖先;AI一人公司模式兴起;词元经济突破21100万亿
💻 IT 天舟十号成功发射实现十战十捷;”本源悟空-180”量子计算机上线;”太极计划”光学平台研制成功;全球首艘甲醇双燃料船交付
🎓 教育 2026世界数字教育大会杭州开幕,主题”AI+教育”
💰 产业 AI大厂投资融资热潮涌动;智能体商业化元年开启
📜 政策 智能体国家标准发布;AI终端分级标准落地;AI科技伦理审查先导计划启动

📈 今日核心数据

数据指标 数值 备注
天舟系列战绩 十战十捷 2026年度载人航天首发任务
天舟十号载货量 约6.3吨 含第3套全新舱外航天服
“本源悟空-180”量子比特 180计算+251耦合 单比特门保真度99.9%
科博会签约金额 5.9亿元 57个签约项目
科博会发布成果 148项 800余家企业参展
2025年数据生产总量 52.26 ZB 全球占比超27%
词元调用量 21100万亿 指数级增长
OPC创业AI替代比 1:72 1元AI成本替代72元人工
全球AI投资预计 超2万亿美元 2026年

📌 编辑寄语

今日科技新闻亮点纷呈,航天与AI双线并进。天舟十号于今晨8时14分在文昌航天发射场成功发射,实现天舟系列”十战十捷”,标志着我国空间站常态化运营能力进一步成熟。AI领域则迎来政策利好——三部门联合印发《智能体规范应用与创新发展实施意见》,首次将智能体产业纳入国家规范化管理框架,”安全、可靠、可信”成为行业发展底线。同时,2026世界数字教育大会今日在杭州开幕,”AI+教育”成为全球共识。从量子计算到引力波探测,从煤炭数智转型到一人公司兴起,科技创新正以前所未有的广度渗透到经济社会的每一个角落。


本简报由AI助手自动整理生成,数据来源于权威媒体公开报道

BC400 — ABAP 工作台入门学习地图

#dashboard #abap

概述

  • SAP BC400 认证课程:ABAP 工作台入门
  • 涵盖 ABAP 编程基础知识的 9 个单元
  • 时长:5 天,SAP NetWeaver 平台

主题地图

Section (单元) Source (来源) Notes (笔记) Status (状态)
Unit 1: 系统架构 Unit 1 (pp. 1-20) 系统架构与程序流程 [ ]
Unit 2: ABAP 工作台 Unit 2 (pp. 21-72) 仓库与对象导航器, 开发程序与事务 [ ]
Unit 3: 基本语言元素 Unit 3 (pp. 73-120) 数据类型与数据对象, ABAP语句与控制流, ABAP调试器 [ ]
Unit 4: 模块化 Unit 4 (pp. 121-230) 模块化概述, 子程序, 函数模块与BAPI, 全局类与方法, 局部类预览 [ ]
Unit 5: 复杂数据对象 Unit 5 (pp. 231-278) 结构体, 内表 [ ]
Unit 6: 数据建模与检索 Unit 6 (pp. 279-360) 数据建模与透明表, Open SQL数据库访问, 权限检查 [ ]
Unit 7: 用户对话 Unit 7 (pp. 361-518) 屏幕编程, Web Dynpro for ABAP, 经典ABAP报表, SAP列表查看器(ALV) [ ]
Unit 8: 程序分析 Unit 8 (pp. 519-532) 代码检查器 [ ]
Unit 9: SAP 标准调整 Unit 9 (pp. 533-548) 调整SAP标准软件 [ ]

练习笔记

Question Set (题集) Questions (题数) Link (链接)
系统架构 8 单元1练习
ABAP 工作台 8 单元2练习
语言元素 10 单元3练习
模块化 10 单元4练习
复杂数据 10 单元5练习
数据检索 10 单元6练习
用户对话 10 单元7练习
程序分析 8 单元8练习
SAP 调整 8 单元9练习

学习工具

Tool (工具) Description (描述) Link (链接)
考试陷阱 常见错误和易错点 [[_posts/SAP_ABAP/BC400_ABAP工作台/00-仪表盘/考试陷阱]]
快速参考 完整速查表 [[_posts/SAP_ABAP/BC400_ABAP工作台/00-仪表盘/快速参考]]

标签索引

Tag (标签) Topics (主题) Hierarchy (层级)
#abap 顶级领域 Domain
#abap-architecture 系统架构 abap > architecture
#abap-workbench 开发工具 abap > workbench
#abap-syntax 语言元素 abap > syntax
#abap-modularization 模块化技术 abap > modularization
#abap-data 数据对象与类型 abap > data
#abap-sql 数据库访问 abap > sql
#abap-dialog 用户对话 abap > dialog
#abap-tools 分析工具 abap > tools
#abap-enhancement SAP 软件调整 abap > enhancement
#abap-auth 权限 abap > auth
#practice 练习题 Note type
#dashboard 仪表盘笔记 Note type
#exam-traps 考试陷阱 Note type

标签规则:所有标签均为英文短横线格式。领域标签 #abap 始终同时附加。详细标签始终包含其父领域标签。

薄弱领域

  • 模块化技术选择(何时使用哪种)→ 模块化概述 → [[_posts/SAP_ABAP/BC400_ABAP工作台/00-仪表盘/考试陷阱]]
  • 内表类型与访问性能 → 内表 → [[_posts/SAP_ABAP/BC400_ABAP工作台/00-仪表盘/考试陷阱]]
  • Open SQL 与 Native SQL 的区别 → Open SQL数据库访问 → [[_posts/SAP_ABAP/BC400_ABAP工作台/00-仪表盘/考试陷阱]]
  • 屏幕流逻辑 (PBO/PAI) → 屏幕编程 → [[_posts/SAP_ABAP/BC400_ABAP工作台/00-仪表盘/考试陷阱]]

非核心主题策略

Source (来源) Content (内容) Handling (处理方式)
练习 (1-21) 逐步练习说明 排除 — 动手实验内容,非考试理论
索引 (pp. 549-554) 关键词索引 排除 — 仅供参考

考试陷阱 — BC400 常见错误

#dashboard #exam-traps #abap

⚠️用途
BC400 课程中经常出错的考试题目和常见误区的集合。

数据类型

陷阱:类型 N 是数值类型
  • 错误:N(数字字符)是像 I、F、P 一样的数值类型
  • 正确:N 是一种字符串类型,只允许数字——它不是数值类型,不能用于算术运算。
  • 数据类型与数据对象
陷阱:不完整的标准类型有固定长度
  • 错误:所有 ABAP 标准类型都有固定长度
  • 正确:类型 C、N、X、P 是不完整的——必须指定长度。只有 D、T、I、F、STRING、XSTRING、DECFLOAT16/34 是完整的(固定长度)。
  • 数据类型与数据对象

模块化

陷阱:子程序可以从其他程序调用
  • 错误:PERFORM form IN PROGRAM 是一种好的模块化技术
  • 正确:虽然技术上可行,但跨程序调用子程序违反封装原则,不应使用。请改用函数模块或类方法。
  • 子程序
陷阱:函数模块和方法有相同的参数类型
  • 错误:两者都相同地使用 IMPORTING/EXPORTING/CHANGING
  • 正确:子程序仅支持 USING/CHANGING(不支持 IMPORTING/EXPORTING)。方法额外支持 RETURNING 参数。
  • 模块化概述
陷阱:BAPI 会抛出常规异常
  • 错误:BAPI 函数模块像其他函数模块一样抛出异常
  • 正确:BAPI 不得抛出异常。错误通过特殊导出参数 RETURN 报告。
  • 函数模块与BAPI

内表

陷阱:APPEND 适用于所有表类型
  • 错误:可以对排序表和哈希表使用 APPEND
  • 正确:APPEND 仅适用于标准表。排序表和哈希表请使用 INSERT。
  • 内表
陷阱:表头行推荐用于新程序
  • 错误:带表头行的内表可以简化代码
  • 正确:表头行已过时,不应在新程序中使用。它们在 ABAP Objects 或嵌套数据对象中不被允许。
  • 内表
陷阱:默认键对内表有用
  • 错误:默认键是表定义的良好默认值
  • 正确:默认键使用所有非数字字段,通常没有实际意义。应始终定义显式键。
  • 内表

数据库访问

陷阱:SELECT SINGLE 总是恰好返回一条记录
  • 错误:SELECT SINGLE 保证有结果
  • 正确:SELECT SINGLE 可能不返回任何记录——务必检查 sy-subrc。如果存在多条匹配记录,它返回第一条
  • Open SQL数据库访问
陷阱:INTO TABLE 与 SELECT 循环中的 INTO
  • 错误SELECT ... INTO TABLESELECT ... INTO ... ENDSELECT 可以互换
  • 正确INTO TABLE数组提取(批量读取,一次数据库访问)。INTO ... ENDSELECT循环(多次数据库访问)。数组提取效率更高。
  • Open SQL数据库访问
陷阱:仓库对象是特定客户端的
  • 错误:仓库对象属于特定客户端
  • 正确:仓库对象是跨客户端的——可从系统中的任何客户端访问。
  • 仓库与对象导航器

用户对话

陷阱:屏幕 PBO 和 PAI 可以互换
  • 错误:PBO 和 PAI 可以包含相同的逻辑
  • 正确PBO 在屏幕显示前运行(设置默认值、修改屏幕)。PAI 在用户操作后运行(处理输入、确定下一屏幕)。
  • 屏幕编程
陷阱:SELECTION-SCREEN 事件顺序不重要
  • 错误:INITIALIZATION 和 AT SELECTION-SCREEN 可以以任意顺序排列
  • 正确:事件顺序:INITIALIZATION(屏幕显示前)→ AT SELECTION-SCREEN(用户输入后)→ START-OF-SELECTION(主处理)。
  • 经典ABAP报表

SAP 软件调整

陷阱:修改是调整 SAP 软件的推荐方式
  • 错误:修改是一种有效的首选方法
  • 正确增强始终优于修改。修改在升级时需要调整,并造成显著的维护开销。
  • 调整SAP标准软件
陷阱:原件可以被传输覆盖
  • 错误:传输可以覆盖原件
  • 正确原件永远不会被传输覆盖。原始系统是对象的”出生地”。
  • 调整SAP标准软件

相关内容

  • [[_posts/SAP_ABAP/BC400_ABAP工作台/00-仪表盘/学习地图]] → 薄弱领域部分
  • [[_posts/SAP_ABAP/BC400_ABAP工作台/00-仪表盘/快速参考]]

系统架构与 ABAP 程序流程 (★★★★)

#abap #abap-architecture

概览表

Layer (层) Role (角色) Key Point (要点)
数据库层 RDBMS 数据管理 存储应用数据 + 程序 + 元数据
应用服务器 ABAP 程序执行 程序在此运行
表示服务器 用户界面 (SAP GUI) 用户交互

三层架构

SAP NetWeaver AS 采用面向软件的客户端/服务器架构,分为三个层次:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌─────────────────────┐
│ 表示服务器 │ SAP GUI(用户界面)
│ (多个客户端) │
└──────────┬──────────┘

┌──────────┴──────────┐
│ 应用服务器 │ ABAP 程序在此执行
│ (可以有多个) │ 调度器 → 工作进程
└──────────┬──────────┘

┌──────────┴──────────┐
│ 数据库层 │ RDBMS(数据 + 程序 + 元数据)
│ (单个实例) │
└─────────────────────┘
  • 垂直扩展:所有层在一台机器上,或分布在不同机器上
  • 水平扩展:表示服务器和应用服务器可以分布在多台机器上
  • 数据库:水平分布取决于数据库类型

ABAP 程序执行流程

1
2
3
4
5
6
7
1. 用户输入数据 → 表示服务器
2. ABAP 程序启动 → 应用服务器
3. 调用复用单元 → 将数据传递给被调用程序
4. 数据库读取 → 向数据库发送 SQL 请求
5. 数据库返回数据 → 放入结构体(数据对象)
6. 复用单元返回 → 控制权回到调用程序
7. 列表输出 → 运行时系统将屏幕发送到表示层
💡核心概念
ABAP 程序在应用服务器上处理。用户对话和数据库访问的设计是编写应用程序时的主要关注点。

关键术语

Term (术语) Definition (定义)
RDBMS 关系型数据库管理系统
Repository (仓库) 所有开发对象的跨客户端存储
Dispatcher (调度器) 将用户请求路由到可用的工作进程
Work Process (工作进程) 在应用服务器上执行 ABAP 程序
Runtime System (运行时系统) 管理 ABAP 程序的执行

考试/测试模式

Scenario/Keyword (场景/关键词) Answer (答案)
“ABAP 程序在哪里运行?” 应用服务器层
“仓库是特定客户端的吗?” 否——始终跨客户端
“所有层可以在一台计算机上吗?” 可以——垂直分布

相关笔记

BC400 快速参考

#dashboard #abap

系统架构 → 系统架构与程序流程

Component (组件) Description (描述)
数据库层 RDBMS 存储应用数据 + 程序 + 元数据
应用服务器 ABAP 程序在此执行
表示服务器 SAP GUI 用户界面
调度器 将用户请求路由到工作进程

仓库与工作台 → 仓库与对象导航器

Tool (工具) Purpose (用途)
对象导航器 (SE80) 中央开发工具
ABAP 编辑器 源代码编辑
ABAP 字典 表/类型定义
屏幕绘制器 屏幕布局
菜单绘制器 GUI 设计
函数构建器 函数模块
类构建器 全局类

数据类型 → 数据类型与数据对象

Type (类型) Description (描述) Fixed Length (固定长度)
I 整数 4
F 浮点数 8
P 压缩数字 否(需指定)
C 字符 否(需指定)
N 数字字符 否(需指定)
D 日期 (YYYYMMDD) 8
T 时间 (HHMMSS) 6
STRING 动态字符串 可变
XSTRING 动态十六进制字符串 可变
DECFLOAT16 十进制浮点 8
DECFLOAT34 十进制浮点 16

关键 ABAP 语句 → ABAP语句与控制流

Statement (语句) Purpose (用途)
DATA 定义变量
TYPES 定义局部类型
CONSTANTS 定义常量
PARAMETERS 选择屏幕输入
WRITE 列表输出
MOVE / = 赋值
MOVE-CORRESPONDING 结构字段复制
IF / ELSEIF / ELSE / ENDIF 条件判断
CASE / WHEN / ENDCASE 分支
DO [n TIMES] / ENDDO 固定循环 (sy-index)
WHILE / ENDWHILE 条件循环 (sy-index)
FORM / ENDFORM 子程序定义
PERFORM 子程序调用
CALL FUNCTION 函数模块调用
CALL METHOD 方法调用
CREATE OBJECT 实例化类
MESSAGE 对话消息

模块化对比 → 模块化概述

Technique (技术) Scope (作用域) Interface (接口) Encapsulation (封装性)
子程序 (FORM) 仅局部 USING/CHANGING
方法(局部类) 仅局部 IMPORTING/EXPORTING/CHANGING/RETURNING
函数模块 全局 IMPORTING/EXPORTING/CHANGING/TABLES + 异常
方法(全局类) 全局 IMPORTING/EXPORTING/CHANGING/RETURNING + 异常 最佳

内表操作 → 内表

Statement (语句) Purpose (用途)
APPEND wa TO itab 添加行(标准表)
INSERT wa INTO TABLE itab 插入行(任意表)
READ TABLE itab INTO wa 读取单行
MODIFY itab FROM wa 修改行
DELETE itab 删除行
COLLECT wa INTO itab 按键聚合
LOOP AT itab INTO wa 处理行
SORT itab BY field 排序表
REFRESH itab 清除内容
FREE itab 清除并释放内存

内表类型 → 内表

Kind (类型) Key Uniqueness (键唯一性) Access Type (访问类型) Best For (最佳用途)
STANDARD 非唯一 索引 顺序处理
SORTED 唯一/非唯一 索引 部分/顺序访问
HASHED 唯一 单记录键访问

Open SQL 语句 → Open SQL数据库访问

Statement (语句) Purpose (用途)
SELECT SINGLE ... INTO wa 单条记录读取
SELECT ... ENDSELECT 循环遍历记录
SELECT ... INTO TABLE itab 数组提取(批量读取)
SELECT ... INNER JOIN 多表连接

权限检查 → 权限检查

1
2
3
4
5
6
AUTHORITY-CHECK OBJECT 'auth_object'
ID 'field1' FIELD value1
ID 'field2' FIELD value2.
IF sy-subrc = 0.
" authorized
ENDIF.

屏幕流 → 屏幕编程

1
PBO (Process Before Output) → 屏幕显示 → 用户操作 → PAI (Process After Input)
  • SET SCREEN nnn — 动态设置下一屏幕
  • LEAVE TO SCREEN 0 — 返回上一屏幕/退出
  • CALL SCREEN nnn — 调用具有自身调用栈的屏幕

Web Dynpro MVC → Web Dynpro for ABAP

Component (组件) Role (角色)
Component 封装 MVC 单元
View UI 布局
Window 包含视图
Controller 业务逻辑
Context 数据容器
Node 上下文数据结构

ALV → SAP列表查看器(ALV)

1
2
3
4
CALL METHOD cl_salv_table=>factory
IMPORTING r_salv_table = go_alv
CHANGING t_table = gt_data.
go_alv->display( ).

代码检查器 (SCI) → 代码检查器

Category (类别) Checks (检查项)
性能 索引使用、循环中的 SELECT、缓冲区绕过
安全性 跨客户端访问、动态 WHERE
语法 扩展语法检查
规范 命名约定

增强类型 → 调整SAP标准软件

Type (类型) Description (描述) Release-Safe? (升级安全?)
客户开发 客户命名空间中的自有对象
配置 设置系统属性
增强 程序/菜单/屏幕出口、BAdI
修改 直接更改 SAP 对象 — 升级时需要调整

关键系统字段 → ABAP语句与控制流

Field (字段) Purpose (用途)
sy-subrc 返回码(0 = 成功)
sy-index 循环计数器 (DO/WHILE)
sy-tabix 当前表行索引
sy-dbcnt 处理的数据库行数
sy-ucomm 功能码

仓库与对象导航器 (★★★★)

#abap #abap-workbench

概览表

Concept (概念) Key Point (要点)
Repository (仓库) 所有开发对象的跨客户端存储
对象导航器 (SE80) 中央开发工具
仓库信息系统 与应用无关的搜索
应用层次结构 针对特定应用的搜索

仓库结构

1
2
3
4
5
6
Repository(仓库,跨客户端)
├── 应用组件(如 MM、FI、SD)
│ └── 包(Package,逻辑分组)
│ └── 仓库对象(程序、表等)
│ ├── 子对象
│ └── 对其他对象的引用
  • 包含 SAP 交付的对象和客户创建的对象
  • 始终跨客户端——可从任何客户端访问
  • 创建对象时必须分配到一个

搜索工具对比

Tool (工具) Use Case (使用场景) Access (访问路径)
仓库信息系统 与应用无关的搜索 Tools → ABAP Workbench → Overview → Information System
应用层次结构 针对特定应用的搜索 Tools → ABAP Workbench → Overview → Application Hierarchy → SAP
💡工作流提示
从应用层次结构:选择子树 → 信息系统按钮 → 自动填充相关包 → 在选定的应用内搜索。

ABAP 工作台工具

Tool (工具) Purpose (用途)
ABAP 编辑器 编辑源代码
ABAP 字典 数据库表/类型定义
屏幕绘制器 屏幕布局(屏幕 + 流逻辑)
菜单绘制器 菜单栏、工具栏、功能键
函数构建器 维护函数模块
类构建器 维护全局类/接口

对象导航器布局

1
2
3
4
5
6
7
8
┌─────────────────────────────────────┐
│ 导航区域 │ 工具区域 │
│ (对象列表) │ (编辑对象) │
│ │ │
│ - 包列表 │ - ABAP 编辑器 │
│ - 类/接口 │ - 屏幕绘制器 │
│ - 程序 │ - 类构建器 │
└─────────────────────────────────────┘
  • 在导航区域双击 → 在相应工具中打开
  • 导航区域和工具区域是独立的(可以同步)
  • 上下文菜单提供特定对象的功能

考试/测试模式

Scenario/Keyword (场景/关键词) Answer (答案)
“搜索某开发者的所有程序” 仓库信息系统
“在特定应用内搜索” 应用层次结构
“中央开发工具是什么?” 对象导航器 (SE80)
“仓库对象是特定客户端的吗?” 否——跨客户端

相关笔记

ABAP 调试器 (★★★)

#abap #abap-tools #abap-syntax

概览表

功能 要点
断点 在某一行停止程序执行
观察点 当变量值发生变化时停止
会话断点 在当前 GUI 会话中有效
外部断点 跨会话有效(用于 HTTP/Web Dynpro)

调试器访问方式

方法 操作方式
设置断点 在编辑器边栏双击,或使用 BREAK-POINT 语句
执行期间 启动前在命令字段中输入 /h
从编辑器 会话断点按钮或直接执行 (F8)

断点类型

类型 作用范围 持久性
会话断点 当前 SAP GUI 会话 注销后丢失
外部断点 跨会话(用户特定) 直到手动删除
静态断点 (BREAK-POINT) 在源代码中 永久(需手动移除)

调试器主要功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌────────────────────────────────────────┐
│ 变量显示 │
│ ├── Variable 1 字段 │
│ ├── Variable 2 字段 │
│ └── 双击 → 展开结构 │
├────────────────────────────────────────┤
│ 导航 │
│ ├── F5 (Step Into / 单步进入) │
│ ├── F6 (Step Over / 单步跳过) │
│ ├── F7 (Step Out / 跳出) │
│ └── F8 (Continue / 继续) │
├────────────────────────────────────────┤
│ 特殊功能 │
│ ├── 表显示(用于内表) │
│ ├── 观察点(变量值变化) │
│ └── 桌面配置 │
└────────────────────────────────────────┘
💡调试内表
在调试器中,在变量字段中输入表名并双击即可查看表显示。也可以使用 Table 标签页查看表内容。

考试/测试模式

场景/关键词 答案
“如何启动调试器?” 在命令字段中输入 /h 或设置断点
“会话断点与外部断点的区别?” 会话断点 = 当前 GUI 会话;外部断点 = 跨会话
“如何监视变量变化?” 在变量上设置观察点

相关笔记

ABAP 语句与控制流 (★★★★)

#abap #abap-syntax

概览表

类别 语句 要点
赋值 MOVE, =, MOVE-CORRESPONDING 值传递
输出 WRITE 列表输出
计算 COMPUTE, +, -, *, / 算术运算
条件 IF/ELSEIF, CASE 分支逻辑
循环 DO, WHILE 迭代
消息 MESSAGE 用户反馈

赋值语句

1
2
3
4
5
6
7
8
9
" 简单赋值
MOVE gv_a TO gv_b.
gv_b = gv_a. " 等效写法

" 结构赋值
MOVE-CORRESPONDING gs_src TO gs_dest. " 复制匹配的字段名

" 清除数据对象
CLEAR gv_var.
📌MOVE-CORRESPONDING 规则
只有在两个结构中名称相同的字段才会被复制。仅存在于一个结构中的字段将被忽略。

计算运算

1
2
3
4
5
6
COMPUTE gv_result = gv_a + gv_b.   " COMPUTE 是可选的
gv_result = gv_a + gv_b. " 与上面等效
gv_result = gv_a * gv_b / gv_c.

" 内置函数
gv_len = STRLEN( gv_text ). " 字符串长度

类型转换规则

在不同类型之间赋值时,ABAP 会执行自动转换:

  • C → N:仅保留数字字符
  • N → I/N:字符串被解释为数字
  • P → I:截断小数位
⚠️类型冲突
类型冲突可能导致运行时错误或意外结果。在不同数据类型之间赋值时,务必确保类型兼容。

控制结构

条件分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
" IF 语句
IF gv_num > 0.
WRITE 'Positive'.
ELSEIF gv_num = 0.
WRITE 'Zero'.
ELSE.
WRITE 'Negative'.
ENDIF.

" CASE 语句
CASE gv_op.
WHEN '+'. gv_result = gv_a + gv_b.
WHEN '-'. gv_result = gv_a - gv_b.
WHEN OTHERS. WRITE 'Invalid'.
ENDCASE.

循环

1
2
3
4
5
6
7
8
9
" DO 循环(固定次数)
DO 5 TIMES.
WRITE: / 'Iteration', sy-index.
ENDDO.

" WHILE 循环(条件控制)
WHILE gv_num < 100.
gv_num = gv_num + 1.
ENDWHILE.
📌循环计数器
DO 和 WHILE 都使用 sy-index 作为循环计数器(不是 sy-tabix)。

系统字段

字段 用途 设置者
sy-subrc 返回代码(0 = 成功) 大多数语句
sy-index 循环计数器 DO, WHILE
sy-tabix 表行索引 LOOP, READ TABLE
sy-dbcnt 处理的数据库行数 SELECT
sy-ucomm 功能代码 屏幕 PAI

消息

1
2
3
4
5
6
7
8
MESSAGE e001(bc400).    " 错误消息 (E)
MESSAGE s001(bc400). " 成功消息 (S)
MESSAGE i001(bc400). " 信息消息 (I)
MESSAGE a001(bc400). " 终止消息 (A)
MESSAGE w001(bc400). " 警告消息 (W)

" 带变量
MESSAGE e001(bc400) WITH gv_val1 gv_val2.

链式语句

1
2
3
WRITE: 'Hello', 'World', gv_name.
" 等效于:
WRITE 'Hello'. WRITE 'World'. WRITE gv_name.

文本元素

类型 用途 维护方式
文本符号 运行时被 text-001 替换 文本元素 → 文本符号
选择文本 PARAMETERS 字段的标签 文本元素 → 选择文本
列表标题 列表标题/列标题 文本元素 → 列表标题

考试/测试模式

场景/关键词 答案
“DO/WHILE 的循环计数器?” sy-index
“MOVE-CORRESPONDING 复制哪些字段?” 两个结构中同名的字段
“链式语句是什么?” 多条语句共享相同开头,用逗号分隔
“如何定义带值的常量?” CONSTANTS gc_name TYPE type VALUE val.

相关笔记

单元 1:系统架构练习(8 道题)

#practice #abap #abap-architecture

相关概念

📌关键模式(点击展开)
Keyword (关键词) Answer (答案)
ABAP 程序在哪里运行? 应用服务器
仓库是特定客户端的吗? 否,跨客户端
三层是什么? 数据库层、应用层、表示层

问题 1 - 三层架构 [recall]

说出 SAP NetWeaver 应用服务器架构的三个层次。

📌显示答案
  1. 数据库层 — RDBMS 存储数据、程序和元数据
  2. 应用服务器层 — ABAP 程序在此执行
  3. 表示服务器层 — SAP GUI 用户界面

问题 2 - 垂直与水平分布 [recall]

解释 SAP 系统层次结构的垂直分布和水平分布之间的区别。

📌显示答案
垂直分布:三个层次全部安装在一台计算机上,或每个层次分别安装在不同的计算机上。水平分布:表示服务器和应用服务器分布在多台计算机上。数据库的水平分布取决于数据库类型。

问题 3 - 仓库访问 [recall]

仓库对象是特定客户端的还是跨客户端的?这意味着什么?

📌显示答案
仓库对象是跨客户端的。这意味着它们可以从任何客户端访问,并且在每个客户端中看起来都一样。只有应用数据和配置数据是特定客户端的。

问题 4 - ABAP 执行位置 [recall]

ABAP 程序在哪个层次执行?

📌显示答案
ABAP 程序在应用服务器层运行。SAP 提供的程序和客户开发的程序都在此执行。

问题 5 - 数据流 [application]

在一个对话程序中,用户输入一个航空公司 ID 并查看详细信息。描述数据流经三层的顺序。

📌显示答案
  1. 用户在表示服务器输入航空公司 ID
  2. 应用服务器上的程序调用复用单元
  3. 复用单元向数据库层发送 SQL 请求
  4. 数据库返回数据记录
  5. 应用服务器将数据放入结构体数据对象
  6. 运行时系统将格式化的列表作为屏幕发送到表示服务器

问题 6 - 可扩展性 [application]

一家公司需要支持 5000 个并发用户。SAP NetWeaver 的哪个架构原则支持这一需求?如何支持?

📌显示答案
应用服务器层的水平分布。可以在多台机器上部署多个应用服务器来处理负载。每个应用服务器上的调度器将请求路由到可用的工作进程。

问题 7 - 架构分析 [analysis]

将 SAP 三层架构与单机部署进行比较。三层方法有哪些优势?

📌显示答案
  • 可扩展性:每层可以独立扩展(添加更多应用服务器)
  • 灵活性:可以从一台机器开始,以后再扩展
  • 可维护性:每层可以单独更新/维护
  • 安全性:数据库与表示层分离,减少攻击面
  • 性能:应用逻辑在靠近数据库的位置运行

问题 8 - 程序数据流 [application]

数据库读取后,返回的数据在 ABAP 程序中放在哪里?

📌显示答案
返回的数据放在一个结构体数据对象中(一个包含所有所需数据库字段组件的变量)。运行时系统确保数据库中的数据映射到相应的数据对象组件。

📌模式总结(点击展开)
Keyword (关键词) Answer (答案)
三层架构 数据库、应用服务器、表示服务器
ABAP 运行在 应用服务器
仓库 跨客户端
数据返回到 结构体数据对象
可扩展性 水平分布
0%