W Pub: ABAPCLVARIANT

  1.  
  2. class ZCL_VARIANTS DEFINITION.
  3.  
  4.   PUBLIC SECTION.
  5.  
  6.      data: G_program  type RSVAR-REPORT,
  7.            g_variant  type  RSVAR-VARIANT,
  8.            g_params   type RSPARAMS_TT,
  9.            g_varitext type DIWPS_VARIT_T,
  10.            g_varid    type VARID,
  11.            g_vardesc  type RVART_VTXT.
  12.  
  13.   METHOds: VARIANT_CHECK  returning value(p_result) type sy-subrc,
  14.            variant_delete returning value(p_result) type sy-subrc,
  15.            variant_create returning value(p_result) type sy-subrc,
  16.            variant_read   returning value(p_result) type sy-subrc.
  17.  
  18. ENDCLASS.
  19.  
  20.  
  21. class ZCL_VARIANTS IMPLEMENTATION.
  22.  
  23.  
  24.    method variant_read.
  25.               if me->G_program is INITIAL or
  26.             me->g_variant is INITIAL.
  27.             p_result = 4.
  28.          else.
  29.            CALL FUNCTION 'RS_VARIANT_CONTENTS'
  30.              EXPORTING
  31.                report                      = me->g_program
  32.                variant                     = me->g_variant
  33. *              MOVE_OR_WRITE               = 'W'
  34. *              NO_IMPORT                   = ' '
  35. *              EXECUTE_DIRECT              = ' '
  36. *              GET_P_XML_TAB               =
  37. *            IMPORTING
  38. *              SP                          =
  39. *              P_XML_TAB                   =
  40.              TABLES
  41. *              L_PARAMS                    =
  42. *              L_PARAMS_NONV               =
  43. *              L_SELOP                     =
  44. *              L_SELOP_NONV                =
  45.                valutab                     = me->g_params
  46. *              VALUTABL                    =
  47. *              OBJECTS                     =
  48. *              VARIVDATS                   =
  49. *              FREE_SELECTIONS_DESC        =
  50. *              FREE_SELECTIONS_VALUE       =
  51. *              FREE_SELECTIONS_OBJ         =
  52.             EXCEPTIONS
  53.               VARIANT_NON_EXISTENT        = 1
  54.               VARIANT_OBSOLETE            = 2
  55.               OTHERS                      = 3.
  56.            IF sy-subrc <> 0.
  57.               p_result = sy-subrc.
  58.            ENDIF.
  59.  
  60.          endif.
  61.    ENDMETHOD.
  62.  
  63.    method variant_create.
  64.  
  65.          data: l_varitxt like LINE OF g_varitext.
  66.  
  67.          if me->G_program is INITIAL or
  68.             me->g_variant is INITIAL.
  69.             p_result = 4.
  70.          else.
  71.  
  72.             me->g_varid-report     = me->G_program.
  73.             me->g_varid-variant    = me->g_variant.
  74.             me->g_varid-environmnt = 'A'.
  75.             me->g_varid-aedat      = sy-datum.
  76.             me->g_varid-aetime     = sy-uzeit.
  77.  
  78.             l_varitxt-langu     =  sy-langu.
  79.             l_varitxt-report    =  me->g_program.
  80.             l_varitxt-variant   =  me->g_variant.
  81.             l_varitxt-vtext     =  me->g_vardesc.
  82.             if me->g_vardesc is INITIAL.
  83.                 CONCATENATE l_varitxt-report
  84.                             l_varitxt-variant
  85.                              sy-uname sy-uzeit
  86.                              into l_varitxt-vtext SEPARATED BY ' '.
  87.             endif.
  88.             APPEND l_varitxt TO g_varitext.
  89.  
  90.  
  91.             CALL FUNCTION 'RS_CREATE_VARIANT'
  92.               EXPORTING
  93.                 curr_report               = me->g_program
  94.                 curr_variant              = me->g_variant
  95.                 vari_desc                 = me->g_varid
  96.               TABLES
  97.                 vari_contents             = me->g_params
  98.                 vari_text                 = me->g_varitext
  99.               EXCEPTIONS
  100.                 illegal_report_or_variant = 1
  101.                 illegal_variantname       = 2
  102.                 not_authorized            = 3
  103.                 not_executed              = 4
  104.                 report_not_existent       = 5
  105.                 report_not_supplied       = 6
  106.                 variant_exists            = 7
  107.                 variant_locked            = 8
  108.                 OTHERS                    = 9.
  109.             p_result = sy-subrc.
  110.          endif.
  111.    endmethod.
  112.  
  113.   METHOD variant_delete.
  114.          if me->G_program is INITIAL or
  115.             me->g_variant is INITIAL.
  116.             p_result = 4.
  117.          else.
  118.               CALL FUNCTION 'RS_VARIANT_DELETE'
  119.                 EXPORTING
  120.                   report               = me->G_program
  121.                   variant              = me->g_variant
  122.                   flag_confirmscreen   = 'X'
  123.                   flag_delallclient    = 'X'
  124.                 IMPORTING
  125.                   variant              = me->g_variant
  126.                 EXCEPTIONS
  127.                   not_authorized       = 1
  128.                   not_executed         = 2
  129.                   no_report            = 3
  130.                   report_not_existent  = 4
  131.                   report_not_supplied  = 5
  132.                   variant_locked       = 6
  133.                   variant_not_existent = 7
  134.                   no_corr_insert       = 8
  135.                   variant_protected    = 9
  136.                   OTHERS               = 10.
  137.               p_result = sy-subrc.
  138.  
  139.          endif.
  140.   endmethod.
  141.  
  142.   method VARIANT_CHECK.
  143.          if me->G_program is INITIAL or
  144.             me->g_variant is INITIAL.
  145.             p_result = 4.
  146.          else.
  147.  
  148.             CALL FUNCTION 'RS_VARIANT_EXISTS'
  149.               EXPORTING
  150.                 report              = me->G_program
  151.                 variant             = me->g_variant
  152.               IMPORTING
  153.                 r_c                 = p_result
  154.               EXCEPTIONS
  155.                 not_authorized      = 1
  156.                 no_report           = 2
  157.                 report_not_existent = 3
  158.                 report_not_supplied = 4
  159.                 OTHERS              = 5.
  160.           if sy-subrc ne 0.
  161.              p_result = sy-subrc.
  162.           endif.
  163.       endif.
  164.   ENDMETHOD.
  165.  
  166.  
  167. ENDCLASS.
  168.  
  169. end-of-SELECTION.
  170.  
  171. data: oo type REF TO ZCL_VARIANTS.
  172.  
  173. create OBJECT oo.
  174. oo->G_program = 'ZZZZ'.
  175. oo->g_variant = 'PRUEBA22'.
  176. if oo->VARIANT_CHECK( ) is INITIAL.
  177.     if oo->variant_read( ) is INITIAL.
  178.        clear sy-subrc.
  179.        oo->g_variant = 'Z0101'.
  180.        if oo->variant_create( ) is INITIAL.
  181.           clear sy-subrc.
  182.        endif.
  183.     endif.
  184. endif.