
做FICO的每个月最容易被财务问到的就是“客户对账单怎么打不出来”。F.27这个事务代码是SAP FICO里创建客户对账单Customer Statement的标准入口也是应收模块月结里的高频操作。很多顾问刚上手时以为它就是一个简单的打印功能填个客户、选个期间点执行就完事了真在项目里跑两轮才发现里面涉及主数据维护、对应函输出控制、表单技术、批处理作业好几层东西任何一层没配置好都会导致账单出不来、金额不对、格式错乱。这篇就把F.27从业务逻辑到实操细节完整拆一遍适合刚接触FICO的顾问、应收会计以及被客户投诉“收不到对账单”而被迫排查的运维同学。1. F.27到底在做什么客户对账单的业务逻辑与底层机制1.1 先搞清对账单是“汇总”不是“流水”F.27生成的客户对账单本质不是把某个客户的所有凭证一笔一笔列出来而是按照期间把应收账款的借贷方发生额汇总展示期初余额、本期借方、本期贷方和期末余额。这一点特别容易被业务搞混财务拿着对账单一笔笔核对明细发现对账单和科目余额表不一致就开始找IT麻烦。其实F.27的对账单有两种常见显示模式一种是“按行项目明细汇总”另一种是“纯汇总”具体由对账单类型Statement Type和客户主数据里的设置共同决定。从底层逻辑看F.27读取的是客户在指定期间内的行项目数据包括未清项和已清项再把这些行项目按借贷方向汇总到输出内表最后通过标准打印程序RFKEPL00调用表单打印出来。所以很多“金额不对”的问题追根溯源往往不是打印程序错了而是行项目本身缺少“对账单打印”标志或者客户主数据里的对账单类型没配好导致系统在汇总时过滤掉了部分数据。对账单和客户明细账还有一个关键区别对账单是一个“商业函件”通常带有公司抬头、客户地址、页码、打印日期等信息而明细账是内部查询工具不需要对外发送。这决定了F.27相关的配置会落在“对应函Correspondence”这个功能域里而不是普通报表域。1.2 F.27与F.27A/F.27B以及标准程序的调用关系SAP里以F.27为核心的还有几个变体比如F.27A、F.27B之类不同版本叫法不同有的用于创建对账单有的用于显示或重新打印。我建议项目上不要只看事务代码后缀重点看两个东西一是事务代码对应的程序名二是它调用的表单名。F.27对应的标准打印程序一般是RFKEPL00标准SAPscript表单也是以RFKEPL00开头命名的这些可以在SE71里直接查询和复制。F.27在运行时会先检查客户主记录公司代码层的对账单参数然后根据选择屏幕的条件抓取行项目再调用输出控制NACE或对应函配置确定使用哪个输出设备、哪个打印程序、哪个表单。如果配置了多个输出条件系统还会按规则自动匹配。理解了这条调用链后面排查问题就简单了先判断是取数问题、配置问题还是表单/打印问题。补充一点F.27可以“测试运行”测试模式不会真正生成打印请求而是把对账单数据以列表形式展示出来。建议第一次跑之前先用这个模式看一眼数据范围是否准确能省掉很多空白页、错数据的重复打印。2. 上手实操从零跑通第一张客户对账单2.1 跑F.27前要检查的主数据F.27不是你想跑就能跑出理想结果的客户主数据不对后面全白搭。先看客户主记录XD03公司代码层“付款业务”页签里面有几个关键字段对账单类型Correspondence Type / Statement Type决定对账单按什么格式和汇总方式输出常见的是标准类型。如果这里为空F.27执行时会自动使用选择屏幕指定的类型但可能不是你想要的模板。打印屏蔽Print Block如果这个客户被设置了打印屏蔽那么无论F.27怎么跑这个客户都不会出现在打印队列里。这在业务上是有意的比如那些只通过电商平台对账、不需要纸质的客户。每月账单Monthly Statement部分版本有“月度对账单”字段标记客户是否要求每月固定出账。这个字段配合自动批量出账使用。这里有个实际项目里非常容易踩的坑销售顾问建客户时只关注销售范围数据公司代码层的付款业务页签往往没维护导致F.27执行时要么报错要么即使有业务数据也打不出对账单。所以跑F.27之前建议先用XD03抽查几个客户把付款业务页签的截图发给业务确认。2.2 选择屏幕字段逐项拆解调用F.27后会看到一个选择屏幕很多用户被一堆字段吓住其实核心字段就那几个客户可以填单个客户也可以填区间。如果留空就是所有客户配合其他条件做批量出账。公司代码必填F.27是按公司代码隔离的不同公司代码的对账单不能混在一起。期间起止过账期间比如2025.01到2025.03。这个期间决定取哪些行项目系统会结合会计年度一起判断。打印日期Statement Date显示在对账单上的日期比如“截至2025年3月31日”。这个日期还影响未清项的对账单日期判断。对账单类型如果客户主数据里没设这里可以强制指定。账户类型默认是客户K也支持供应商K? 供应商是K? 实际供应商对应K也是K需要区分。标准里一般选客户。打印参数包括输出设备、打印份数、立即打印或后台打印。这里最常出问题的是“输出设备”选错导致打印请求跑到一台不存在的打印机上。另外还有一些辅助选项比如“仅输出有活动的客户”“测试模式”“显示日志”等。一般第一次跑建议勾选测试模式和日志确认数据后再正式打印。2.3 确认输出设备与打印队列F.27的输出不是直接把内容送到打印机而是先生成假脱机请求Spool Request再通过输出设备发送到打印机或PDF生成器。所以如果F.27执行完了打印机没反应第一时间要想到去SP01查看假脱机请求状态。实操中我一般这么管理打印队列先在事务代码SPAD里配置一台“虚拟PDF打印机”比如命名ZPDF输出设备类型设置为PDF生成器。这样F.27就可以把对账单转成PDF发给客户或上传到共享盘省纸省事。F.27选择屏幕的“打印参数”里把输出设备填成ZPDF打印份数填1如果不想立刻出纸选择“后台打印”这样只生成假脱机请求由管理员统一批量处理。用SP01能查看当前用户的所有假脱机请求。双击请求可以看到打印页面预览这个功能非常有用排查“空白页”“页数不对”全靠它。还要提醒一点有些打印设备设置了“双面打印”如果表单最后一页只有少量内容双面打印经常多出一张带大片空白的纸。这种情况不一定是表单问题先检查输出设备的双面设置。3. 输出技术选型从标准SAPscript表单到SmartForms改造3.1 标准表单逻辑字段汇总与打印程序F.27的标准表单是SAPscript格式里面定义了页窗口、数据字段、页眉页脚等。标准表单的好处是稳定SAP升级时一般不会动它缺点是排版固化想加个公司logo、改个字体、调整表格列宽都需要复制一份标准表单去改。标准打印程序负责取数和数据组装表单只负责展示。程序把客户行项目、汇总金额、地址等放到一个输出结构里表单通过字段名引用这些值。所以当业务提出“对账单上想增加一个字段”通常要改动两处一是打印程序里把字段取出来并放到输出结构二是表单里把字段拖到页面上。只改表单不取数显示的还是空值只改程序不改表单数据有但显示不出来。从SAPscript到SmartForms再到S/4HANA里的Adobe Form本质都是“取数逻辑与展示逻辑分离”。项目改造时建议优先复制标准对象而不是从零创建因为标准对象的字段绑定已经成熟从零创建很容易漏字段。3.2 屏蔽打印从客户主数据到输出参数“屏蔽打印”这个功能在F.27里特别实用。业务场景是这样的有些客户长期没业务或者走电子对账平台财务不想每月给他们发纸质对账单。这时不需要改程序只需要在客户主数据里把这个客户设为“打印屏蔽”F.27跑出来的时候系统会自动过滤掉它。设置路径一般是客户主记录 → 公司代码 → 付款业务 → 打印屏蔽Print Block。勾上之后即使该客户这个期间有借贷方发生额也不会进入对账单输出列表。这个字段是按客户加公司代码维度维护的所以同一个客户不同公司代码可以独立控制。还有一种情况不是整个客户屏蔽而是不想让某些行项目出现在对账单上。那就要看行项目里的“对账单打印”标志Correspondence字段。过账时系统会默认填入一个值如果业务不想在账单中体现某笔特殊业务可以在过账前把它改成空。不过这种做法要谨慎容易引起客户对账差异最好有审批流程。3.3 空白页问题的根因与处理搜索“FICO F.27打印”的人很多是被“空白页”折磨过的。我自己遇到的空白页问题根因大致有三类表单分页逻辑出问题SAPscript/SmartForms表单里设置了“新页”条件当内容刚好填满第一页时系统误判需要再开一页结果第二页只有页眉没有内容。这种问题只能改表单分页条件。打印设备双面设置不当单页内容被强行当成双面打印会多出一张反面的空白页。这种情况关闭打印机的双面模式就好。假脱机页面格式不对SPAD里为该输出设备分配的“格式类型Format Type”和表单页大小不一致导致多出空白页。把格式类型改成与表单页尺寸一致比如A4就行。排查顺序建议是先在SP01双击假脱机请求看“页面预览”判断空白页是数据本身产生还是打印设备产生如果预览里没有空白页那就是设备或驱动问题如果预览里有那就是表单问题。这个先后顺序能帮你省掉大量试错时间。4. 常见问题与排查技巧实录4.1 对账单上金额不对借贷方汇总逻辑业务反馈最频繁的就是“客户对账单上的余额和总账余额不一样”。遇到这种问题先不要急着看程序按以下顺序排查客户主数据里是否设置了对账单类型以及该类型是否包含“显示汇总余额”的逻辑。凭证行项目上的“对账单”标志是否被清掉。用FB03看几笔差异凭证如果行项目里Correspondence字段为空那这笔就不会汇总到对账单里。检查期间选择。客户说的“上个月的对账单”可能跨了会计年度期间填错会导致只取到部分数据。检查币种。如果客户有外币业务对账单上的金额是否发生币种折算需要确认汇率类型和日期。有一回项目上月结客户死活说对账单少了一笔收款。查到最后发现那笔收款是因收款清账后的已清项按对账单类型配置已清项默认不显示在当期明细里只在期末余额中体现。所以说稳定复现之后要对照对账单类型里的“未清项/已清项显示规则”去解释而不是瞎改程序。4.2 打印中间出现空白页如果预览确认空白页来自表单最有效的临时处理方式是把表单中“Main”窗口的高度略微调小让内容提前换页避免刚好卡在页边界。注意别调太多否则排版会稀疏。长期方案是重新梳理分页条件确保换页不触发多余新页。另外SAP SmartForms和SAPscript的“打印中间出现空白页”在很多S/4HANA项目里还有一个时代背景项目从SAPscript换到SmartForms或者Adobe Form时分页逻辑没有完全对齐。我建议切换到SmartForms后用不同数据量做边界测试1条行项目、10条行项目、50条行项目分别打印确认分页正常再上线。4.3 中文显示乱码F.27打印出来的对账单里如果客户名称、地址是中文结果变成乱码或者方框常见原因有两个SAP GUI端字体问题检查系统字体和语言环境安装中文字体。打印字体映射问题标准SAPscript里的字体没有匹配到中文字体。在SE73里维护打印机字体映射或者在SE78中添加中文TrueType字体。简单粗暴的方案是改用PDF虚拟打印机输出PDF能自动嵌入字体乱码概率大大降低。我经历过一个项目SAP服务器是英文环境报表程序里写中文提示没问题但打印表单中文全是“????”。排查后发现是表单里每个窗口的字体设成了“HELVETICA”而HELVETICA不支持中文改成中文字体映射后立刻解决。4.4 输出PDF后页面大小不一致很多企业现在要求F.27直接生成PDF发邮件。用PDF虚拟打印机输出后如果PDF页面尺寸一会儿A4一会儿A5多半是打印设备类型里配置的“格式”和模板页大小不匹配。去SPAD里找到输出设备把“格式类型”统一设置成A4或企业标准的纸张并把“页面格式”和表单的下一页格式保持一致。还有一点容易被忽略如果表单里的“页格式”变量是动态的程序会根据打印机设置自动切换格式。这时要检查标准打印程序里的页格式赋值逻辑看看它是不是取的是客户主数据里的“对账单格式”字段。对账单类型可以配置格式客户主数据也可以覆盖格式两边不一致就会导致大小抖动。5. 我在项目里常用的几个提升效率的小技巧5.1 用变式固化F.27常用条件F.27每月批量跑一次的公司强烈建议用“变式Variant”把选择条件保存下来。比如公司代码、期间、输出设备、对账单类型都固定然后每个月只要在SE38/SA38里直接运行RFKEPL00并选择变式或者用SM36把变式挂在后台作业里每月自动执行。创建变式时有个小技巧把“测试模式”勾上保存一个测试变式把“正式模式”保存成另一个变式。测试变式用于月结前验证数据范围正式变式用于真正出账。这样能避免每个月手工改条件时误把测试模式带进生产环境导致对账单没有真正输出。5.2 对账单重打印与红冲凭证的联动业务经常会问“上个月的对账单打错了这个月冲销后再打怎么还带着旧数据”这是因为F.27是按期间取数上个月的期间已经关闭你冲销的凭证如果记在当前月上个月的对账单读取时就取不到它。所以“重打印上个月对账单”和“红冲本月凭证”是两个动作先红冲、再回到上个月期间重新跑F.27才能看到冲销效果。另外如果只是想重发给客户一份“整改后的对账单”但又不想在系统里改变任何凭证更稳妥的做法是直接复制原PDF拿去修改或者在F.27里只选择那个客户用更新的打印日期重打一份并在邮件里说明“以本版本为准”。不要为了强制刷新数据在上个月随意冲销再补记那一套操作下来很容易把账务搞乱。5.3 S4HANA环境下的一点变化S/4HANA里行项目数据统一存到了ACDOCABSID/BSAD等传统表被替换但F.27这个事务代码仍然保留功能基本不变。变化主要在后台配置界面比如对应函的控制逻辑整合到了新的输出控制体系里NACE的配置入口和旧ECC略有不同。做S4HANA项目的顾问不需要过度担心F.27“改了底层”重点是重新验证一次打印表单和输出设备配置。另外SAP也提供了Fiori的客户对账单相关应用基于后端标准打印程序实现用户可以在Web页面上发起打印请求。这类应用特别适合管理层自助查看或财务批量操作不用每个人都会敲事务代码。但上线前一定要测清楚PDF输出和打印机映射否则Fiori打印也一样会踩空白页和乱码的坑。最后再分享一个小技巧无论问题多复杂先打开SP01看假脱机请求再打开客户主数据看对账单参数最后才去碰表单。我见过太多同事一上来就改SmartForms改完没效果还把标准模板改废了。F.27这个功能90%的问题其实出在配置和数据上真正需要动表单的情况少之又少。理顺这几个环节你对账单这块基本就能睡个安稳觉了。