SAP采购订单行项目修改实战:BAPI_PO_CHANGE存储地点与计划行更新指南

上个月接了一个采购订单接口改造的需求:外部供应商协同平台调用SAP时,不仅要能创建订单,还要能直接改已存在订单的行项目,具体就两项——把行项目上的发货/收货存储地点换掉,同时调整计划行里的交货日期和数量。需求听起来不大,真正动手打开BAPI_PO_CHANGE,才发现它不像简单UPDATE EKKPO那样一步到位。你需要同时维护行项目数据表POITEM、行项目更新控制表POITEMX,还要把计划行SCHEDULE和计划行控制表SCHEDULEX一并处理好。这篇文章就把我摸索出来的完整改法、字段对应关系、以及容易翻车的地方一次性讲清楚,给正在做SAP采购订单接口、或者被ME22N手工改单逼疯的人一个可以照抄的底稿。

1. 改行项目为什么要选BAPI_PO_CHANGE,而不是直接写库

很多刚接触SAP开发的同事看到“改一个存储地点”这种需求,第一反应是SE38里写一条UPDATE,直接改EKKPO-LGORT。这个思路在演示系统里能跑通,在生产系统里就是定时炸弹。EKKPO只是采购订单行项目表,和它关联的还有计划行表EKKET、采购历史表EKBE、版本表、确认表等一串数据。你手工UPDATE一行,等于绕过SAP所有的锁机制、更新任务和业务校验,后面一旦有程序按标准逻辑读数据,就会发现订单状态和数据库内容对不上。

BAPI_PO_CHANGE存在的意义,就是让外部系统在不重建订单的前提下,按标准更新逻辑去修改已有采购凭证。它能同时处理抬头、行项目、计划行、科目分配、条件、交货信息等,每张数据表都配一张对应的“控制表”。控制表的命名规则很简单:数据表叫POITEM,控制表就叫POITEMX;数据表叫SCHEDULE,控制表就叫SCHEDULEX。控制表里的每个可更新字段,都有个带X后缀的开关字段。你把新值放进数据表,把对应的X开关置为‘X’,BAPI才知道你要动哪个字段。这和填纸质申请单是一样的逻辑:申请单上填新地址,旁边打一个勾表示“这个字段要改”,不打勾的字段就算填了也不会被理会。

1.1 一次常规行项目修改需要带哪些内表

以“改存储地点+改计划行”这个需求为例,我通常至少准备四张内表:

内表作用重点字段示例
POITEM行项目新值PO_ITEM、STGE_LOC、PLANT
POITEMX行项目更新开关PO_ITEM、STGE_LOCX
SCHEDULE计划行新值PO_ITEM、SCHED_LINE、DELIV_DATE、QUANTITY
SCHEDULEX计划行更新开关PO_ITEM、SCHED_LINE、DELIV_DATEX、QUANTITYX

这里要特别强调一点:POITEMX和SCHEDULEX并不是简单地把POITEM、SCHEDULE里的字段复制一遍,它们里面同时包含“业务字段”和“业务字段对应的X开关”。以存储地点为例,POITEMX-STGE_LOC放的是存储地点的新值,POITEMX-STGE_LOCX放的是更新标志。很多新人在写代码时只填了新值、不填X标志,BAPI调用完返回全绿,回头一查EKKPO,LGORT根本没变。这种“假成功”是最坑的。

1.2 直接调用前必须理解的两阶段提交

BAPI_PO_CHANGE本身只是把数据包好、在内存里做校验和更新准备,真正落库是在后续的COMMIT WORK或BAPI_TRANSACTION_COMMIT里完成的。如果你在RFC接口里只调BAPI不调COMMIT,调用方那边看着是成功了,SAP侧数据库纹丝不动。我在接口开发里养成的习惯是:所有BAPI_PO_CHANGE调用后,统一检查RETURN表,没有错误消息再调BAPI_TRANSACTION_COMMIT,有A类或E类消息就调BAPI_TRANSACTION_ROLLBACK。别把COMMIT逻辑散落在各处,否则后面排查“改了等于没改”的问题,你根本分不清是BAPI没生效还是没提交。

2. 动手前先把存储地点和计划行的现状摸清楚

BAPI_PO_CHANGE的报错信息出了名的“半懂不懂”,很多时候不是代码写错了,而是业务数据本身不支持你改这个字段。我在动手改单之前,一定会把按顺序检查下面三件事,确认通过才继续。

2.1 行项目当前状态和历史收货情况

