当前位置: 首页 > news >正文

Microsoft Universal Print 与 SAP 集成教程

引言

从 SAP 环境打印是许多客户的要求。例如数据列表打印、批量打印或标签打印。此类生产和批量打印方案通常使用专用硬件、驱动程序和打印解决方案来解决。

Microsoft Universal Print 是一种基于云的打印解决方案,它允许组织以集中化的方式管理打印机和打印机驱动程序。通过与 SAP 集成,用户可以简化打印流程,减少设备管理开销,并消除对打印驱动程序的需求。

前端打印 (Frontend Printing)

前端打印指的是通过 SAP GUI、Web 浏览器或基于 Web 的 SAP 前端应用程序进行的用户打印操作。

准备工作

在开始之前,请确保您已经拥有以下条件:

  • 有效的 Microsoft 365 订阅,包含Universal Print功能。
  • 访问您的 SAP 系统 的权限。
  • 与SAP系统兼容的打印机,已连接到网络。

步骤 1: 配置 Microsoft Universal Print

  1. 登录到 Microsoft 365 管理中心
  2. 导航到 设置” > “Universal Print”
  3. 添加并注册您的打印机。
  4. 分配 打印机权限 给需要打印的用户。

步骤 2: 在 SAP 中配置打印机

  1. 登录到您的 SAP 系统
  2. 打开 SPAD 打印机配置工具。
  3. 创建一个新的打印机队列,选择 远程打印机”
  4. 输入通过Universal Print注册的打印机的详细信息。

步骤 3: 管理打印作业

  1. 在SAP中发送打印作业。
  2. 使用 Microsoft 365 管理中心 监控打印作业状态。
  3. 如有需要,可暂停、取消或重新排列打印作业。

后端打印 (Backend Printing)

后端打印指的是由应用程序而非用户发起的无人值守的批量打印作业。

前提条件

  1. Azure Entra ID 租户 ID
  2. Azure 订阅 ID
  3. Microsoft Universal Print 许可证
  4. 至少一个在 Microsoft Universal Print 中注册的物理打印机
  5. SAP NetWeaver:最低 SAP_BASIS 发布 7.57 或以上版本
  6. SAP Print Queue Management:在 SAP 中激活此功能
  7. 授权的 SAP 用户:有权生成和监督假脱机请求和打印队列的个人

集成方案设计

配置后端打印解决方案:

后端打印解决方案运行得就像一个润滑良好的机器,有两个主要组件和谐地工作:

  1. 部署基础设施(控制面板):可以将其想象为乐队的指挥,监督设置并确保打印过程的所有部分都调整得恰到好处,随时准备行动。
  2. 后端打印工作者(工作负载面板):这是团队中的音乐家,勤奋地阅读乐谱(假脱机请求)并精确小心地演奏音符(发送打印作业)给 Universal Print 设备。

控制面板

控制面板主要负责管理后端打印辅助角色和 Azure 资源的基础结构状态。控制面板使用安装脚本进行部署,由以下组件组成:

  1. 持久性存储:所有 Terraform 状态文件的安全位置,可跟踪基础结构的蓝图。
  2. Container Registry:一个数字库,用于存储后端打印工作线程的映像,随时可以部署。

工作负载面板

工作负载面板是执行操作的位置。这一切都与处理这些打印作业有关,并且是使用 Terraform 设置的。以下是它的内容:

  • 应用服务计划和函数应用:后端打印辅助角色执行的阶段。
  • Application Insights:一个可选但敏锐的观察者,用于监视后端打印工作人员的性能。
  • Key Vault:用于存储所有机密和敏感信息的安全保管库。
  • 存储帐户:用于管理打印作业的仓库。
  • 逻辑应用和自定义连接器:确保打印作业传送到通用打印设备的信使。
  • API 连接:将逻辑应用连接到通用打印 API 的网桥。
  • 托管标识:函数应用的后台阶段阶段,授予对 Key Vault 和存储帐户的访问权限。

部署后端打印解决方案

1. 从 Azure 门户中打开 Azure Cloud Shell (Powershell)。

2. 在 Cloud Shell 编辑器中创建新文件。将以下脚本复制并粘贴到其中,并使用 ps1 扩展名保存(例如:setup.ps1)。保存文件后,您可以单击刷新按钮并在根目录上找到该文件。打开文件,然后调整参数(说明如下),使其适合你的 SAP 环境。

