Grabar una variante de un 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                                               *
*---------------------------------------------------------------–*
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

Y unas cuantas imagenes -;)




Saludos,

Blag.

3 comentarios »

  1. jasshely Said,

    Agosto 14, 2007 @ 2:39 pm

    Hola tengo q usar la función RS_VARIANT_SAVE_FROM_SELSCREEN pero resulta que le paso el nombre del report y me da este error:

    “La imagen de selección 1000 no contiene ningún objeto”

    Mi report tiene una dynpro 1000 que solo tiene un area subscreen.

    Cuando se ejecuta el report la dynpro 1000 llama a la dynpro 1001 q contiene los campos que realmente quiero guardar como variantes.

    PROCESS BEFORE OUTPUT.

    MODULE STATUS_1000.
    CALL SUBSCREEN: SUBSCREEN_TEST INCLUDING SY-REPID ‘1001′.

    PROCESS AFTER INPUT.

    MODULE USER_COMMAND_1000.

    CALL SUBSCREEN: SUBSCREEN_TEST.

    Alguien puede ayudarme y decir dnd le puedo especificar qeu quiero usar la dynpro 1001. He probado en casi todas los parametros y tablas pero con ninguna funciona.

    Gracias

    Con otros reports normales, la ventana de guardar variantes sale bien, pero como esta está llamando (no se dnd) a la dynpro 1000 y los objetos estan en la 1001 pues no va.

    Para poder guardar las variantes de la dynpro 1001 uso esta función pero los parametros no los debo pasar bien, y he probado bastantes casos

  2. lina maria Said,

    Noviembre 15, 2007 @ 1:52 am

    buenos dias me puedes explicar un poco mas la llamada a la call screen 100 no me funciona. gracias

  3. Gema Said,

    Octubre 15, 2008 @ 2:58 pm

    Hola buen dia

    Estoy tratando de crearle una variante a una transaccion por medio
    de la SHDO

    Pero estoy confundida no se que paso hacer primero

    Por lo que veo en la pestaña 2 “variante Transaccion”

    debe reflejarse una variante que ya se haya creado a la transaccion en cuestion
    pero cuando le doy clip al buscador no la encuentra y ya tiene previamente
    una creada y alli quedo bloqueada.

    Agradezco de antemano la atencion

    Gracias
    GEMA Colombia
    gloria_estherm@hotmail.com

RSS feed for comments on this post · URI para TrackBack.

Leave a Comment

Cerrar
E-mail It