SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Сохранение варианта Dynpro экрана



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Programming Techniques | Приемы программирования
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Sun Jan 13, 2008 10:48 am    Post subject: Сохранение варианта Dynpro экрана Reply with quote

Сохранение варианта Dynpro экрана
Автор: Alvaro Tejada

Тестируя dynpro приложения, часто приходится заполнять параметры одинаковыми значениями. Возникает желание сохранить вариант экрана, но проблема в том, что это не стандарный отчет, а Dynpro приложение. После поиска подходящих функциональных модулей, создан пример.

Нам необходим Dynpro экран с подэкраном, содержащим параметры.

Code:
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



Variant_Screen.png
 Description:
 Filesize:  9.68 KB
 Viewed:  13364 Time(s)

Variant_Screen.png



Variant_Saved.png
 Description:
 Filesize:  5 KB
 Viewed:  13364 Time(s)

Variant_Saved.png



Save_Variant.png
 Description:
 Filesize:  21.7 KB
 Viewed:  13364 Time(s)

Save_Variant.png



Load_Variant.png
 Description:
 Filesize:  6.76 KB
 Viewed:  13364 Time(s)

Load_Variant.png


Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Programming Techniques | Приемы программирования All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.