Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

How to create variant through ABAP program

0 Likes
8,112

Hi ABAPers,


I have created one report program(ZTXX_MAPPING_PROCESS) and in this program I am trying to create the variant for another report program lets say(ZTXXRD3).


Below screenshot is the selection screen of ZTXXRD3 report.

I have written below logic in ZTXX_MAPPING_PROCESS report program for creating the variant. I can see the variant(zmap_rule,zmap_rule1,zmap_rule2) while accessing through selection screen. But it is not updating into the database table VARID.

screenshot for table varid.

And also you can see the check box over there and when i am trying to fill the value of 'report details'  with value 'X' as i have mentioned in below code but it is not reflecting when i have tried to execute the report through variant.Please see the below screenshot.

wa_rsparams-selname    = 'Report details'.

    wa_rsparams-kind       = 'P'.

    wa_rsparams-low        = 'X'.

    APPEND wa_rsparams TO it_rsparams.

    CLEAR wa_rsparams.

DATA:

       g_report      LIKE  rsvar-report VALUE 'ZTXXRD03',

       g_variant     LIKE  rsvar-variant VALUE 'zmap_rule2',

       g_vari_desc   LIKE  varid.

DATA:

      it_rsparams   TYPE STANDARD TABLE OF  rsparams,

      wa_rsparams   LIKE LINE OF it_rsparams,

      it_vari_text  TYPE STANDARD TABLE OF varit,

      wa_vari_text  LIKE LINE OF it_vari_text.

wa_vari_text-langu     'EN'.

    wa_vari_text-report    g_report.

    wa_vari_text-variant   g_variant.

    wa_vari_text-vtext     'Test variant'.

    APPEND wa_vari_text TO it_vari_text.

    CLEAR wa_vari_text.



    g_vari_desc-report     = g_report.

    g_vari_desc-variant    g_variant.

    g_vari_desc-environmnt = 'A'.

    g_vari_desc-aedat      = sy-datum.

    g_vari_desc-aetime     = sy-uzeit.



    wa_rsparams-selname    = 'PC File'.

    wa_rsparams-kind       = 'P'.

    wa_rsparams-low        = '/var/opt/svxx/oprt.txt'.

    APPEND wa_rsparams TO it_rsparams.

    CLEAR wa_rsparams.



    wa_rsparams-selname    = 'Mapping'.

    wa_rsparams-kind       = 'P'.

    wa_rsparams-low        = <fs_mp_so>-zmaprule.

    APPEND wa_rsparams TO it_rsparams.

    CLEAR wa_rsparams.



    wa_rsparams-selname    = 'Valida'.

    wa_rsparams-kind       = 'P'.

    wa_rsparams-low        = ' '.

    APPEND wa_rsparams TO it_rsparams.

    CLEAR wa_rsparams.



    wa_rsparams-selname    = 'Repails'.

    wa_rsparams-kind       = 'P'.

    wa_rsparams-low        = 'X'.

    APPEND wa_rsparams TO it_rsparams.

    CLEAR wa_rsparams.





    CALL FUNCTION 'RS_CREATE_VARIANT'

      EXPORTING

        curr_report   = g_report

        curr_variant  = g_variant

        vari_desc     = g_vari_desc

      TABLES

        vari_contents = it_rsparams

        vari_text     = it_vari_text.

Please suggest me on this.

8 REPLIES 8
Read only

Former Member
0 Likes
4,472

  DATA: lt_rsparams TYPE STANDARD TABLE OF rsparams,

         lw_rsparams TYPE rsparams,

         lt_varit    TYPE STANDARD TABLE OF varit,

         lw_varit    TYPE varit,

         lt_varid    TYPE STANDARD TABLE OF varid,

         lw_varid    TYPE varid,

         lv_variant  TYPE raldb_vari,

         lv_report   TYPE raldb_repo,

         lv_number   TYPE btcjobcnt,

         lv_stdate   TYPE btcsdate,

         lv_sttime   TYPE btcstime,

         lw_pri_params TYPE pri_params.

