Application Development 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: 

Use button "save" in a dynpro to save "variants"

Former Member
0 Kudos

Hello,

I Have a dynpro. I activate the save button but it doesn´t let save a variant.

How can I do it ?

Thanks

5 REPLIES 5

Former Member
0 Kudos

Hi

What do you mean?

Which kind of dynpro you're speaking about?

U should considere the option to save a variant is available for SELECTION SCREEN only, so your dynpro is a SELECTION SCREEN?

If it's so, the pushbutton for the variant should be activated automatically.

Max

0 Kudos

My dynpro isn´t a selection screen ...

0 Kudos

Hi

In this situation u need to manage the pushbutton for variant by yourself.

So u need to implement the code in order to save the variant in your USER_COMMAND.

U can use the standard table TVARV to store the variant data (name, fields and values).

Max

this program may be helpful for you

Ref :


*-----------------------------------------------------------------*
*   TABLES                                                        *
*-----------------------------------------------------------------*
TABLES: SPFLI.

*-----------------------------------------------------------------*
*   TYPE-POOLS                                                    *
*-----------------------------------------------------------------*
TYPE-POOLS: SLIS.

*-----------------------------------------------------------------*
*   INTERNAL TABLES                                               *
*-----------------------------------------------------------------*
DATA: T_RKEY TYPE STANDARD TABLE OF RSVARKEY WITH HEADER LINE,
      T_SELCTAB TYPE STANDARD TABLE OF RSSCR WITH HEADER LINE,
      T_VARI TYPE STANDARD TABLE OF RVARI WITH HEADER LINE,
      IT_EXTAB TYPE SLIS_T_EXTAB,
      WA_EXTAB LIKE LINE OF IT_EXTAB.

*-----------------------------------------------------------------*
*   VARIABLES                                                     *
*-----------------------------------------------------------------*
DATA: OK_CODE TYPE SY-UCOMM,
      W_VARIANT TYPE RSVAR-VARIANT,
      W_USER_VARI TYPE RSVAR-VARIANT,
      W_VARI_REPORT TYPE RSVAR-REPORT,
      SEL_VARIANT TYPE RSVAR-VARIANT,
      SEL_VARIANT_TEXT TYPE RSVAR-VTEXT,
      W_REPORT TYPE RSVAR-REPORT,
      VARIANT_EXISTS TYPE C.

*-----------------------------------------------------------------*
*   SELECTION-SCREEN                                              *
*-----------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECT-OPTIONS: S_CARRID FOR SPFLI-CARRID,
                S_CONNID FOR SPFLI-CONNID.
SELECTION-SCREEN END OF SCREEN 101.

*-----------------------------------------------------------------*
*   INITIALIZATION                                                *
*-----------------------------------------------------------------*
INITIALIZATION.

W_REPORT = SY-REPID.

PERFORM VARIANT_EXISTS.

*-----------------------------------------------------------------*
*   START-OF-SELECTION                                            *
*-----------------------------------------------------------------*
START-OF-SELECTION.

  CALL SCREEN 0100.

*&----------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT                               *
*&----------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.

  SET PF-STATUS '100' EXCLUDING IT_EXTAB.

ENDMODULE.                 " STATUS_0100  OUTPUT

*&----------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT                          *
*&----------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.

  OK_CODE = SY-UCOMM.
  CASE OK_CODE.
    WHEN 'SAVE'.
      PERFORM SAVE_VARIANT.
      PERFORM VARIANT_EXISTS.
    WHEN 'BACK'.
      LEAVE TO SCREEN 0.
    WHEN 'GET_VAR'.
      PERFORM LOAD_VARIANT.
    WHEN 'DEL_VAR'.
      PERFORM DELETE_VARIANT.
      PERFORM VARIANT_EXISTS.
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

*&----------------------------------------------------------------*
*&      Form  SAVE_VARIANT                                        *
*&----------------------------------------------------------------*
FORM SAVE_VARIANT.

  T_RKEY-REPORT = SY-REPID.
  APPEND T_RKEY.

  CALL FUNCTION 'RS_VARIANT_SAVE_FROM_SELSCREEN'
       EXPORTING
            CURR_REPORT          = SY-REPID
            VARI_REPORT          = SY-REPID
       IMPORTING
            VARIANT              = W_VARIANT
       TABLES
            P_SSCR               = T_SELCTAB
            P_VARI               = T_VARI
       EXCEPTIONS
            ILLEGAL_VARIANT_NAME = 1
            NOT_AUTHORIZED       = 2
            NO_REPORT            = 3
            REPORT_NOT_EXISTENT  = 4
            REPORT_NOT_SUPPLIED  = 5
            OTHERS               = 6.

  T_RKEY-VARIANT = W_VARIANT.
  MODIFY T_RKEY INDEX 1.

  CALL FUNCTION 'RS_RWSET_SAVE_VARIANT'
       EXPORTING
            RKEY    = T_RKEY
       TABLES
            SELCTAB = T_SELCTAB.

ENDFORM.                    " SAVE_VARIANT

*&----------------------------------------------------------------*
*&      Form  LOAD_VARIANT                                        *
*&----------------------------------------------------------------*
FORM LOAD_VARIANT.

  PERFORM CHOOSE_VARIANT CHANGING SEL_VARIANT.

  IF SEL_VARIANT NE SPACE.

    CALL FUNCTION 'RS_SUPPORT_SELECTIONS'
         EXPORTING
              REPORT               = W_REPORT
              VARIANT              = SEL_VARIANT
         EXCEPTIONS
              VARIANT_NOT_EXISTENT = 1
              VARIANT_OBSOLETE     = 2
              OTHERS               = 3.

  ENDIF.

ENDFORM.                    " LOAD_VARIANT

*&----------------------------------------------------------------*
*&      Form  DELETE_VARIANT                                      *
*&----------------------------------------------------------------*
FORM DELETE_VARIANT.

  PERFORM CHOOSE_VARIANT CHANGING SEL_VARIANT.

  IF SEL_VARIANT NE SPACE.

    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.

  ENDIF.

ENDFORM.                    " DELETE_VARIANT

*-----------------------------------------------------------------*
*       FORM CHOOSE_VARIANT                                       *
*-----------------------------------------------------------------*
FORM CHOOSE_VARIANT CHANGING L_SEL_VARIANT.

  CALL FUNCTION 'RS_VARIANT_CATALOG'
       EXPORTING
            REPORT               = W_REPORT
            MASKED               = 'X'
       IMPORTING
            SEL_VARIANT          = L_SEL_VARIANT
            SEL_VARIANT_TEXT     = SEL_VARIANT_TEXT
       EXCEPTIONS
            NO_REPORT            = 1
            REPORT_NOT_EXISTENT  = 2
            REPORT_NOT_SUPPLIED  = 3
            NO_VARIANTS          = 4
            NO_VARIANT_SELECTED  = 5
            VARIANT_NOT_EXISTENT = 6
            OTHERS               = 7.

ENDFORM.

*&----------------------------------------------------------------*
*&      Form  VARIANT_EXISTS                                      *
*&----------------------------------------------------------------*
FORM VARIANT_EXISTS.

CALL FUNCTION 'RS_VARIANT_FOR_ONE_SCREEN'
       EXPORTING
            PROGRAM        = W_REPORT
            DYNNR          = '0101'
       IMPORTING
            VARIANT_EXISTS = VARIANT_EXISTS.

  IF VARIANT_EXISTS EQ 'X'.
    CLEAR: WA_EXTAB, IT_EXTAB.
    REFRESH IT_EXTAB.
  ELSE.
    CLEAR: WA_EXTAB, IT_EXTAB.
    REFRESH IT_EXTAB.
    WA_EXTAB-FCODE = 'GET_VAR'.
    APPEND WA_EXTAB TO IT_EXTAB.
  ENDIF.

ENDFORM.                    " VARIANT_EXISTS

0 Kudos

Thank you, this works for me.