SAP ABAP MD14计划订单转采购申请:从标准事务到批量自动化开发
1. 项目概述从计划订单到采购申请的自动化桥梁在SAP MM物料管理模块的日常运维中计划订单转采购申请是一个高频且关键的业务操作。事务代码MD14对于很多ABAP开发者和关键用户来说既熟悉又陌生。熟悉是因为它经常出现在物料需求计划MRP运行后的后续处理清单里陌生则在于当我们需要批量处理、集成到自定义流程或进行深度增强时仅仅在GUI里点几下是远远不够的。这个标题“SAP ABAP 计划订单转采购申请 MD14”精准地指向了企业供应链数字化的一个核心痛点如何将MRP系统产生的计划建议高效、准确、可控地转换为实际的采购行动。简单来说计划订单是MRP运行后系统给出的“建议采购计划”它包含了物料、数量、需求日期等关键信息。而采购申请则是正式向采购部门发出的“采购需求单”是后续创建采购订单的法定依据。MD14这个标准事务码就是手动或半自动执行这一转换的官方工具。然而在实际业务场景中直接使用MD14往往面临诸多限制无法满足大批量自动处理的需求缺乏对转换逻辑的定制化控制例如特定物料需要分割申请、需要自动添加审批策略或特定文本难以与外围系统如SRM、供应商门户或内部工作流无缝集成。这时就需要我们ABAP开发者深入后台理解其标准逻辑并构建更灵活、更强大的自动化方案。本文将从一个资深ABAP顾问的视角彻底拆解MD14背后的核心函数、数据结构和处理逻辑。我不会只停留在“如何调用BAPI”的层面而是会深入分享如何模拟MD14的完整转换过程包括异常处理、数据增强以及性能优化等实战经验。无论你是需要开发一个定制的批量转换程序还是要在转换过程中嵌入复杂的业务规则亦或是单纯想理解SAP标准逻辑以便更好地运维这篇文章都将提供从原理到实操的完整路径。我们将一起探索如何让系统自动化的触角延伸到供应链执行的最前沿。2. 核心逻辑与标准事务MD14深度解析2.1 计划订单与采购申请的主数据关联要理解转换首先必须厘清源头和目标对象的核心数据模型。计划订单Planned Order主要存储在表格PLAF中而采购申请Purchase Requisition则主要存储在EBAN和EBKN等表中。它们之间的转换本质上是将PLAF中的特定字段按照业务规则映射并生成EBAN等表的记录。PLAF表中的几个关键字段决定了转换的基调PLNUM计划订单号唯一标识。MATNR物料编号。WERKS工厂。LGORT库存地点可能为空由MRP决定。BEDAE需求类型这是一个至关重要的字段。它决定了该计划订单的需求来源如独立需求、相关需求以及是否允许和如何转换为采购申请。例如需求类型LFF通常代表外购件的相关需求是转换的主要对象。SOBES特殊采购标识例如“外包”、“跨工厂调拨”等它会直接影响转换后采购申请的项目类别PSTYP和采购类型BSART。DISPOMRP控制者通常会自动带到采购申请的采购组EKGRP字段。采购申请EBAN表的核心字段则包括BANFN采购申请号。BNFPO项目号。BADAT申请日期。BSART采购申请类型如NB-标准采购这通常由物料主数据或后台配置决定但可能受PLAF-SOBES影响。EKGRP采购组通常来自PLAF-DISPO。MATNRWERKSLGORT直接从计划订单继承。MENGE数量来自计划订单的BDMNG基本数量或GMNGA提货数量。BEDNR计划订单号PLNUM用于建立反向追溯关系。理解这两个对象的数据结构是进行任何定制开发的基础。转换过程不是简单的字段拷贝而是夹杂着大量通过配置表如T160FT163T163Y进行的派生和确定Determination逻辑。2.2 事务代码MD14的标准处理流程剖析在SAP GUI中执行MD14系统内部并非一个简单的操作它触发了一系列标准程序RM06INP0。我们可以通过ST05 SQL跟踪或SE37函数浏览器来反推其核心步骤。其标准流程可以概括为以下几个阶段数据准备与校验系统根据输入的计划订单号读取PLAF及相关表MASTMARCT163Y等的数据进行一系列前置校验。例如检查计划订单是否已被锁定、是否已转换、物料是否具备采购视图、工厂采购数据是否维护完整等。任何校验失败都会导致转换中止并给出明确的消息。转换类型确定这是核心决策点。系统根据PLAF中的BEDAE需求类型和SOBES特殊采购标识结合后台配置事务代码OPJJ或OPJK确定一个“转换标识符”。这个标识符决定了后续的转换规则例如是转为标准采购申请还是转为分包采购申请亦或是触发生产订单。采购申请数据创建根据确定的转换类型系统调用核心的函数模块来生成采购申请草案。其中最关键的可能是ME_REQUISITION_CREATE或BAPI_REQUISITION_CREATE。但在MD14的上下文中更底层的是ME_REQ_ITEM_UPDATE或直接写数据库的逻辑。系统会在此步骤中自动派生采购申请类型、项目类别、账户分配类别如果涉及等。计划订单状态更新与关联采购申请成功创建后系统会更新原计划订单的状态通常在PLAF-KZEAR固定标识或相关状态字段打上标记防止重复转换。同时在采购申请项目EBAN的BEDNR字段写入原计划订单号建立可追溯的链接。输出与日志最后系统显示成功创建的采购申请号并记录处理日志。如果存在错误如物料主数据缺失采购信息记录、源清单错误等则会抛出相应的错误消息如消息号ME_062。注意MD14标准事务在处理每个订单时是同步且交互式的这意味着任何错误都会立即中断当前处理并显示在GUI中。这对于批量自动化处理来说是一个挑战因为我们需要一个能够收集所有错误、允许部分成功并生成汇总报告的机制。3. 自定义批量转换程序的设计与实现鉴于标准MD14的局限性开发一个自定义的批量转换程序通常是一个可后台作业执行的报表是常见的需求。其设计核心在于模拟标准逻辑但增加批量处理、增强校验、自定义字段填充和健壮的错误处理能力。3.1 程序架构与核心函数选择一个健壮的自定义程序通常包含以下模块数据选择屏幕允许用户按工厂、物料类型、MRP控制者、计划订单号范围等条件筛选需要转换的计划订单。关键点必须包含一个“测试运行”选项这在处理大批量数据前用于预览转换结果和潜在错误至关重要。数据读取与预处理根据选择条件从PLAF中读取数据并关联获取必要的主数据物料、工厂、采购等。性能技巧使用FOR ALL ENTRIES IN语句时务必先对内表去重避免性能陷阱。对于大批量考虑分片处理。核心转换循环对每一条计划订单执行模拟MD14的转换逻辑。这里有两种主要技术路径路径A调用封装函数。SAP提供了相对上层的函数模块BAPI_REQUISITION_CREATE。它的优点是接口清晰自带一些校验和提交逻辑。但缺点是对MD14中某些特定的派生逻辑支持可能不够直接且错误处理需要解析返回的BAPIRET2内表。路径B模拟底层逻辑。更彻底的方式是深入研究RM06INP0及其调用的子函数如ME_REQ_ITEM_UPDATE直接使用这些更底层的模块。这种方式控制力最强能更精确地模拟标准行为但复杂度也更高需要对标准代码有较深理解。错误处理与日志记录这是区分普通程序和工业级程序的关键。必须为每个计划订单的转换结果成功、警告、错误进行记录。错误信息需要清晰可读并关联到具体的订单和物料。最终应生成一个ALV报表清晰列出所有处理过的条目及其状态、生成的采购申请号和错误消息。提交与更新在非测试模式下对于成功的转换需要显式调用BAPI_TRANSACTION_COMMIT或COMMIT WORK来保存数据。务必在提交前确保所有数据库更新逻辑已完成。3.2 关键代码段与参数映射示例假设我们选择相对稳妥的BAPI_REQUISITION_CREATE路径以下是一个核心转换循环的伪代码框架和关键点DATA: lt_requisition_items TYPE TABLE OF bapieban, ls_requisition_item TYPE bapieban, lt_return TYPE TABLE OF bapiret2, ls_plaf TYPE plaf. LOOP AT lt_selected_plaf INTO ls_plaf. CLEAR: ls_requisition_item, lt_requisition_items, lt_return. 1. 基础数据映射 ls_requisition_item-preq_item sy-tabix. 临时项目号 ls_requisition_item-material ls_plaf-matnr. ls_requisition_item-plant ls_plaf-werks. ls_requisition_item-store_loc ls_plaf-lgort. ls_requisition_item-quantity ls_plaf-bdmng. 使用基本需求数量 ls_requisition_item-unit ls_plaf-meins. ls_requisition_item-deliv_date ls_plaf-eindt. 需求日期 ls_requisition_item-pur_group ls_plaf-dispo. MRP控制者作为采购组 采购申请类型(bsart)通常由物料主数据或配置决定BAPI会自动派生。 如果需要强制指定可以赋值给 ls_requisition_item-preq_type。 2. 关键字段必须指明这是由计划订单转换而来 ls_requisition_item-item_cat 0. 项目类别0通常代表库存物料 ls_requisition_item-acctasscat U. 账户分配类别U代表未知/未分配对于纯库存物料常用 关联原计划订单号到采购申请的‘跟踪号’字段 ls_requisition_item-trackno ls_plaf-plnum. APPEND ls_requisition_item TO lt_requisition_items. 3. 调用BAPI CALL FUNCTION BAPI_REQUISITION_CREATE EXPORTING requisition_date sy-datum TABLES requisition_items lt_requisition_items requisition_account_assignment lt_account_assignment 如果需要账户分配 return lt_return. 4. 错误处理 READ TABLE lt_return WITH KEY type E TRANSPORTING NO FIELDS. IF sy-subrc 0. 转换失败记录错误信息到日志内表 PERFORM log_error USING ls_plaf lt_return. ELSE. 转换成功记录生成的采购申请号 READ TABLE lt_return WITH KEY type S number 06 消息号06通常包含创建的申请号 field BANFN. IF sy-subrc 0. lv_banfn lt_return-message_v1. PERFORM log_success USING ls_plaf lv_banfn. 在测试运行模式下此处不应执行COMMIT IF p_test abap_false. CALL FUNCTION BAPI_TRANSACTION_COMMIT EXPORTING wait abap_true. ENDIF. ENDIF. ENDIF. ENDLOOP.实操心得BAPI_REQUISITION_CREATE的requisition_account_assignment参数经常是坑点。对于成本中心采购或项目采购必须正确填充此内表。对于纯粹的库存补充采购账户分配类别ACCTASSCAT填‘U’且可以不传递账户分配明细表但需要确认后台配置是否允许。最稳妥的方式是参考标准MD14创建的成功案例用SE11和SE16N分析其EBAN和EBKN表的数据然后模仿填充BAPI结构。4. 高级增强与异常处理场景在实际项目中仅仅完成基本转换往往不够我们常需要嵌入复杂的业务规则并处理各种边界情况。4.1 利用BADI和User Exit进行业务增强SAP为采购申请创建提供了标准的增强点允许我们在不修改标准代码的情况下注入自定义逻辑。BADI ME_PROCESS_REQ_CUST这是一个功能强大的BADI其方法CHECK和CLOSE可以在采购申请保存前和保存后被调用。我们可以在CHECK方法中根据计划订单的特定信息如物料组、工厂自动为采购申请添加特定的审批策略Release Strategy、修改项目文本、或根据自定义规则设置采购组。METHOD if_ex_me_process_req_cust~check. DATA: ls_eban TYPE eban. im_header 和 im_item 包含了正在创建的采购申请数据 我们可以通过 im_item-bednr 获取原计划订单号 IF im_item-bednr IS NOT INITIAL. SELECT SINGLE plaf~matnr, plaf~werks, mara~matkl INTO (DATA(lv_matnr), DATA(lv_werks), DATA(lv_matkl)) FROM plaf INNER JOIN mara ON mara~matnr plaf~matnr WHERE plnum im_item-bednr. IF sy-subrc 0 AND lv_matkl Z001. 假设物料组Z001需要特殊处理 自动分配一个特定的审批策略 cs_requisition_item-release_ind 09. 例如策略代码09 在项目文本中添加备注 cs_requisition_item-short_text |{ cs_requisition_item-short_text } [来自计划订单{ im_item-bednr }]|. ENDIF. ENDIF. ENDMETHOD.User Exit MM06E001这是一个更传统的用户出口。通过事务码CMOD创建项目分配增强MM06E001可以在函数组MM06E中找到EXIT_SAPMM06E_001。这里可以访问到采购申请的所有内部表进行更底层的字段修改。注意事项使用User Exit需要更谨慎因为它直接操作标准程序的内部工作区错误的修改可能导致程序转储。4.2 典型异常场景与排查清单在开发和运维过程中以下异常场景屡见不鲜异常现象可能原因排查思路与解决方案调用BAPI成功但采购申请未保存1. 遗漏了BAPI_TRANSACTION_COMMIT。2. BAPI内部逻辑错误但未返回E类消息。3. 存在隐式的授权检查失败。1. 检查代码确保在非测试运行后调用了Commit。2. 检查BAPIRET2内表中所有消息特别是W警告和I信息类型有时关键错误藏在这里。3. 用SU53检查运行作业的用户是否有创建采购申请的权限。错误消息“物料 XXX 在工厂 YYY 中未维护采购”物料主数据MARC视图的BESKZ采购类型未设置为“F”外部采购或者MMSTA物料冻结字段有冻结标识。1. 使用MM03检查物料在对应工厂的采购视图。2. 确保BESKZ ‘F’外购。3. 检查MMSTA字段是否为空。转换后采购申请类型不符合预期1. 后台配置的采购申请类型确定规则如根据物料类型、工厂与预期不符。2. BAPI调用时显式指定了PREQ_TYPE覆盖了派生逻辑。1. 通过事务码OMET检查采购申请类型的确定配置。2. 检查代码中是否对ls_requisition_item-preq_type进行了赋值注释掉让其自动派生。大批量处理时性能极差1. 在循环内进行了低效的单条查询如SELECT SINGLE。2. 没有使用FOR ALL ENTRIES进行批量数据预读。3. 每次循环都调用COMMIT。1. 将所有需要的主数据物料、工厂、采购等通过FOR ALL ENTRIES一次性读入内表在循环中读取内表。2. 采用分批次提交的策略例如每成功处理100条执行一次COMMIT而不是每条都提交。计划订单已转换但状态未更新导致重复转换自定义程序只创建了采购申请没有更新计划订单的固定标识如PLAF-KZEAR。在成功创建采购申请后需要执行UPDATE PLAF SET KZEAR X WHERE PLNUM ls_plaf-plnum.以标记已处理。重要此操作需谨慎确保与业务部门确认状态更新逻辑避免影响其他业务流程。排查技巧当遇到难以理解的标准错误消息时一个非常有效的方法是在GUI中手动用MD14转换一个有问题的计划订单然后用系统调试/H进入事务一步步跟踪标准程序RM06INP0的执行路径、变量值和表访问这能最直观地揭示问题根源。此外使用ST05SQL跟踪可以清晰看到程序运行时执行了哪些数据库操作对于性能调优和逻辑理解帮助巨大。5. 集成与扩展从后台作业到智能流程基础的批量转换程序解决的是“有无”问题而一个成熟的解决方案需要考虑如何将其融入企业更大的数字化生态。5.1 与工作流和审批集成创建的采购申请通常需要进入审批流程。我们可以通过增强在创建采购申请后自动触发SAP标准的工作流WS02000010采购申请发布。这可以通过在提交后调用函数SWW_WI_CREATE_FROM_OBJECT来实现将采购申请对象BUS2105作为触发事件。更现代的做法是将创建的采购申请数据通过IDoc或OData服务推送到SAP S/4HANA Cloud或第三方采购协同平台在那里完成更复杂的审批和供应商交互。5.2 利用Fiori App或Web服务提供用户界面对于需要用户干预的场景如批量选择后人工确认部分条目可以开发一个简单的Fiori Elements应用或使用Web Dynpro ABAP。前端界面提供更友好的筛选和展示用户勾选后点击“转换”按钮触发后端一个实现了上述逻辑的OData服务或RFC函数模块。这种方式将强大的ABAP后端处理能力与现代化的用户界面结合用户体验远胜于传统的SE38报表。5.3 监控与持续优化对于投入生产使用的批量作业必须建立监控机制。可以通过作业日志、应用程序日志SLG1或发送汇总邮件的方式让运维人员能及时了解每次运行的处理结果成功、失败数量及具体错误。定期分析失败原因可能是主数据问题、配置变更或业务规则调整据此优化程序逻辑或推动业务部门规范数据。我个人在实际操作中的体会是MD14的自动化远不止是技术实现更是对MRP到采购端到端流程的理解。最大的挑战往往不是ABAP代码本身而是厘清繁杂的后台配置需求类型、项目类别、采购类型、审批策略的确定链以及处理千奇百怪的主数据异常。因此在开发前务必与业务顾问、关键用户充分沟通明确所有业务规则和例外情况并用测试数据覆盖尽可能多的场景。一个稳定的转换程序会成为连接计划与执行、提升供应链响应速度的可靠基石。