*---Prepare variant

   lw_rsparams-selname =  'RB_SOLT'.

   lw_rsparams-kind    =  'R'.

   APPEND lw_rsparams TO lt_rsparams.

   LOOP AT s_kunnr.

     lw_rsparams-selname =  'S_KUNNR'.

     lw_rsparams-kind    =  'S'.

     lw_rsparams-sign    =  s_kunnr-sign.

     lw_rsparams-option  =  s_kunnr-option.

     lw_rsparams-low     =  s_kunnr-low.

     lw_rsparams-high    =  s_kunnr-high.

     APPEND lw_rsparams TO lt_rsparams.

   ENDLOOP.

   lw_rsparams-selname =  'S_BUSABF'."Change by RVARKI 02/23/2010

   lw_rsparams-kind    =  'S'."Change by RVARKI 02/23/2010

   lw_rsparams-low     =  s_busabf-low."Change by RVARKI 02/23/2010

   lw_rsparams-high    =  s_busabf-high."Change by RVARKI 02/23/2010

   APPEND lw_rsparams TO lt_rsparams.

   lw_rsparams-selname =  'P_BUSABT'.

   lw_rsparams-kind    =  'P'.

   lw_rsparams-low     =  p_busabt.

   APPEND lw_rsparams TO lt_rsparams.

   lv_variant = 'Test03'.

   lv_report  = 'YVCMUE035_MASS_ASSMNT_ACTCLERK'.

   lw_varit-mandt   = sy-mandt.

   lw_varit-langu   = sy-langu.

   lw_varit-report  = lv_report.

   lw_varit-variant = lv_variant .

   lw_varit-vtext   = 'test'.

   APPEND lw_varit TO lt_varit.

   lw_varid-mandt = sy-mandt.

   lw_varid-report = lv_report.

   lw_varid-variant = lv_variant.

   lw_varid-transport = 'F'.

   lw_varid-environmnt = 'A'.

   lw_varid-version    = '01'.

   lw_varid-ename      = sy-uname.

   lw_varid-edat       = sy-datum.

   lw_varid-etime      = sy-uzeit.

   lw_varid-mlangu     = sy-langu.

   APPEND lw_varid TO lt_varid.

   CALL FUNCTION 'RS_CREATE_VARIANT'

     EXPORTING

       curr_report               = lv_report

       curr_variant              = lv_variant

       vari_desc                 = lw_varid

     TABLES

       vari_contents             = lt_rsparams

       vari_text                 = lt_varit

     EXCEPTIONS

       illegal_report_or_variant = 1

       illegal_variantname       = 2

       not_authorized            = 3

       not_executed              = 4

       report_not_existent       = 5

       report_not_supplied       = 6

       variant_exists            = 7

       variant_locked            = 8

       OTHERS                    = 9.

   IF sy-subrc <> 0.

   ENDIF.

   DATA: lv_pname  TYPE /osp/dt_progname,

         lv_varnam TYPE /osp/dt_variant,

         lv_uname  TYPE /osp/dt_uname,

         lt_joblist TYPE /osp/tt_report_job_list,

         lt_return  TYPE bapiret2_t.

   lv_pname = 'YVCMUE035_MASS_ASSMNT_ACTCLERK'.

   lv_varnam = lv_variant.

* lv_uname = 'SLINGAMANENI'.

   lv_uname = 'PPUPPALA'.

   lv_stdate  = sy-datum.

   lv_sttime  = sy-uzeit.

   DATA: gf_print_parameters TYPE pri_params.

   CALL FUNCTION 'JOB_OPEN'

     EXPORTING

       jobname          = 'YVCMUE035_MASS_ASSMNT_ACTCLERK'

*      sdlstrtdt        = lv_stdate

*      sdlstrttm        = lv_sttime

     IMPORTING

       jobcount         = lv_number

     EXCEPTIONS

       cant_create_job  = 1

       invalid_job_data = 2

       jobname_missing  = 3

       OTHERS           = 4.

   lw_pri_params-pdest  = 'LOCL'.

   lw_pri_params-prcop =   '001'.

   lw_pri_params-plist =   'YVCMUE035PPU'.

   lw_pri_params-prrel =   'X'.

   lw_pri_params-prnew =   'X'.

*

   lw_pri_params-linct =   '60-'.

   lw_pri_params-linsz  = '256'.

   lw_pri_params-paart =   'X_SPOOLERR'.

*

   lw_pri_params-prsap =   'D'.

   lw_pri_params-prrec =   'PPUPPALA'.

   lw_pri_params-prabt =   'DELOITTE'.

*

   lw_pri_params-prdsn =   'LIST1S'.

   lw_pri_params-ptype =   'TEXT'.

   lw_pri_params-armod =   '1'.

*

   lw_pri_params-priot =   '5'.

   lw_pri_params-prunx =   'D'.

   lw_pri_params-prkeyext  =                 '2'.

   lw_pri_params-prchk =         '9434'.

*

   CALL FUNCTION 'JOB_SUBMIT'

     EXPORTING

       authcknam               = 'SLINGAMANENI'

       jobcount                = lv_number

       jobname                 = 'YVCMUE035_MASS_ASSMNT_ACTCLERK'

       report                  = 'YVCMUE035_MASS_ASSMNT_ACTCLERK'

       variant                 = 'TEST2'

*      priparams               = lw_pri_params

     EXCEPTIONS

       bad_priparams           = 1

       bad_xpgflags            = 2

       invalid_jobdata         = 3

       jobname_missing         = 4

       job_notex               = 5

       job_submit_failed       = 6

       lock_failed             = 7

       program_missing         = 8

       prog_abap_and_extpg_set = 9

       OTHERS                  = 10.

   IF sy-subrc <> 0.

   ENDIF.

   CALL FUNCTION 'JOB_CLOSE'

     EXPORTING

       jobcount             = lv_number

       jobname              = 'YVCMUE035_MASS_ASSMNT_ACTCLERK'

       strtimmed            = 'X'

     EXCEPTIONS

       cant_start_immediate = 1

       invalid_startdate    = 2

       jobname_missing      = 3

       job_close_failed     = 4

       job_nosteps          = 5

       job_notex            = 6

       lock_failed          = 7

       invalid_target       = 8

       OTHERS               = 9.

   IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

   ENDIF.

   CALL FUNCTION 'RS_VARIANT_DELETE'

     EXPORTING

       report               = lv_report

       variant              = lv_variant

       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.

   IF sy-subrc <> 0.

   ENDIF.

Read only

0 Likes
4,472

Shashikant

check this out, maybe you will get a hint as to what you might be missing.

Thanks

Sameer

Read only

0 Likes
4,472

Hi Sameer,

Thanks for the quick response.

I am also doing the same thing but one thing i am not able to understand that when i am assigning the value 'X' to wa_rsparams-low for saving the check box selection to variant but it is not reflecting it as you can see in my original post. I have also given the screenshot. please help me on this.

wa_rsparams-selname    = 'Report details'.

    wa_rsparams-kind       = 'P'.

    wa_rsparams-low        = 'X'.

    APPEND wa_rsparams TO it_rsparams.

    CLEAR wa_rsparams.


Thanks,

Shashikant

Read only

SimoneMilesi
Active Contributor
0 Likes
4,472

Did you tried to add a commit work?

Read only

0 Likes
4,472

Hi Simone,

How can i perform the commit work?

Like after calling the function module i have to call the commit work or at somewhere else. Please guide me on this.

And please also suggest me how to save the checkbox selection as inputs to variants as I am trying to do by writing the code below but it is not reflecting it at all.

wa_rsparams-selname    = 'Report details'.

    wa_rsparams-kind       = 'P'.

    wa_rsparams-low        = 'X'.

    APPEND wa_rsparams TO it_rsparams.

    CLEAR wa_rsparams.



Regards,

Shashikant

Read only

0 Likes
4,472

ok, i think i found the problem with a better read (sorry for that)


    wa_rsparams-selname    = 'PC File'.


You should pass the TECHNICAL name of your parameter (i.e. P_FILE)

And add a COMMIT WORK (in my old 4.7 release i had to add it, now in ECC6 i do not know) after calling the the FM.

Read only

0 Likes
4,472

Thanks for such a great help.

Can you pls tell me the reason of not saving the variant in database table VARID but able to create the variant for short period of time . lets say yesterday i have created one variant by using FM 'RS_CREATE_VARIANT' but not able to see in the database table but i can see that variant by going into the goto menu bar on the selection screen but after one day it got deleted.

Read only

0 Likes
4,472

Hi,

Urgent reply please.

As you can see in below code that i am passing the w_file which is more than 45 chars but the structure is allowing me pass the parameter which length is less than 45. So could you please help me on achieving this.

wa_rsparams-selname    = 'P_PCFILE'.

            wa_rsparams-kind       = 'P'.

            wa_rsparams-low        = w_file.

            APPEND wa_rsparams TO it_rsparams.

            CLEAR wa_rsparams.

CALL FUNCTION 'RS_CREATE_VARIANT'

              EXPORTING

                curr_report               = g_report

                curr_variant              = g_variant

                vari_desc                 = g_vari_desc

              TABLES

                vari_contents             = it_rsparams

                vari_text                 = it_vari_text

*               VSCREENS                  =

*               VARI_CONTENTS_L           =

              EXCEPTIONS

                illegal_report_or_variant = 1

                illegal_variantname       = 2

                not_authorized            = 3

                not_executed              = 4

                report_not_existent       = 5

                report_not_supplied       = 6

                variant_exists            = 7

                variant_locked            = 8

                OTHERS                    = 9.

            IF sy-subrc EQ 0.

            ENDIF.