ABAP ALV报表开发实战:销售订单关键值展示与避坑指南

最近有个开发任务,标题写的是"显示关键值代码"。听上去很简单,但真坐下来写,牵涉到的细节还真不少。SAP里所谓"关键值"不是一个固定的字段,而是业务上最需要盯住的那几个数值指标。比如销售订单这摊事,管理层看订单总金额和已发货数量,物流看毛重体积,财务看净价和税费。同样是"关键值",不同角色要的东西完全不一样。所以拿到这种需求,第一件事不是敲代码,而是跟业务把口径抠清楚。写代码反而相对固定:从表里查出这些值,再通过ALV或前端控件展示出来。我这次做的是在ABAP侧用ALV网格展现销售订单的一组关键值,顺手把整个实现过程和踩过的坑整理成这篇东西,给做ABAP开发或者想快速交付内部报表的朋友参考。

1. 需求拆解与方案取舍:关键值展示不是拼字段

1.1 关键值究竟指什么

关键值在SAP不同模块里的含义略有差别。在数据仓库里,它是物理指标;在业务报表里,它往往是用户日常决策和操作时离不开的关键字段。我在做企业内部报表时,见过最典型的"关键值"需求来自三个口径:

  • 取自单据字段的,比如销售订单金额、客户信用额度、采购订单数量;
  • 来自主数据的,比如物料净重、体积、标准成本;
  • 由后台逻辑计算出来的,比如毛利率、订单交付率、库存周转天数。

这三类值的取数路径完全不同。单据字段可以直接从凭证表读,主数据字段需要关联对应主表,计算类字段往往还得先跑条件逻辑算一遍。如果一上来就把它们混在一张临时表里,后期维护和口径解释都会非常痛苦。我这个项目用到的是销售订单加物料主数据的组合,既包含单据值,也包含主数据值,刚好可以演示一般思路。

1.2 为什么不直接用标准事务代码

SAP里有大量标准报表,比如VA05可以按条件列销售订单清单,但标准清单很难把跨模块的关键值集中在一屏,也不方便针对特定用户做条件列宽、颜色高亮、金额单位自动切换这些交互。业务用户往往是"我就要这张表,别的我不看",标准事务代码十几张表来回跳效率太低,所以自己写一个小工具最实际。

再说维护成本。用ABAP写一个ALV报表,业务逻辑锁在一个报表程序里,后续加字段减字段非常直接,只要不影响已有列,开发风险很低。像这种"显示关键值"的需求,多半是内部快速支撑,没必要一上来就上Fiori那么大的前端框架。

1.3 选ALV还是Fiori

我这次选择了经典的ABAP ALV网格,而不是SAP Fiori/UI5。不是因为UI5不好,而是单一内部场景下,ALV的交付成本要低得多。Fiori需要前端构建、网关服务、目录挂载,哪怕只是展示一张列表,整体链路在实施环境里并不轻松。ALV直接运行在后台系统,用户通过事务代码即可访问,还能拖拽列、排序、求和、导出Excel,基本满足了关键值展示的需求。

在ABAP内部,还需要在Function ALV和OO ALV之间做选择。如果需求很急,只要调用REUSE_ALV_GRID_DISPLAY就能少写很多行代码。但我的习惯是能上OO ALV就上OO ALV,原因是后续要加按钮、响应双击、做单元格样式,OO事件模型清晰得多。代码看似长了一点,但结构友好,对后来的维护者很重要。

2. 取数逻辑与关键值计算:从表里挖出准确数字

2.1 关联表结构梳理

这次要显示的关键值,我最终和业务确认下来的是:订单金额、币种、订单目标数量、销量单位、物料净重、重量单位。这些字段分布在好几张表里,先梳理清楚再做SELECT,比写一半再回头补字段要省事得多。

关键值表-字段类型说明
销售订单号VBAK-VBELNCHAR抬头单号
行项目号VBAP-POSNRNUMC行项目编号
物料号VBAP-MATNRCHAR关联物料主数据
订单金额VBAP-NETWRCURR条件净价值
币种VBAP-WAERSCUKY金额的货币单位
目标数量VBAP-KWMENGQUAN累计订单数量
销售单位VBAP-VRKMEUNIT数量的单位
净重MARA-NTGEWQUAN物料净重
重量单位MARA-GEWEIUNIT净重单位

