
做 FICO 这么多年如果让我挑一个看着不起眼、用起来全是坑的事务码F.27 绝对能排进前三。很多刚接触 SAP 的顾问和业务用户第一次打开 F.27 时都会愣一下界面这么朴素填几个公司代码、客户、日期点执行然后就……没了对账单到底打没打出来格式在哪调为什么有的客户收到的是 PDF有的客户收到一堆乱码这些问题在我刚开始接触客户对账单打印时全踩过一遍今天就把 F.27 从原理到实操完整拆开讲透。1. F.27 到底是干什么的事务码1.1 一句话理解 F.27客户对账单的批量打印入口F.27Customer Statement客户对账单核心功能就是按照指定期间把客户的应收往来明细汇总成一张对账单然后通过打印或邮件等形式提交给客户。它和 FB03 看单据、FBL5N 查未清项这种内部查看逻辑完全不一样F.27 从一开始就是面向外部沟通设计的对账单上要有公司抬头、客户地址、期间范围、期初余额、每笔业务日期/凭证号/金额、期末余额甚至还有逾期账龄分析。这些内容不是简单把数据库表拉出来就行的背后牵扯到公司代码的会计配置、客户主数据的打印参数、输出类型维护、打印格式分配一环扣一环。很多企业上 SAP 之后客户对账单还在用传统的 Word/Excel 手工做财务月底从 FBL5N 导出未清项复制粘贴到 Excel再用邮件发给客户。这种做法在小规模时没问题一旦客户数量到了几百上千家纯粹是体力活而且极易出错。F.27 的价值就是把这个过程标准化、批量化和审计化——谁在什么时候、给哪个客户、打印了哪个期间的账单系统里都有日志可以追溯。1.2 典型的业务使用场景据我实际接触过的项目F.27 主要在以下场景中使用月度对账财务每个月月末统一打印对账单邮寄或邮件发送给客户让对方确认往来余额。这个场景在制造业、批发零售业非常普遍。催款前准备信用管理或应收会计在发催款函之前先把对账单打印出来作为附件提醒客户有逾期款项。有些企业会在催款流程里同时触发 F.27 和 F.13自动催款。审计和内部留档不仅是外部客户有些集团公司内部往来单位之间也需要定期对账F.27 打印出来的正式凭单可以作为审计证据。替代手工开票明细部分服务行业不开销售发票而是每个月开一张综合账单对应 SAP 里的借项凭证再通过 F.27 打印对账单作为形式发票给客户。每种场景背后对账单的格式、内容、打印方式要求都不同这也是为什么 F.27 表面上只是一个执行按钮实际上配置起来能折腾很久的原因。2. 打印输出机制F.27 背后藏着多少配置2.1 F.27 不是报表是输出管理FICO 顾问里有个经典误区把 F.27 当成类似 S_ALR_87012177客户余额清单那样的报表来看。实际上 F.27 走的是 SAP 标准的输出控制Output Determination逻辑和销售订单的打印输出、采购订单的输出属于同一套通道。意思是你执行 F.27 的时候系统不是简单地生成一个结果列表而是先找这个公司代码下客户对账单该用什么输出类型、什么打印格式、什么打印机然后去驱动对应的打印程序生成输出。这套机制里最核心的几张配置表输出类型Output Type在后台通过事务码 NACE 维护。销售、采购、会计各自都有对应的输出类型应用范围F.27 对应的是会计范围内的客户对账单输出类型标准里叫RFFOEDI1或者RDJOB_2等不同版本略有差异。条件记录Condition Records确定了输出类型之后还要维护什么条件下用这个输出类型。比如区分公司代码、客户、打印时间点等。没有维护条件记录F.27 执行了也没反应。打印参数维护Print Parameters输出类型里维护介质、格式、打印机。如果这里设置成只输出到假脱机Spool就只在 SAP 服务器上生成假脱机请求不会直接送打印机。格式项目Forms对账单打印到底调用哪个 Smart Forms / SAPscript 格式也在这个环节里分配。理解这条链路非常重要。因为实际项目里碰到F.27 执行了但是没打出来或者打出来的格式不对这类问题90% 都出在这些配置节点上而不是 F.27 程序本身坏了。2.2 程序与格式之间的对应关系F.27 真正在后台跑的程序是SAPF270R对于传统对账单打印它的功能是取数分页调用打印格式。而打印成长什么样子由 Form格式决定。这类似于你用 Excel 打开数据文件F.27 是菜单里的打开动作Excel 显示效果则取决于 .xlsx 模板里面怎么设计。系统标准的 F.27 打印格式是 SAPscript 格式的SAPF270R_FORM之类的名称里面包含了常见的抬头、行项目、汇总区块。SAP 也给了一些增强点方便顾问在不修改标准的格式的情况下增加字段。但随着 S/4HANA 的推进越来越多的项目选择直接做 Smart Forms 甚至 Adobe Form 来自定义对账单样式以匹配企业的品牌视觉要求。这个后面会专门说。2.3 F.27 的账号筛选逻辑再往深里说一步F.27 执行时选中哪些客户是有讲究的。很多业务用户以为填了客户号区间就是选中范围其实系统还会根据以下维度筛客户主数据对账单页签的设置如果客户主数据里维护了寄送对账单的频率、方式邮寄/邮件会直接影响 F.27 对这个客户是否生成输出。借贷标志和余额方向F.27 的选项中有一个只选择有余额的客户的参数。这个参数一旦没选几百个余额为 0 的客户也会被打印出来浪费纸也惹人烦。期间控制对账单打印的期间和会计凭证记账的期间是两个维度。F.27 里可以填入类似截至 2025 年 6 月 30 日的日期系统会自动把截至该日期的所有业务汇总同时区分期初余额和本期发生。这些筛选逻辑把握住了才能把 F.27 用得精准否则每次打印出来的客户清单都对不上业务期望。3. 实操全过程从变式到假脱机 LP013.1 第一步确认客户主数据设置别急着执行 F.27第一步永远是回头确认客户主数据。XD03 查看客户主数据切到会计信息视图再切到对账单页签。你需要确认这几个字段对账单类型有的客户按月对有的按周对这里控制的是打印的文本格式与打印周期。上次对账单日期系统会记录上一次打印到哪个日期为止方便下次执行时自动接着打。这是 F.27 减少重复操作的秘密武器。对账单打印方式是直接打印、电子输出还是两者都要。如果客户主数据里这些字段是空的F.27 执行时大概率会跳过这个客户让人误以为程序出 bug。我见过好几次这种找不到原因的情况最后发现是主数据没维护。3.2 第二步配置输出类型和条件记录我建议在开发测试环境先跑通一次再推广到生产。配置路径需要注意事务码 NACE选择应用范围AC会计。找到客户对账单对应的输出类型一般叫CSTMR或者F.27相关字样。双击输出类型进入处理程序——这里分配打印程序、格式、抬头文本等。没有分配处理程序输出就是空的。在条件记录里新增一条公司代码 客户可以是通配符 输出类型激活。这里有个启发式规则我可以直接给到大家**优先维护客户主数据级的条件记录不要只维护公司代码级。**只维护公司代码级会有个副作用——所有客户都共用同一套格式、同一台打印机万一某个客户要求对账单单独用彩打就配置不出来了。客户级的条件记录虽然初始配置量大一点但灵活性高很多。3.3 第三步执行 F.27 并管理变式F.27 的初始界面字段不少主要分为几块输出格式这里可以选标准格式还是自定义格式。标准格式直接用自定义格式则需要你在打印维护中预先定义。期间选择确定对账单的期间起点与终点。常见用法是输入2025.01.01到2025.06.30或者干脆只填一个截止日期系统自动从上次对账日起算。公司代码和客户必输项。输出控制选项例如仅选择有余额的客户、测试运行模式、运行时创建假脱机请求。正式跑之前我强烈建议先勾选测试运行模式让系统只统计会处理的客户数量、生成多少页不实际输出打印。看到数据量符合预期再去掉测试模式正式执行。大批量打印时F.27 适合在后台作业SM37中运行把变式保存好调度周期执行比如每个月月底凌晨 2 点自动生成所有对账单第二天上班直接分发即可。变式怎么保存在 F.27 初始界面点击菜单转到→变式→保存输入变式名称。注意变式名建议用容易识别的规则比如ZMONTH_END和后台作业名称做好对应关系不然后期运维看到几十个变式根本分不清是干嘛用的。3.4 第四步查看假脱机请求并输出F.27 生成结果之后并不会直接弹出来一个打印预览而是先写到假脱机请求Spool Request列表里。事务码 SP01 查看自己的假脱机请求如果 F.27 运行在后台假脱机请求可能属于后台作业的用户运维人员需要用 SP02 或者其他权限查看。在 SP01 里你可以双击请求查看打印预览TCode SPAD 可以更改预览字体大小。对假脱机请求重新定向到其他打印机。把请求转成 PDF 再邮件发送或者保存到某个目录。这是很多企业做电子对账单的路径先跑 F.27 生成假脱机再通过程序批量转 PDF 发邮件。实操中还有一个高频操作屏蔽不想要的打印行或整份输出。比如某客户已经关闭了业务或者本期的对账单只是内部试运行不需要真实发送这时在 SP01 里选中假脱机请求点删除即可。如果假脱机请求已经被系统自动输出了就需要在输出日志NACE 查看输出日志里找到记录并标记为不发送这个在后续问题排查部分我再细讲。4. 为什么 smartform 打印中间会出现空白页4.1 空白页的根因分析热门搜索词里smartform 打印中间出现空白页出现频率极高这个问题在 F.27 自定义 Smart Forms 对账单时特别典型。原因通常出在分页逻辑和页格式设置上Smart Forms 页面格式Page Format设置了固定的页高但主窗口Main Window中的项目行数超过一页可容纳的行数系统自动产生分页。如果项目区域恰好用完最后一行而页脚区域又要占据一行就会挤出一页空白页。对账单里使用了二级列表Secondary Window但没有正确设置跟随主窗口或禁止空白窗口输出。比如模板里有个备注窗口实际数据为空时窗口仍然留在页面上导致每页后面多出一张空白页。打印驱动层面的问题某些打印机驱动不支持智能表单生成的某些控制字符也会在每两份对账单之间插入一张空白页。这种情况尤其常见于兄弟/联想等国内的打印机Win10/11 环境。4.2 解决空白页的实操办法排在第一位的方法是检查 Smart Forms 的页格式和窗口类型。把主窗口的高度稍微缩小 1~2 毫米或者把窗口属性里的输出空窗口取消勾选通常能解决大部分由空窗口造成的空白页。第二位是检查分页条件。在 F.27 调用的程序里如果对账单的数据被填充到主窗口循环输出行项目时系统会自动分页但如果你的格式是用输出表Table而不是主窗口来输出行项目要检查表的行间空格和行高 行高过大也容易导致最后一页放不下页脚从而多出一张只有页脚的空白页。第三位如果只是打印输出时才出现空白页但屏幕预览正常优先怀疑打印机驱动。解决套路是把假脱机请求转成 PDF用 PDF 打印。如果 PDF 打印正常说明 SAP 端格式没问题需要更新打印机驱动或者换用 PostScript/Generic 驱动。4.3 屏蔽打印精确控制哪些客户不打印很多项目做到后期业务会提出这个客户不要再自动打对账单了那个客户改成 PDF 不发纸质。这些需求背后核心是两个手段客户主数据层级在客户主数据中把输出方式改成不做输出或者清除条件记录中该客户的输出类型。这是最彻底的屏蔽方式改完立刻生效F.27 再次执行时不会生成假脱机请求。程序增强如果屏蔽规则比较复杂——比如余额小于 100 元不打印只在单月打印——就需要通过增强点实现。传统上可以增强 F.27 的打印程序 SAPF270R在输出行筛选处写 ABAP 代码或者通过标准的输出确定的用户出口。S/4HANA 环境下更推荐 BAdI 实现避免修改标准代码否则升级会带来后患。屏蔽打印这四个字听起来简单但做的时候一定要先想清楚屏蔽的对象是不生成假脱机还是生成假脱机但不送打印机两个需求是不同的解决方案。不生成假脱机适合客户永久不需要对账单例如已冻结或已删除的客户生成但不打印适合暂时不寄送但要留存档的场景。这两个场景我在项目里都遇到过业务方往往自己都没想明白一定多问一句。5. F.27 与 S/4HANA FICO 全套培训里的位置5.1 为什么 F.27 在 FICO 培训里总被一笔带过最新《S4HANA FICO全套培训视频》2025 sap s4 hana fico 全套这些搜索词能看出当下很多人通过视频自学 SAP FICO。但我观察到一个普遍现象几乎所有培训课程讲到 F.27 都是几分钟带过讲讲路径和字段含义就没了。原因是 F.27 看起来太简单填参数、执行、查 spool好像没有技术含量。但实际项目里F.27 是应收会计模块最常被提出变更需求的点之一。原因在于F.27 是面向客户的客户能感知到系统输出的质量。其他后台配置做得再完美客户看到的是你打印的这张账单。很多培训讲师没有做过完整实施项目自然讲不到这个深度。如果你正对着视频学习 FICO我可以给你一条系统化的建议学 F.27 不要只看操作步骤一定要动手去配一遍 NACE 输出控制再动手做一个自定义 Smart Forms然后把 F.27、SP01、NACE、SM37 串起来走一遍全流程。5.2 从 F.27 发散出去输出控制是 FICO 的通用底座掌握了 F.27 的输出机制其实等于掌握了一套方法论。这套方法论同样适用F.28 客户催款单打印F.150 固定资产通知单打印S_ALR_87012077 之类的会计凭证打印FB60 录入的发票打印通过 NACE 配置输出类型RDJOB_2原因很简单SAP 财务会计模块对外的批量单据打印都依赖输出确定这把钥匙。把 NACE 配置、条件记录、输出格式、假脱机、增强点这套逻辑打通之后遇到任何财务打印需求都能快速定位问题。6. 高级技巧自定义对账单格式和二次开发边界6.1 什么时候必须自定义格式标准 F.27 的打印格式其实已经能覆盖大多数需求但在两类场景下必须开发自定义格式企业品牌要求对账单上需要公司 Logo、营销标语、回款账号二维码、温馨提示语等。这些信息标准格式维护起来非常别扭而且经常需要调整。业务口径复杂除了按凭证号列示行项目还需要同时显示订单号、交货单号、项目的摘要备注、销售员姓名。标准表格里没有这些字段必须另辟蹊径。自定义格式一般用 Smart Forms老项目或 Adobe FormS/4HANA 新项目来做。如果只是把标准格式复制一份改名字加几个字段使用CALL TRANSACTION或复制标准 form 来做增强这种改法风险小基本发布一次就能用。要是从零开始做一个全新样式工作量和测试量就大了大概需要顾问 ABAP 配合做 5~10 个工作日。6.2 二次开发的边界哪些可以动哪些建议不动开发 F.27 相关的增强时我一直告诫团队能增强别修改。可选方案整理成下表方便留档需求场景推荐方案不推荐方案增加 Logo 和二维码复制标准 Smart Form在页眉窗口追加图片直接改标准 Form调整行项目排序/筛选程序增强 or BAdI 过滤修改 SAPF270R 标准代码增加输出媒介如微信/邮件输出类型中增加新处理程序做外部发送接口在标准输出中写死发件逻辑对账单同时输出多份如副本输出确定里维护两条条件记录程序中循环打印大批量打印性能优化后台作业切小批次分批处理提升系统内存硬扛记住一个原则SAP 版本升级时标准对象被增强包兼容的概率远大于被直接修改对象的概率。做项目时省下的修改工作量往往会在升级那天连本带利还回来。6.3 生成对账单 PDF 的一种常见实现路径如果你想实现F.27 打印对账单同时自动保存一份 PDF 到某网络路径用于邮件发送有两种常见实现路径路径一假脱机转 PDF 脚本化。F.27 运行后生成假脱机请求用事务码 SP01 选择请求菜单假脱机→转发→转换为 PDF。如果量大可以用 ABAP 程序批量读取假脱机请求调用转换功能生成 PDF再通过函数模块SCMS_XSTRING_TO_BINARY保存到应用服务器或外部路径。优点是纯标准功能不需要额外许可证缺点是转换后的 PDF 样式和屏幕预览可能有细微差别需要多批次测试。路径二直接用 Smart Forms 输出 PDF。在自定义对账单 Smart Form 中把输出设备类型定义为 PDF然后在程序中用FP_JOB_OPEN/FP_FORM_OPEN一类函数直接生成 PDF 文件。这种方式更灵活能直接在 PDF 中加入附件、邮箱地址等元数据。前提是项目里用了 PDF 打印基础设施Adobe Document Services 已配置好。我个人在项目中更倾向先走路径一因为它能把F.27 标准假脱机和PDF 归档两个目标一并解决不用额外开发取数逻辑维护成本最低。7. 常见问题与排查技巧实录这一节把我在 F.27 项目支持和上线运维中碰到的高频问题整理成速查表每一条都是实战中真金白银踩出来的。问题现象常见原因排查顺序F.27 执行后没有反应也没有假脱机请求输出类型未激活、条件记录没维护、客户主数据对账单字段为空XD03 查主数据 → NACE 查条件记录 → 看是否有输出日志只打印了部分客户部分客户缺失客户主数据中对账单类型为空或打印方式设为不打印用批量查询报表筛选客户主数据字段定位缺失客户一个月打了两份同样期间的对账单上次对账单日期没更新/被手动重置检查客户主数据“上次对账单日期”和后台作业是否重复被调度对账单上金额汇总不对选成了“未清项”而不是“全部项”的期间模式F.27 界面重新选择期间逻辑对照 FBL5N 总览验证打印的页面和预览不一致打印机驱动问题转 PDF 试打更新驱动或改通用驱动Smart Form 打印中间出现空白页窗口空输出、页高/行高冲突参照第 4 节逐项排查优先取消空窗口输出后台作业跑完用户看不到假脱机请求假脱机请求归属不同用户/授权不足SP01 换用户查看或用 SP02/SCC1 查找想屏蔽某个客户一直屏蔽不掉客户主数据改了但条件记录里仍有更具体的输出NACE 中检查客户级条件记录是否覆盖了公司级配置排查思路说到底就是沿输出链路逐层查主数据 → 输出确定条件 → 格式调用 → 假脱机 → 物理打印机。只要沿着这条链路走绝大多数问题都能半小时内定位。怕就怕“这里看看、那里看看”没有章法越折腾越乱。最后再分享一个小技巧F.27 跑完以后不要直接关掉假脱机列表。养成习惯先看下生成的页数和客户数和上一次跑的数据做个对比。数据量突然大幅减少或增加往往意味着主数据或期间条件发生了变化早发现早处理别等客户上门投诉了才发现对账单漏打。E-CC 系统的运维就是这样细节决定体验F.27 用好了财务同事会觉得你特别靠谱。