sap后台作业管理:
后台作业,主要用于运行需要处理大量数据,对交互没有要求的程序。个人认为,简单的创建,配置和监控后台作业没有什么难度。后台作业管理最为困难的解决方案的取舍,系统负载的调控。失控的后台作业,往往对系统带来灾难性的性能问题,也会导致权限管理的风险,结果是得不偿失,而且可能导致流程混乱。所以个人认为,要创建一个周期性的后台作业之前,首先应该慎重分析。比方说,一个已经明显偏向 OLAP类型的报表,如果能够用BI去实现,为什么还要坚持在生产系统去跑长时间的后台作业?这极有可能是一种严重的重复运行的性能问题。再比方说,用户获得授权随意创建后台作业,结果导致后台作业失控,在业务繁忙的时候,因为大量的后台作业导致整个系统的停顿,会造成实实在在的经济损失。再比如说,后台作业安排的不合理,可能耗资源的和重要的后台作业直接或者间接安排到了同一个时间段,那么必然会影响流程的运作。
详细解释一下sap得后台作业。 sap得后台作业的启动方式可以是定时地,也是可以是事件触发的。后台作业里面包含一个或者多个步骤,每一个步骤则包含调用的程序,外部shell命令以及外部程序,也包含了调用者以及变量,还可以定义打印参数。后台作业的名字往往需要遵循一定的命名规则,用来明确该后台作业的重要程度,启动方式,作用等等。我们往往通过SM36去创建后台作业,(也可以通过SM36去查看SAP标准后台作业),通过SM37去监控和管理后台作业。
后台作业有Scheduled, Released, Ready, Active, Finished, Canceled六种状态。另外还可以指定执行的服务器组(后台job执行的服务器组可以用sm61来配置)。 Scheduled状态的job是创建了但是还没有release,这种状态的job是不会跑的。Released状态的job在启动条件满足后会启动,Ready就是启动条件满足后,系统开始为该job分配但尚未分配合适的后台进程的一个中间状态,Active代表这个job正在运行当中,换言之,其相应的后台进程正在运行job某一个step得程序;Finished代表job得所有step都成功的完成了。Canceled代表job在某一个step得运行过程中异常中止了。
sap job得信息存在一系列的表TBTC*里面。有的时候,某个job对应的进程中止了,但是表里面的状态信息仍然没有更新,会出现job是active状态,而实际没有进程在跑的情况,那么,我们只需要check status,就可以手动修正表里面的状态信息。
如果要分析job cancel得原因,应该检查job log,往往job得step都是跑的是abap程序,所以,job cancel得时候常伴随着dump产生,这个时候,双击job log的条目,可以跳转对应的dump。另外,有的时候,因为进程被中止导致的job cancel没有被写入日志,需要结合system log去分析。job log是保存在\usr\sap\SID\SYS\global日志文件<client nr>JOBLOG中的,在某些特定的情况下,日志文件访问问题会导致所有的job cancel,在DI上出现这种问题的时候,据说可能是NFS不稳定,这个我还不确定。
触发Event 基本本是function module BP_EVENT_RAISE或者sapevt.exe。
sap打印管理:
完整SAP打印过程基本上是: 1 选择打印的文档,创建spool request(printer-independent); 2 如果是立即打印,则根据output device创建output request(printer-dependent); 3 output request被移交给sap print process处理 4 sap print process将打印数据转换成打印机可识别的格式移交给操作系统打印管理器。
在adm里面强调了一点,就是如果操作系统层面打印机不可用,对sap来说该打印机也不可用。 此外,sap打印机的access method,主要和操作系统差异(NT,Unix)以及SAP print process和os spooler所在服务器有关. Access Method: F类型是针对用户端为windows平台,具体是通过sap spool->saplpd->windows spool实现的。 L(调用unix shell command lp/lpr)和C(调用windows API)类型分别对应unix和winodws平台的应用服务器得local类型,local类型的意思是sap print process和os spool在同一物理服务器上。 U和S分别针对unix平台和windows平台的远程打印,远程打印的意思是sap print process和os spooler不在同一服务器。需要说明的是,s类型还是需要调用打印服务器端的saplpd.
下面大致说明一下简单的sap 打印机配置过程(oms得复杂类型配置暂且略过,我还没有做过) 一般我们配置的打印机(output device)多为L类型的。 SPAD创建打印机 output device:大小写区分 device type:选择对应的型号,如果没有默认的,首先去sap官网下载最新的device type导入,如果还没有,就去供应商官网查找。sapnote 8928 delievery classs: 打印机用standard printer authorization group: 打印机权限管理,不需要可以略过(我没有配置过) Model,location, Message都是描述性字段,根据各公司的命名规则去填写,以便实际管理 lock printer in SAP System: 是否在sap系统锁定该打印机?当然不了 Host Acces method:L Host Printer Name: 打印机名称(这个字段将用于lp/lpr命令) Host Name:打印服务器机器名(比如我的打印机安装在sidhau上,那么这一栏自然就是sidhau) 一般为了性能良好,都将Do not query Host Spooler for output status打上勾。 其他默认。
关于F类型打印机,下面贴一个SDN关于PDF1打印机配置的BLOG。这个包含了F类型打印机配置,同时给出了不用第三方软件提供将报表转pdf格式文件得解决方案。已测试通过。 请注意打印配置,实际上不同类型的打印机,比如L和C得,代表着不同的接口。L类型打印机,sap传递给os得是lp/lpr命令,C类型的,则是调用windows平台的saplpd。 https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/1523
对于spool得维护和监控也是相当重要的。需要定期清理旧的spool request和output request. sap有标准的后台作业SAP_REORG_SPOOL( rspo1041)和SAP_CHECK_SPOOL(rspo1043)详细信息可以查看sap note 130978和98065