实际开发中你可能会发现,某个"关键值"在表里并不一定有现成字段。比如客户关心的"超期金额",需要从交货日期和金额去判断过滤。这种计算类关键值要放在选择逻辑之后,用条件分支或循环去算。我这次的字段都是直接取数,刚好可以把复杂点集中在展示环节。

2.2 SELECT语句怎么写

多表关联时,我推荐把查询条件放在WHERE或JOIN条件里,并且只SELECT需要的列,尽量避免SELECT *。因为关键值报表往往涉及主数据,一个物料字段就要关联物料主数据,明细行一多,SELECT *读出大量无用列会让内存吃紧。

给一段可运行的样例代码:

TYPES: BEGIN OF ty_alv, vbeln TYPE vbak-vbeln, posnr TYPE vbap-posnr, matnr TYPE vbap-matnr, netwr TYPE vbap-netwr, waers TYPE vbap-waers, kwmeng TYPE vbap-kwmeng, vrkme TYPE vbap-vrkme, ntgew TYPE mara-ntgew, gewei TYPE mara-gewei, END OF ty_alv. DATA: lt_alv TYPE TABLE OF ty_alv, ls_alv LIKE LINE OF ty_alv. SELECT a~vbeln a~posnr a~matnr a~netwr a~waers a~kwmeng a~vrkme m~ntgew m~gewei FROM vbap AS a LEFT OUTER JOIN mara AS m ON m~matnr = a~matnr UP TO 100 ROWS INTO (ls_alv-vbeln, ls_alv-posnr, ls_alv-matnr, ls_alv-netwr, ls_alv-waers, ls_alv-kwmeng, ls_alv-vrkme, ls_alv-ntgew, ls_alv-gewei). APPEND ls_alv TO lt_alv. CLEAR ls_alv. ENDSELECT.

需要提醒的是,INNER JOIN表示只取物料主数据存在的记录。如果有些订单行物料已删除或不存在,就会丢掉这些行。对关键值展示来说这很危险,业务可能以为数据缺失。如果希望所有订单行都保留,就用LEFT OUTER JOIN。此时MARA字段如果为空,净重就会空,展示时要做空值处理。我个人大多数场景都用LEFT OUTER JOIN,宁可让关键值为空,也不要让行消失。

2.3 CURR和QUAN类型怎么避免掉坑

这是整套代码里最容易出错的地方。SAP的金额字段不是普通DECIMAL,而是带货币引用的CURR类型;数量字段也是带单位引用的QUAN类型。直接把VBAP-NETWR塞进一个STRING字段,轻则丢精度,重则变成科学计数法,用户那边看起来就是乱码。

正确做法是在内表结构里保持一致的SAP类型引用:

netwr TYPE vbap-netwr, kwmeng TYPE vbap-kwmeng

这样ABAP在做数据移动时就保留类型属性。展示到ALV之后,ALV会参考字段目录里配置的参考表和参考字段,把金额显示成正常的小数形式。

如果需要自己计算,例如把金额加总,建议显式声明参考类型的累加变量:

DATA: lv_total TYPE vbap-netwr. DATA: lv_sum LIKE lv_total. LOOP AT lt_alv INTO ls_alv. lv_sum = lv_sum + ls_alv-netwr. ENDLOOP.

这种写法保证了累加时不丢精度。另一个容易忽略的是币种字段,比如WAERS是CUKY类型,ALV对货币代码比较敏感,没有它金额无法正确显示。所以内表结构里最好把币种字段和金额字段放一起,后面给ALV配置QFIELDNAME就方便了。

3. ALV展示代码:把关键值稳稳当当铺在屏幕上

3.1 手动构建字段目录

从数据准备到展示,中间最关键的一步是给ALV交付字段目录(Field Catalog)。ALV可以靠I_STRUCTURE_NAME自动生成,但自动生成不会自动识别金额的单位和币种,最后显示出来经常会缺单位。想精细控制关键值,基本都是手动填字段目录。

手动添加字段的典型写法:

DATA: lt_fcat TYPE lvc_t_fcat, ls_fcat TYPE lvc_s_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'VBELN'. ls_fcat-ref_table = 'VBAK'. ls_fcat-ref_field = 'VBELN'. ls_fcat-coltext = '订单号'. ls_fcat-outputlen = 12. APPEND ls_fcat TO lt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'NETWR'. ls_fcat-ref_table = 'VBAP'. ls_fcat-ref_field = 'NETWR'. ls_fcat-qfieldname = 'WAERS'. ls_fcat-coltext = '订单金额'. ls_fcat-outputlen = 20. ls_fcat-do_sum = abap_true. APPEND ls_fcat TO lt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'KWMENG'. ls_fcat-ref_table = 'VBAP'. ls_fcat-ref_field = 'KWMENG'. ls_fcat-qfieldname = 'VRKME'. ls_fcat-coltext = '目标数量'. ls_fcat-outputlen = 15. ls_fcat-do_sum = abap_true. APPEND ls_fcat TO lt_fcat. CLEAR ls_fcat. ls_fcat-fieldname = 'NTGEW'. ls_fcat-ref_table = 'MARA'. ls_fcat-ref_field = 'NTGEW'. ls_fcat-qfieldname = 'GEWEI'. ls_fcat-coltext = '净重'. ls_fcat-outputlen = 15. APPEND ls_fcat TO lt_fcat.

这里最核心的几个参数:

  • QFIELDNAME:指向内表中存放币种或单位的字段名,ALV会用它拼出"12,345.00 EUR"这种显示格式。
  • REF_TABLE / REF_FIELD:告诉ALV该字段的字典类型,避免数字格式乱。
  • DO_SUM:允许ALV在合计行对该列求和。如果关键值不适合求和,比如单位、描述,记得设置NO_SUM = ABAP_TRUE。

3.2 创建ALV容器并输出

用面向对象的方式,创建一个容器,再把数据表和字段目录传给网格:

DATA: lo_docking TYPE REF TO cl_gui_docking_container, lo_grid TYPE REF TO cl_gui_alv_grid. CREATE OBJECT lo_docking EXPORTING side = cl_gui_docking_container=>dock_at_bottom extension = 800. CREATE OBJECT lo_grid EXPORTING i_parent = lo_docking. CALL METHOD lo_grid->set_table_for_first_display CHANGING it_outtab = lt_alv it_fieldcatalog = lt_fcat.

实际项目中,我一般不会用I_STRUCTURE_NAME,因为手动给的字段目录已经够用。如果保留它,ALV会先按结构生成一份字段表,再用手动目录覆盖,某些情况下反而会把手动配置冲掉。建议要么I_STRUCTURE_NAME留空,要么不传,完整使用自己的LT_FCAT。

如果不想创建Docking容器,也可以把ALV嵌到屏幕的Custom Control里,在PBO里调用同名步骤,代码结构一致,差别只是容器创建时用的是CL_GUI_CUSTOM_CONTAINER。

3.3 关键值高亮和初始排序

用户最关心的那几列,往往希望能一眼看见。ALV提供EMPHASIZE属性,给列加上背景色:

CLEAR ls_fcat. ls_fcat-fieldname = 'NETWR'. ls_fcat-emphasize = 'C510'.

颜色编码一般取SAP调色板,四个字符,首位C,第二位是色号,第三四位表示增强模式。比如C510是高强度颜色,C100是默认红色。不需要花哨的时候,直接用C510给金额列打个底,阅读效率会明显提升。

排序方面,ALV工具栏上用户自己就能点列标题排序,代码层面不必强排序。但如果业务希望在初始打开时就把订单号、行项目号排好,可以在取数层做SORT:

SORT lt_alv BY vbeln posnr.

ALV布局保存还值得开一下。用户每次拖动列宽、隐藏列,如果没保存,下次打开又回到初始状态,体验很差:

DATA: ls_layout TYPE lvc_s_layo. ls_layout-sel_mode = 'A'. ls_layout-save = abap_true. CALL METHOD lo_grid->set_table_for_first_display EXPORTING is_layout = ls_layout CHANGING it_outtab = lt_alv it_fieldcatalog = lt_fcat.

3.4 刷新与事件处理

如果报表做了用户输入或按钮触发重查,刷新数据不能把旧网格丢掉。需要重新把内表放到网格:

CALL METHOD lo_grid->refresh_table_display.

如果点了回车或自定义按钮后要重新取数,通常是在PAI里改LT_ALV,再回到PBO调用REFRESH_TABLE_DISPLAY。这里要注意的是,REFRESH_TABLE_DISPLAY不会重新自动生成字段目录,如果你在按钮逻辑里临时改了字段目录,需要先SET_TABLE_FOR_FIRST_DISPLAY把新结构重新推一遍,否则列不会更新。

4. 显示异常排查与避坑实录

4.1 金额全是星号,或者变成科学计数法

这是新手最容易遇到的。原因多半是字段目录里没有配置REF_TABLE和REF_FIELD,ALV不知道CURR类型的实际精度,也可能列宽被卡在很小的值上。解决办法:

  1. 检查内表字段是不是STRING或DECFLOAT,如果结构字段声明成STRING,ALV按字符串显示就会变成奇怪格式。
  2. 检查字段目录里NETWR是否设置了REF_TABLE = 'VBAP'和REF_FIELD = 'NETWR'。
  3. 把OUTPUTLEN稍微调大,比如金额列设置20。

我曾经在一个快速原型里为了省事,直接把金额读到STRING字段,结果用户反馈金额显示成"1.23456789E+02",折腾了半天才找到原因。后来所有CURR/QUAN字段一律保留字典类型,问题彻底消失。

4.2 单位字段是空白的

QUAN字段显示时,如果内表里有数量但单位列空白,通常是QFIELDNAME没配对。比如KWMENG的单位是VRKME,但你在字段目录里没指定QFIELDNAME,ALV就不知道单位放哪里,干脆不显示。

还有一种情况:内表里没有把单位字段包含进去。单位字段在数据输出阶段必须是个独立的列,即使你不想把它显示出来,也得藏在表里供ALV取用。很多开发只把数量字段放进去,单位字段没放,ALV自然补不出单位。

4.3 合计行默认把不该合的都合了

ALV合计行是按列计算数值型字段的。如果关键值里有利润率、折扣率这类百分比字段,默认情况下也可能会被加总,业务看到的合计就是荒谬的数值。处理方式是在字段目录里明确设置:

ls_fcat-no_sum = abap_true.

对于需要合计的金额、数量列,显式设置LS_FCAT-DO_SUM = ABAP_TRUE。这样就不会出现"毛利率加总"这种笑话。另外,如果关键值是CURR类型但没有币种字段,合计行会出现一个奇怪的总数,因为ALV按所有行的币种当作同一货币加在一起,跨币种合计没有意义。严谨一点应该按币种分组合计,或者在展示前统一折成为一种币种。

4.4 取数结果重复或漏行

FOR ALL ENTRIES是ABAP里常用的取数方式,但它的INNER JOIN语义跟数据库的JOIN不同,如果内表有重复KEY,会把结果行放大,导致关键值重复计算。比如订单表里有两条相同的订单号,再用FOR ALL ENTRIES去查主表,可能造成数据膨胀。解决办法是先排序去重再查询:

SORT lt_order_cv BY vbeln. DELETE ADJACENT DUPLICATES FROM lt_order_cv COMPARING vbeln.

如果发现查询结果行数与表直接SELECT的结果不一致,也要怀疑FOR ALL ENTRIES的空表处理。FOR ALL ENTRIES左侧内表为空时,语句会被忽略,所以要先维护内表行数不为空,或直接用普通JOIN。

4.5 ALV列宽和导出Excel的坑

ALV自动优化列宽通常没问题,但手动设置了OUTPUTLEN之后,如果列太多,关键值列被挤到后面,用户拖动不方便。可以在布局里设置列宽优化:

ls_layout-col_opt = abap_true.

导出Excel时,如果列头是中文,导出后列头默认可能还是字段名,必须确保LT_FCAT-COLTEXT设置成中文或用户习惯的标题。导出前最好让用户先在ALV上确认列宽和隐藏列,布局保存后导出更符合预期。

5. 可复用模块与扩展思路

5.1 类方法封装思路

上面这些代码全部丢在报表程序里也能跑,但再遇到类似"显示库存关键值""显示采购关键值"的需求,复制粘贴改字段名会非常痛苦。我更建议做一个小的本地类,把数据准备和显示拆开:

CLASS lcl_order_alv DEFINITION. PUBLIC SECTION. METHODS: get_data IMPORTING iv_vbeln TYPE vbak-vbeln OPTIONAL, display. PRIVATE SECTION. DATA: lt_alv TYPE TABLE OF ty_alv, lo_grid TYPE REF TO cl_gui_alv_grid, lt_fcat TYPE lvc_t_fcat. ENDCLASS. CLASS lcl_order_alv IMPLEMENTATION. METHOD get_data. " 这里放SELECT取数代码 ENDMETHOD. METHOD display. " 这里放字段目录和ALV展示代码 ENDMETHOD. ENDCLASS.

调用时只需要:

DATA(lo_report) = NEW lcl_order_alv( ). lo_report->get_data( iv_vbeln = '0000123123' ). lo_report->display( ).

后续如果要扩展,只改METHOD内部,调用方基本不动。这样维护起来比一长串过程化报表清晰得多。

5.2 加上自定义按钮和响应逻辑

关键值展示到后面,用户往往会提"我想在报表里加一个按钮,点了跳转事务代码查看明细"这类需求。OO ALV处理起来很顺手,先定义事件处理类:

CLASS lcl_event_receiver DEFINITION. PUBLIC SECTION. METHODS: handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive, handle_user_command FOR EVENT user_command OF cl_gui_alv_grid IMPORTING e_ucomm. ENDCLASS.

然后在DISPLAY方法里注册事件接收器:

SET HANDLER my_receiver->handle_toolbar my_receiver->handle_user_command FOR lo_grid.

这样就能在ALV工具栏塞一个"跳转"按钮,点击后根据当前选中行的订单号调用事务代码,或者弹出自定义明细。这种扩展能力是Function ALV很难比拟的,也是我坚持用OO ALV的原因。

5.3 口径变动怎么应对

关键值展示这类需求,最大的变动往往不是字段本身,而是"口径"。同样是金额,含税不含税就差很多;同样是数量,按销售单位和按基本单位算又不一样。我的习惯是在取数逻辑里把所有原始字段先读进来,再统一做口径转换,最后把最终显示字段写到ALV内表。这样任何一个口径变了,只需要改一个方法,不需要动输出逻辑。

6. 个人经验:交付关键值报表,不能只靠代码

6.1 先给业务看一张草图

用户说"显示关键值"的时候,往往并不清楚自己最终要看什么。我在项目里习惯先在纸上画一个简单的表格草图,把列名写出来发给业务确认:这列要不要,那列单位对不对,金额含税还是不含税。确认之后,再把字段类型、单位、汇总方式这些细节补进去。这步看起来多花了一天,实际能省下后面反复改代码的时间。

6.2 后面的扩展方向

如果这套ALV报表用顺手了,还可以考虑把这些关键值输出为监控指标,做成后台定时任务,每天把核心金额和数量发邮件给管理层。ABAP里可以用JOB和邮件函数接在一起,关键值代码一次性写好后,扩展成定时推送并不难。再往后,如果系统上了HANA或更高版本,也可以用CDS视图把相同逻辑做成OData服务,供Fiori卡片展示。底层取数逻辑是一样的,只是展示层换了个样子。

这套ABAP+ALV方法对我来说,基本能覆盖九成内部报表需求。照着上面的代码搭一遍,再根据自己业务结构调整表和字段,关键值展示这件事就不会再让你失眠了。

相关新闻

Claude技能机制全拆解:三层上下文架构与渐进式加载实战

Claude技能机制全拆解:三层上下文架构与渐进式加载实战

去年我在做一个内部知识库问答项目时,第一次被 Claude Skills 这套技能机制吸引。当时的痛点很典型:模型本身能力够强,但面对几十个工具、几百条规则时,要么把上下文窗口直接撑爆,要么在无关技能上反复横跳。Claude Sk…

2026/10/22 11:51:10 阅读更多 →
OpenHPC实战:从零搭建可复现的HPC集群与运维指南

OpenHPC实战:从零搭建可复现的HPC集群与运维指南

简介:OpenHPC开源HPC解决方案是一份面向高性能计算系统管理员、IT架构师及技术决策者的方案型文档,重点回应HPC集群部署复杂、管理成本高的普遍痛点。内容以开源社区项目OpenHPC为线索,介绍其作为Linux基金会合作项目的生态定位,以…

2026/10/22 14:01:21 阅读更多 →
LiteLLM:大模型调用的协议翻译器与企业级网关实践

LiteLLM:大模型调用的协议翻译器与企业级网关实践

1. 为什么“litellm”突然在开发者圈里被反复提起——它不是新模型,而是新范式最近两周,好几个不同技术栈的同行在 Slack 和内部技术群聊里不约而同地抛出一个问题:“你们项目里用 litellm 了吗?”不是问“你知道 litellm 吗”&am…

2026/10/22 13:16:29 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

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

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

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

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

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

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

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

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

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

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 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/21 21:50:56 阅读更多 →
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/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练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/22 19:06:46 阅读更多 →