日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP PO相关打印编程

發(fā)布時間:2025/3/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP PO相关打印编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.PO打印
通常企業(yè)打印PO有兩種方式,一是套打(由印刷廠商印制好一式多聯(lián)的格式以備打印的PO送給相關(guān)部門,比如采購部,供應(yīng)商,財務(wù)部,倉庫等保存),另一種就是直接打印在A4紙上.不管哪種方式,可直接寫一個外掛程序或使用SAP配置來打印,誰優(yōu)誰劣無可非議只要能正確將東西打印出來就行.
在打印報表的問題上我個人很喜歡Crystal report因為能很容易定義所需要的各種復(fù)雜格式,遺憾的是SAP系統(tǒng)似乎要裝插件才支持Crystal report.
使用外掛程序或配置,就要使用到所謂的Form(SAPscript)或Smartform,當(dāng)然另外一種方法就是使用OLE to Excel,在Excel定義好格式然后填充數(shù)據(jù).
好了,下面就PO打印配置談?wù)勅绾卧O(shè)置PO打印.
PO打印設(shè)置難嗎?顯然是非常容易的,從某種意義上講,你不做任何配置實(shí)際SAP已經(jīng)提供了default的output NEU打印PO了.
讓我們看看圖1.(Tcode:ME21N|ME22N)

[1]首先必須讓此PO輸出一個所謂的Message,在此此message是print output .
[2]打印預(yù)覽
按Messages進(jìn)入圖2.

[1]按Communication method進(jìn)入圖3.
[2]Processing log你能看到調(diào)用的程序名稱如是打印能看到產(chǎn)生的Spool no.號(有一種case是系統(tǒng)hang up了上萬個打印請求結(jié)果造成Spool buffer溢出,所以basis有必要定期去清理下)
SAP默認(rèn)是使用程序SAPFM06P的子程序ENTRY_NEU處理打印message的,這在配置中可做適當(dāng)更改如果有需要的話,畢竟SAP是程序堆起來的改改是很正常的.
[3]進(jìn)去后Requested processing欄位的Dispatch time選 4 Send immediately就表示立即發(fā)送消息.
[4]通常如需要重新打印,可選擇一已經(jīng)存在的Output 后再按它c(diǎn)opy一個.當(dāng)然也可使用ME9F重打.
[5]NEU是打印PO,SAP default的,接下來會告訴如何自定義output type. 為什么需要自定義output type?是在一個大集團(tuán)公司,可能存在有各種PO的打印格式并且可能需要各種不同的語言版本.
[6]在此選1 print output,你也可看到Message實(shí)際上可發(fā)送到printer, Fax,Mail, EDI和觸發(fā)PO的workflow事件等,舉個簡單的例子,供應(yīng)商要求建立PO后立即自動將PO數(shù)據(jù)EDI到他們的系統(tǒng)就可配置EDI Message ,關(guān)于EDI有專門解剖的一刀.
[7]Partner,SAP經(jīng)常有sold-to,ship-to,billing-to伙伴,VN是vendor.
[8]這個語言在一些跨國集團(tuán)可能用的上,假設(shè)公司間的transfer order格式相同,但是希望法國公司打印的是法文,德國打印的是德文,中國是中文,美國是英文,要么你為每種語言版本定義一個output type要么就在程序中判斷這個語言字段,而后者可能更好些,因為你只要使用SO10定義標(biāo)準(zhǔn)文本就行.
讓我們切換到圖3.
[1]Tcode:SAPD可設(shè)置打印機(jī)
[2]立即打印出來
[3]你還可使用別的Form(通常不能在此使用smartform,除非你大肆修改后臺配置)

大家可能對PO打印已有了初步了解,是的,不管是套打還是打印在A4上,都是可通過PO的message來完成的.
(1)PO header及其Item文本設(shè)置
IMG Path:Materials Management->Purchasing->Purchase Order
如圖

[1]定義Header text type.

如上圖,如企業(yè)需要可以增加自己的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自動取得不能修改.在下面將進(jìn)一不描述.

[3]定義item text type.
[4]如下圖,是text type 03的設(shè)置,1表示取數(shù)據(jù)順序,Seq.為0似乎是表示不用它,特別要強(qiáng)調(diào)以下這個No.加前墜將會成為文本ID標(biāo)識. 2.表示數(shù)據(jù)源,從圖中我們能看到PO的Materiap PO text文本取數(shù)據(jù)先從物料主數(shù)據(jù)的basic data text中讀取(在basic data 1視圖進(jìn)去維護(hù)),然后是讀取Purchase order text(物料主數(shù)據(jù)專門有一個View)的數(shù)據(jù),就是說你建立PO line text 03將自動從物料主數(shù)據(jù)將這些東西抓過來3.表示文本能否被更改.

當(dāng)定義好Header 和line Text type后,在建立PO時我們就能在這些文本中填寫數(shù)據(jù).如圖5,可能企業(yè)需要在PO中加入各種類型文本,并且這些文本可能被隨時更改,這種情況下我想使用固定程序恐怕相當(dāng)麻煩.
就需要使用相關(guān)配置,然后在程序中調(diào)用這些文本.

1根據(jù)歐美的相關(guān)合同法,PO上通常需要打印T&C(Terms*Condition),以便萬一有經(jīng)濟(jì)糾紛時可參照當(dāng)時打印出的文本條款,很明顯,T&C是針對不同的Vendor是經(jīng)常被修改的.另外PO上的運(yùn)輸方式也可能經(jīng)常變更,這種復(fù)雜的業(yè)務(wù)使用文本就可解決.
2 讓我們更深入了解下PO文本的保存情況,在SAP中,大多數(shù)的文本比如PO,SO,Billing等各種相關(guān)文本都保存在STXH,STXL中,我們根據(jù)一定規(guī)則將它讀出來,這些規(guī)則在稍后會繼續(xù)細(xì)講,回答那個Fix 標(biāo)識.N表示從source object抓出來后你不能再做修改,因此從文本STXH,STXL表中By PO item是查不到數(shù)據(jù)的,*表示文本抓出來你還能修改,當(dāng)自動抓取數(shù)你去做更改后才會保存早STXH,STXL中, By PO item可以讀取,這樣在編程序就必須注意首先根據(jù)PO item讀數(shù)據(jù)如沒讀到再到物料主數(shù)據(jù)中去找. 詳細(xì)請看SAP文本.
(2)PO Message配置

[1]應(yīng)該不會這么快就忘記建立PO header/Line text type的Seq. no.加上F前墜就是Text ID ,這步通常是不用做的除非你使用SAP標(biāo)準(zhǔn)的,因為PO將使用

[2]分配Form和相關(guān)Output程序給PO,在第[3]步討論,因為在定義PO output type時包括了這部分的配置.
[3]打開Output control發(fā)現(xiàn)配置和MM/SD的定價條件相似,是的,所謂的condition技術(shù)用在在Message output,MM/SD Pricing,FI Tax IMG等,而且他們共享了很多配置表,我想SAP是因為他們邏輯上相似所以將他們組織在一起. 通常的情況下是比如要設(shè)置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調(diào)用的程序,默認(rèn)是SAPFM06P
[4]使用的子程序,默認(rèn)是ENTRY_NEU
[5]打印調(diào)用的FORM
[6]在此我加了個Smartform,很明顯默認(rèn)是不會認(rèn)Smartform的,除非你將第3步的SAPFM06P Copy出(比如是ZSAPFM06P)再將ENTRY_NEU修改,這要費(fèi)點(diǎn)事情,還是使用Form吧
二.Define (定義)Message Schema for Purchase Order
IMG Path:Output Control->Message Determination Schemas

[1]選定procedure RMBEF1.
[2]將ZUSA加上.
[3]特別要強(qiáng)調(diào)一下,關(guān)于這個requirement在MM/SD的pricing配置中將會重點(diǎn)介紹,這個將對應(yīng)到一個子程序比如你可設(shè)置子程序返回值為True打印否則不打印.
使用Tcode VOFM>菜單Requirements->output control|OMFT|V/27可自定義requirements,簡單理解就是Control message,只有需求滿足才輸出消息.
三.建立條件記錄MN04
OK,是否現(xiàn)在就可使用這個output type了呢?回答是不能的,我們想象SD pricing后臺配好了你要還使用VK11呀,同樣,你必須使用MN04為此output type建立一條件記錄.

這些基礎(chǔ)工作都搞定了,下面來吹下如何coding …Coding是TMD世界上最無聊的工作之一,Salary有低,,哎….
To be continued .
….改天繼續(xù)將所有的打印給屠宰一遍.
(3)物料主數(shù)據(jù)文本
BADI也是enhancemnet的一種,可以在SE19中建立自定義的Implementation name激活系統(tǒng)自帶的badis,系統(tǒng)的badis可以在SE18中看。這個東東很好玩喲,要不要我教你玩呀?
SE75可看到所有的相關(guān)文本.

物料主數(shù)據(jù)中有很多Text(文本),比如有兩個視圖Purchase order text和Sales text,在basic data1視圖中單擊Basic data text按鈕或直接點(diǎn)擊Additional data按鈕能看見
Basic data text和Inspection text兩tab頁,在此可寫入一些相關(guān)信息,這些信息沒別的,就是將來可用在打印PO或SO上而已(更詳細(xì)請看MM相關(guān)單據(jù)打印).
如圖3.2.3-1,在purchase order text中保存了9行數(shù)據(jù),每行使用回車鍵分開.

當(dāng)物料保存時,SE16檢查STXH和STXL, 圖3.2.3-2是STXL表的結(jié)果,注意畫紅圈的字段,數(shù)據(jù)以binary格式保存在STXL字段CLUSTR里.
1.其實(shí)STXL就是一個所謂的簇式數(shù)據(jù)庫(一個有特定結(jié)構(gòu)的透明表),詳情請看第一篇的第12節(jié)簇數(shù)據(jù)庫和邏輯數(shù)據(jù)庫.
2.注意簇數(shù)據(jù)庫和簇表的區(qū)別.簇數(shù)據(jù)庫(ABAP層的概念)是透明表對應(yīng)一個SAP系統(tǒng)用的數(shù)據(jù)庫的一個物理表,


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按鈕進(jìn)去)
***??? 3.PRUE:Inspection Text
***??? 4.0001:Sales Text
??? ID?????????????????????????? = 'BEST'
??? LANGUAGE???????????????????? = SY-LANGU
***對1.2.3是Name就是mat. no.
***4sales text對應(yīng)的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鍵分行,所以使用內(nèi)表.??
Loop at itab_line.
?? write :/ itab_line-tdformat,'|',itab_line-tdline.
endloop .

***下面是讀出mat. master data的sales text的例子.
***注意NAME是物料(補(bǔ)滿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 .??


總結(jié)

以上是生活随笔為你收集整理的SAP PO相关打印编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。