只要行项目已经有收货过账记录,或者已经产生了采购订单历史EKBE,改存储地点就得非常小心。已经收货的那部分数量,货物已经进了老的存储地点,你不可能靠改采购订单把它“搬”到新地点。BAPI虽然不一定直接拒绝,但后续做WM确认、库存过账时就会冒出各种对不上的怪问题。我在实际项目里的处理原则是:已收货数量大于0的行项目,原则上不让外部平台直接改存储地点;如果业务确实要改,先走一盘库存转储的流程,把老地点的库存搬过去,再回来改订单里剩余未收货部分的存储地点。

计划行也一样。某个计划行只要已经有过部分交货,它的数量、日期就最好不要通过BAPI去动了。你可以在EKBE里按采购订单行项目汇总查看已交货数量,用已交数量与计划行数量做对比,差距不大的行项目基本就是“已经进入执行通道”,改单不如做一张补货单。

2.2 物料在新存储地点下有没有合法视图

这是个特别容易被忽略的前置条件。存储地点字段能不能写进去,不完全由BAPI决定,还要看物料主数据在“工厂+存储地点”维度下有没有维护对应视图。典型报错是:物料没有在存储地点下维护,或者该存储地点不属于当前工厂。你代码写得再漂亮都没用,因为BAPI内部会调用标准校验,发现物料主数据里查不到“物料+工厂+存储地点”的组合,直接给你甩一个E类消息。

所以我在改存储地点前,会先查一下MARA、MARC、MARD这几张主数据表,确认物料在目标工厂和目标存储地点下已经扩展。没有扩展的,先让主数据组去MM01里补一下,再跑BAPI。这个步骤看着多花了两分钟,实际上能省掉后面反复调试的一大堆时间。

2.3 先读取当前值,别在盲盒上改单

不知道当前值就直接去改,是接口开发里的大忌。我每次都会先把EKKPO的LGORT、EKKET的计划行列表读出来看一眼。做法有两种:一是直接SELECT EKKPO和EKKET,比较直观;二是调BAPI_PO_GETDETAIL,拿到标准结构。我偏向前一种,因为我要顺带核对采购历史,SQL写起来更灵活。

SELECT ebeln, ebelp, werks, lgort FROM ekpo INTO TABLE @DATA(lt_ekpo) WHERE ebeln = @lv_po AND ebelp = @lv_item. SELECT ebeln, ebelp, etenr, eindt, menge FROM ekket INTO TABLE @DATA(lt_eket) WHERE ebeln = @lv_po AND ebelp = @lv_item ORDER BY etenr.

记住,计划行是靠ETENR区分的,ETENR在采购订单行项目内是从1开始递增的唯一编号。你要改哪个计划行,必须把这个编号带进SCHEDULE和SCHEDULEX里。很多接口对接方拿“交货日期”当唯一键,结果订单里有两个计划行是同一天,一下就乱了。

3. 存储地点字段的定位与更新示例:STGE_LOC + STGE_LOCX

关于“发货存储地点”这个叫法,不同公司叫得不太一样。有的叫“收货存储地点”,有的叫“发货存储地点”,但在后台数据结构里,它是行项目上的存储地点字段,对应EKKPO-LGORT,BAPI接口里对应BAPIMEPOITEM-STGE_LOC。计划行SCHEDULE里是没有独立存储地点字段的,存储地点永远挂在行项目级。如果你看到需求写着“把某计划行的存储地点改掉”,大概率真实意图是“把某行项目的存储地点改掉,同时调整该行项目下计划行的交期/数量”,这是两套更新,要分开处理。

3.1 单行项目存储地点更新的最小代码

下面这段代码是我在ECC和S/4 HANA上都跑通过的写法,改动点就两个:POITEM填新存储地点,POITEMX填新存储地点并把STGE_LOCX置为‘X’。

DATA: lt_poitem TYPE TABLE OF bapimepoitem, lt_poitemx TYPE TABLE OF bapimepoitemx, lt_return TYPE TABLE OF bapiret2, ls_poitem TYPE bapimepoitem, ls_poitemx TYPE bapimepoitemx. ls_poitem-po_number = lv_po. ls_poitem-po_item = lv_item. ls_poitem-stge_loc = 'Z001'. "目标存储地点 APPEND ls_poitem TO lt_poitem. ls_poitemx-po_number = lv_po. ls_poitemx-po_item = lv_item. ls_poitemx-stge_loc = ls_poitem-stge_loc. ls_poitemx-stge_locx = abap_true. APPEND ls_poitemx TO lt_poitemx. CALL FUNCTION 'BAPI_PO_CHANGE' EXPORTING purchaseorder = lv_po memory_complete = abap_true TABLES poitem = lt_poitem poitemx = lt_poitemx return = lt_return. IF NOT line_exists( lt_return[ type = 'E' ] ) AND NOT line_exists( lt_return[ type = 'A' ] ). CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = abap_true. ELSE. " 这里把 lt_return 打到日志里,方便排查 CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF.

