SAP ABAP NAST表的使用解析

应用场景:

如何在smartform打印程序中使用nast表,来记录打印状态,我们将打印状态定为:未打印、已打印、已不正确地打印。

Nast信息状态表

分析:在nast表中有VSTAT(消息处理状态)字段,0代表未处理;1代表处理成功;2代表已不正确的处理;所以我们可以将要打印的记录记录到表nast中,用这个字段来代表打印状态,然后去调用smartform的function,如果返回值不等于,这代表用户打印了但是是不成功的处理,所以将这张单据的nast中的vstat设置成2。需要使用nast表的四个主键kappl、Objky、kschl、spras。

Objky记录打印的单据号;kschl记录信息类型,我们可以设定自定义规则比如我们的程序编号;spras记录信息的语言;kappl记录信息的筛选条件,因为这张表可能会被用于记录其他信息,所以为了便于区分我们特定smartform的信息记录设为’V7’.

第一步:nast表赋值

SELECT SINGLE spld
      FROM usr01
      INTO nast-ldest
     WHERE bname = sy-uname.
    IF sy-subrc <> 0.
      MESSAGE e018.  “打印输出设备出错,请先用事务码SU3维护.
    ENDIF.
    nast-spras = ‘1′.
    nast-kappl = ‘V7′.
    nast-kschl = ‘Y020′.
    nast-dimme = ‘X’.    “立即打印

nast-objky = fp_wa_header-tknum.”假设要打印的是装运单

第二步:调用smartform,并返回调用成功与否的值

调用smartform的时候传入nast表参数

  l_wa_out_option-tddest     = fp_nast-ldest. “打印设备
  l_wa_out_option-tdcopies   = fp_nast-anzal. “副本数
  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.“打印:权限
  l_wa_out_option-tdcover    = fp_nast-tdocover.  “打印:封面
  l_wa_out_option-tddivision = fp_nast-tddivision.“打印参数,封面的类
  l_wa_out_option-tddataset  = fp_nast-dsnam.“假脱机请求:名
  l_wa_out_option-tdsuffix1  = fp_nast-dsuf1.“假脱机请求:suffx1
  l_wa_out_option-tdsuffix2  = fp_nast-dsuf2.“假脱机请求:suffx2
  l_wa_out_option-tdcovtitle = fp_nast-tdcovtitle.“打印参数,封面文本
  l_wa_out_option-tdarmod    = fp_nast-tdarmod.“打印: 存档模式
  l_wa_out_option-tddest     = fp_nast-ldest.“假脱机: 输出设备
  l_wa_out_option-tdarmod    = fp_nast-tdarmod.“打印: 存档模式
  l_wa_out_option-tdschedule = fp_nast-tdschedule.“发送时间请求

第三步:更新nast表

可以调用RV_MESSAGE_UPDATE_SINGLE来更新nast表。

既然我们已经将打印的单据保存到了nast表,那么我们就可以很容易的实现用户需要区分单据是否已打印的需求了。

假设用户通过选择屏幕选择的装运单数据在内表fp_i_output中。

通过上述我们实现了记录单据是否打印的目的,但也存在一个问题,因为公司存在多种单据的打印,如果都需要记录打印状态,都使用nast表,那么随着时间的推移nast表记录的数据量将会是非常庞大的。当数据量达到一定数量级时,打印程序每次都去查询nast表,程序的性能就会受到影响。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值