相关新闻

告别重复操作:阴阳师自动化脚本如何让你每天节省3小时游戏时间

告别重复操作:阴阳师自动化脚本如何让你每天节省3小时游戏时间

告别重复操作:阴阳师自动化脚本如何让你每天节省3小时游戏时间 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 你是否还在为阴阳师中繁琐的日常任务而疲惫不堪&#…

2026/10/13 11:42:09 阅读更多 →
DataWorks Data Agent 实战课堂(三):对话式完成数据同步与智能诊断

DataWorks Data Agent 实战课堂(三):对话式完成数据同步与智能诊断

引言 作为数据工程师或运维同学,你是否也常被以下场景折磨: 建任务像“填表考试”:创建数据同步解决方案步骤繁多,对照文档逐项配置参数,动辄耗时半小时以上。 半夜告警排查链路长:同步任务一旦异常&…

2026/10/9 2:27:10 阅读更多 →
STM8开发环境搭建全攻略:从IAR安装到程序烧录

STM8开发环境搭建全攻略:从IAR安装到程序烧录

1. 项目概述:从零开始搭建STM8开发环境 最近在整理一些老项目的资料,翻出来不少基于STM8S103F3P6的小板子。这块芯片虽然现在看来性能平平,但在很多成本敏感、功能简单的场合,比如小家电控制、传感器节点、简单的逻辑控制器里&…

