尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SAP S/4HANA Cloud打印队列与Print Profile配置实战:从通信场景到运维排查

SAP S/4HANA Cloud打印队列与Print Profile配置实战:从通信场景到运维排查 云端打印最容易出问题的地方往往不在打印机本体而在SAP S/4HANA Cloud里维护的那一堆打印队列和Print Profile。我见过不少实施项目前端应用一切正常后台配置也照着笔记敲完了结果第一张测试页就是不出纸。查到最后问题几乎都集中在Maintain Print Queues里那几个Print Profile的字段或者更隐蔽的SAP_COM_0466 / SAP_COM_0467通信场景没配对。这篇文章我会把这两件事串起来讲清楚打印配置文件到底是什么、跟通信场景怎么配合以及在Maintain Print Queues里到底怎么操作才能把云端打印“驯服”。适合正在实施SAP S/4HANA Cloud、维护打印集成环境的顾问和技术运维也适合刚接手云打印项目、被队列和Profile搞得头晕的新手。1. 先搞懂打印队列与打印配置文件到底在管什么1.1 打印队列不是打印机刚接触云打印的朋友最容易踩的第一个概念坑就是把打印队列当成一台打印机。在传统SAP ECC时代我们经常直接配置一个前端打印机用SPAD事务维护打印控制、设备类型、格式类型然后输出设备直接把作业送到网络打印机。打印机坏了输出就断了管理颗粒度也很粗。到了S/4HANA Cloud物理打印设备不再是SAP系统可以直接触碰的东西了。系统真正面对的是一个“打印服务层”这个服务层是独立部署的云打印管理器或者是SAP提供的打印服务。而SAP这一侧只维护“打印队列”Print Queue。打印队列是一个逻辑出口它规定了一组打印作业要按什么规则走、最终交给哪台物理打印机。队列后面可以绑定一台打印机也可以绑定一组打印机同样一台打印机也可以被多个队列引用。我自己的理解是队列是“业务出口”打印机是“物理设备”。物理设备可以换业务出口不用动。比如公司财务部要打印凭证我给他们建立一个FIN_PRINT队列指向一楼那台HP多功能一体机。后来这台设备出故障临时换成了二楼的兄弟打印机只需调整队列绑定的Print Profile和输出设备信息财务那边的打印作业照常提交根本感觉不到换设备了。这样设计的另一个好处是重试和队列管理。SAP系统里作业先进队列再由打印服务层异步拉取不会因为物理设备离线就导致应用线程阻塞。运营团队可以查看队列深度、卡住的作业、重试次数这是云架构下运维必须要有的能力。1.2 Print Profile里到底放了什么Print Profile翻译成“打印配置文件”名字挺抽象但它解决的问题其实很具体告诉打印服务层“我是谁、我有什么能力、怎么处理交给我的作业”。传统时代这些信息分散在设备类型、打印控制、格式类型等多个对象里。云时代SAP把这些收敛到了Print Profile。打开一个Profile你通常能看到几类内容第一类是基础标识。比如Profile名称、描述、版本号、关联的输出设备逻辑名。这些字段用于日志追踪和团队协作命名规范非常重要不然半年后你看着一堆PRF001、PRF002完全想不起对应哪台机器。第二类是设备能力。比如是否支持彩色、是否支持双面、支持哪些纸张尺寸、默认走哪个纸盒、分辨率上限是多少。这些字段会影响应用层如何生成打印请求。如果一台设备实际不支持双面但Profile里却写了支持打印服务层可能就会下发双面指令然后在打印机上出现奇怪的卡纸或者在双面器里白白打一张。第三类是数据处理方式。这可能是最容易被人忽略、也最会惹麻烦的部分。普通办公打印要PCL或PostScript指令标签打印要ZPL或EPL指令有些老式针式打印机还要特定的控制序列。Print Profile会描述该打印前端应该用哪种解释器去处理后台传来的原始打印数据。如果队列绑错了Profile比如把ZPL标签机配成了PCL普通纸张Profile那打印出来的可能就是满纸的原始代码或者干脆一团乱码。第四类是输出行为。比如默认份数、固定纸张、作业超时时间、是否启用省墨模式。这些偏业务属性常常被业务团队要求改来改去。在云环境里Print Profile的本质更像一份“能力契约”。它不是直接控制打印机的宏而是让SAP的打印服务和前端的打印管理器都能按同一套规则解析作业。两边各存一份两端必须同步一致否则打印表现就会五花八门。1.3 通信场景SAP_COM_0466和SAP_COM_0467是怎么分工的在SAP S/4HANA Cloud里跟外部系统交换数据不是随手开个RFC就行而是通过Communication Scenario通信场景来管理。每个通信场景定义了一组接口和事件系统管理员需要按照场景创建Communication Arrangement配置服务用户、目的地、证书等才能真正把数据送出去。打印相关的主干场景正好是SAP_COM_0466和SAP_COM_0467这两个。从我实施项目的经验看可以把它们理解成一条流水线上的两个环节。一个叫数据面一个叫配置面。SAP_COM_0466我的理解是主要负责打印作业数据面的传输。当用户在SAP端点“打印”系统生成带打印内容的作业通过这个场景把作业推给打印服务层同时接收打印状态回传。你可以把它类比成一条“送货通道”货物是打印文件司机是打印服务最后要回传“送达/失败”的签收状态。SAP_COM_0467则主要负责配置控制面的同步。维护人员在Maintain Print Queues里新建了打印队列、改了Print Profile这些主数据变化需要同步到打印服务层让打印管理器知道有哪些队列、队列对应什么Profile、Profile里的属性是什么。如果没有这个场景前端打印服务可能还是拿着旧的配置在跑改完Profile也不生效。为什么很多项目配好了打印却不出作业查来查去发现是只激活了04660467没建或者反过来就是因为这两个场景一个是“管道”一个是“控制命令”缺一个都不能完整工作。新建配置后同步失败光有数据通道也无法把新Profile正确解析。我这里建议在项目刚开始配置打印时就把这两个通信场景一并检查不要等作业卡住了再回头补。2. 在Maintain Print Queues里管理Print Profile的实操2.1 动手前先检查三样东西别急着点新建。我在多个项目上吃过亏每次都是配置到一半才发现权限或通信场景没到位返工浪费时间。开始前建议先确认三件事。第一账号权限。Maintain Print Queues这个App需要相应的业务角色通常是Print Queue Administrator或者输出管理管理员。没有权限时打开App会直接空白或者没有新建按钮。如果是从传统ECC转过来的顾问别下意识去SPAD云环境里那是另一个操作路径。第二通信场景是否已经在维护视图里被激活。在S/4HANA Cloud里可以通过“Communication Arrangement”App检查SAP_COM_0466和SAP_COM_0467的Arrangement状态确认没有错误提示。这里注意Arrangement一旦创建完成默认生效是有状态的如果状态不是Active后续队列同步会失败。第三确认打印服务端地址与认证信息。这决定了你回头绑定输出设备时要填的“目的地”字段。不同项目会选择SAP Cloud Print Manager或者第三方打印管理服务两者的目的地写法不太一样。至少手里要有一份服务端配置清单包括服务URL、客户端ID、密钥或证书别名别边填边找。2.2 创建打印队列的完整操作准备工作做完就可以在Maintain Print Queues里创建队列了。界面不算复杂但每一步都有讲究。点击新建以后首先要填队列标识和名称。我建议队列标识用有业务含义的编码比如FIN_PRINTER_01、LOGISTICS_LABEL_02避免用PRT001这种流水号。你设的队列名称会出现在打印作业日志里业务用户和运维盯着日志排查时一个好认的名字能省大量沟通时间。接下来选择输出设备类型。这个字段决定系统把作业当普通办公打印、标签打印还是其他类型处理。选错类型后面会引发很多莫名其妙的问题。比如把标签打印选成了办公打印打印服务可能就不会按ZPL模式转发数据。然后就是绑定Print Profile。你可以选择已有Profile也可以创建新Profile之后再关联。这一步是整个流程里最关键的环节Profile选错等于队列的“能力描述”和实际设备不符。绑定之后可以看到该Profile的基础能力和打印机属性摘要确认无误再保存。保存后App会生成打印队列ID。这里有一个隐藏的“激活”动作——新版界面里你保存后还需要进一步点击“发布”或者“激活”让队列配置同步到打印服务层。很多人只保存不激活结果作业进了队列但前端打印管理器根本不知道有这条队列。我自己的习惯是保存后立刻去打印服务管理端的队列列表确认看到同名队列出现才算完成。2.3 新建或修改Print Profile的关键字段创建Profile通常从复制默认模板开始不建议真的一行行新建。系统自带的模板里有打印机型号、语言类型等基础信息复制再改成实际设备型号操作效率高很多。进去以后重点看下面几个字段。一个是打印机语言。普通办公设备一般选PCL批量归档场景可以直接选PDF或PDF_ARCHIVE标签打印机一定是ZPL2或者EPL。这个字段直接决定打印数据在到达设备前是否需要被转换。不会选的时候可以参考打印机说明书里“原生语言”一栏。另一个是纸张和纸盒配置。默认纸张大小、默认纸盒、是否自动切换纸盒。很多项目里用户抱怨打印出来整个页面偏移最后查出来的原因就是Profile里的默认纸张大小是A4而物理打印机默认纸盒里放的是Letter机器自动缩放导致版面错位。如果业务有固定纸型直接在Profile里写死别依赖自动检测。还有彩色模式。这个字段不只影响颜色表现还会影响打印速度。彩色打印的作业在设备上会明显变慢如果你只是在普通办公场景建议设备能力填黑白避免用户误以为系统卡顿。真需要彩色单独建一个彩色Profile给特定业务队列使用。改完Profile后注意系统一般会在变更时生成新版本。旧版本仍然可能被尚未完成的作业引用所以在生产环境变更前最好确认队列里没有大量积压作业否则可能出现新旧版本冲突。2.4 让Print Profile同时跑通两个通信场景前面说过SAP_COM_0466管数据面SAP_COM_0467管配置面。在Profile的实操中这两个场景的配合有比较典型的体现。新建Profile并发布后系统会通过0467把Profile的主数据和属性同步给打印服务层。如果你去打印管理器的设备配置列表里刷新应该能立刻看到刚刚新建的Profile。这个同步是后台自动完成的但有一点要注意同步动作依赖通讯用户。如果创建配置文件时用的通信用户权限不足同步会静默失败界面上没有明显的红叉。所以我的排查习惯是每次发布Profile变更后都到打印管理服务端确认对应设备或配置项是否更新。如果发现没有更新优先看Communication Arrangement里0467对应的用户是否有Side Effects功能权限。而当一个用户发起打印作业时作业先落到队列系统根据队列上的Profile生成作业属性再走0466推送到打印服务层。这一路上Profile里的打印机语言、纸张、份数都会被翻译成打印服务能读懂的属性。如果0466的通信设置里用户、路由地址配错作业就会一直停在队列里状态为“正在发送”或“准备中”。有些项目还会配置FFC前端打印功能回传那0466就还要承载状态上报的通道。所以不要将Profile变更理解为“改个界面字段而已”。它背后是一整套主数据同步和作业指令生成逻辑。改完务必从“配置同步”和“作业发送”两头都做验证。表格里可以这样快速核对验证点如何确认依赖场景Profile同步到打印服务打印管理器配置列表中能看到新版本SAP_COM_0467打印作业到达打印服务打印管理器作业列表出现新作业SAP_COM_0466状态正常回传S/4HANA端可看到作业成功/失败SAP_COM_0466队列主数据生效打印管理器能识别队列对应的ProfileSAP_COM_04673. 几种典型打印场景的Profile配置参考3.1 普通办公激光打印场景这是最常见的场景财务凭证、销售订单、采购单打印其实对物理设备的要求不算高但要稳定。我一般这样配置打印机语言选PCL彩色模式选黑白设备纸张默认A4份数是1。双向打印通常关闭避免业务用户顺手勾选导致作业速度变慢。如果有双面设备建议在Profile里显式定义“双面默认关”让用户按需选择而不是让前端打印管理器猜测。这个场景下Profile属性不需要太多越简单越不容易出问题。一个重要心得是办公场景的Profile名称尽量跟打印机型号无关而是跟用途有关比如OFFICE_HP_A4、FIN_REPORT_A4。一改设备型号Profile不用动。3.2 标签和条码打印场景标签打印机是另一个完全不同的世界踩坑概率高得多。首先打印机语言一定要选对大部分条码打印机用ZPL2老设备用EPL。如果语言选错打印出来的标签会变成一堆人读不懂的指令码类似“^XA^FO100,100^FD...”这种。不要问我为什么知道我在测试环境干过好几次。其次是分辨率和DPI设置。Profile里如果写定的DPI跟打印机实际分辨率不匹配会直接影响条码的清晰度。条码一旦扫描不清晰在物流现场就是灾难。建议按设备实际支持的DPI填一般203dpi适合大标签300dpi适合小标签和精细条码。拿不准的时候用300dpi绝对比203dpi更保险。然后是尺寸和间隙。标签纸的尺寸不是随便填的要跟标签纸实际宽度高度一致还要注意打印管理器里有没有“间隙识别”的设置。经常有人Profile配好、作业也打了但每张标签位置都跑偏其实就是纸张尺寸和标签物理尺寸差了几毫米打印机每张都要重新找起始位置。遇到这种情况优先检查Profile里的纸张尺寸而不是去拆打印机。3.3 电子凭证与PDF归档场景现在很多企业要求无纸化打印作业可能实际不会落到物理打印机而是生产一个PDF文件归档。这个场景下Profile的配置思路跟物理打印完全不同。打印机语言直接选PDF或者PDF_ARCHIVE输出设备走电子归档路径。彩色模式通常选自动保证PDF保留原文件颜色信息。纸张尺寸影响PDF页面大小如果希望原始凭证原样保存就选“原始大小”或与源文档一致不要强制A4否则文字会被压缩。这个场景还会涉及文件名生成规则。Profile里如果有文档命名模板建议包含来源系统、业务对象ID和时间戳方便后续在归档系统里检索。这块做得好的项目审计调档的时候效率会高很多。4. 常见问题与排查技巧实录4.1 作业进了队列但一直卡在“准备中”这是运维群里被问得最多的问题。看到作业状态是“准备中”第一反应不要是重发那只会制造更多孤儿作业。先看通信场景SAP_COM_0466有没有成功建立。去Communication Arrangement里翻一下状态如果场景是Inactive或者错误作业当然送不出去。这是最基础也最容易被忽略的一步。然后检查作业的队列绑定了哪个Profile。如果Profile里的输出设备逻辑名指向一个不存在的打印机打印服务层无法解析目的地作业会一直等待。一个常见情况是管理员把旧打印机的Profile复制过来改了个队列名但忘了改Profile里的逻辑设备名。如果通信和Profile都没问题再看打印服务端是不是停下来了。我遇到过打印管理器因为证书过期自动停止的情况S/4HANA这端看不出任何异常但作业就是发不出去。这时候去打印服务管理端看队列和作业状态一般能一眼找到问题。4.2 改了Print Profile前端打印机却还是老行为这个问题很典型修改Profile后打印出来的效果一点没变。别急着认为系统没保存大概率是同步链路的问题。回顾一下Print Profile的发布是异步的依赖SAP_COM_0467把变更同步到打印服务层。同步有时候不是秒级完成稍微等几分钟是正常的。如果很久都没生效优先检查0467的Arrangement状态和通信用户权限。另外特别提醒打印管理器端可能缓存了Profile。同步完成前前端会继续按旧Profile处理作业。这种情况下重启打印管理器的队列进程或者注销重新登录能够强制重新拉取配置。在测试环境我经常用这一招确认到底是同步问题还是缓存问题。还有一点Profile的新版本发布后正在打印中的作业可能仍引用旧版本。这不是故障是正常的版本行为。如果你想立刻切换版本需要先清空队列里的积压作业再发布新版本。4.3 打印作业报通信失败通信失败是云打印环境最常见的错误类型之一。涉及到SAP_COM_0466和SAP_COM_0467两个场景时排查顺序很重要。先区分是配置面问题还是数据面问题。如果创建队列、改Profile时打印服务端完全没有反应优先查0467。如果作业发送阶段报错优先查0466。这样按数据流方向排查比乱翻日志有效。接着看通信用户的权限。在SAP S/4HANA Cloud里通信用户是跟Communication Arrangement绑定的。不少项目在复制通信场景之后没有精确指定权限导致用户只有只读权限发不了作业。权限不足时日志里一般会出现“Access Denied”或“Not Authorized”之类的关键字。然后是证书和目的地。如果是双向认证证书过期是重灾区。我做过一个项目打印服务完全正常但SAP侧作业全失败查了半天发现是出站证书过期系统重建打印目的地之后才恢复。这类问题没有任何联调时的预兆只能靠定期检查证书有效期来预防。4.4 问题速查表症状排查重点涉及场景作业一直“准备中”通信Arrangement状态、Profile输出设备名、打印服务进程SAP_COM_0466打印出来是乱码Profile里的打印机语言选择配置面标签位置跑偏Profile纸张尺寸与标签物理尺寸不一致配置面改Profile后无变化同步延迟、打印管理器缓存、版本未发布SAP_COM_0467通信失败通信用户权限、证书、目的地配置SAP_COM_0466队列在服务端不显示队列未激活、同步失败SAP_COM_04675. 实际操作中的几点体会和扩展建议5.1 命名规范和版本管理打印队列和Profile这类基础设施虽然单个配置看起来很小但累积多了没有命名规范就是灾难。我建议企业从一开始就定一套规则队列用业务域输出类型序号比如FIN_REPORT_A4_01Profile用设备属性用途比如ZPL_300DPI_LABEL、PCL_A4_OFFICE。半年之后随便拉一个出来都能看懂不用靠人脑记忆。版本管理同样重要。每次修改Profile时填写清晰的变更说明。SAP的Profile通常有版本历史但不填说明的话历史记录就是一堆没人看懂的时间戳。我自己的做法是强制要求变更单号或问题单号写在描述里方便追溯。5.2 测试队列与生产队列分开在同一个环境下我强烈建议保留一套测试队列和对应的Profile不要去动生产队列做验证。云打印不像本地打印改错了不能立刻扯一根网线去现场。生产队列一旦绑定错误Profile积压的作业可能要人工清理给业务带来的影响非常大。测试队列最好用一台真正可以出纸的测试设备不要用虚拟打印机糊弄。很多特殊打印问题只有在真实设备上才能复现尤其是条码打印的清晰度和纸张走纸问题。5.3 定期检查通信场景状态和证书这个建议听起来像废话但实践里真的很容易被忽略。SAP S/4HANA Cloud的Communication Arrangement不会天天坏但服务密码轮换、证书过期都是周期性的问题。我的习惯是每月做一次检查重点看SAP_COM_0466和SAP_COM_0467的Arrangement状态、通信用户有效期、出站证书到期时间。一次性建好只会在验收时开心长期稳定靠的是维护习惯。5.4 这个配置体系还能往哪个方向扩展Print Profile管理好之后其实你已经在云端打印这条链路里打通了最关键的主干。后续如果要做更多的输出场景比如批量邮件合并、安全打印、分布式门店打印基本都可以沿用这套队列加Profile的骨架只是新增对应的Profile类型和通信场景配置。我自己的团队现在已经把Profile变更纳入到标准变更流程里每次修改都走审批确保变更可追踪。云端打印的“脾气”其实并不大只要把队列、Profile、通信场景这三者的关系理顺它就是一个完全可以预期的稳定基础设施。
返回列表