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: 

How can i read existing variant contents ?

Former Member
0 Kudos
3,616

Please provide example if possible.

1 ACCEPTED SOLUTION

Former Member
0 Kudos
1,049

you can read the programs variants by using fm RS_VARIANT_CONTENTS

regds,

kiran

5 REPLIES 5

Former Member
0 Kudos
1,049

Hi Guru,

Here are few FM for variants.. Check...

FM - RS_VARIANT_CONTENTS

Give program name and Variant name ->F8 -> check structure VALUTAB.

REPORT ZEXAMPLE.

DATA: JVARI_DESC LIKE VARID,

RC LIKE SY-SUBRC,

VARIANT_TEXT LIKE VARIT-VTEXT,

JVT LIKE VARIT OCCURS 0 WITH HEADER LINE,

SELPA LIKE RSPARAMS OCCURS 0 WITH HEADER LINE,

PARMS LIKE RSPARAMS OCCURS 0 WITH HEADER LINE,

OBJS LIKE VANZ OCCURS 0 WITH HEADER LINE.

PARAMETERS: P_VAR LIKE RSVAR-VARIANT. "NAME OF VARIANT

JVARI_DESC-REPORT = SY-REPID.

JVARI_DESC-VARIANT = P_VAR.

JVARI_DESC-ENAME = 'EXAMPLES'.

JVT-REPORT = SY-REPID.

JVT-VARIANT = P_VAR.

JVT-LANGU = SY-LANGU.

JVT-VTEXT = 'FUNCTION EXAMPLES'.

APPEND JVT.

CLEAR SELPA.

SELPA-SIGN = 'I'.

SELPA-OPTION = 'EQ'.

SELPA-KIND = 'P'.

SELPA-SELNAME = 'P_VAR'.

SELPA-LOW = P_VAR.

APPEND SELPA.

  • CHECK IF VARIANT EXISTS

CALL FUNCTION 'RS_VARIANT_EXISTS'

EXPORTING

REPORT = JVARI_DESC-REPORT

VARIANT = P_VAR

IMPORTING

R_C = RC

EXCEPTIONS

NOT_AUTHORIZED = 1

NO_REPORT = 2

REPORT_NOT_EXISTENT = 3

REPORT_NOT_SUPPLIED = 4

OTHERS = 5.

IF RC = 0 AND SY-SUBRC EQ 0.

  • DELETE OLD VARIANT

CALL FUNCTION 'RS_VARIANT_DELETE'

EXPORTING

REPORT = JVARI_DESC-REPORT

VARIANT = P_VAR

FLAG_CONFIRMSCREEN = '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 NE 0.

WRITE: 'UNABLE TO DELETE VARIANT:', P_VAR ,'STATUS=', SY-SUBRC.

EXIT.

ELSE.

WRITE:/ P_VAR, 'DELETED'.

ENDIF.

ELSE.

WRITE:/ P_VAR, 'DOES NOT EXIST'.

ENDIF. " ALREADY EXISTS

CALL FUNCTION 'RS_CREATE_VARIANT'

EXPORTING

CURR_REPORT = JVARI_DESC-REPORT

CURR_VARIANT = P_VAR

VARI_DESC = JVARI_DESC

TABLES

VARI_CONTENTS = SELPA

VARI_TEXT = JVT

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.

WRITE:/ 'VARIANT', P_VAR, 'CREATED FOR PROGRAM', JVARI_DESC-REPORT.

ELSE.

WRITE:/ 'VARIANT', P_VAR, 'NOT CREATED FOR PROGRAM', JVARI_DESC-REPORT.

EXIT.

ENDIF.

CALL FUNCTION 'RS_VARIANT_CONTENTS'

EXPORTING

REPORT = JVARI_DESC-REPORT

VARIANT = P_VAR

TABLES

VALUTAB = PARMS

OBJECTS = OBJS

EXCEPTIONS

VARIANT_NON_EXISTENT = 1

VARIANT_OBSOLETE = 2

OTHERS = 3.

IF SY-SUBRC NE 0.

WRITE : / 'ERROR READING VARIANT CONTENTS.'.

ELSE.

CALL FUNCTION 'RS_VARIANT_TEXT'

EXPORTING

LANGU = SY-LANGU

CURR_REPORT = JVARI_DESC-REPORT

VARIANT = P_VAR

IMPORTING

V_TEXT = VARIANT_TEXT.

WRITE:/ 'VARIANT DESCRIPTION:', VARIANT_TEXT.

LOOP AT PARMS.

CHECK PARMS-LOW NE SPACE OR PARMS-HIGH NE SPACE.

READ TABLE OBJS WITH KEY NAME = PARMS-SELNAME.

WRITE : /2 PARMS-SELNAME, OBJS-TEXT,

45 PARMS-KIND,

PARMS-SIGN,

PARMS-OPTION,

PARMS-LOW,

PARMS-HIGH.

NEW-LINE.

ENDLOOP.

SKIP.

ENDIF.

Reward points if this Helps.

Manish

Former Member
0 Kudos
1,050

you can read the programs variants by using fm RS_VARIANT_CONTENTS

regds,

kiran

Former Member
0 Kudos
1,049

REPORT ZZJBREPX MESSAGE-ID ZJ NO STANDARD PAGE HEADING LINE-SIZE 170.

TABLES: VARID.

DATA:

I_VTAB LIKE RSPARAMS OCCURS 0 WITH HEADER LINE.

SELECT-OPTIONS:

S_VARI FOR VARID-VARIANT.

************************************************************************

START-OF-SELECTION.

*******************

  • Iteration über Varianten

SELECT * FROM VARID WHERE REPORT = 'ZJBLDFTP'

AND VARIANT IN S_VARI.

  • .. Variante einlesen

CALL FUNCTION 'RS_VARIANT_CONTENTS'

EXPORTING

REPORT = VARID-REPORT

VARIANT = VARID-VARIANT

TABLES

VALUTAB = I_VTAB

EXCEPTIONS

VARIANT_NON_EXISTENT = 1

VARIANT_OBSOLETE = 2

OTHERS = 3.

  • .. Variantenwert ändern

READ TABLE I_VTAB WITH KEY SELNAME = 'P_SCRIPT'.

IF NOT ( SY-SUBRC = 0 AND I_VTAB-LOW CP '/data/bin*' ).

CONTINUE.

ENDIF.

REPLACE '/data/bin' WITH '/data/F30/bin' INTO I_VTAB-LOW.

MODIFY I_VTAB INDEX SY-TABIX.

  • .. Variante anpassen

CALL FUNCTION 'RS_CHANGE_CREATED_VARIANT'

EXPORTING

CURR_REPORT = VARID-REPORT

CURR_VARIANT = VARID-VARIANT

VARI_DESC = VARID

TABLES

VARI_CONTENTS = I_VTAB

EXCEPTIONS

ILLEGAL_REPORT_OR_VARIANT = 1

ILLEGAL_VARIANTNAME = 2

NOT_AUTHORIZED = 3

NOT_EXECUTED = 4

REPORT_NOT_EXISTENT = 5

REPORT_NOT_SUPPLIED = 6

VARIANT_DOESNT_EXIST = 7

VARIANT_LOCKED = 8

SELECTIONS_NO_MATCH = 9

OTHERS = 10.

ENDSELECT.

Former Member
0 Kudos
1,049

Thanks manish, kiran and sreekanth for answering...

striezl
Explorer
0 Kudos
1,049

Hi,

a couple of years have passed, nevertheless this program on github / abagit might help: https://github.com/striezl/VariScan

Kind regards

Bernhard