2026/10/12 3:13:07 阅读更多 →

最新新闻

豆瓣电影详情页爬虫实战:requests+BeautifulSoup精准提取元数据

豆瓣电影详情页爬虫实战:requests+BeautifulSoup精准提取元数据

前阵子要做个小型的电影观察分析,缺一批影片的片名、导演、主演、评分、上映日期、片长、剧情简介这类元数据。我一开始想的是手动复制,结果整理了十几部就受不了了——豆瓣详情页的信息密度高,一条影片条目要来回滚动好几次才能把需要的东西…

2026/10/13 11:42:19 阅读更多 →
Rational Rose安装全攻略:Windows10/11兼容性与许可证配置

Rational Rose安装全攻略:Windows10/11兼容性与许可证配置

简介:一份面向软件开发者、系统分析师及项目经理的 IBM Rational Rose 安装教程文档,聚焦 UML 建模工具从下载到配置的完整流程,帮助初学者规避许可证、兼容性等常见安装问题。资源仅含 1 个 docx 文件,压缩包大小 16KB&#xff0…

2026/10/13 11:42:19 阅读更多 →
招聘系统API设计实战:打通钉钉、Jira与Confluence的完整方案

招聘系统API设计实战:打通钉钉、Jira与Confluence的完整方案

做招聘系统的同时把钉钉、Jira、Confluence全部打通,听起来像是个“接口搬运工”的活儿,但真正落地时你会发现,问题根本不在于调用几个API,而在于三种工具的协作模型完全不一样。钉钉是沟通和审批工具,Jira是任务和流程…

