ABAP ALV报表自定义按钮执行完后隐藏的两种实现方案与实战
做ABAP开发的十个ALV报表里少说有七八个要放自定义按钮。业务顾问的需求往往很简单——“加一个按钮点了执行一下执行完了就别再给用户点了”。比如生成对账单、执行批量过账、触发一次数据同步点过一次如果还能再点要么重复生成要么误操作轻则数据错乱重则被业务投诉到开发组。标题这个“执行完自定义按钮后隐藏”背后其实是两类完全不同的技术路径很多人栽就栽在没分清按钮到底是“哪一种”。先说个常见的翻车现场。有次某项目上一个“生成文件”的按钮点了之后能下载Excel。开发同学第一次用GUI状态里的按钮直接在PBO里用EXCLUDING把功能码剔掉了发现按钮纹丝不动。后来一查这个按钮根本不是屏幕GUI状态上的而是挂在ALV Grid自带工具栏上、通过TOOLBAR事件动态加进去的。两套体系隐藏的手法完全不同。这篇文章就把这两条路都拆开讲顺便把常见的坑和排查思路一并写了。无论你是刚开始写ALV的实习生还是已经被业务折磨多年的资深开发应该都能从这里找到能直接抄的东西。1. 做ALV开发必须分清的两类自定义按钮要理解“执行完隐藏”这件事第一步不是写代码而是先弄清楚这个按钮到底住在哪里。ALV报表里的自定义按钮按所处位置不同大致分成两类隐藏手段截然不同。1.1 挂在屏幕GUI状态上的按钮这是最传统的一种。报表程序是Module Pool程序屏幕上放了一个ALV容器控件按钮则定义在屏幕的GUI状态里。在SE80里打开状态编辑器建一个自定义状态拖一个按钮到应用工具栏上给它分配一个功能码比如MY_ACTION。当用户点击时系统将这个功能码传给PAI的USER_COMMAND处理模块代码里通过SY-UCOMM判断用户点了哪个按钮。这类按钮有个特点它的存在与否完全由PBO里那句SET PF-STATUS决定。你设置了什么状态、排除了哪些按钮屏幕就显示什么工具栏。所以隐藏它的思路非常直接——在PBO里动态维护一个排除表把要隐藏的功能码塞进去然后重新设置状态。1.2 挂在ALV Grid自带工具栏上的按钮第二种是ALV Grid控件自带的那条工具栏也就是网格上方有导入、导出、排序、筛选这些图标的区域。这条工具栏由ALV框架自己生成屏幕GUI状态管不到它。要往上面追加自定义按钮标准做法是给CL_GUI_ALV_GRID的TOOLBAR事件写一个处理程序在事件里把按钮结构体追加到E_OBJECT-MT_TOOLBAR表中。这种按钮的点击处理也不走PAI的SY-UCOMM而是走ALV的USER_COMMAND事件参数是E_UCOMM直接拿到功能码。很多从Function ALV年代转过来的开发一开始会习惯性地在PAI里写CASE SY-UCOMM结果发现事件根本不触发就是这个原因。1.3 两类按钮“隐藏”到底有什么不同用一张表说清楚关键差异后面写代码心里就有底了。对比项屏幕GUI状态按钮ALV Grid工具栏按钮定义位置屏幕GUI状态SE80状态编辑器TOOLBAR事件中动态追加触发入口PAI模块的SY-UCOMMUSER_COMMAND事件的E_UCOMM控制时机PBO设置SET PF-STATUS时TOOLBAR事件每次重新触发时隐藏核心手段EXCLUDING排除表条件控制不追加按钮隐藏后刷新屏幕自动重新PBO即可必须调用REFRESH_TOOLBAR这两类按钮在代码里甚至可能同名同功能码但隐藏逻辑不能混用。接下来分别给出完整可运行的做法。2. 方案一用GUI状态EXCLUDING隐藏屏幕级按钮适合那种按钮定义在屏幕GUI状态上、不走ALV自带工具栏的场景。实现起来比较经典核心就是三个东西协作一个全局标志位、一张排除表、一句PBO代码。2.1 整体思路三个元素配合先说逻辑。你把“隐藏”这件事拆成两步看用户点击按钮后在PAI里完成业务逻辑然后置一个全局标志位例如GV_HIDE_BTN ABAP_TRUE。屏幕下一次刷PBO时根据这个标志位决定要不要把MY_ACTION这个功能码加进EXCLUDING表再执行SET PF-STATUS。因为Module Pool屏幕每次交互后都会重新走一遍PBO所以只要标志位一置按钮在下一轮界面渲染时就会从工具栏上消失。整个过程不需要调用任何ALV刷新方法也不用管容器控件的状态。2.2 PBO的关键代码与执行时机PBO里通常长这样MODULE status_0100 OUTPUT. DATA: lt_exclude TYPE ui_functions. 根据业务状态决定要隐藏哪些按钮 IF gv_hide_btn abap_true. APPEND MY_ACTION TO lt_exclude. ENDIF. SET PF-STATUS STATUS_0100 EXCLUDING lt_exclude. 下面是你原有的ALV容器与GRID初始化逻辑 IF g_grid IS INITIAL. ... ENDIF. ENDMODULE.这里面的关键点有两个。第一lt_exclude的类型必须是标准的功能码表用UI_FUNCTIONS这个公有类型最省事。第二SET PF-STATUS一定要写在PBO里而且最好放在容器控件初始化的前面保证每次刷屏都重新应用状态。2.3 PAI处理业务后置标志位对应PAI里处理这个按钮的逻辑也不复杂MODULE user_command_0100 INPUT. CASE sy-ucomm. WHEN MY_ACTION. PERFORM run_business_logic. gv_hide_btn abap_true. CLEAR sy-ucomm. WHEN BACK OR EXIT. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE.业务逻辑跑完后把GV_HIDE_BTN置为真然后清掉SY-UCOMM。注意不要在这里自己再去调用什么刷新方法除非你遇到了特殊情况后面会有说明。正常情况下当前屏幕的PAI执行完并回到PBO时状态会被重新设置按钮自然就没了。2.4 这个方案为什么能生效很多新人会疑惑置了个变量按钮凭什么就能消失原因在于Dialog程序的事务处理循环。用户点击按钮后屏幕将功能码交给PAIPAI里执行完模块如果没有LEAVE或跳转其他屏幕系统会再次进入当前屏幕的PBO。PBO一执行SET PF-STATUS重新生效而EXCLUDING里已经多了一个功能码。界面渲染器在绘制工具栏时会跳过被排除的按钮于是你看到的效果就是“按钮执行完就隐藏了”。这里有个容易踩的坑如果你把SET PF-STATUS写在PAI里而PBO里没有那这个方案大概率失灵因为PAI执行完屏幕还会重画但PBO没有再次设置状态UI还是按照旧状态渲染。3. 方案二用ALV工具栏事件动态控制按钮显隐大多数新写的ALV报表按钮已经不放屏幕GUI状态了而是直接放在ALV Grid自己的工具栏上。这种场景下方案一的EXCLUDING完全无效。必须换一种思路——既然按钮是TOOLBAR事件里动态加进去的那就在事件里加一个“是否允许追加”的判断再触发工具栏刷新。3.1 先看一个常见的添加按钮写法不用OOP事件时的传统写法已经很少见了现在的主流做法是定义一个事件处理类绑定TOOLBAR和USER_COMMAND事件。先写一个最朴素的按钮追加逻辑METHOD on_toolbar. DATA: ls_button LIKE LINE OF e_object-mt_toolbar. CLEAR ls_button. ls_button-function MY_ACTION. ls_button-icon icon_execute_object. ls_button-quickinfo 执行后台动作. ls_button-text 执行动作. APPEND ls_button TO e_object-mt_toolbar. ENDMETHOD.LS_BUTTON的结构类型是STB_BUTTON里面的FUNCTION是功能码ICON可以是SAP标准的图标常量TEXT是按钮显示文字。如果你的ALV布局里设置成显示按钮文字图标和文字会一起出现如果不设置只显示图标此时QUICKINFO悬停提示就很重要。3.2 在TOOLBAR事件里按标志位控制追加现在把“隐藏”需求加进去。既然按钮是否出现在工具栏上完全由TOOLBAR事件是否往MT_TOOLBAR里追加条目决定那隐藏的做法就是当标志位为真时跳过追加。METHOD on_toolbar. DATA: ls_button LIKE LINE OF e_object-mt_toolbar. IF gv_hide_btn abap_true. RETURN. ENDIF. CLEAR ls_button. ls_button-function MY_ACTION. ls_button-icon icon_execute_object. ls_button-quickinfo 执行后台动作. ls_button-text 执行动作. APPEND ls_button TO e_object-mt_toolbar. ENDMETHOD.这里有一点值得提醒不要用CHECK而要用IF。如果TOOLBAR事件里后续还要追加其他按钮或分隔符CHECK会让整个方法直接退出导致其他自定义按钮也被“误伤”。用IF包住单个按钮的追加逻辑扩展性最好。3.3 执行完业务后刷新工具栏光在事件里判断还不够因为用户点击完按钮后TOOLBAR事件不会自动重新触发工具栏还是老样子。需要手动告诉ALV“你的工具栏该重画了”。在USER_COMMAND事件处理程序里这样写METHOD on_user_command. CASE e_ucomm. WHEN MY_ACTION. PERFORM run_business_logic. gv_hide_btn abap_true. 刷新数据展示与工具栏 if g_grid is not initial. CALL METHOD g_grid-refresh_table_display( ). CALL METHOD g_grid-refresh_toolbar( ). ENDIF. WHEN BACK OR EXIT. ... ENDCASE. ENDMETHOD.REFRESH_TOOLBAR是CL_GUI_ALV_GRID的实例方法调用后ALV会重新渲染工具栏从而触发一次TOOLBAR事件。此时GV_HIDE_BTN已经是真值事件里不再追加按钮界面上的按钮就消失了。3.4 刷新工具栏的几个坑第一条坑是刷新顺序。如果你既要刷新表格数据又要刷新工具栏建议先REFRESH_TABLE_DISPLAY再REFRESH_TOOLBAR。顺序反了有时候会出现一次闪烁个别版本还会把自定义按钮的状态错乱。第二条坑是输出缓冲。某些SAP GUI版本下调用完REFRESH_TOOLBAR后界面没有立即变化原因是控制器的输出还挂在接口缓冲区里。这时候补一句强制刷新CALL METHOD cl_gui_cfwflush( ).这相当于把当前SAP GUI的控制器请求全部推送到前端渲染是排查“工具栏刷新无效”时百试百灵的一招。4. 方案三置灰、切换状态等变体“隐藏”并不是唯一选择实际业务中还有两种常见变体分别是“置灰不可点”和“整个状态切换”。这两种在特定场景里甚至比隐藏更实用。4.1 不彻底删除置灰更稳妥隐藏的缺点在于按钮消失后用户不知道这个功能存在。如果业务只是不允许重复执行但希望用户看到“这个动作已经做过了”置灰是更好的交互选择。对ALV Grid工具栏按钮STB_BUTTON结构里有个DISABLED字段置为X后按钮会变灰点击无响应。写法上就是在追加按钮时直接把字段带上CLEAR ls_button. ls_button-function MY_ACTION. ls_button-icon icon_execute_object. ls_button-quickinfo 已执行不可重复操作. ls_button-text 执行动作. ls_button-disabled X. APPEND ls_button TO e_object-mt_toolbar.这个方案有个隐藏好处按钮仍然占据工具栏位置图标排列不会因为删除而“跳变”。如果你的报表工具栏上有好几个按钮用“隐藏”会造成所有按钮向左移动视觉上非常突兀。除非业务明确要求“彻底看不到”否则我通常建议先考虑置灰。4.2 用两个GUI状态切换对于屏幕级按钮如果隐藏的是一整组按钮而非单独一个可以准备两个GUI状态。比如STATUS_ACTIVE带全部按钮STATUS_DISABLED去掉已执行按钮PBO里根据标志位任意切换IF gv_hide_btn abap_true. SET PF-STATUS STATUS_DISABLED. ELSE. SET PF-STATUS STATUS_ACTIVE. ENDIF.这种做法的优点是状态一目了然状态编辑器里看得见摸得着缺点是维护量翻倍。改一次按钮布局两个状态都要同步修改漏改一个就可能出现按钮不一致的问题。个人建议只在一组按钮需要成组显隐、且数量超过三个时使用。4.3 权限控制与业务规则的扩展最后再提一个常见扩展点。很多报表里“执行完隐藏”的本质是“该按钮没有操作权限了”。如果你们的权限控制用AUTH_CHECK那可以把判断埋在同一套机制里。比如在TOOLBAR事件里除了检查GV_HIDE_BTN还要检查用户权限IF gv_hide_btn abap_true OR NOT zcl_authcheck_user( Z_ACTION_AUTH ). RETURN. ENDIF.这样一套隐藏逻辑就能同时覆盖“执行一次后隐藏”和“无权限用户不显示”的两种需求不用写两套代码。5. 常见问题与排查实战记录这部分把多年踩坑经验整理成速查逻辑遇到按钮不消失、界面闪烁、快捷键误触发等问题时可以直接对着排查。5.1 按钮为什么没消失先确认触发点这是出现频率最高的问题。拿到一个“按钮隐藏失败”的工单先不要急着改代码而是花两分钟确认按钮到底属于哪一类。一个很实用的排查方法在TOOLBAR事件处理程序里打一个断点重新进一次报表。如果断点命中说明按钮走的是ALV自带工具栏要去检查GV_HIDE_BTN标志位和REFRESH_TOOLBAR调用。如果断点根本不命中说明按钮来自屏幕GUI状态那问题多半出在PBO的EXCLUDING逻辑。另外检查功能码匹配时要特别注意大小写和空格。APPEND MY_ACTION和按钮上写的my_action不是一回事工具栏上肉眼看不出来系统却严格区分。排查时把PAI里拿到的SY-UCOMM或事件里的E_UCOMM直接显示出来跟排除表里的字符串逐字比对是最靠谱的。5.2 隐藏后布局跳变这个问题不属于“失败”而是“不好看”。ALV自身工具栏上按钮是连续排布的隐藏掉一个后面的按钮会整体左移。如果不想看到这种跳动优先改成置灰其次可以在隐藏的位置保留一个分隔符按钮。分隔符类型在STB_BUTTON里通过BUTN_TYPE S实现它占据一个固定槽位视觉上是一条竖线比按钮消失更自然。5.3 导出Excel/PDF时按钮还在如果你用的是ALV Grid自带的导出功能导出的内容只有单元格数据不存在“按钮是否导出”的问题。但如果你把ALV做成了HTML格式导出或者进行了屏幕截图级别的打印那按钮是跟着屏幕走的。这种场景下唯一能做的就是确保隐藏逻辑在导出前已经执行别让用户一边导出一边看到不该出现的按钮。真正的风险点在于按钮虽然隐藏了但功能码没有完全失效。如果ALV布局里配置了上下文菜单、快捷键等功能用户可能通过其他路径触发同一个功能码。所以隐藏按钮的同时建议在业务逻辑入口加一道保护IF gv_hide_btn abap_true. MESSAGE 该操作已执行不能重复触发 TYPE E. ENDIF.这道保护虽然肉眼看不到却是防止数据重复处理的关键。5.4 快捷键仍可触发屏幕GUI状态下你很可能给MY_ACTION配置了一个功能键比如F8。用EXCLUDING隐藏按钮并不代表快捷键也失效。用户按F8功能码依然会传到PAI。解决方法是双保险PBO的排除表里处理按钮显示PAI的模块里用标志位拦截功能码CASE sy-ucomm. WHEN MY_ACTION. IF gv_hide_btn abap_true. MESSAGE 操作已完成 TYPE S DISPLAY LIKE E. CLEAR sy-ucomm. RETURN. ENDIF. PERFORM run_business_logic. ... ENDCASE.同理ALV工具栏按钮如果设了快捷键也要在USER_COMMAND事件里做同样的判断。6. 一次真实排查过程从“无效”到“一键隐藏”的复盘分享一个亲历的排查过程完整呈现遇到这类问题时应该具备的分析思路。那是一个对账报表项目业务要求“生成对账文件”按钮只能点一次。第一次实施时开发用屏幕GUI状态加了一个功能码PBO里通过EXCLUDING排除测试时按钮确实消失了。但上线后某些用户反馈按钮仍在怎么刷新都不消失。排查时第一件事就是确认按钮归属。打开状态编辑器确实有MY_ACTION排除逻辑也写了。奇怪的是同一套代码有的环境生效有的环境不生效。反复对比后发现不生效的环境里ALV的工具栏设置里勾选了“显示ALV自带工具栏”而这个按钮其实是在TOOLBAR事件里又追加了一个同名功能码的按钮。屏幕状态上的按钮已经被排除了但ALV工具栏里还有一个同名按钮人称“替身”。真正的按钮在TOOLBAR事件里追加EXCLUDING根本管不到。解决方案就是前文说的在TOOLBAR事件里加GV_HIDE_BTN判断不追加按钮执行完业务逻辑后调用REFRESH_TOOLBAR。这个案例的教训只有一句话先分清楚你面对的是哪个按钮再去套方案。命名、位置、事件入口三者对不上再正确的代码也是空转。7. 收尾我自己在实战中的习惯做这个功能做多了以后我逐渐形成了几个固定习惯写在这里供参考。第一不管按钮是屏幕级还是ALV级我都在代码里统一维护一个“业务动作完成”标志位而不是为每个独立功能码单独写判断。标志位的语义是“该业务流程是否已走完”而不是“某个按钮是否被点击”这样后续加第二个、第三个同类按钮时逻辑复用性很强。第二能用置灰尽量别用隐藏除非业务明确说“不能让用户看到入口”。置灰既能传达状态又不会破坏工具栏排列用户体验好很多。第三隐藏按钮的同时一定在业务逻辑入口做二次校验用代码挡住重复触发不要把安全边界完全寄托在UI上——UI只是障眼法逻辑才是底线。最后再分享一个小技巧。如果你的REFRESH_TOOLBAR在某次改造后突然不好使了先检查一下该ALV网格是否被包在某个自定义容器里容器重建会导致网格引用失效。这时候直接重建网格比反复刷新更干净隐藏逻辑自然也会因为新网格的TOOLBAR事件重新触发而生效。这种“治标变治本”的处理方式会让你在后续维护时省掉不少莫名其妙的Bug。

相关新闻

红酒质量预测实战:线性回归三求解器对比与工业部署

红酒质量预测实战:线性回归三求解器对比与工业部署

简介:本资源是一份面向Python机器学习初学者与数据科学实践者的线性回归实战教学包,聚焦红酒质量预测这一经典回归任务,帮助读者掌握从数据清洗、探索性分析到模型训练与评估的完整建模流程。压缩包共6个文件(3个Python脚本、2个C…

2026/10/12 12:55:06 阅读更多 →
Python实现基于商品的协同过滤图书推荐系统:ItemCF从数据到Top-N

Python实现基于商品的协同过滤图书推荐系统:ItemCF从数据到Top-N

简介:一份基于商品的协同过滤算法实现的图书推荐系统完整工程,面向计算机相关专业学生、毕设开发者及推荐算法初学者。项目依托豆瓣图书与评分数据,基于items协同过滤思想设计推荐逻辑,以Django搭建Web框架并配合MySQL存储&#x…

2026/10/12 12:55:06 阅读更多 →
claude code首次登录报错 Unable to connect to api.anthropic.com:把 endpoint 改到 TaoToken 的排查清单

claude code首次登录报错 Unable to connect to api.anthropic.com:把 endpoint 改到 TaoToken 的排查清单

/* 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 12:55:06 阅读更多 →

最新新闻

website-rebuild-skill 源码化阶段:如何把逐字移植的机器产物重构成人能读的工程

website-rebuild-skill 源码化阶段:如何把逐字移植的机器产物重构成人能读的工程

【免费下载链接】website-rebuild-skill 复刻网站的 Agent Skill:抓只读镜像、从压缩代码逐行还原、自动比对验收。An agent skill that mirrors a website, rebuilds it from the minified code, and verifies the result with automated diffs. 项目地址&#xff…

2026/10/12 13:41:54 阅读更多 →
基于SpringBoot的大健康养老公寓管理系统:从毕设选题到答辩全攻略

基于SpringBoot的大健康养老公寓管理系统:从毕设选题到答辩全攻略

1. 为什么选“大健康养老公寓管理”这个题目每年到这个时间点,总有同学来找我聊毕业设计的事,问得最多的就是:有没有合适的题目推荐?要求还五花八门——好过审、工作量够、技术栈主流、最好还能润色到简历里。我通常会反问一句&am…

2026/10/12 13:41:54 阅读更多 →
CAD二次开发中点在多边形内的高精度实时判断方案

CAD二次开发中点在多边形内的高精度实时判断方案

1. 这不是数学题,是CAD里每天都在发生的“位置判断”实战在CAD二次开发的实际项目中,“点是否在多边形内”绝不是教科书里一个画个示意图就能打发的几何问题——它是某高校土木系BIM协同平台里构件自动归类的触发条件,是某工业设计公司电缆布…

2026/10/12 13:41:54 阅读更多 →
动态规划空间压缩实战:前缀和与后缀最大值求解两段不重叠子数组最大和

动态规划空间压缩实战:前缀和与后缀最大值求解两段不重叠子数组最大和

1. 从一道“数学考试”题看动态规划的空间压缩技巧“数学考试”这个标题乍一看像是讲备考策略,实际上它是一道经典的算法题,出现在某在线编程平台的每日一题栏目中。题目的核心是:给定一个长度为 n 的整数序列,要求选出两个不重叠…

2026/10/12 13:41:54 阅读更多 →
NGS-GNN:面向临床响应预测的图神经网络实战

NGS-GNN:面向临床响应预测的图神经网络实战

简介:本资源是一个面向生物信息学初学者与机器学习实践者的轻量级教学项目,聚焦于下一代测序(NGS)数据分析与Python建模的交叉实践。项目以Jupyter Notebook为核心载体,提供可复现的端到端分析流程,涵盖环境…

2026/10/12 13:41:54 阅读更多 →
C语言播放《下山》:从Beep到WAV的音频编程全解析

C语言播放《下山》:从Beep到WAV的音频编程全解析

前段时间在编程群里看到有人甩了个标题:「疯狂的往左」用 C 语言播放《下山》。一看名字就知道,这是典型的整活向练手题——不用图形界面,不用现成的音乐库,纯粹拿 C 语言的朴素能力让电脑把这首国风歌“唱”出来。我第一次见这种…

2026/10/12 13:40:52 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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/11 10:45:37 阅读更多 →
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/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练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/11 14:36:54 阅读更多 →