1.PO打印
通常企业打印PO有两种方式,一是套打(由印刷厂商印制好一式多联的格式以备打印的PO送给相关部门,比如采购部,供应商,财务部,仓库等保存),另一种就是直接打印在A4纸上.不管哪种方式,可直接写一个外挂程序或使用SAP配置来打印,谁优谁劣无可非议只要能正确将东西打印出来就行.
在打印报表的问题上我个人很喜欢Crystal report因为能很容易定义所需要的各种复杂格式,遗憾的是SAP系统似乎要装插件才支持Crystal report.
使用外挂程序或配置,就要使用到所谓的Form(SAPscript)或Smartform,当然另外一种方法就是使用OLE to Excel,在Excel定义好格式然后填充数据.
好了,下面就PO打印配置谈谈如何设置PO打印.
PO打印设置难吗?显然是非常容易的,从某种意义上讲,你不做任何配置实际SAP已经提供了default的output NEU打印PO了.
让我们看看图1.(Tcode:ME21N|ME22N)

[1]首先必须让此PO输出一个所谓的Message,在此此message是print output .
[2]打印预览
按Messages进入图2.

[1]按Communication method进入图3.
[2]Processing log你能看到调用的程序名称如是打印能看到产生的Spool no.号(有一种case是系统hang up了上万个打印请求结果造成Spool buffer溢出,所以basis有必要定期去清理下)
SAP默认是使用程序SAPFM06P的子程序ENTRY_NEU处理打印message的,这在配置中可做适当更改如果有需要的话,毕竟SAP是程序堆起来的改改是很正常的.
[3]进去后Requested processing栏位的Dispatch time选 4 Send immediately就表示立即发送消息.
[4]通常如需要重新打印,可选择一已经存在的Output 后再按它copy一个.当然也可使用ME9F重打.
[5]NEU是打印PO,SAP default的,接下来会告诉如何自定义output type. 为什么需要自定义output type?是在一个大集团公司,可能存在有各种PO的打印格式并且可能需要各种不同的语言版本.
[6]在此选1 print output,你也可看到Message实际上可发送到printer, Fax,Mail, EDI和触发PO的workflow事件等,举个简单的例子,供应商要求建立PO后立即自动将PO数据EDI到他们的系统就可配置EDI Message ,关于EDI有专门解剖的一刀.
[7]Partner,SAP经常有sold-to,ship-to,billing-to伙伴,VN是vendor.
[8]这个语言在一些跨国集团可能用的上,假设公司间的transfer order格式相同,但是希望法国公司打印的是法文,德国打印的是德文,中国是中文,美国是英文,要么你为每种语言版本定义一个output type要么就在程序中判断这个语言字段,而后者可能更好些,因为你只要使用SO10定义标准文本就行.
让我们切换到图3.
[1]Tcode:SAPD可设置打印机
[2]立即打印出来
[3]你还可使用别的Form(通常不能在此使用smartform,除非你大肆修改后台配置)

大家可能对PO打印已有了初步了解,是的,不管是套打还是打印在A4上,都是可通过PO的message来完成的.
(1)PO header及其Item文本设置
IMG Path:Materials Management->Purchasing->Purchase Order
如图

[1]定义Header text type.

如上图,如企业需要可以增加自己的header text type,这些 text type在建立PO时可看到如图5.
[2]我们看看SAP default的header text type 06.如下图. 1表示取文本的顺序. 2表示文本能否被Fix(修理修改),空和*表示能修改,空表示修改Source object不会影响到PO text,*表示修改文本立即自动反映到PO text, N表示文本从source object自动取得不能修改.在下面将进一不描述.

[3]定义item text type.
[4]如下图,是text type 03的设置,1表示取数据顺序,Seq.为0似乎是表示不用它,特别要强调以下这个No.加前坠将会成为文本ID标识. 2.表示数据源,从图中我们能看到PO的Materiap PO text文本取数据先从物料主数据的basic data text中读取(在basic data 1视图进去维护),然后是读取Purchase order text(物料主数据专门有一个View)的数据,就是说你建立PO line text 03将自动从物料主数据将这些东西抓过来3.表示文本能否被更改.

