Dialog程序怎么设置variant

我们知道variant是ABAP Report程序自带的功能,但是我们怎样在D程序中用到这个功能呢,其实可以查看到部分dialog程序也是可以用到这个功能的,但是可以适用的条件是dialog上的条件是使用select-screen的subscreen。

其实整个过程没有想象的那么复杂,其本上只要了解以下下面的几个function就可以,

function group:SVAR,

其实我们对varaint的操作其实无非SAVE,display,delete;

Save功能:1、将需要保存varaint的screen上面的条件控件取出;

    CALL FUNCTION 'RS_ISOLATE_1_SELSCREEN'
      EXPORTING
        program           = w_report
        dynnr             = t_dynnr-dynnr
*     TABIX             = 0
*   IMPORTING
*     LAST_TABIX        = LAST_TABIX
      TABLES
        screen_sscr       = t_selctab
*     GLOBAL_SSCR       = GLOBAL_SSCR
     EXCEPTIONS
       no_objects        = 1
       OTHERS            = 2.

2、保存varaint 信息,并且设定varaint名,

  CALL FUNCTION 'RS_VARIANT_SAVE_FROM_SELSCREEN'
    EXPORTING
      curr_report          = w_report
      vari_report          = w_report
    IMPORTING
      variant              = w_variant
    TABLES
      p_sscr               = t_selctab_all
      p_vari               = t_vari
      p_varivdat           = t_varivdat
      p_varidyn            = t_varidyn
      p_vdatdyn            = t_vdatdyn
      p_dynsfields         = t_dynsfields
      p_screens            = gt_screens
    EXCEPTIONS
      illegal_variant_name = 1
      not_authorized       = 2
      no_report            = 3
      report_not_existent  = 4
      report_not_supplied  = 5
      OTHERS               = 6.
    CALL FUNCTION 'RS_VARIANT_VALUE_SAVE'
      EXPORTING
        rkey          = t_rkey
      TABLES
        selctab       = t_selctab_all
        p_vari        = t_vari
        p_varivdat    = t_varivdat
        p_varidyn     = t_varidyn
        p_vdatdyn     = t_vdatdyn
        p_dynsfields  = t_dynsfields
        p_variscreens = t_dynnr.

Display功能:

获取variant并更新到screen上:

  CALL FUNCTION 'RS_VARIANT_FETCH'
    EXPORTING
      function             = 'GET'
      report               = w_report
      rkey                 = t_rkey
*     dynnr                = t_dynnr-dynnr
      submode              = space
*     internal_call        = 'X'
    IMPORTING
      variant              = l_sel_variant
    TABLES
      selctab              = t_selctab_all
      p_vari               = t_vari
      p_varivdat           = t_varivdat
      p_varidyn            = t_varidyn
      p_vdatdyn            = t_vdatdyn
    EXCEPTIONS
      variant_name         = 1
      no_variants          = 2
      variant_inconsistent = 3
      only_background      = 4
      OTHERS               = 5.
    CALL FUNCTION 'RS_SUPPORT_SELECTIONS'
      EXPORTING
        report               = w_report
        variant              = sel_variant
      EXCEPTIONS
        variant_not_existent = 1
        variant_obsolete     = 2
        OTHERS               = 3.

Delete功能:

    CALL FUNCTION 'RS_VARIANT_DELETE'
      EXPORTING
        report               = w_report
        variant              = sel_variant
*       flag_confirmscreen   = 'X'
*       flag_delallclient    = 'X'
      EXCEPTIONS
        not_authorized       = 1
        not_executed         = 2
        no_report            = 3
        report_not_existent  = 4
        report_not_supplied  = 5
        variant_locked       = 6
        variant_not_existent = 7
        no_corr_insert       = 8
        variant_protected    = 9
        OTHERS               = 10.

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值