news 2026/9/18 3:42:29

OA与SAP RFC接口对接实战:从报销场景看财务凭证同步

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OA与SAP RFC接口对接实战:从报销场景看财务凭证同步

OA和SAP的RFC接口对接,我前前后后做了好几个项目,从最早的财务凭证同步,到后来的人力组织架构集成,再到这次员工报销,算是把这条链路摸了一遍。这篇就把报销场景下,OA通过RFC调用SAP接口的完整落地过程写出来,包括设计思路、核心实现、联调踩坑和运维心得,给正要干这活的兄弟一个参考。

先说清楚这个需求是怎么回事。员工报销这个场景,在很多企业里都是行政或财务线下手工处理:员工在OA里提单、打印、签字、贴票,财务再手工录入ERP系统。流程长,效率低,还容易出错。其中一个关键痛点就是,报销单在OA审批完成后,需要把报销数据同步到SAP系统里生成对应的财务凭证。这里的“同步”不是导Excel,不是人工照着抄,而是OA系统通过SAP对外开放的RFC接口,把数据直接传输过去,实现系统间无缝对接。

先说RFC是什么。RFC是SAP系统里用来做远程函数调用的协议,全称是Remote Function Call。通俗点说,SAP就像一个封闭的大楼,RFC就是这栋大楼对外开放的窗口。外部系统(比如OA)要跟SAP交换数据,大多通过RFC这个窗口。对于SAP顾问和开发人员来说,RFC几乎是所有接口集成的基石。在SAP里,RFC对应的对象是“函数组”和“函数模块”,用事务码SE37可以查看和测试。

做这套集成,我建议先搞清楚几个角色和边界:OA侧一般由OA实施方或企业IT负责,主要负责表单建模、审批流配置、以及调用外部接口的逻辑;SAP侧由ABAP开发或SAP顾问负责,负责写RFC函数、配置权限、处理数据校验和错误日志。两边需要先约定好接口规范,否则后面会非常痛苦。

1. 项目整体设计与思路拆解

真正动手之前,我习惯先花一天时间想清楚整体架构,而不急着去写代码。这个项目虽说是“OA调用RFC”,但背后牵扯到主数据、审批流、财务规则、错误处理、日志追踪等一大堆事。设计阶段没想清楚,联调阶段就会到处打补丁。

1.1 核心流程梳理:从提单到入账的全链路

我先画出报销的业务流程,再逐个环节标注系统边界。

员工在OA里发起报销单,填写基本信息:报销人、部门、费用类型、金额、成本中心、事由、发票信息等。OA表单的字段设计要贴近SAP侧需要的字段。接着走内部审批流,可能是部门经理、财务、总经理等多人审批。审批全部通过后,把这个单据的状态标记为“审批完成”,然后把数据打包,调用SAP的RFC函数,写入SAP。SAP根据传入的数据进行校验和过账,生成会计凭证。SAP返回一个凭证号或报错信息,OA接收并更新单据状态。员工后续可以在OA里看到“已入账”的状态和SAP反馈的凭证号。

这里有个很容易被忽视的点:报销单不一定一次就能成功写入SAP。比如成本中心不存在、费用类型未维护、金额超预算、税码不匹配等,都可能导致SAP拒绝。所以OA侧必须有失败重试和人工介入机制。

1.2 方案选型:为什么用RFC而不是其他方式

业界做SAP和外围系统集成还有几种常见路线,包括中间件集成(比如通过ESB或SAP PO/PI平台)、直接数据库表读写、Web Service方式。很多人会问为什么不直接用HTTP接口替代RFC。

我的选型逻辑是这样的:如果企业SAP版本较老或没上PI,最稳妥的还是RFC,因为这是SAP原生的通信机制,性能和事务处理有保证。RFC有同步调用和异步调用,报销场景用同步比较好,OA发起调用后等待SAP返回结果,便于及时处理错误。RFC支持事务性调用(tRFC),对网络异常和数据一致性有较好的处理机制,这在财务数据场景特别重要。虽然现在主流趋势是RESTful接口,但很多SAP系统尤其是ECC版本,RFC依然是最高效、最稳定的选择。ESA架构下的服务接口最终底层也大多是RFC或BAPI函数封装出来的。

拿报销场景来说,写一个RFC函数,入参是报销单号、公司代码、报销人、成本中心、总金额、明细行项目等,出参是凭证号、返回码、消息文本。OA拿到这些结构化数据做后续处理,非常干净。而且SAP RFC的报错机制非常成熟,能精确到某个字段的校验规则,这在财务集成里太重要了。

1.3 异常处理与幂等设计:别让财务数据出现“脏账”

做接口第一要务,不是功能跑通,而是保证数据不出错。报销数据直接关系到钱,一旦重复调用、漏调用、或数据错位,后果很麻烦。所以设计时必须考虑幂等性。

我的做法是:SAP的RFC函数里,入参必须带一个“外部单据号”字段(比如OA的报销单号)。SAP侧先根据这个外部单据号查一下是否已处理过,如果存在就返回已有的凭证号,不重复生成。这一步非常关键,因为网络超时后OA往往会重发请求,没有幂等控制就会生成两张凭证。

另外要注意,RFC函数的每一个字段都要做必填校验、长度校验和值域校验。比如成本中心必须存在且未锁定,费用类型必须配置了对应的会计科目,金额不能为零或负数,成本中心和费用类型的组合是否符合财务规则。这些校验放在SAP侧,就是最强的一道防线。

2. RFC接口开发详解:不只是写个函数

接下来就是SAP侧的ABAP开发工作。我默认读者有一定ABAP基础,但即使你没写过ABAP,下面这些逻辑也有助于你理解接口是如何工作的。

2.1 数据结构设计:入参、出参、表结构怎么定

RFC函数的入参和出参设计,是整个接口设计的核心。如果字段漏了,后面改起来很麻烦。我的建议是宁可多一点预留字段,也不要等联调的时候才发现缺字段。

入参一般分成两部分:抬头数据和行项目数据。具体设计如下:

  • 抬头数据:外部单据号(必填)、公司代码(必填)、报销人编号、报销人姓名、部门、成本中心、费用类型、总金额(必填)、币种(必填)、过账日期(必填)、凭证日期、文本说明、审批人、审批日期。
  • 行项目数据:内部表结构,包含行项目号、费用类型、成本中心、金额、利润中心、描述文本等。
  • 出参:返回码(成功/失败)、凭证号、消息类型、消息文本、明细错误信息表(包含错误字段、错误原因)。

这里我用了一个技巧:出参里加一个“明细错误信息表”,因为经常出现一批报销数据里只有一两条有问题的情况,如果只返回一个简单的错误文本,OA侧没法快速定位问题。有了明细表,OA可以批量展示错误原因。

SAP里创建数据结构用事务码SE11。先建抬头结构、行项目结构、错误信息结构,然后建函数组,最后用SE37创建RFC函数。创建RFC函数的时候,需要勾选“远程启用的模块”,这个属性一定要勾上,否则外部系统无法调用。我见过不少新手写好了函数但忘记勾选这个属性,折腾半天。

2.2 ABAP实现核心逻辑:校验、过账、日志

在ABBAP代码里,一般步骤是这样的:

第一步,接收输入参数并初始化返回消息。建议这里先对输入参数做一次非空判断,哪些是必填的,缺失就立刻返回错误,避免后面程序DUMP。

第二步,校验数据:查一下外部单据号是否重复过账,如果已经存在,直接返回已有凭证号。校验成本中心是否有效,用CSKS表或BAPI校验。校验费用类型对应科目,用事务码OBYC或相关配置表。校验金额合法性等等。如果某个行项目报错,不要把整个RFC都返回失败,而是把所有错误行记录下来,统一返回消息。

第三步,调用BAPI生成会计凭证。这里推荐用BAPI_ACC_DOCUMENT_POST,这是SAP标准的会计凭证过账BAPI,财务集成几乎是标配。如果过账成功,用BAPI_TRANSACTION_COMMIT提交事务,返回凭证号和过账日期。如果失败,则BAPI_TRANSACTION_ROLLBACK回滚事务,并收集BAPI返回的错误信息。

第四步,写日志。我知道有些项目图简单,不写SAP侧日志,依赖OA侧记录。但我强烈建议SAP侧至少要写一个自定义的日志表,记录每次调用的完整入参、出参、错误信息、调用时间和调用方系统。为什么?因为线上排查问题的时候,OA侧日志只能证明“我发起过调用”,SAP日志才能证明“我收到了什么、处理了什么、返回了什么”。两边一对照,问题定位速度能快好几倍。

2.3 接口权限与安全配置:别把SAP大门敞开

SAP RFC接口一旦对外开放,就相当于把SAP的业务操作能力开放给了外部系统,如果权限配置不当,后果会很严重。这不仅是技术问题,也是风险问题。

SAP里创建RFC连接用事务码SM59。这里面要配置目标系统(就是哪个外部系统来调),TCP/IP连接类型,程序ID,网关主机和网关服务等。配置完以后,程序ID需要和外部调用方(比如Java或ABAP程序)侧的SAP连接配置一一对应。

权限方面,建议为对接的RFC用户单独创建一个授权角色,只分配使用相关函数组、相关RFC模块的权限。不要给SAP_ALL这样的超级权限。身边有的公司图省事,直接用DDIC或SAP*用户对接外部系统,这是非常危险的,一旦账号泄露,整个SAP系统就暴露了。我见过有企业用DDIC调用了两年,后来审计发现问题才整改,期间换过好几个外包人员,账号密码都公开在网盘里。

另外,在SICF事务码里,如果RFC是通过HTTP Web Service方式暴露的,一定记得配置好路径和认证。不要用默认的sap/bc/soap/rfc路径不加任何控制,不然谁都能调用。

3. OA侧对接RFC的实操过程

接下来我们换到OA侧的视角。这里我分别讲一下泛微OA和致远OA的常见做法,因为这两家在市场上用得多,而且实现方式有差异。

3.1 泛微OA对接RFC:通过封装HTTP请求实现

泛微OA(E-cology)本身是基于Java的,它对SAP集成有比较成熟的方案。常见做法是,在OA服务器上部署一个Java的中间件或Servlet,用来接收OA表单的数据,然后通过JCo(SAP Java Connector)调用SAP的RFC函数。

整体链路是这样:泛微的建模引擎或费用报销模块,在流程节点配置一个“回调类”或“集成插件”,把审批通过后的数据发送到这个Java中间件,中间件解析数据后用JCo调用SAP RFC,然后接收返回结果并更新OA表单字段或流程状态。

泛微里配置接口时,一般会在“集成中心”或“接口配置”里维护一个接口地址。你可以在费用模块的后台节点配置“外部接口”,指定URL、请求方法(POST)、JSON格式的请求体。当流程到达某个节点时,把这个节点设置为“自动节点”,执行一次接口调用,并解析返回结果,根据返回码决定流程走向。

这里最需要注意的是数据格式的转换。OA表单通常是关系型数据,而RFC入参是层级结构(抬头+行项目)。所以Java中间件里要做一次数据组装,把扁平化数据转换成对应的结构体。一般用JsonObject和JsonArray来组装,重点注意字段类型:比如金额字段,SAP的BAPI里是金额类型(CURR),对应Java的BigDecimal,避免用Double丢精度。

另外,OA侧调用RFC的时机也很讲究。我建议在“审批完成后”触发,而不是在“提交时”或“审批中”触发。因为审批中的单据数据还不稳定,过早同步到SAP会产生垃圾数据。我自己踩过这个坑,有一次上线时图省事放在提交节点,结果员工反复修改报销单,导致SAP里生成了一堆错误凭证。

3.2 致远OA对接RFC:借助ESB或定制插件

致远OA(A8/V5等)相对泛微来说,接口能力弱一些,但也能实现。致远的集成方式一般有两种。

第一种是通过ESB总线中转。致远OA的表单数据,在流程结束后通过事件触发发送到ESB(企业服务总线),ESB做数据映射和协议转换,然后通过SAP适配器调用RFC。这种方式的好处是解耦,OA不用关心SAP细节,后续换系统也方便。

第二种是直接写二次开发插件。致远有CAP(Collaborative Application Platform)自定义应用平台,可以在里面写Java代码,通过JCo调用SAP RFC。这种方式更直接,适合没有ESB的企业。

如果你走直接调用的路线,我建议在致远里做一个“数据同步中间表”机制。具体情况是这样的:OA表单的数据先写入一张中间表,然后定时任务或事件触发,从中间表读取未同步的数据,组装调用RFC,成功后更新同步状态字段。这样做的好处是:一是方便排查,看中间表就知道数据卡在哪里;二是避免在表单保存的瞬间去调外部接口,导致页面卡死;三是可以做成批量定时同步,减轻SAP压力。

3.3 JCo引入与连接配置要点

不管是泛微还是致远,Java侧调用RFC都离不开SAP JCo。这里有个实用经验——JCo库依赖本地的动态库。SAP官方提供的JCo包里有libsapjco3.so(Linux)或sapjco3.dll(Windows),在部署的时候一定要把对应平台的动态库放到服务器的java.library.path里,否则会报“UnsatisfiedLinkError”。

我印象里有一个项目,开发环境是Windows,部署环境是Linux,开发的时候一切正常,一上生产就报错。排查了半天才发现是动态库没放对,而且64位和32位也容易混淆。所以建议项目一开始就确认好服务器的操作系统位数,把相应的JCo包和动态库备齐。

连接SAP需要配置的参数包括:jco.client.ashost(SAP应用服务器地址)、jco.client.sysnr(系统编号)、jco.client.client(集团)、jco.client.user(调用用户)、jco.client.passwd(密码)、jco.client.lang(语言,通常中文是ZH)。如果用了负载均衡,还需要配jco.client.mshost和jco.client.group。另外,Java的服务建议新建一个单例的DestinationDataProvider来管理连接,不要每次调用都重新建连接,那样性能很差。

3.4 OA侧的数据准备与字段映射实战

OA表单和SAP字段的映射是一个细致活,我建议专门做一张字段映射表,两边开发各持一份,有争议时就查表。特别是这些场景:

  • 公司代码:OA侧如果有多家法人公司,界面上最好给一个下拉框选择,值域和SAP配置保持一致。不要用“总公司”“分公司”这种中文名称直接传,SAP只认公司代码。
  • 成本中心:有的公司用COA结构,成本中心在全集团唯一;有的公司出现多个成本中心编号一样的情况,这种情况必须确认是否要带控制范围。
  • 费用类型:这是一个容易出问题的字段。OA里往往是“差旅费”“办公费”“招待费”这样的业务术语,SAP里对应的是一个费用科目或内部订单。建议在OA表单里做数据字典映射,而不是让用户填一串数字。
  • 金额与币种:币种默认人民币,但有的报销单可能会涉及外币(如境外差旅费),所以要提供币种字段。SAP的金额字段,精度保留两位小数,传输时不要传“1000.00”以外的字符串格式,最好明确传BigDecimal。
  • 报销人分公司:如果需要按分公司区分部门负责人过账,建议在OA表单里设置一个只读字段,由后台逻辑自动带出对应公司代码,防止员工乱选。

4. 联调环境准备与常见问题排查实录

接口开发完只是第一步,联调阶段才是真正让人头疼的地方。我总结一下最常见的几个问题和排查思路。

4.1 RFC连接通道怎么验证是否打通

联调的第一步,验证RFC连接是否正常。SAP侧用事务码SM59测试连接。登录SAP GUI,输入SM59,找到你配置的RFC目的地,双击进去,点“连接测试”按钮。如果返回“连接成功”并且能看到服务器信息,说明SAP侧连接没问题。

如果连接失败,优先级排查顺序是这样:检查SAP服务是否启动,用SAPGUI登录一次看看。检查SM59配置是否填对了主机、系统编号和程序ID。检查防火墙是否放行了SAP的端口,SAP的RFC通信默认用33xx端口(xx是系统编号),比如系统编号00就是3300端口。检查网关服务是否启动,用事务码SMGW查看。

如果SM59测试正常,但OA侧调用还是报错,多半是JCo配置或程序ID不匹配。这里有个小细节:TCP/IP类型的RFC目的地必须设置程序ID,这个程序ID是由外部程序注册的。意思就是,先启动Java中间件,让它用这个名字向SAP网关注册,然后SAP才能调用到外部程序。不过严格来说,报销场景是OA主动调SAP,不是SAP回调OA,所以一般是JCo直接连接,不太涉及程序ID注册。如果你看到“Gateway Timeout”或“Logon failed”这样的错误,先查账号密码和用户锁定状态。

4.2 SAP侧返回报错:常见错误码和含义分析

RFC联调时,OA侧重仓促得到一堆错误码,看着很头疼。我把常见错误总结成一个速查表:

错误类型常见错误信息可能原因解决办法
连接类Logon failed / User locked账号密码错误、用户被锁定、密码过期在SU01里重置密码并解锁
连接类Gateway Timeout防火墙不通、SAP系统负载高、RFC目标未配置检查网络端口、SM59测试
参数类Field xxx is required必填字段未传值检查OA侧字段映射和中间件代码
参数类Number range object not defined凭证号码范围未配置用事务码FBN1维护会计凭证号码范围
数据校验类Cost center xxx not valid成本中心不存在或未维护有效日期在CSKS或KSH1里维护成本中心
数据校验类Company code xxx not defined公司代码未配置或未分配给科目表检查OX02和OBY6配置
财务过账类Only simple tax calculation is supported税码配置问题或税额计算方式不支持检查FTXP税码配置和税码在科目中的定义
财务过账类Account xxx requires a cost center科目缺成本中心字段检查事务码OBYC或FS00的字段状态变式

看到这类错误,不要盲目改代码。财务相关的报错大都是主数据或配置问题,先查SAP配置,再怀疑代码。我见过有项目调试了一周的“科目未找到”,最后发现是OA侧把科目号传错了,多了一位空格。

4.3 重复凭证怎么防:幂等性实战经验

前面提到幂等性设计,这里再展开讲讲实际项目里的校验细节。SAP里同步RFC是一次性同步调用,但网络不稳定时,OA侧很容易出现“请求超时但SAP已处理”的假象,导致OA自动重发。这时如果SAP函数没有幂等控制,就会生成重复凭证。

我在RFC函数里会加这样一段逻辑:入参里有主子号字段。在过账前,用SELECT单条语句去财务凭证抬头表BKPF,按“外部单据号+公司代码+创建日期”组合查询,看是否已有凭证。如果已经存在,直接返回已有的凭证号,不再过账。

注意,这里有个细节:查询凭证抬头表时,一般是用“参考事务码”或“分配参考号”字段。但用分配参考号有一个坑——允许多张凭证拥有相同的分配参考号,所以查询条件要慎重。我建议在BAPI_ACC_DOCUMENT_POST里,把外部单据号填入“参考”字段(BKPF-XBLNR),然后在RFC函数里根据这个字段+公司代码+过账状态综合判断,同时还要限制查询范围只查最近一段时间(比如最近3天),避免数据量大后查询太慢。

还有一个做法,就是利用SAP的“重复检查”功能。在BAPI_ACC_DOCUMENT_POST里有一个参数,可以指定一个“重复检查标准”。但ABAP实现起来比较绕,不如自己写SELECT判断直观。两个方案我都有试过,最终还是倾向于自己控制逻辑,查询范围设置合理,性能影响很小。

4.4 OA侧超时和重试机制设计

OA调用SAP RFC时,最怕的是长时间无响应。RFC同步调用的默认超时时间可能比较长(取决于网关配置),但OA那边的HTTP请求如果超时,前端页面就会卡住甚至报错。

我的建议是:OA侧设置合理的超时时间,比如10秒或15秒,超时后就标记该单据为“同步中”状态。然后提供一个手工重试按钮或定时任务,在非高峰期重新推送。为什么不用自动无限重试?因为如果是SAP主数据问题(比如成本中心被删了),自动重试多少次都是失败的,只会增加系统压力。更合理的做法是失败后落到一张“异常单”列表里,由IT或财务人员查看错误信息,人工处理后重推。

还有一个体验技巧:如果单据量不大,可以用异步调用的方式,OA先把数据写入自己的“待同步”表,然后通过一个单独的后台任务去调用RFC,调用结果再通过日志或消息通知反馈给发起人。这样提单人的页面很流畅,不用等SAP慢吞吞地处理。如果同步在几百上千笔的批量导入场景,异步方案的优势更加明显。

4.5 日志追踪:一次报错怎么快速定位

上线之后,日志就是你的眼睛。SAP侧我建议把每一次RFC调用记录到一张自定义日志表,比如ZLOG表,字段包括:调用时间、外部系统、外部单据号、RFC函数名、入参(用STRING存储)、出参、返回码、错误信息。入参如果太长,可以只保留关键字段,或者考虑用存储介质分块存储。

OA侧也要保留完整的调用记录,包括:请求时间、请求内容、响应时间、响应内容、重试次数、最终状态。排查问题时,两边日志对照着看,三分钟就能定位问题是出在OA数据组装、网络传输、还是SAP侧配置或代码。

我自己常用的排查路径是:先看OA侧日志,确认请求是否发出,请求体里的字段值是否正确。然后看SAP侧日志或ST22(ABAP运行时错误),看有没有程序报错。如果SAP侧没有查询到任何日志记录,那就是请求根本没到SAP,检查网络和连接配置。如果SAP侧有日志但返回错误,就根据错误码查主数据和配置。这套流程能覆盖九成以上的问题。

5. 从“能用”到“好用”:几个提升体验的优化建议

接口跑通只是起点,真正让业务顺畅运行,还要做一些优化。下面这几个建议,按优先级排,每个都来自项目实战。

第一个建议是同步状态的可视化。在OA报销单详情页,把接口同步状态展示成一眼能看懂的标签:未同步、同步中、同步成功、同步失败。同步成功的显示SAP凭证号,同步失败的显示具体的错误原因。这样业务人员不用找IT就能知道进度,IT也不用成天回答“我这个单据咋没入账”的问题。

第二个建议是数据准确性前置校验。与其让SAP在过账时报错,不如在OA表单保存或提交时,先做一次基础校验。比如:成本中心是否在有效范围内、报销金额是否超预算、费用类型是否已停用。OA侧校验收敛了大部分简单的错误,SAP侧压力小很多,业务体验也好很多。当然,SAP侧校验还是不能省,它是最终防线。

第三个建议是和预算控制的联动。我见过一些公司做报销接口,只做了数据同步,没有把预算控制纳入进来。员工在OA提交报销单,系统直接允许他提交满额预算的发票,等到SAP过账时才发现超预算。更友好的体验是:在OA提单时,弹出当前成本中心或部门的剩余预算,超了则不允许提交或需要额外审批。这需要OA侧和SAP侧预算数据打通,技术上完全可行,就看业务部门愿不愿意推动。

第四个建议是定期核对机制。接口再怎么稳,也架不住极端情况(比如某天网络中断了一小时,重试消息堆积)。我建议每个月月末,财务核对一下SAP里的报销凭证和OA里已审批的报销单,有没有遗漏。不要完全信任接口的“成功”标志,用数据本身做交叉验证,心里才踏实。

6. 写在最后的几点体会

这个项目做下来,我最大的感受是:接口对接,技术只占一半,另外一半是业务理解、异常场景预判和沟通协调。RFC也好,REST也罢,都只是工具,真正能落地的系统,靠的是对业务流程的深入理解,以及设计阶段就把所有异常分支考虑周全。

有一点想特别提醒:报销接口牵扯到钱,宁可慢一点、稳一点,也不要为了追求“上线速度”而跳过异常处理、日志设计和权限管控。我见过有同事因为联调时间紧张,把SAP侧校验全部省略,只做了数据写入,结果上线第一周就出了三笔错误凭证。返工修改的精力,远大于一开始好好设计校验逻辑的精力。这些踩过的坑,希望对正在做或准备做类似OA与SAP集成的朋友有帮助。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/18 3:41:20

Anaconda3-5.2.0:Python 3.6兼容性锚点与Windows老旧环境部署指南

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

作者头像 李华
网站建设 2026/9/18 3:39:31

7款免费PDF工具替代Acrobat订阅:按任务类型选型的开源方案

7款免费PDF工具替代Acrobat订阅:按任务类型选型的开源方案 【免费下载链接】Adobe-Alternatives A list of alternatives for Adobe software 项目地址: https://gitcode.com/GitHub_Trending/ad/Adobe-Alternatives 月底对账,账单里又有一笔 Ado…

作者头像 李华
网站建设 2026/9/18 3:36:03

AI自动生成单元测试用例实战:从Vue3到嵌入式C的工程落地

最近总有人问我:AI自动化测试都这么火了,那到底能不能让AI自动生成单元测试用例?我的回答通常是“能,但你必须用工程手段约束它”。这真不是一句场面话。我最近在自己参与的几个项目里反复折腾了好几轮,从Vue3前端项目…

作者头像 李华
网站建设 2026/9/18 3:34:16

PDF补丁丁:免费修复失效书签、合并拆分文档的完整PDF工具箱教程

PDF补丁丁:免费修复失效书签、合并拆分文档的完整PDF工具箱教程 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: h…

作者头像 李华
网站建设 2026/9/18 3:33:38

没论文代码库也能跑 MCP?TaoToken 先解决 Key

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

作者头像 李华