有两点提醒一下。第一,POITEMX里要不要重复填STGE_LOC的值?我的习惯是填。虽然很多情况下不填也能生效,但填了更稳,尤其在老版本ECC上,有些版本对控制表字段的完整性校验比较严格。第二,memory_complete这个参数我在更新计划行时一定会带,它告诉BAPI这是一次完整变更包的提交,避免被当成多个部分更新来处理。细节在第4章里会展开。

3.2 转储订单场景:改“发货工厂”时别漏了存储地点

如果你面对的是转储订单(STO),行项目上还有一个“发货工厂/交货工厂”的概念,对应后台表EKKPO-DELPL。在BAPI_PO_CHANGE的POITEM结构里,通常会有一个发货工厂字段(不同版本里的BAPI字段名略有差异,常见叫法如DELIVERY_PLANT,以SE11当前结构为准)。改这种订单时,很容易出现只改了STGE_LOC、没改发货工厂,或者反过来只改了DELPL、存储地点还是老值的情况,结果订单存储地点与实际发货仓库对不上,交货过账的时候直接卡住。

我的做法是,改之前先通过EKKPO把DELPL和LGORT一起读出来,画一个“当前发货工厂+当前存储地点”到“目标发货工厂+目标存储地点”的对照,两个字段在同一个POITEM批次里一起提交。不要分成两次BAPI调用,因为多数情况下这两个字段要满足物料主数据的共同校验,拆开调容易产生中间状态。

4. 计划行的更新:先回传整表,再改目标行

计划行在采购订单里承担的是“交期管理”的职责,后台表是EKKET。每个行项目下可以有多个计划行,每个计划行有自己的ETENR编号、交货日期EINDT、数量MENGE。外部系统要改计划行,要么是供应商承诺的交期变了,要么是仓库分批收货的节奏变了,本质上都是对EKKET数据的一次重新组织。

4.1 只改某个计划行的日期和数量

先看一个最常见的写法:把行项目下第一个计划行的交货日期推迟10天,数量从100改成80。

DATA: lt_schedule TYPE TABLE OF bapimeposchedule, lt_schedulex TYPE TABLE OF bapimeposchedulex, ls_schedule TYPE bapimeposchedule, ls_schedulex TYPE bapimeposchedulex. ls_schedule-po_number = lv_po. ls_schedule-po_item = lv_item. ls_schedule-sched_line = lv_line. "计划行ETENR ls_schedule-deliv_date = lv_new_date. ls_schedule-quantity = lv_new_qty. APPEND ls_schedule TO lt_schedule. ls_schedulex-po_number = lv_po. ls_schedulex-po_item = lv_item. ls_schedulex-sched_line = lv_line. ls_schedulex-deliv_date = lv_new_date. ls_schedulex-deliv_datex = abap_true. ls_schedulex-quantity = lv_new_qty. ls_schedulex-quantityx = abap_true. APPEND ls_schedulex TO lt_schedulex. CALL FUNCTION 'BAPI_PO_CHANGE' EXPORTING purchaseorder = lv_po memory_complete = abap_true TABLES schedule = lt_schedule schedulex = lt_schedulex return = lt_return.

这个写法在订单里只有一个计划行时通常没问题。但一旦行项目下面有两个以上计划行,我就不会只传一个目标计划行了。原因很简单:BAPI在处理SCHEDULE的时候,会按计划行的整体结构做校验。你只传一个计划行的新数量,它并不知道其他计划行会不会受影响,如果总数量发生变化,内部计算后可能报“计划行不一致”,或者默默地按另一种逻辑重新分配,结果不是你想要的。

所以我的标准做法是:先把行项目下所有计划行读出来放到内表里,找到需要改的那一行修改字段,然后把整个内表回传给SCHEDULE。SCHEDULEX里,只有真正需要更新的字段对应的X开关置为‘X’,其他计划行的X开关留空,表示“这些行我没有要动,维持原样”。这样BAPI拿到的是一个完整的计划行视图,它不会再去做各种隐式猜测。

4.2 新增和删除计划行要格外小心