当定义好Header 和line Text type后,在建立PO时我们就能在这些文本中填写数据.如图5,可能企业需要在PO中加入各种类型文本,并且这些文本可能被随时更改,这种情况下我想使用固定程序恐怕相当麻烦.
就需要使用相关配置,然后在程序中调用这些文本.

1根据欧美的相关合同法,PO上通常需要打印T&C(Terms*Condition),以便万一有经济纠纷时可参照当时打印出的文本条款,很明显,T&C是针对不同的Vendor是经常被修改的.另外PO上的运输方式也可能经常变更,这种复杂的业务使用文本就可解决.
2 让我们更深入了解下PO文本的保存情况,在SAP中,大多数的文本比如PO,SO,Billing等各种相关文本都保存在STXH,STXL中,我们根据一定规则将它读出来,这些规则在稍后会继续细讲,回答那个Fix 标识.N表示从source object抓出来后你不能再做修改,因此从文本STXH,STXL表中By PO item是查不到数据的,*表示文本抓出来你还能修改,当自动抓取数你去做更改后才会保存早STXH,STXL中, By PO item可以读取,这样在编程序就必须注意首先根据PO item读数据如没读到再到物料主数据中去找. 详细请看SAP文本.
(2)PO Message配置

[1]应该不会这么快就忘记建立PO header/Line text type的Seq. no.加上F前坠就是Text ID ,这步通常是不用做的除非你使用SAP标准的,因为PO将使用

[2]分配Form和相关Output程序给PO,在第[3]步讨论,因为在定义PO output type时包括了这部分的配置.
[3]打开Output control发现配置和MM/SD的定价条件相似,是的,所谓的condition技术用在在Message output,MM/SD Pricing,FI Tax IMG等,而且他们共享了很多配置表,我想SAP是因为他们逻辑上相似所以将他们组织在一起. 通常的情况下是比如要设置PO一建立好就自动打印,否则就需要想第一步更改PO哪些重要字段后会自动重打PO,兼于篇幅,在此就不讨论了,这个问题留给读者自己去考虑,在这里只讨论如何Copy出新的output type .因为用户可能需求不同的打印格式.
一.新增Output type Message .
IMG Path:Output Control->Message Types->Define Message Types for Purchase Order.

如图6.
[1]Copy All data from NEU to ZUSA.
[2]Output type可用在Print, Fax,EDI等上.
[3]Output调用的程序,默认是SAPFM06P
[4]使用的子程序,默认是ENTRY_NEU
[5]打印调用的FORM
[6]在此我加了个Smartform,很明显默认是不会认Smartform的,除非你将第3步的SAPFM06P Copy出(比如是ZSAPFM06P)再将ENTRY_NEU修改,这要费点事情,还是使用Form吧
二.Define (定义)Message Schema for Purchase Order
IMG Path:Output Control->Message Determination Schemas

[1]选定procedure RMBEF1.
[2]将ZUSA加上.
[3]特别要强调一下,关于这个requirement在MM/SD的pricing配置中将会重点介绍,这个将对应到一个子程序比如你可设置子程序返回值为True打印否则不打印.
使用Tcode VOFM>菜单Requirements->output control|OMFT|V/27可自定义requirements,简单理解就是Control message,只有需求满足才输出消息.
三.建立条件记录MN04
OK,是否现在就可使用这个output type了呢?回答是不能的,我们想象SD pricing后台配好了你要还使用VK11呀,同样,你必须使用MN04为此output type建立一条件记录.

这些基础工作都搞定了,下面来吹下如何coding …Coding是TMD世界上最无聊的工作之一,Salary有低,,哎….
To be continued .
….改天继续将所有的打印给屠宰一遍.
(3)物料主数据文本
BADI也是enhancemnet的一种,可以在SE19中建立自定义的Implementation name激活系统自带的badis,系统的badis可以在SE18中看。这个东东很好玩哟,要不要我教你玩呀?
SE75可看到所有的相关文本.

物料主数据中有很多Text(文本),比如有两个视图Purchase order text和Sales text,在basic data1视图中单击Basic data text按钮或直接点击Additional data按钮能看见
Basic data text和Inspection text两tab页,在此可写入一些相关信息,这些信息没别的,就是将来可用在打印PO或SO上而已(更详细请看MM相关单据打印).
如图3.2.3-1,在purchase order text中保存了9行数据,每行使用回车键分开.

当物料保存时,SE16检查STXH和STXL, 图3.2.3-2是STXL表的结果,注意画红圈的字段,数据以binary格式保存在STXL字段CLUSTR里.
1.其实STXL就是一个所谓的簇式数据库(一个有特定结构的透明表),详情请看第一篇的第12节簇数据库和逻辑数据库.
2.注意簇数据库和簇表的区别.簇数据库(ABAP层的概念)是透明表对应一个SAP系统用的数据库的一个物理表,

REPORT  ZMATTXT  .
data: itab_head like thead ,
      itab_line like tline occurs 0 with header line .
CALL FUNCTION 'READ_TEXT'
  EXPORTING
***ID: 1.BSET:Purchase Order Text(物料视图)
***    2.GRUN:Basic Data Text(从additional data按钮进去)
***    3.PRUE:Inspection Text
***    4.0001:Sales Text
    ID                           = 'BEST'
    LANGUAGE                     = SY-LANGU
***对1.2.3是Name就是mat. no.
***4sales text对应的name是Mat. no+sales org.+dist.chann.
    NAME                         = 'SL62ABPLS49H1535'
***1.2.3是MATERIAL,4是MVKE.
    OBJECT                       = 'MATERIAL'
 IMPORTING
   HEADER                        = itab_head
  TABLES
    LINES                        = itab_line
 EXCEPTIONS
   ID                            = 1
   LANGUAGE                      = 2
   NAME                          = 3
   NOT_FOUND                     = 4
   OBJECT                        = 5
   REFERENCE_CHECK               = 6
   WRONG_ACCESS_TO_ARCHIVE       = 7
   OTHERS                        = 8 .
*check sy-subrc eq 0 .
***此例是读出materail master data的purchase order text .
***PO text可有多行,使用Enter键分行,所以使用内表.  
Loop at itab_line.
   write :/ itab_line-tdformat,'|',itab_line-tdline.
endloop .

***下面是读出mat. master data的sales text的例子.
***注意NAME是物料(补满18位)+Sales org.+dist. chann.    
data: itab_sohead like thead ,
      itab_soline like tline occurs 0 with header line .
CALL FUNCTION 'READ_TEXT'
  EXPORTING
    ID                           = '0001'
    LANGUAGE                     = SY-LANGU
    NAME                         = 'SL62ABPLS49H1535  510001'
    OBJECT                       = 'MVKE' "Sales text是MVKE
 IMPORTING
   HEADER                        = itab_sohead
  TABLES
    LINES                        = itab_soline
 EXCEPTIONS
   ID                            = 1
   LANGUAGE                      = 2
   NAME                          = 3
   NOT_FOUND                     = 4
   OBJECT                        = 5
   REFERENCE_CHECK               = 6
   WRONG_ACCESS_TO_ARCHIVE       = 7
   OTHERS                        = 8 .
Loop at itab_soline.
   write :/ itab_soline-tdformat,'|',itab_soline-tdline.
endloop .

SAP PO相关打印编程相关推荐

  1. SAP PO中如何打印预览,找到Message type以及找到驱动程序和Form输出程序

    PO Printview 打印预览 Message Type 如何找到驱动程序和form程序 1.PO Printpreview 打印预览 Step1:通过TCODE:ME23N,输入PO ​ Ste ...

  2. 在SAP云平台ABAP编程环境上编写第一段ABAP程序

    距2017年秋季的SAP TechEd大会上一位大佬Björn Goerke,SAP's Chief Technology Officer宣布了SAP Cloud Platform即将支持ABAP至今 ...

  3. 我的第一个SAP PROXY ABAP Program(SAP PO 开发五)

    登陆PO服务器,启动JAVA客户端三步(SAP PO 开发一) 搭建一个WebService接口环境(SAP PO 开发 二) 用SAP PO连通一个WebService接口(SAP PO 开发 三) ...

  4. 【SAP PO】SAP PO 接口日志查询(Monitoring)

    SAP PO 接口日志查询(Monitoring) 1.监控入口 2.接口状态查看 3.接口报文查看 4.接口错误示例 1.监控入口 地址:http://172.31.1.10:50000/dir/s ...

  5. 【SAP PO】X-DOC:SAP PO 接口配置 REST 服务对接填坑记

    X-DOC:SAP PO 接口配置 REST 服务对接填坑记 1.背景 2.PO SLD配置 3.PO https证书导入 1.背景 (1)需求背景: SAP中BOM频繁变更,技术人员在对BOM进行变 ...

  6. SAP PO 消息报文存储详解(永久保存SAP PO中间件消息之三)

    C#连接SAP HANA数据库(永久保存SAP PO中间件消息之一) SAP PO 消息监控里消息状态预览的设置(永久保存SAP PO中间件消息之二) SAP PO 消息报文存储详解(永久保存SAP ...

  7. 基于C++11模板元编程实现Scheme中的list及相关函数式编程接口

    前言 本文将介绍如何使用C++11模板元编程实现Scheme中的list及相关函数式编程接口,如list,cons,car,cdr,length,is_empty,reverse,append,map ...

  8. Smartforms 在sap系统设置纸张打印格式

    在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表: 1.运行事务代码SPAD:选择工具栏上的[完全管理]按钮-->选 ...

  9. 如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service

    这是 Jerry 2021 年的第 47 篇文章,也是汪子熙公众号总共第 324 篇原创文章. Jerry 2014 年时,曾经在 SAP 社区上写过一篇英文博客,介绍了如何在 ABAP On-Pre ...

最新文章

  1. 【c语言】字符串逆序
  2. 前端学习笔记之this——懂不懂由你,反正我是懂了
  3. 3704对象关闭时_JVM 通过逃逸分析就能让对象在栈上分配?没那么简单!
  4. IOS开发之sqlite封装
  5. git 服务器搭建,在自己服务器上搭建私有仓库
  6. 汇编语言学习笔记-按指定的字体输出文本
  7. 关于C# Span的一些实践
  8. LeetCode 244. 最短单词距离 II(哈希map+set二分查找)
  9. Python datetime astimezone()方法与示例
  10. 信息学奥赛一本通 1022:整型与布尔型的转换 | OpenJudge NOI 1.2 09
  11. Mac下虚拟机使用那些事儿
  12. 趣学Python 教孩子学编程
  13. 如何快速入门学习UG编程
  14. win7修复计算机卡了,Win7修复漏洞补丁后系统变卡的原因和解决方法
  15. 《windows 程序设计》读书笔记 三
  16. electron制作聊天界面(仿制qq)
  17. HTML为图片添加Alt描述,图片标签alt
  18. Win10内存占用过高但是实际没有多少进程
  19. flink 出现反压场景, 异常场景造成Exceeded checkpoint tolerable failure threshold.
  20. 机器学习服务文本识别能力演进,大幅提升识别准确率

热门文章

  1. Linux服务器---关闭selinux
  2. window.btoa
  3. 迈入大数据时代 12项实名制助推平安建设精细化
  4. C/C++ 语言中的表达式求值
  5. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysq
  6. 【ubuntu】解决窗口管理器 不支持透明问题(11.04之前版本不支持)
  7. router3 BGP2 属性及选路
  8. 企业如何进行数字化转型?
  9. 《转》python学习--基础上
  10. 十条nmap常用的扫描命令