【转】NAST表的使用
應(yīng)用場(chǎng)景:
如何在smartform打印程序中使用nast表,來(lái)記錄打印狀態(tài),我們將打印狀態(tài)定為:未打印、已打印、已不正確地打印。
Nast信息狀態(tài)表
分析:在nast表中有VSTAT(消息處理狀態(tài))字段,0代表未處理;1代表處理成功;2代表已不正確的處理;所以我們可以將要打印的記錄記錄到表nast中,用這個(gè)字段來(lái)代表打印狀態(tài),然后去調(diào)用smartform的function,如果返回值不等于,這代表用戶(hù)打印了但是是不成功的處理,所以將這張單據(jù)的nast中的vstat設(shè)置成2。需要使用nast表的四個(gè)主鍵kappl、Objky、kschl、spras。
Objky記錄打印的單據(jù)號(hào);kschl記錄信息類(lèi)型,我們可以設(shè)定自定義規(guī)則比如我們的程序編號(hào);spras記錄信息的語(yǔ)言;kappl記錄信息的篩選條件,因?yàn)檫@張表可能會(huì)被用于記錄其他信息,所以為了便于區(qū)分我們特定smartform的信息記錄設(shè)為’V7’.
第一步:nast表賦值
SELECT SINGLE spld
? ?? ?FROM usr01
? ?? ?INTO nast-ldest
? ???WHERE bname = sy-uname.
? ? IF sy-subrc <> 0.
? ?? ?MESSAGE e018.??“打印輸出設(shè)備出錯(cuò),請(qǐng)先用事務(wù)碼SU3維護(hù).
? ? ENDIF.
? ? nast-spras = ‘1′.
? ? nast-kappl = ‘V7′.
? ? nast-kschl = ‘Y020′.
? ? nast-dimme = ‘X’.? ??“立即打印
nast-objky = fp_wa_header-tknum.”假設(shè)要打印的是裝運(yùn)單
第二步:調(diào)用smartform,并返回調(diào)用成功與否的值
調(diào)用smartform的時(shí)候傳入nast表參數(shù)
??l_wa_out_option-tddest? ???= fp_nast-ldest.?“打印設(shè)備
??l_wa_out_option-tdcopies? ?= fp_nast-anzal.?“副本數(shù)
??l_wa_out_option-tdimmed? ? = fp_nast-dimme.?“立即打印
??l_wa_out_option-tddelete? ?= fp_nast-delet.?“打印后刪除
??l_wa_out_option-tdcovtitle = fp_nast-tdcovtitle.“Text for coverpage
??l_wa_out_option-tdautority = fp_nast-tdautority.“打印:權(quán)限
??l_wa_out_option-tdcover? ? = fp_nast-tdocover.??“打印:封面
??l_wa_out_option-tddivision = fp_nast-tddivision.“打印參數(shù),封面的類(lèi)
??l_wa_out_option-tddataset??= fp_nast-dsnam.“假脫機(jī)請(qǐng)求:名
??l_wa_out_option-tdsuffix1??= fp_nast-dsuf1.“假脫機(jī)請(qǐng)求:suffx1
??l_wa_out_option-tdsuffix2??= fp_nast-dsuf2.“假脫機(jī)請(qǐng)求:suffx2
??l_wa_out_option-tdcovtitle = fp_nast-tdcovtitle.“打印參數(shù),封面文本
??l_wa_out_option-tdarmod? ? = fp_nast-tdarmod.“打印: 存檔模式
??l_wa_out_option-tddest? ???= fp_nast-ldest.“假脫機(jī): 輸出設(shè)備
??l_wa_out_option-tdarmod? ? = fp_nast-tdarmod.“打印: 存檔模式
??l_wa_out_option-tdschedule = fp_nast-tdschedule.“發(fā)送時(shí)間請(qǐng)求
第三步:更新nast表
可以調(diào)用RV_MESSAGE_UPDATE_SINGLE來(lái)更新nast表。
既然我們已經(jīng)將打印的單據(jù)保存到了nast表,那么我們就可以很容易的實(shí)現(xiàn)用戶(hù)需要區(qū)分單據(jù)是否已打印的需求了。
假設(shè)用戶(hù)通過(guò)選擇屏幕選擇的裝運(yùn)單數(shù)據(jù)在內(nèi)表fp_i_output中。
通過(guò)上述我們實(shí)現(xiàn)了記錄單據(jù)是否打印的目的,但也存在一個(gè)問(wèn)題,因?yàn)楣敬嬖诙喾N單據(jù)的打印,如果都需要記錄打印狀態(tài),都使用nast表,那么隨著時(shí)間的推移nast表記錄的數(shù)據(jù)量將會(huì)是非常龐大的。當(dāng)數(shù)據(jù)量達(dá)到一定數(shù)量級(jí)時(shí),打印程序每次都去查詢(xún)nast表,程序的性能就會(huì)受到影響。
總結(jié)
以上是生活随笔為你收集整理的【转】NAST表的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【PP】长交期计划(LTP)简介
- 下一篇: 【采购订单】利用BAPI创建PO后丢失消