标准BAPI_PO_CHANGE对“新增一条计划行”的支持非常别扭。它不是像ME22N人工操作那样在EKKET里自动插一个ETENR,而是要求你把所有现有计划行和新计划行作为一个整体提交,让内部重排逻辑去分配行号。这里有个经验坑:如果你给新增计划行编了一个不存在的ETENR,BAPI很可能直接报错;如果你不填ETENR又填了新日期数量,不同版本行为还不太一样,有的能新增,有的静默忽略。我在两个客户项目里试过,结论是除非万不得已,别用BAPI_PO_CHANGE去做计划行新增,让业务去ME22N里人工加一行最省事。

删除计划行就更敏感了。只要这个计划行有采购历史、有供应商确认,BAPI通常拒绝删除。我见过一种近似做法:把目标计划行数量改成0,其他计划行数量保持不变,整体回传,制造一个“空计划行”。但空计划行本身也可能触发校验,而且语义上并不干净。我的建议是:生产环境里碰到计划行删除需求,先去查EKBE有没有关联历史,有历史就坚决不做删除,改成开一张红冲PO或者走后续订单调整。

4.3 memory_complete到底解决了什么问题

每次调用BAPI_PO_CHANGE,SAP内部会创建一个更新序列。如果你只传一部分计划行,系统可能认为接下来还会有别的调用补数据,所以内部校验会进入一种“部分更新”模式,很多跨行的数量校验不会完整执行。而MEMORY_COMPLETE = abap_true,是明确告诉系统“这就是本次要改的全部内容,没有后续了,给我按完整逻辑校验”。我在更新计划行数量分布时,只要传回两个以上的计划行,就一定带上这个参数。不带的后果通常是:BAPI返回成功,COMMIT也成功,但重新读EKKET时发现数量被改得莫名其妙,或者明明改了数量,后续交货单里还背着旧数量。

5. 改单后看不到变化的常见原因与排查思路

做接口久了你会发现,BAPI报错不可怕,可怕的是它不报错、RETURN全绿、但数据没变。我遇到的这类“假成功”场景,基本可以归到下面几个原因。

5.1 更新标志没置位:最常见的静默失败

POITEMX和SCHEDULEX里每个字段对应的X开关没有置为‘X’,BAPI就不会拿新值覆盖旧值。最典型的例子是:你明明给POITEM-STGE_LOC赋了Z001,但POITEMX-STGE_LOCX留空。BAPI在标准实现里看到这个X开关是空的,会认为该字段没有更新意图,于是直接跳过。排查时不要只看数据表,POITEMX、SCHEDULEX里对应的X字段必须逐个核对。我习惯在调用前用调试器或者EXPORT到日志,把两张表的X字段打印出来,一目了然。

5.2 计划行数量与订单总数对不上

BAPI_PO_CHANGE在内部会把计划行的数量和行项目数量做联动校验。如果你的订单行项目总数量是100,回传的计划行数量之和是80,BAPI就会报计划行与订单数量不一致。这也是为什么我推荐把全部计划行整体回传:只有让BAPI看到完整的计划行集合,总数校验才能通过。如果你是在接口平台用映射工具做字段级转换,记得把这个“整体回传”的逻辑写进转换规则,别只映射目标计划行。

5.3 已经生成的仓库任务还挂在老地点

存储地点改成功的标志,不只是EKKPO-LGORT变了,还要看后续物流执行用没用新地点。如果这个行项目之前已经创建了转储需求或者仓库任务,改订单并不能让那些已经生成的WM单自动跟着变。实际项目里,我遇到过改单成功后计划行正常、存储地点也正常,但仓库执行还是按老地点在跑的情况。排查这类问题,要去WM或者EWM那边看旧的转储单/仓库任务状态,该取消的取消、该重建的重建,别让订单层改成“理想状态”,执行层还停留在“旧世界”。

5.4 BADI和用户出口悄悄改了你的值

BAPI_PO_CHANGE在标准流程里会触发采购订单维护增强,比如ME_PROCESS_PO_CUST这类的BADI。如果这些增强里有代码在检查到某些条件时强制重置存储地点或者重新计算计划行数量,你传入的新值就可能被覆盖。出现“RETURN全绿、但查表发现值不对”的诡异情况时,除了检查更新标志,还要把这个PO对应场景下的增强点翻一遍。我个人的排查顺序是:先看X开关,再看增强,最后看提交逻辑,绝大多数假成功前两步就能揪出来。

最后再说一个经验:无论改存储地点还是计划行,正式跑之前都把订单在EKKO、EKPO、EKKET里的当前快照留一份,改动后做一次对比。SAP里改采购订单不是简单的一行UPDATE,BAPI_PO_CHANGE只是把复杂逻辑封装起来了,该有的状态检查、历史校验、触发增强一样都不会少。理解了它这套“数据表+控制表”的规则,再配上完整回传的计划行方式,这个需求就能稳稳落地。

