Variante en Dynpro
Variante en Dynpro
Alguna vez han querido grabar una variante de un Dynpro? Aquí les dejo un pequeño
ejemplo -:)
REPORT Z_VARIANTS.
*-----------------------------------------------------------------*
* TABLES *
*-----------------------------------------------------------------*
TABLES: SPFLI.
*-----------------------------------------------------------------*
* TYPE-POOLS *
*-----------------------------------------------------------------*
TYPE-POOLS: SLIS.
*-----------------------------------------------------------------*
* INTERNAL TABLES *
*-----------------------------------------------------------------*
*-----------------------------------------------------------------*
* VARIABLES *
*-----------------------------------------------------------------*
*-----------------------------------------------------------------*
* SELECTION-SCREEN *
*-----------------------------------------------------------------*
*-----------------------------------------------------------------*
* INITIALIZATION *
*-----------------------------------------------------------------*
INITIALIZATION.
W_REPORT = SY-REPID.
PERFORM VARIANT_EXISTS.
*-----------------------------------------------------------------*
* START-OF-SELECTION *
*-----------------------------------------------------------------*
START-OF-SELECTION.
*&----------------------------------------------------------------*
*&----------------------------------------------------------------*
*&----------------------------------------------------------------*
*& 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.
*&----------------------------------------------------------------*
*&----------------------------------------------------------------*
FORM SAVE_VARIANT.
T_RKEY-REPORT = SY-REPID.
APPEND T_RKEY.
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.
EXPORTING
RKEY = T_RKEY
TABLES
SELCTAB = T_SELCTAB.
*&----------------------------------------------------------------*
*&----------------------------------------------------------------*
FORM LOAD_VARIANT.
IF SEL_VARIANT NE SPACE.
EXPORTING
REPORT = W_REPORT
VARIANT = SEL_VARIANT
EXCEPTIONS
VARIANT_NOT_EXISTENT = 1
VARIANT_OBSOLETE = 2
OTHERS = 3.
ENDIF.
*&----------------------------------------------------------------*
*&----------------------------------------------------------------*
FORM DELETE_VARIANT.
IF SEL_VARIANT NE SPACE.
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.
* FORM CHOOSE_VARIANT *
*-----------------------------------------------------------------*
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.
EXPORTING
PROGRAM = W_REPORT
DYNNR = '0101'
IMPORTING
VARIANT_EXISTS = VARIANT_EXISTS.
IF VARIANT_EXISTS EQ 'X'.
REFRESH IT_EXTAB.
ELSE.
REFRESH IT_EXTAB.
WA_EXTAB-FCODE = 'GET_VAR'.
ENDIF.
Blag.
Labels: ABAP