$Env:CONTROL_PLANE_ENVIRONMENT_CODE="CTRL"$Env:WORKLOAD_ENVIRONMENT_CODE="TEST"$Env:LOCATION=""$Env:ENTRA_ID_TENANT_ID = ""$Env:AZURE_SUBSCRIPTION_ID = ""$Env:SAP_VIRTUAL_NETWORK_ID = ""$Env:BGPRINT_SUBNET_ADDRESS_PREFIX = ""$Env:ENABLE_LOGGING_ON_FUNCTION_APP = "false"$Env:CONTAINER_REGISTRY_NAME = ""$Env:HOMEDRIVE = ""$UniqueIdentifier = Read-Host "Please provide an identifier that makes the service principal names unique, for example (MGMT/CTRL)"$confirmation = Read-Host "Do you want to create a new Application registration for Control Plane y/n?"if ($confirmation -eq 'y') {$Env:CONTROL_PLANE_SERVICE_PRINCIPAL_NAME = $UniqueIdentifier + "-SAP-PRINT-APP"}else {$Env:CONTROL_PLANE_SERVICE_PRINCIPAL_NAME = Read-Host "Please provide the Application registration name"}$ENV:SAPPRINT_PATH = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SAP-PRINT"if (-not (Test-Path -Path $ENV:SAPPRINT_PATH)) {New-Item -Path $ENV:SAPPRINT_PATH -Type Directory | Out-Null}Set-Location -Path $ENV:SAPPRINT_PATHGet-ChildItem -Path $ENV:SAPPRINT_PATH -Recurse | Remove-Item -Force -Recurse$scriptUrl = "https://raw.githubusercontent.com/Azure/universal-print-for-sap-starter-pack/main/deployer/scripts/install_backend_printing.ps1"$scriptPath = Join-Path -Path $ENV:SAPPRINT_PATH -ChildPath "install_backend_printing.ps1"Invoke-WebRequest -Uri $scriptUrl -OutFile $scriptPathInvoke-Expression -Command $scriptPath

脚本参数

名字

描述

类型

CONTROL_PLANE_ENVIRONMENT_CODE

控制平面环境代码用于为控制平面资源创建唯一名称。

字符串

“CTRL”, “管理”

WORKLOAD_ENVIRONMENT_CODE

工作负载环境名称用于为工作负载资源创建唯一名称

字符串

“PROD”、“TEST”、“DEV”

ENTRA_ID_TENANT_ID

Entra ID 租户 ID

字符串

“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”

AZURE_SUBSCRIPTION_ID

Azure Subcription ID

字符串

“yyyy-yyyy-yy-yy

SAP_VIRTUAL_NETWORK_ID

部署了 SAP 系统的虚拟网络的资源 ID。

字符串

BGPRINT_SUBNET_ADDRESS_PREFIX

将在其中部署后端打印服务的子网的地址前缀

字符串

"10.10.10.10/25"

ENABLE_LOGGING_ON_FUNCTION_APP

在 Azure 函数应用上启用日志记录

布尔字符串

真”/“假”

家庭驱动器

Azure 用户的驱动器。这是你在 Azure Cloud Shell 中看到的位置。示例:/home/john

字符串

“/家/约翰”

3. 在 PowerShell 上,执行命令:

./setup.ps1

4. 脚本执行完毕后,您将在您的 Azure 订阅中整齐地部署了控制面板和后端打印工作者。

授权 API 连接到 Universal Print

5. 跳转到 Azure 门户中的工作负载平面资源组。

6. 找到 API 连接资源并点击“编辑 API 连接”按钮。

7. 点击“授权”以与 Universal Print API 建立连接。弹出窗口关闭后,记得点击“保存”按钮以保存授权连接。

将 SAP 打印队列配置添加到函数应用

8. 打开函数应用并在概览屏幕上找到验证器函数。

9. 点击“代码 + 测试”。

10. 点击“测试/运行”按钮。

11. 在正文部分,放入下面提供的 JSON 负载并按“运行”。如果你看到一个愉快的“200 OK”响应代码,你就准备好了!如果不是,错误信息将为你提供修复任何小问题的线索。

通过 Powershell 或图形 API 从 Azure 门户获取打印机共享 ID。

通过重复上述配置步骤添加更多队列或 SAP 环境。

{"sap_environment" : "PROD","sap_sid": "SID","sap_hostname": "http://10.186.102.6:8001","sap_user": "sapuser","sap_password": "sappassword","sap_print_queues": [{"queue_name":"ZQ1","print_share_id": "12345678-1234-1234-1234-123456789012"},{"queue_name":"ZQ2","print_share_id": "12345678-1234-1234-1234-123456789012"}]}

附录

  1. 部署指南、SAP 特定 FAQ 和社区讨论可在 GitHub 上找到。
  2. 通用打印的一般 FAQ 可在 Microsoft Learn 上找到。
  3. 如果您希望集成特殊标签打印机,请参阅相关文档。

相关文章:

Microsoft Universal Print 与 SAP 集成教程

引言 从 SAP 环境打印是许多客户的要求。例如数据列表打印、批量打印或标签打印。此类生产和批量打印方案通常使用专用硬件、驱动程序和打印解决方案来解决。 Microsoft Universal Print 是一种基于云的打印解决方案,它允许组织以集中化的方式管理打印机和打印机驱…...

VBA在Excel中字母、数字的相互转化

VBA在Excel中字母、数字的相互转化 字母转数字的方法 数字转字母的方法 众所周知,Excel表中的行以数字展示,列用字母展示,如下图: 编程时,很多时候需要将列的字母转变为数字使用,如cells(num1,num2).value等,不知大家是怎么将字母转化为数字的,Excel是否有其他方式…...

【C语言】——联合体与枚举

【C语言】——联合体与枚举 一、联合体1.1、联合体类型的声明1.2、联合体的特点1.3、相同成员的结构体和联合体对比1.4、联合体的大小计算1.5、联合体的应用举例 二、枚举2.1、枚举类型的声明2.2、枚举类型的优点 一、联合体 1.1、联合体类型的声明 联合体也叫做共用体   与…...

java线上问题排查之内存分析(三)

java线上问题排查之内存分析 使用top命令 top命令显示的结果列表中,会看到%MEM这一列,这里可以看到你的进程可能对内存的使用率特别高。以查看正在运行的进程和系统负载信息,包括cpu负载、内存使用、各个进程所占系统资源等。 2.用jstat命令…...

中电金信:金Gien乐道 | 4月要闻速览,精彩再回顾

中国电子党组副书记、总经理李立功一行调研中电金信 4月10日,中国电子党组副书记、总经理李立功一行赴中电金信进行调研,深入听取了中电金信经营发展情况、研发工作及“源启”行业数字底座平台的汇报,并参观了公司展厅和科技研发场所&#xf…...

Java将文件目录转成树结构

在实际开发中经常会遇到返回树形结构的场景&#xff0c;特别是在处理文件系统或者是文件管理系统中。下面就介绍一下怎么将文件路径转成需要的树形结构。 在Java中&#xff0c;将List<String>转换成树状结构&#xff0c;需要定义一个树节点类&#xff08;TreeNode&#…...

硬件工程师必读:10条职业发展黄金法则!

在快速发展的科技时代&#xff0c;硬件工程师作为推动技术创新和产业升级的重要力量&#xff0c;其职业发展之路既充满挑战也蕴含无限机遇。为了在这条道路上稳步前行&#xff0c;我们首先需要了解硬件产品的研发流程。 在这个过程中&#xff0c;公司内的每个岗位都发挥着不可或…...

Redis是什么? 日常运维 Redis 需要注意什么 ? 怎么降低Redis 内存使用 节省内存?

你的项目或许已经使用 Redis 很长时间了&#xff0c;但在使用过程中&#xff0c;你可能还会或多或少地遇到以下问题&#xff1a; 我的 Redis 内存为什么增长这么快&#xff1f;为什么我的 Redis 操作延迟变大了&#xff1f;如何降低 Redis 故障发生的频率&#xff1f;日常运维…...

【Android项目】“追茶到底”项目介绍

没有多的介绍&#xff0c;这里只是展示我的项目效果&#xff0c;后面会给出具体的代码实现。 一、用户模块 1、注册&#xff08;第一次登陆的话需要先注册账号&#xff09; 2、登陆&#xff08;具有记住最近登录用户功能&#xff09; 二、点单模块 1、展示饮品列表 2、双向联动…...

机试:进制转换问题

十进制转任意进制 简单回忆一下十进制我们是怎么转换成二进制的&#xff08;短除法&#xff09;&#xff1a; 我们会将十进制数不断的进行除2操作&#xff0c;并且记录下每一次的余数&#xff08;这个余数就是我们最终求的二进制数的组成部分&#xff09;。 以下以12D举例&a…...

目标检测实战(十五): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)

文章目录 一、目标检测介绍二、YOLOv7介绍三、源码/论文获取四、环境搭建4.1 环境检测 五、数据集准备六、 模型训练七、模型验证八、模型测试九、错误总结9.1 错误1-numpy jas mp attribute int9.2 错误2-测试代码未能跑出检测框9.3 错误3- Command git tag returned non-zero…...

github中fasttext库README官文文档翻译

参考链接&#xff1a;fastText/python/README.md at main facebookresearch/fastText (github.com) fastText模块介绍 fastText 是一个用于高效学习单词表述和句子分类的库。在本文档中&#xff0c;我们将介绍如何在 python 中使用 fastText。 环境要求 fastText 可在现代 …...

WouoUIPagePC端实现

WouoUIPagePC端实现 WouoUIPage是一个与硬件平台无关&#xff0c;纯C语言的UI库&#xff08;目前只能应用于128*64的单色OLED屏幕上&#xff0c;后期会改进&#xff0c;支持更多尺寸&#xff09;。因此&#xff0c;我们可以在PC上实现它&#xff0c;本文就以在PC上使用 VScode…...

W801学习笔记十九:古诗学习应用——下

经过前两章的内容&#xff0c;背唐诗的功能基本可以使用了。然而&#xff0c;仅有一种模式未免显得过于单一。因此&#xff0c;在本章中对其进行扩展&#xff0c;增加几种不同的玩法&#xff0c;并且这几种玩法将采用完全不同的判断方式。 玩法一&#xff1a;三分钟限时挑战—…...

类加载器ClassLoad-jdk1.8

类加载器ClassLoad-jdk1.8 1. 类加载器的作用2. 类加载器的种类&#xff08;JDK8&#xff09;3. jvm内置类加载器如何搜索加载类--双亲委派模型4. 如何打破双亲委派模型--自定义类加载器5. 自定义一个类加载器5.1 为什么需要自定义类加载器5.2 自定义一个类加载器 6. java代码加…...

24年最新AI数字人简单混剪

24年最新AI数字人简单混剪 网盘自动获取 链接&#xff1a;https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码&#xff1a;0b8x...

免备案香港主机会影响网站收录?

免备案香港主机会影响网站收录?前几天遇到一个做电子商务的朋友说到这个使用免备案香港主机的完整会不会影响网站的收录问题&#xff0c;这个问题也是站长关注较多的问题之一。小编查阅了百度官方规则说明&#xff0c;应该属于比较全面的。下面小编给大家介绍一下使用免备案香…...

低代码工业组态数字孪生平台

2024 两会热词「新质生产力」凭借其主要特征——高科技、高效能及高质量&#xff0c;引发各界关注。在探索构建新质生产力的重要议题中&#xff0c;数据要素被视为土地、劳动力、资本和技术之后的第五大生产要素。数据要素赋能新质生产力发展主要体现为&#xff1a;生产力由生产…...

代码随想录第三十八天(完全背包问题)|爬楼梯(第八期模拟笔试)|零钱兑换|完全平方数

爬楼梯&#xff08;第八期模拟笔试&#xff09; 该题也是昨天的完全背包排列问题&#xff0c;解法相同&#xff0c;将遍历顺序进行调换 import java.util.*; public class Main{public static void main (String[] args) {Scanner scnew Scanner(System.in);int nsc.nextInt(…...

idea常用知识点随记

idea常用知识点随记 1. 打开idea隐藏的commit窗口2. idea中拉取Git分支代码3. idea提示代码报错&#xff0c;项目编译没有报错4. idea中实体类自动生成序列号5. idea隐藏当前分支未commit代码6. idea拉取新建分支的方法 1. 打开idea隐藏的commit窗口 idea左上角File→Settings…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...