相关新闻

MATLAB小波包分解实战:从wavedec到wpdec的信号特征提取与去噪

MATLAB小波包分解实战:从wavedec到wpdec的信号特征提取与去噪

简介:小波(包)分解MATLAB程序面向信号处理与故障诊断领域的学习者和工程师,解决非平稳信号时频分析的编程实践问题。压缩包共2个文件,均为m脚本,分别处理原始信号和含噪信号,涵盖数据加载、预处…

2026/10/19 16:17:17 阅读更多 →
基于CNN卷积神经网络的辣椒类别识别:从数据到训练部署的完整指南

基于CNN卷积神经网络的辣椒类别识别:从数据到训练部署的完整指南

毕设选深度学习方向,十个人里有八个都在做图像分类,但图像分类也分三六九等。你要是还在做猫狗识别、垃圾分类这种烂大街的题目,答辩老师大概率看一眼就翻页了。今天聊一个既接地气又有完整落地场景的方向:基于CNN卷积神经网络对辣…

2026/10/19 16:16:11 阅读更多 →
教育AI智能体:从架构设计到教学落地的完整实践

教育AI智能体:从架构设计到教学落地的完整实践

年初接到一个中小学教育信息化的咨询项目,对方希望给区域内几所学校的日常教学配一个真正能用的教学辅助系统。聊到一半,对方负责人说了一句让我印象很深的话:之前试过通用大模型对话,学生的提问五花八门,模型回答确实…

2026/10/19 16:16:11 阅读更多 →

最新新闻

YOLO26轻量化优化:DualConv双卷积替换主干,mAP涨1.3且参数降27%

YOLO26轻量化优化:DualConv双卷积替换主干,mAP涨1.3且参数降27%

跑完新一轮YOLO26优化实验,我先把结论扔到前面:用轻量化双卷积DualConv替换掉主干网络里一部分标准卷积之后,模型mAP50-95涨了1.3个点,同时参数量从12.9M掉到9.4M,计算量从18.7G降到12.3G。这不是靠蒸馏,也…

2026/10/19 17:39:45 阅读更多 →
开源代码评审工作流:协议驱动的可审计人机协同范式

开源代码评审工作流:协议驱动的可审计人机协同范式

1. 项目概述:这不是一个工具,而是一套可落地的开源代码评审工作流“open-code-review”这个名称乍看像某个具体软件或CLI命令,但实际它代表的是一种正在快速演化的工程实践范式——把传统依赖人工、会议、PR评论的代码评审(Code R…

2026/10/19 17:39:45 阅读更多 →
开源CLI代码评审系统:基于LLM Agent的自动化Code Review实践

开源CLI代码评审系统:基于LLM Agent的自动化Code Review实践

1. 这不是又一个“AI写代码”工具,而是一套可嵌入开发流程的开源代码评审系统最近在几个技术团队内部做工具链调研时,发现一个有意思的现象:大家嘴上说着“用AI做code review”,但实际落地时,90%的人还在把diff粘贴进C…

2026/10/19 17:39:45 阅读更多 →
两相流THM热流固耦合建模:COMSOL收敛与求解器配置指南

两相流THM热流固耦合建模:COMSOL收敛与求解器配置指南

简介:基于COMSOL构建的两相流THM热流固耦合模型,面向石油工程、地热开发及二氧化碳地质封存等复杂多物理场耦合问题,适合从事渗流力学与岩土工程仿真的科研人员、工程师与研究生。模型以饱和水和油两相流动为核心,支持温度场—渗流…

2026/10/19 17:39:45 阅读更多 →
基于SpringBoot+Vue的校园管理系统毕业设计实战拆解

基于SpringBoot+Vue的校园管理系统毕业设计实战拆解

毕业设计想选校园管理系统、又不想纯手工从零搓代码的同学,我建议直接找一个 SpringBoot Vue 的前后端分离项目来二次开发,这是目前最稳妥、也最适合拿高分的路子。这套技术栈基本是 Java Web 方向毕设的标配,覆盖了后端接口开发、前端页面交…

2026/10/19 17:39:45 阅读更多 →
RGAT+GRU融合模型解决APT溯源图稀疏漏报问题

RGAT+GRU融合模型解决APT溯源图稀疏漏报问题

简介:本资源是华中科技大学2023届计算机相关专业(如计科、人工智能、网络安全等)优秀毕业设计成果,聚焦APT攻击检测这一前沿安全问题,提出并实现了一种基于溯源图建模与RGATGRU融合架构的检测方法优化方案。面向在校本…

2026/10/19 17:38:44 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →