news 2026/11/6 3:52:58

SAP公司间项目STO(Q类型)配置与闭环操作指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SAP公司间项目STO(Q类型)配置与闭环操作指南

简介:本资源是一份面向SAP系统操作员与项目经理的公司间项目(Q)STO全流程实践指南,聚焦跨公司采购场景下的配置、执行与排错,解决CO科目分配错误、收货失败、开票异常等高频实操痛点。文档以真实业务案例为蓝本(A公司7010向B公司7090发起项目采购),完整覆盖SFW5功能激活、OBYA清账科目维护、CJ20N项目创建、ME21N采购订单、VL10B交货单生成、VL02N过账及MIGO收货等20+关键事务代码的配置逻辑与操作要点,并附10余类典型问题的现象、原因分析与分步解决方案。资源为1个3.52MB的Word文档(.docx),结构清晰,含业务背景、系统配置、分步操作(含事务码标注)、问题排查四大模块,便于按需查阅与快速上手。目前已有654人学习下载,适合需在SAP中规范执行公司间项目采购与交货的中初级实施人员及业务用户。

1. 公司间项目(Q)STO:为什么一个看似标准的库存调拨,会在WBS元素上反复翻车?

你刚接手A公司向B公司走项目型STO(Stock Transfer Order)的任务,事务代码都背熟了:CJ20N建项目、ME21N下采购订单、VL10B跑交货、VL02N过账、MIGO收货——流程图印在脑子里,SAP GUI打开就开干。结果第一步采购申请审批就弹出红框:“CO科目分配对象属于公司代码 &3,不是 &4”。再往后,交货单能生成,但VF01开票时直接卡死在“找不到WBS元素”;MIGO收货提示“移动类型不支持项目库存”,查凭证却发现B公司明明已收第三方供应商货、项目库存已存在……这不是配置漏了,是整个跨公司项目流的逻辑断层了。这份《公司间项目(Q)STO配置与操作指南》不是教你怎么点菜单,而是帮你把Q类型STO从“能走通”拉到“稳闭环”:它专治三类典型失焦——WBS元素跨公司归属错位、项目库存与财务过账脱节、销售开票与采购收货链路断裂。适合已在SAP中独立操作CJ20N/ME21N/VL02N的进阶用户,尤其当你发现“同样用Q交货类型,别人能开票你不行”时,问题大概率出在SIMG路径里那几处没激活的开关,或OBYA里少配的一行清账科目。


2. 系统配置:LOG_MM_SIT激活、交货类型绑定与清账科目三件套

公司间项目(Q)STO不是普通STO的简单复制粘贴。它的核心差异在于:项目(WBS)作为成本归集载体,必须同时被采购方、供应方、交货方三方识别且会计语义一致。若只按标准STO配置,系统会默认WBS属于采购方公司代码,而B公司(供应方)的项目库存收货、交货过账、销售开票全因“WBS不在本公司代码下”被拦截。本章拆解三处硬性配置点,每一步都对应后续操作中的具体报错。

2.1 激活LOG_MM_SIT业务功能:让系统承认“项目也能走STO”

Q类型STO本质是“带项目号的跨公司库存调拨”,但SAP默认关闭项目相关STO的后台开关。若不激活,所有基于WBS的STO操作都会降级为普通物料移动,导致后续CO科目校验失败。

提示:LOG_MM_SIT是SAP标准业务功能(Business Function),控制项目库存参与STO的合法性。未激活时,即使事务代码能进入,系统也会在后台静默拒绝项目字段传递。

激活步骤如下:

# 事务代码:SFW5 # 在业务功能列表中找到:LOG_MM_SIT # 将其状态从"未激活"改为"已激活" # 保存并确认激活成功(系统提示"功能已激活")

参数说明:

  • LOG_MM_SIT是SAP ECC 6.0及以后版本中控制“项目库存用于STO”的关键功能标识;
  • 激活后,系统允许在ME21N创建STO采购订单时输入WBS元素,并在VL02N交货过账时将WBS作为CO对象写入会计凭证;
  • 注意:激活需在所有涉及公司代码(A公司7010、B公司7090)的客户端统一执行,否则会出现“部分公司能走通、部分报错”的割裂现象。

2.2 配置交货类型与项目类别:让Q交货单真正“认得”WBS

标准STO交货类型(如NLCC)不校验WBS,而Q类型必须强制绑定项目类别。若跳过此步,VL10B生成的交货单虽有项目号,但VL02N过账时无法将WBS写入物料凭证,导致后续MIGO收货无项目上下文,CO科目分配失败。

配置路径与关键设置:

配置项路径(SIMG)关键字段值说明
交货类型定义后勤执行 → 交货 → 定义交货类型交货类型Q必须新建或复制标准类型,不可直接用NLCC
项目类别TAN(标准项目类别)Q类型必须绑定支持项目的类别,TAN为SAP预置项目类别
交货项目类别定义后勤执行 → 交货 → 定义交货项目类别项目类别TAN双击进入,勾选"项目相关"(Project-relevant)
移动类型683(公司间交货发货)、107(公司间交货收货)必须与后续VL02N/MIGO实际使用的移动类型严格一致

验证方法:
事务代码OVLP查看交货类型Q的详细配置,确认“项目类别”栏显示为TAN;
事务代码OVLP→ 输入TAN → 查看“项目相关”字段为打钩状态。

2.3 维护跨公司清账科目:OBYA里那一行决定发票能否平账

公司间STO的本质是:A公司记一笔应付(给B公司),B公司记一笔应收(来自A公司)。若未在OBYA中为这对公司代码(7010 ↔ 7090)配置清账科目,VF01开票时系统无法生成跨公司应收凭证,MIRO校验采购发票时也因“无对应应付”而失败。

配置步骤(以A公司7010向B公司7090调拨为例):

# 事务代码:OBYA # 选择公司代码:7010(A公司) # 点击"新条目" → 输入: # 对方公司代码:7090(B公司) # 清账科目:例如 21900100(跨公司内部往来科目,需提前在FS00中创建) # 记账码:40(标准贷方记账码) # 保存 # 切换公司代码为7090 → 同样配置对方公司代码7010 → 清账科目相同(21900100)→ 记账码:50(标准借方记账码)

参数说明:

  • 清账科目必须是总账科目(G/L Account),且类型为“资产负债类”(B/S),不能是损益类;
  • 同一对公司代码的清账科目在双方必须完全一致(科目号、货币、字段状态组),否则VF01生成凭证时会提示“科目未维护”;
  • 血泪经验:很多团队在OBYA只配了一方(如只配7010→7090),忘了反向配7090→7010,导致B公司无法生成应收凭证,销售开票直接失败。

3. 操作全流程:从CJ20N建项目到VF01开票的九步闭环

配置只是地基,操作才是交付。本章按真实业务流还原九个关键操作节点,每个步骤标注必填字段、易漏校验点、凭证生成逻辑。重点不是“怎么点”,而是“为什么这一步必须这样填”。

3.1 CJ20N建A公司项目号:WBS结构决定后续所有流向

A公司(7010)是项目发起方,其WBS结构必须满足两个硬性条件:
① WBS元素必须启用“项目库存”(Project Stock)标志;
② WBS主数据中“公司代码”字段必须填写7010(不可为空或填其他公司代码)。

操作要点:

# 事务代码:CJ20N # 创建新项目 → 输入项目定义(如ZPROJ_Q_STO) # 进入WBS元素层级 → 双击最末级WBS(如ZPROJ_Q_STO-001) # 点击"项目概览"标签页 → 找到"库存管理"区域 # 勾选"项目库存"(Project Stock) # 在"公司代码"字段明确输入:7010 # 保存

逻辑说明:

  • “项目库存”勾选后,系统才允许在后续ME21N中为该WBS下达采购订单;
  • “公司代码=7010”是CO科目分配的源头依据,若此处为空,后续所有采购申请、订单、收货均无法通过CO校验;
  • 避坑:不要在WBS主数据中填写B公司7090——WBS属于A公司,B公司仅作为供应方参与,其库存由A公司WBS驱动。

3.2 ME51N建B公司采购申请:采购组织与工厂必须匹配B公司

B公司(7090)是A公司的供应商,因此采购申请必须以B公司为采购组织和工厂主体创建,否则MRP运行无法正确归集需求。

操作要点:

# 事务代码:ME51N # 采购组织:必须选择B公司对应的采购组织(如7090) # 工厂:必须选择B公司工厂(如7091) # 物料:输入需采购的物料号 # 数量:填写需求量 # 账户分配:选择WBS元素(即CJ20N中创建的ZPROJ_Q_STO-001) # 保存 → 获取采购申请号(如0000000001)

参数说明:

  • 采购组织与工厂必须属于B公司(7090/7091),这是MRP运行的基础维度;
  • WBS元素必须来自A公司(7010)的WBS,系统会自动校验该WBS是否启用项目库存;
  • 注意:此时采购申请的“采购组”可任意,但“采购组织”和“工厂”不可更改,否则后续ME21N无法引用该申请。

3.3 ME21N建B公司采购订单:STO类型+Q交货类型缺一不可

这是Q类型STO的核心操作。订单类型必须为UB(跨公司STO),且交货类型必须指定为Q,否则系统不会触发项目库存逻辑。

操作要点:

# 事务代码:ME21N # 订单类型:UB(跨公司STO) # 采购组织:7090(B公司) # 采购组:任意(如001) # 供应商:B公司自身(即供应商编号=7090,需在MK01中维护为供应商) # 项目:输入WBS元素(ZPROJ_Q_STO-001) # 行项目 → 交货类型:Q(必须手动输入,不可用F4选默认值) # 保存 → 获取采购订单号(如4300000176)

逻辑说明:

  • UB订单类型是SAP预置的跨公司STO专用类型,区别于标准采购订单(NB);
  • 交货类型Q必须显式输入,若留空或输错(如输成NLCC),VL10B将无法生成Q类型交货单;
  • 避坑:供应商必须是B公司自身(7090),而非第三方供应商——第三方供应商的采购走另一条线(ME21N下单给外部供应商),与Q STO无关。

3.4 MIGO收第三方供应商货:B公司项目库存的“第一块砖”

B公司收到第三方供应商货物后,项目库存才真正建立。此步是后续所有Q STO操作的前提,因为A公司调拨的“货”本质上是B公司已收第三方货的库存切片。

操作要点:

# 事务代码:MIGO # 移动类型:101(采购收货) # 参考凭证:输入第三方采购订单号(如4100000175) # 输入数量 → 过账 # 系统自动生成物料凭证(如5000001298)和会计凭证(如5000000002)

验证方法:
事务代码MB52→ 输入工厂7091 → 输入物料号 → 查看“项目库存”列,确认数量>0;
事务代码CJI3→ 输入WBS ZPROJ_Q_STO-001 → 查看“项目库存”余额,应与MIGO收货数量一致。

3.5 VL10B生成A-B公司间交货单:Q类型交货单的唯一入口

VL10B是生成Q类型交货单的标准事务代码。必须通过“交货单创建”而非“交货单处理”入口,否则无法关联WBS。

操作要点:

# 事务代码:VL10B # 选择"交货单创建"(Delivery Creation) # 输入:采购订单号(4300000176)、交货类型(Q) # 执行 → 系统列出可交货行项目 # 选择行项目 → 点击"创建交货单" # 系统生成交货单号(如800000123)

参数说明:

  • 必须在VL10B中明确指定交货类型为Q,若留空则默认为NLCC,后续VL02N无法过账;
  • 交货单抬头中“售达方”自动带出B公司(7090),“送达方”为A公司(7010),不可手动修改;
  • 注意:交货单行项目中“WBS元素”字段必须显示为ZPROJ_Q_STO-001,若为空则说明前序步骤WBS未正确传递。

3.6 VL02N交货单过账:移动类型683触发跨公司库存转移

VL02N是Q STO的“心脏操作”。过账动作将B公司项目库存物理转移到A公司名下,并生成跨公司会计凭证。

操作要点:

# 事务代码:VL02N # 输入交货单号(800000123) # 点击"过账"(Post Goods Issue) # 系统自动使用移动类型683(公司间交货发货) # 过账成功 → 生成物料凭证(如4900002188)

逻辑说明:

  • 移动类型683是Q STO专用发货类型,其后台配置已绑定交货类型Q和项目类别TAN;
  • 过账后,B公司工厂7091的项目库存减少,A公司工厂7011的项目库存增加(数量相同);
  • 避坑:若VL02N报错“移动类型不支持”,一定是2.2节中交货类型Q未正确绑定移动类型683,需回SIMG检查OVLP。

3.7 MIGO收A公司交货货:移动类型109完成库存接收

A公司(7010)通过MIGO接收交货单,使用移动类型109(公司间交货收货),此步不生成会计凭证,仅更新库存。

操作要点:

# 事务代码:MIGO # 移动类型:109(公司间交货收货) # 参考凭证:输入交货单号(800000123) # 过账 → 生成物料凭证(如5000001299)

验证方法:
事务代码MB52→ 输入工厂7011 → 查看“项目库存”列,确认数量与VL02N过账数量一致;
事务代码CJI3→ 输入WBS ZPROJ_Q_STO-001 → 查看“项目库存”余额,应与A公司工厂库存一致。

3.8 VF01销售开票:WBS元素复制控制是成败关键

VF01开票失败90%源于WBS元素复制问题。系统默认将B公司WBS(7090)复制到销售发票,但A公司(7010)才是开票主体,必须强制将WBS替换为A公司WBS。

操作要点:

# 事务代码:VF01 # 输入交货单号(800000123) # 点击"开票" → 系统报错"找不到WBS元素" # 解决:需提前配置复制控制(VOFM) # 事务代码:VOFM → 选择"复制控制:销售开票" → 输入请求号105(交货→开票) # 双击 → 进入"数据传输" → 找到WBS元素字段(PS_PSP_PNR) # 将其"源字段"设为"空白","目标字段"设为"常量" → 输入A公司WBS(ZPROJ_Q_STO-001) # 保存激活

参数说明:

  • 复制控制VOFM是SAP标准增强点,必须由ABAP开发协助配置;
  • “源字段空白”表示不从交货单取WBS,“目标字段常量”表示强制写入A公司WBS;
  • 血泪经验:若未配置VOFM,VF01永远无法成功,因为系统坚持要找B公司WBS,而B公司WBS在A公司开票场景下根本不存在。

3.9 MIRO采购发票校验:清账科目自动带出是配置成功的标志

MIRO校验B公司开具的采购发票,此时OBYA配置的清账科目应自动带出,否则说明2.3节配置有误。

操作要点:

# 事务代码:MIRO # 发票日期、金额等常规字段 # 供应商:B公司(7090) # 采购订单:4300000176 # 系统自动带出清账科目(21900100)和记账码(40) # 过账 → 生成会计凭证(如6000000001)

验证方法:
事务代码FB03→ 输入凭证号6000000001 → 查看行项目,确认:

  • 借方:库存科目(如11000100)
  • 贷方:清账科目(21900100)
  • 若贷方显示为应付账款(21000100)而非清账科目,则OBYA配置错误。

4. 避坑指南:五个高频报错的现场排查与根因修复

Q类型STO的报错不是随机的,每一个红框背后都有确定的配置断点。以下五条是某实验室在模拟项目X中复现并验证过的典型问题,按“现象→原因→解决”结构给出可立即执行的修复路径。

4.1 现象:采购申请审批报错“CO科目分配对象属于公司代码 &3, 不是 &4”

原因:
系统检测到WBS元素所属公司代码(7010)与当前采购申请的采购组织公司代码(7090)不一致,触发CO校验失败。根本原因是LOG_MM_SIT未激活,系统拒绝WBS跨公司使用。

解决:
① 立即执行事务代码SFW5,确认LOG_MM_SIT状态为“已激活”;
② 若已激活仍报错,检查CJ20N中WBS主数据的“公司代码”字段是否确为7010(非空、非7090);
③ 最后检查采购申请的“采购组织”是否误选为7010(应为7090),修正后重新创建申请。

4.2 现象:MIGO根据交货单收货时报错“移动类型不支持项目库存”

原因:
VL02N过账时未使用移动类型683,或交货单本身未绑定Q类型,导致MIGO无法识别该项目库存上下文。常见于VL10B未指定交货类型Q,或SIMG中Q类型未绑定移动类型683。

解决:
① 事务代码VL02N→ 输入交货单号 → 查看抬头“交货类型”是否为Q;
② 若为Q,进入OVLP→ 输入Q → 查看“移动类型”字段是否包含683;
③ 若无683,在OVLP中为Q添加移动类型683,并确保其“项目相关”标志为激活状态。

4.3 现象:VF01开票提示“Error & while substituting WBS element &”

原因:
复制控制未生效,系统尝试从交货单(B公司7090)复制WBS到销售发票,但A公司(7010)未启用项目管理,导致WBS校验失败。

解决:
① 事务代码VOFM→ 进入“复制控制:销售开票” → 请求号105;
② 检查WBS字段(PS_PSP_PNR)的“源字段”是否为“空白”,“目标字段”是否为“A公司WBS常量”;
③ 若配置正确仍失败,检查A公司WBS(ZPROJ_Q_STO-001)是否在CJ20N中启用“项目库存”且公司代码为7010。

4.4 现象:VL02N过账后,A公司MB52查不到项目库存

原因:
VL02N过账使用了错误移动类型(如601),或交货单未正确关联WBS,导致库存未转入A公司工厂7011,而是计入了普通库存。

解决:
① 事务代码MB51→ 输入物料号 + 工厂7011 → 查看移动类型683的物料凭证;
② 若无683凭证,说明VL02N未成功过账,返回VL02N重试;
③ 若有683凭证,检查凭证行项目中“接收方工厂”是否为7011(非7091),若为7091则说明交货单方向反了。

4.5 现象:MIRO校验后,清账科目未出现在会计凭证中

原因:
OBYA中仅配置了7010→7090,未配置7090→7010,或清账科目在FS00中未启用“跨公司清账”标志。

解决:
① 事务代码OBYA→ 分别以7010和7090为公司代码进入,确认双方均配置了对方公司代码及同一清账科目;
② 事务代码FS00→ 输入清账科目21900100 → 进入“控制数据”标签页 → 确认“跨公司清账”(Intercompany Clearing)标志已勾选;
③ 若仍不带出,检查MIRO中“供应商”是否为B公司7090(非第三方),且采购订单号是否为UB类型。


5. 验证闭环:用三张凭证+一个报表确认Q STO真正跑通

配置和操作做完,不代表流程闭环。真正的验证不是“能点下去”,而是“凭证链完整、金额平衡、WBS贯穿”。本章提供一套可落地的验证组合拳,覆盖财务、库存、项目三个维度。

5.1 凭证链验证:从MIGO收货到MIRO校验的四段式追踪

Q STO的凭证链必须形成闭环:B公司MIGO收第三方货(101)→ B公司VL02N发货(683)→ A公司MIGO收货(109)→ A公司VF01开票(01)→ B公司MIRO校验(RF)→ A公司MIRO校验(RE)。其中前三段是库存流转,后三段是财务结算。我们聚焦最关键的三段凭证交叉验证。

凭证类型事务代码凭证号示例关键字段验证点验证失败意味着
B公司项目库存建立MB515000001298移动类型=101,工厂=7091,WBS=ZPROJ_Q_STO-001第三方采购未收货,Q STO无库存基础
A-B公司间库存转移MB514900002188移动类型=683,发货工厂=7091,接收工厂=7011,WBS=ZPROJ_Q_STO-001Q类型配置错误,库存未真正转移
A公司开票与B公司收款FB036000000001借方=库存科目,贷方=清账科目21900100,WBS=ZPROJ_Q_STO-001OBYA未配置或VOFM未生效,财务无法平账

操作步骤:
① 用MB51查凭证5000001298,确认WBS字段非空且为ZPROJ_Q_STO-001;
② 用MB51查凭证4900002188,确认“接收方工厂”为7011(非7091);
③ 用FB03查凭证6000000001,双击贷方行项目,查看“分配”字段是否显示ZPROJ_Q_STO-001。

5.2 库存一致性验证:MB52与CJI3双报表比对

MB52看物理库存,CJI3看项目成本,两者数量必须绝对一致。任何偏差都说明WBS未正确驱动库存。

验证表格:

工厂事务代码查询条件应显示数量偏差处理
7091(B公司)MB52工厂=7091,物料号,项目库存列X若为0,检查3.4步MIGO是否成功
7091(B公司)CJI3WBS=ZPROJ_Q_STO-001,工厂=7091X若≠X,说明WBS未绑定项目库存
7011(A公司)MB52工厂=7011,物料号,项目库存列X若为0,检查3.6步VL02N是否成功
7011(A公司)CJI3WBS=ZPROJ_Q_STO-001,工厂=7011X若≠X,说明3.7步MIGO未过账

执行技巧:
在MB52中,点击“设置”→勾选“项目库存”列;
在CJI3中,点击“设置”→勾选“工厂”列,避免跨工厂数据混杂。

5.3 WBS贯穿性验证:用CJ03看项目库存的“来龙去脉”

CJ03是项目库存的终极视图。它不依赖用户操作,而是直接读取数据库中WBS与库存的绑定关系。若CJ03中WBS的“项目库存”余额为0,说明整个Q STO流程在WBS层面彻底失效。

操作步骤:

# 事务代码:CJ03 # 输入WBS元素:ZPROJ_Q_STO-001 # 点击"项目库存"标签页 # 查看"工厂"列:应同时显示7091(B公司库存)和7011(A公司库存) # 查看"数量"列:两工厂数量之和应等于第三方采购收货总量

关键判断:

  • 若仅显示7091有数量、7011为空 → VL02N或MIGO失败;
  • 若7091和7011均有数量但总和≠第三方收货量 → 存在重复过账或冲销未处理;
  • 若CJ03中完全无“项目库存”标签页 → CJ20N中WBS未启用“项目库存”标志。

从那以后我每次上线新公司间Q STO流程,都强制走一遍这三步验证:先MB51抓三张凭证看字段,再MB52+CJI3双表比对数量,最后CJ03确认WBS库存贯穿。少走一次,上线后就得加班查三天凭证流。希望帮到你。

本文还有配套的精品资源,点击获取

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

文件快捷方式的浏览器改写内网路径写法

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

作者头像 李华
网站建设 2026/11/6 3:50:48

【AI写提示词教程】会玩AI的人,才在时间上赢了@米斗设计

嗨,我是米斗,AI商业提效实战教练。我的打法是把AI、设计和内容结合起来,专门帮中小创作者和品牌方把个人IP做起来,把产品卖出去。 https://gitcode.com/OpenDocCN1/data/blob/master/imgs/zhuanqian_c9b4af90f0b3738a3d881b37c3e…

作者头像 李华
网站建设 2026/11/6 3:50:35

(81 赞)AI 出海领域创业方向探讨与风险分析

最近有个创业者提问,挺典型的。他说自己是“一人公司”,之前在别的赛道已经做出过成绩,学习能力、执行力和跨行业能力都不错,干了十多年,认知也算在线。如今精力有限,却想切进 AI 出海,找一个天…

作者头像 李华
网站建设 2026/11/6 3:49:09

FastApi(5)声明请求示例数据额外数据类型

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

作者头像 李华
网站建设 2026/11/6 3:48:09

概念模型怎么搭出来:从变量关系到可画可讲的模型图

开题会被要求"画一个概念模型图",卡住的往往不是软件,而是逻辑没成形:变量有哪些、谁指向谁、这条线凭什么连。概念模型不是装饰图,它是研究问题的一次公开翻译。下面按认变量、定方向、画图、讲图四个动作走。先认清变…

作者头像 李华
网站建设 2026/11/6 3:47:09

PostGIS实现矢量瓦片之生成 Mapbox 矢量瓦片【ST_AsMVT】

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

作者头像 李华