2026/10/13 11:42:19 阅读更多 →
SAP S4 HANA S4520 中文采购教程:从物料主数据到供应商评估全流程

SAP S4 HANA S4520 中文采购教程:从物料主数据到供应商评估全流程

简介:这份中文版 SAP S4 HANA S4520 教材面向应用顾问、项目经理及最终用户,聚焦采购模块的系统操作与流程管理,帮助读者从物料主数据维护起步,逐步掌握供应链采购的完整技能体系。资源为单个 PDF 文件,压缩包约 18MB&…

2026/10/13 11:42:19 阅读更多 →
Python函数定义与调用:代码复用与作用域实战指南

Python函数定义与调用:代码复用与作用域实战指南

在日常写 Python 的时候,函数定义与调用大概是最常碰到的语法之一。不管你是刚接触编程的新手,还是已经写了几年业务逻辑的老手,几乎每个脚本里都少不了 def 这个词。很多人的函数用法停留在“能跑就行”的阶段,能定义、能调用、…

2026/10/13 11:42:19 阅读更多 →
昆明理工大学MBA复试真题详解:题型拆解与高效备考策略

昆明理工大学MBA复试真题详解:题型拆解与高效备考策略

26考研的时间点其实很微妙。初试刚结束那阵子,大多数人都在放松,觉得笔试考完就算过了大半关。但真正走过完整流程的人都知道,复试才是淘汰率最集中的环节,尤其对于昆明理工大学MBA这类报考热度一直不低的项目来说,复试…

2026/10/13 11:41:16 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →