SAP ABAP条件判断:从基础语法到复杂业务逻辑的实战指南
1. 项目概述从“如果”到“逻辑”的ABAP核心思维在SAP ABAP的世界里代码不是冰冷的指令堆砌而是对企业业务流程的精确模拟。而“条件判断”就是赋予这段代码“思考”能力让它能根据不同情况做出不同响应的核心逻辑。你可以把它想象成一位经验丰富的仓库管理员面对一张新来的发货单他需要立刻判断——这个物料有库存吗库存够吗在哪个库位如果不够是触发采购申请还是使用替代物料这一连串的“如果…那么…否则…”就是ABAP条件判断在后台默默完成的工作。无论是简单的单据状态检查还是复杂的定价策略、生产订单释放逻辑都离不开条件判断这根“中枢神经”。对于任何一位ABAP开发者乃至需要阅读代码理解业务逻辑的顾问来说深刻理解并熟练运用各种条件判断语句是写出健壮、高效、易维护代码的基石。这不仅仅是语法问题更是一种逻辑思维和业务理解能力的体现。2. 条件判断的四大核心语法结构解析ABAP提供了多种条件判断工具每种都有其特定的适用场景和细微差别。掌握它们就像木匠熟悉不同的锯子面对不同的木料和切割要求能选出最顺手的那一把。2.1 IF 语句最经典的分支控制器IF语句是条件判断的绝对主力其结构清晰符合人类最自然的逻辑思维。IF condition. “ 条件为真时执行的语句块 ELSEIF condition2. “ 上一个IF为假且此条件为真时执行 ELSE. “ 所有IF和ELSEIF条件均为假时执行 ENDIF.核心要点与实战经验条件表达式condition可以是任何结果为布尔值ABAP中用ABAP_TRUE/ABAP_FALSE或字符‘X‘/‘ ‘表示的逻辑表达式。例如lv_amount 1000lv_status EQ ‘C‘已完工或者更复杂的lv_amount 1000 AND lv_type EQ ‘Z001‘。ELSEIF的陷阱ELSEIF可以无限叠加但执行是自上而下、短路评估的。这意味着一旦某个IF或ELSEIF的条件满足其后的所有ELSEIF和ELSE都将被跳过。因此必须将最严格、最可能先满足的条件放在前面。例如检查一个订单是否“已删除”最严格状态应放在“已批准”、“已创建”等状态之前。嵌套的优雅与深渊IF语句可以多层嵌套但深度超过3层就会严重影响可读性。此时应考虑是否可以将内部逻辑抽取成一个独立的方法FORM或METHOD或者使用CASE语句重构。注意在判断字符变量是否为初始值时不要用IF lv_string EQ ‘ ‘.而应使用IF lv_string IS INITIAL.后者更标准且能同时处理多种数据类型的初始状态。2.2 CASE 语句基于单一变量的多路选择器当你的分支逻辑是基于同一个变量的不同取值时CASE语句比一连串的IF...ELSEIF更清晰、更高效。CASE variable. WHEN value1 OR value2. “ 匹配值1或值2 “ 执行语句块1 WHEN value3. “ 执行语句块2 WHEN OTHERS. “ 当所有WHEN都不匹配时执行 ENDCASE.核心要点与实战经验与IF的区别CASE是“等值匹配”而IF可以处理更复杂的范围判断如,,BETWEEN。CASE的WHEN后面只能是常量或常量列表不能是表达式。WHEN OTHERS的必备性务必总是包含WHEN OTHERS分支。即使你确信变量只会取已知的几个值但数据可能因配置错误、接口传输问题而产生意外值。没有OTHERS分支程序会直接抛出无法处理的异常CX_SY_CASE_NOT_FOUND导致程序转储。在OTHERS分支中至少应该记录错误日志或给出明确的错误消息。类型匹配variable和value的数据类型必须兼容。比较常见的问题是字符型与字符串型CvsSTRING的匹配虽然ABAP有时会做隐式转换但为了代码严谨建议保持类型一致。2.3 CHECK 语句简洁的关卡守卫CHECK语句用于在程序流程中设置一个“检查点”。如果条件不满足则立即退出当前处理块如循环、子程序、模块。LOOP AT lt_data INTO ls_data. CHECK ls_data-active EQ ‘X‘. “ 如果active不是‘X‘则跳过本次循环剩余代码直接进入下一次LOOP “ 只有active ‘X‘ 的记录才会执行到这里 WRITE: / ls_data-id. ENDLOOP.核心要点与实战经验作用域CHECK的作用范围是其所在的最内层处理块。在循环中它跳过单次迭代在子程序或模块中它直接退出该子程序或模块。与IF的对比CHECK可以简化代码。上述例子用IF写需要多一层缩进IF ls_data-active EQ ‘X‘. ... ENDIF.。CHECK让逻辑更扁平。但滥用CHECK会隐藏退出点降低代码可读性。建议仅在逻辑非常简单、意图是“过滤”的情况下使用。返回值在函数模块或类方法中如果需要条件性地设置返回参数或抛出异常使用IF...RETURN或RAISE EXCEPTION通常比CHECK更明确。2.4 条件表达式一行完成的优雅赋值从ABAP 7.4版本开始引入了强大的内联条件表达式它允许你将一个IF...ELSE的逻辑压缩到一行主要用于赋值。“ 传统方式 IF lv_amount 100. lv_discount ‘HIGH‘. ELSE. lv_discount ‘LOW‘. ENDIF. “ 使用条件表达式7.4 lv_discount COND #( WHEN lv_amount 100 THEN ‘HIGH‘ ELSE ‘LOW‘ ).核心要点与实战经验语法糖与性能条件表达式不仅是语法糖在某些情况下编译器能对其进行更好的优化。它让代码更紧凑特别适合在VALUE构造器或方法调用内部使用。可读性权衡虽然简洁但复杂的多层嵌套条件表达式会变得难以阅读。建议只用于简单的二选一或三选一场景。对于更复杂的逻辑传统的IF语句仍然是首选。与SWITCH搭配COND用于条件判断而SWITCH类似于CASE的表达式版本用于基于变量值的赋值两者结合可以写出非常函数式的ABAP代码。3. 复杂业务逻辑中的条件判断实战策略在实际的SAP开发中条件判断很少是孤立的。它们往往嵌套在循环、数据库读取、方法调用中构成复杂的业务规则引擎。3.1 多层条件与逻辑运算符的优先级处理复杂的业务规则时常常需要组合多个条件。IF ( ls_order-type EQ ‘ZOR‘ OR ls_order-type EQ ‘ZSO‘ ) AND ls_order-amount GT 10000 AND ( ls_order-currency EQ ‘USD‘ OR ls_order-currency EQ ‘EUR‘ ) AND ls_order-status NE ‘DELETED‘. “ 处理高价值、特定类型的未删除欧美货币订单 ENDIF.实战经验括号是朋友即使你知道AND的优先级高于OR也强烈建议使用括号来明确表达你的逻辑意图。这能避免因记忆模糊导致的逻辑错误并极大提高代码的可读性。分解复杂条件如果一个IF条件行过长比如超过120字符应考虑将其分解。可以将部分条件计算提前赋值给中间变量或者将整个判断逻辑抽取成一个返回布尔值的方法方法名就是业务规则的描述如is_high_value_order_for_approval。德摩根定律应用有时判断“什么情况下不做某事”比判断“做什么”更简单。例如IF NOT ( A AND B )等价于IF ( NOT A ) OR ( NOT B )。选择更清晰、更易理解的形式。3.2 在循环与数据库操作中的高效判断在LOOP或SELECT循环中进行条件判断性能影响会被放大。“ 低效做法在循环内进行重复且低效的判断 LOOP AT lt_orders INTO ls_order WHERE amount 0. “ 先做一次初步筛选 IF is_order_relevant( ls_order ) abap_true. “ 假设这是一个很耗时的函数 “ 处理订单 ENDIF. ENDLOOP. “ 高效做法尽可能在数据源处过滤 DATA: lt_relevant_orders TYPE TABLE OF ty_order. “ 方案1在数据库层过滤最优 SELECT * FROM vbak INTO TABLE lt_relevant_orders WHERE netwr 10000 AND vbtyp IN (‘ZOR‘, ‘ZSO‘). “ 利用SAP HANA等数据库的计算能力 “ 方案2在内存中循环前过滤次优 lt_relevant_orders FILTER #( lt_all_orders USING KEY primary_key WHERE type IN (‘ZOR‘, ‘ZSO‘) AND amount 10000 ). LOOP AT lt_relevant_orders INTO ls_order. “ 直接处理无需复杂判断 ENDLOOP.实战经验数据库优先凡是能在WHERE条件中指定的筛选条件都应尽量放在数据库查询语句中。这能减少网络传输的数据量利用数据库索引是提升性能最有效的手段。善用FILTER对于已经在内存中的内表使用FILTER运算符ABAP 7.4可以高效地创建筛选后的新内表其性能通常优于在LOOP中加CHECK或IF。避免在循环内调用昂贵方法如例子中的is_order_relevant如果它内部又执行了查询或复杂计算在循环中调用将是灾难。应尝试将它的逻辑反向推导转化为对源数据lt_all_orders的过滤条件。3.3 基于自定义表或配置的条件判断在SAP中许多业务规则如定价条件、审批路径是配置在自定义表里的而非硬编码在程序中。“ 1. 从配置表读取规则 SELECT condition_field, operator, value_low, value_high FROM zcond_config INTO TABLE lt_config WHERE application lv_app. “ 2. 动态构建并应用判断 LOOP AT lt_data INTO ls_data. LOOP AT lt_config INTO ls_config. ASSIGN COMPONENT ls_config-condition_field OF STRUCTURE ls_data TO FIELD-SYMBOL(fs_field). IF sy-subrc 0. “ 根据ls_config-operator (‘EQ‘, ‘GT‘, ‘BT‘等) 动态判断 CASE ls_config-operator. WHEN ‘EQ‘. IF fs_field ls_config-value_low. lv_condition_met abap_true. ENDIF. WHEN ‘BT‘. IF fs_field BETWEEN ls_config-value_low AND ls_config-value_high. lv_condition_met abap_true. ENDIF. “ ... 其他操作符 ENDCASE. ENDIF. ENDLOOP. “ 根据lv_condition_met决定后续流程 ENDLOOP.实战经验可配置性的代价这种设计极大提高了系统的灵活性但增加了代码的复杂性动态编程和运行时开销。需要权衡。性能缓存配置表通常数据量不大但访问频繁。应在程序启动时将其读入一个全局或共享的内存中避免每次判断都访问数据库。错误处理动态ASSIGN可能失败字段不存在动态操作符也可能不支持。必须用sy-subrc进行健壮的检查并提供清晰的错误日志。4. 调试与优化让条件判断清晰且高效写出正确的条件判断只是第一步写出清晰、高效、易维护的判断逻辑才是高手与普通开发者的分水岭。4.1 常见逻辑错误与调试技巧即使经验丰富的开发者也难免在复杂条件中犯错。错误案例1误用赋值运算符“ 错误这是一个赋值永远为真因为lv_flag会被赋值为‘X‘且赋值操作本身成功 IF lv_flag ‘X‘. “ 正确应为 IF lv_flag EQ ‘X‘.排查使用ABAP调试器观察IF语句执行后变量的值。对于可疑的IF可以在前面设置断点单步执行查看其分支走向。错误案例2忽略字符尾部空格DATA: lv_code TYPE c LENGTH 5 VALUE ‘A123 ‘. IF lv_code EQ ‘A123‘. “ 结果为假因为lv_code包含尾部空格排查使用CL_ABAP_CHAR_UTILITIESHORIZONTAL_TAB或调试器查看字符变量的十六进制值。比较时使用CONDENSE去除空格或直接使用lv_code CP ‘A123*‘模式匹配。错误案例3NULL值处理DATA: lv_amount TYPE p DECIMALS 2. “ lv_amount初始值为0 IF lv_amount NE 0. “ 如果lv_amount来自一个可能为NULL的数据库字段此判断可能不符合预期排查对于可能来自数据库的字段首先判断其是否为初始值IS INITIAL或使用IS NOT NULL如果数据库字段允许NULL。4.2 代码可读性优化实践可读性就是可维护性。提取魔法数字和字符串将条件中的硬编码值如‘X‘,‘1000‘,‘ZSTATUS‘定义为常量CONSTANTS或自定义数据元素的域固定值。这样当业务含义变化时只需修改一个地方。CONSTANTS: gc_status_completed TYPE char1 VALUE ‘C‘. IF ls_order-status gc_status_completed.使用描述性的中间变量将复杂的布尔表达式结果赋给一个意义明确的变量。DATA(lv_is_high_priority) boolc( ls_order-amount gc_critical_amount AND ls_order-customer_type gc_vip_type ). IF lv_is_high_priority. “ 处理高优先级订单 ENDIF.保持条件正向表述尽量使用IF condition_is_met而不是IF NOT condition_is_not_met。人类大脑理解正向逻辑更轻松。4.3 性能考量要点短路评估ABAP的逻辑运算符AND和OR是短路评估的。对于IF A AND B如果A为假B根本不会被执行。因此应将最可能为假、或计算成本最低的条件放在前面。对于IF A OR B则将最可能为真的条件放前面。避免不必要的类型转换在条件比较中确保比较双方的数据类型一致避免隐式类型转换带来的额外开销。例如将数字与字符串比较IF char_field 123会触发转换。内表查找 vs 线性循环在循环内需要根据某个键值查找另一张内表的配置时使用READ TABLE ... WITH KEY ... BINARY SEARCH或使用哈希表HASHED TABLE的READ TABLE其性能O(log n) 或 O(1)远优于在嵌套循环中线性查找O(n²)。5. 从条件判断到业务规则引擎的思考当简单的IF、CASE无法清晰表达日益复杂的业务规则时就该考虑架构上的演进。5.1 识别代码中的“坏味道”发散式变化每当业务规则调整你都需要在多个不同的程序、函数中修改相似的IF条件。霰弹式修改一个业务规则的实现逻辑分散在同一个方法的多个深层次嵌套的IF块中。重复代码相同的条件判断逻辑在系统内多处出现。这些都是引入更高级规则管理方式的信号。5.2 策略模式与工厂模式的应用对于复杂的、可变的业务规则可以将其封装成独立的策略类。“ 1. 定义策略接口 INTERFACE zif_discount_strategy. METHODS calculate_discount IMPORTING iv_amount TYPE netwr RETURNING VALUE(rv_discount) TYPE kwert. ENDINTERFACE. “ 2. 实现具体策略类例如普通客户策略 CLASS zcl_discount_normal DEFINITION. PUBLIC SECTION. INTERFACES zif_discount_strategy. ENDCLASS. CLASS zcl_discount_normal IMPLEMENTATION. METHOD zif_discount_strategy~calculate_discount. rv_discount COND #( WHEN iv_amount 1000 THEN iv_amount * ‘0.05‘ WHEN iv_amount 500 THEN iv_amount * ‘0.03‘ ELSE 0 ). ENDMETHOD. ENDCLASS. “ 3. 在客户端代码中根据条件选择策略 DATA: lo_strategy TYPE REF TO zif_discount_strategy. CASE ls_order-customer_type. WHEN ‘NORMAL‘. lo_strategy NEW zcl_discount_normal( ). WHEN ‘VIP‘. lo_strategy NEW zcl_discount_vip( ). WHEN OTHERS. lo_strategy NEW zcl_discount_default( ). ENDCASE. lv_final_discount lo_strategy-calculate_discount( ls_order-amount ).通过这种方式条件判断CASE仅用于选择策略而具体的计算规则则封装在各个策略类中。当需要新增一种折扣类型时只需新增一个策略类并修改工厂选择逻辑无需触动核心计算流程。5.3 规则引擎的轻量级实现对于极其复杂、动态、由业务人员维护的规则可以考虑引入规则引擎。在ABAP中可以利用BRFSAP自带的业务规则框架允许业务顾问在图形化界面中配置规则ABAP代码只需调用规则执行接口。这彻底将规则逻辑从代码中剥离。自定义规则表与解释器如3.3节所述设计规则配置表并编写一个轻量级的规则解释器。这比硬编码灵活但需要自行设计规则语法和引擎。外部规则引擎集成对于超大型、跨系统的规则可以考虑使用像Drools这样的专业规则引擎通过RFC或Web服务与ABAP系统集成。选择哪种方式取决于规则的复杂度、变更频率、维护人员开发还是业务以及性能要求。对于大多数场景良好的代码结构策略模式加上清晰的配置表已经能解决80%的问题。

相关新闻

出差归来攒了多份未整理会议记录:2026年如何写会议纪要推荐

出差归来攒了多份未整理会议记录:2026年如何写会议纪要推荐

先说明白核心判断 2026年写会议纪要已经不需要人工逐句转写整理,核心是选匹配自身使用场景的AI工具,不存在适配所有需求的万能选项:高频办公要选总结和待办提取准确的,个人轻度用户优先选门槛低成本低的,团队协作选和…

2026/8/6 16:13:48 阅读更多 →
UE5本地大模型集成实战:Llama-Unreal插件部署与性能优化指南

UE5本地大模型集成实战:Llama-Unreal插件部署与性能优化指南

1. 项目概述:为什么要在UE5里跑本地大模型? 如果你是一个UE5开发者,最近肯定被各种AI Agent、智能NPC、动态对话系统刷屏了。但当你兴致勃勃地想给自己的游戏或应用加上一个“会思考的大脑”时,往往会发现一个尴尬的现实&#xff…

2026/8/6 16:12:48 阅读更多 →
从Linux权限提升到容器逃逸:BeRoot工具实战与安全攻防解析

从Linux权限提升到容器逃逸:BeRoot工具实战与安全攻防解析

1. 项目概述:从权限提升到容器逃逸的完整路径在Linux安全评估和渗透测试领域,权限提升(Privilege Escalation)是核心目标之一。我们经常遇到一个场景:通过某种方式(比如一个Web漏洞)获取了一个低…

2026/8/6 16:12:48 阅读更多 →

最新新闻

AI-Shoujo HF Patch终极指南:5步快速解锁完整游戏体验

AI-Shoujo HF Patch终极指南:5步快速解锁完整游戏体验

AI-Shoujo HF Patch终极指南:5步快速解锁完整游戏体验 【免费下载链接】AI-HF_Patch Automatically translate, uncensor and update AI-Shoujo! 项目地址: https://gitcode.com/gh_mirrors/ai/AI-HF_Patch AI-Shoujo HF Patch是一款专为AI-Shoujo游戏设计的…

2026/8/6 17:05:14 阅读更多 →
软件测试用例设计实战:从等价类划分到场景法的核心方法解析

软件测试用例设计实战:从等价类划分到场景法的核心方法解析

1. 项目概述:从“点灯”到“筑城”的软件质量基石 干了十多年软件开发和测试,我越来越觉得,软件测试这活儿,跟家里装修时检查水电线路一个道理。你光把电线埋进墙里、水管接上龙头,这不算完。你得逐个开关试一遍灯亮不…

2026/8/6 17:05:14 阅读更多 →
WorkBuddy-使用GEO专家诊断个人IP+简单优化

WorkBuddy-使用GEO专家诊断个人IP+简单优化

参考 https://workbuddy.homes/bluebook/ https://blog.csdn.net/wwlsm_zql/article/details/151868780 背景知识 GEO 是 Generative Engine Optimization,即 生成式引擎优化。SEO关注的是,当用户在搜索引擎里搜某个关键词,官网、文章、媒体报…

2026/8/6 17:05:14 阅读更多 →
商超专柜精细化管控|PLC智能照明节能控制系统方案

商超专柜精细化管控|PLC智能照明节能控制系统方案

一.系统概述生鲜超市、社区商超、连锁便利店的品类专柜,是门店引流经营的核心区域,果蔬、鲜肉、水产、熟食、烘焙等专柜对照明的色温、亮度、开启时段有着严格的专属要求,灯光效果直接影响商品卖相和门店营收。传统商超专柜照明采用统一线路、…

2026/8/6 17:05:14 阅读更多 →
数组动态变化与位运算的高效处理技巧

数组动态变化与位运算的高效处理技巧

1. 项目概述:变化的数组与位运算应用"HJ113 变化的数组"这个题目名称看似简单,却蕴含了计算机科学中数组操作与位运算的经典结合。作为一名长期从事算法竞赛辅导的工程师,我见过太多选手在面对这类问题时陷入困境。实际上&#xff…

2026/8/6 17:05:14 阅读更多 →
2026最新ComfyUI-v9.5保姆级教程|模型+插件+提示词,8G显存直接开跑

2026最新ComfyUI-v9.5保姆级教程|模型+插件+提示词,8G显存直接开跑

说实话,Stable Diffusion ComfyUI 我装了三次,卸载了三次。 第一次打开软件直接被密密麻麻的节点连线搞懵,分不清 MODEL、CLIP、VAE 三类端口怎么对接;第二次手动装插件遭遇版本冲突,控制台疯狂抛红报错,CU…

2026/8/6 17:04:14 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →