Quantcast
Channel: SCN : All Content - ABAP Development
Viewing all articles
Browse latest Browse all 8332

Searching Variants by Value

$
0
0

So, this is my code for searching for variant values.  I started this when I learned that others had been writing hard coded paths into variants.  When we copied Production to Development, the paths on Development pointed to Production directories and mayhem resulted.  I wrote this to find them.

 

*&---------------------------------------------------------------------*
*& Report  Z_FIND_VARI_CONTENT
*&
*&---------------------------------------------------------------------*

REPORT  z_find_vari_content          NO STANDARD PAGE HEADING          MESSAGE-ID zsd          LINE-SIZE 200          LINE-COUNT 65.

TABLES: varid,
        varit,        tvarvc,        rsparams.

SELECT-OPTIONS:
       s_rpt   FOR vari-report,       s_varnt FOR vari-variant.

PARAMETERS:
       p_value LIKE rsparams-low.

DATA:
       t_report1 LIKE trdir-name.


TYPES: BEGIN OF ty_parms.
        INCLUDE STRUCTURE rsparams.
TYPES  END OF ty_parms.

TYPES: BEGIN OF ty_vari_drop,
         report LIKE vari-report,         variant LIKE vari-variant,       END OF ty_vari_drop.

TYPES: BEGIN OF ty_vari_data,
         report LIKE vari-report,         variant LIKE vari-variant,         value LIKE rsparams-low,       END OF ty_vari_data.

TYPES: BEGIN OF ty_vari_sel,
         report LIKE varid-report,         variant LIKE varid-variant,         ename LIKE varid-ename,         aedat LIKE varid-aedat,       END OF ty_vari_sel.

TYPES:
        tt_vari_drop TYPE STANDARD TABLE OF ty_vari_drop,        tt_vari_data TYPE STANDARD TABLE OF ty_vari_data,        tt_vari_sel TYPE STANDARD TABLE OF ty_vari_sel,        tt_parms TYPE STANDARD TABLE OF ty_parms.

DATA:
        i_vari_drop TYPE tt_vari_drop,        i_vari_data TYPE tt_vari_data,        i_vari_sel TYPE tt_vari_sel,        i_valu_tab TYPE tt_parms.

DATA:
        wa_tvarvc TYPE tvarvc,        wa_vari_drop TYPE ty_vari_drop,        wa_vari_data TYPE ty_vari_data,        wa_vari_sel TYPE ty_vari_sel,        wa_valu_tab TYPE ty_parms.

************************************************************************
*                    START-OF-SELECTION                                *
************************************************************************
START-OF-SELECTION.  SELECT SINGLE * INTO CORRESPONDING FIELDS OF wa_tvarvc FROM tvarvc         WHERE name = 'Z_FIND_VARI_CONTENT'           AND type = 'P'           AND numb = '0000'.  SELECT report variant ename edat         INTO CORRESPONDING FIELDS OF TABLE i_vari_sel         FROM varid         WHERE report IN s_rpt           AND variant IN s_varnt.  SORT i_vari_sel BY report variant.  LOOP AT i_vari_sel INTO wa_vari_sel.    MOVE wa_vari_sel-report TO wa_tvarvc-low.    UPDATE tvarvc FROM wa_tvarvc.    COMMIT WORK AND WAIT.    if wa_tvarvc-low = 'NIL'.
*     break nwilhite.    endif.    SELECT SINGLE name INTO (t_report1) FROM trdir           WHERE name = wa_vari_sel-report             AND uccheck = 'X'.    IF sy-subrc IS INITIAL.      SELECT SINGLE * FROM vari                           WHERE relid   = 'VB'                           AND   report  = wa_vari_sel-report                           AND   variant = wa_vari_sel-variant.      IF sy-subrc <> 0.        CONTINUE.      ENDIF.      CALL FUNCTION 'RS_VARIANT_CONTENTS'        EXPORTING          report                      = wa_vari_sel-report          variant                     = wa_vari_sel-variant
*          MOVE_OR_WRITE               = 'W'
*          NO_IMPORT                   = ' '
*          EXECUTE_DIRECT              = ' '
*        IMPORTING
*          SP                          =        TABLES
*          L_PARAMS                    =
*          L_PARAMS_NONV               =
*          L_SELOP                     =
*          L_SELOP_NONV                =          valutab                     = i_valu_tab
*          OBJECTS                     =
*          FREE_SELECTIONS_DESC        =
*          FREE_SELECTIONS_VALUE       =       EXCEPTIONS         variant_non_existent        = 1         variant_obsolete            = 2         OTHERS                      = 3.      IF sy-subrc <> 0.        CASE sy-subrc.          WHEN '1'.            MESSAGE ID 'Z1' TYPE 'S' NUMBER '0000'                    WITH 'non-exestient for:' wa_vari_sel-report wa_vari_sel-variant.          WHEN '2'.            MESSAGE ID 'Z1' TYPE 'S' NUMBER '0000'                    WITH 'obsolete for:' wa_vari_sel-report wa_vari_sel-variant.          WHEN OTHERS.            MESSAGE ID 'Z1' TYPE 'S' NUMBER '0000'                    WITH 'other error for:' wa_vari_sel-report wa_vari_sel-variant.        ENDCASE.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.      ELSE.        LOOP AT i_valu_tab INTO wa_valu_tab.          MOVE wa_vari_sel-report TO wa_vari_data-report.          MOVE wa_vari_sel-variant TO wa_vari_data-variant.          MOVE wa_valu_tab-low TO wa_vari_data-value.          IF wa_vari_data-value IS INITIAL.          ELSE.            APPEND wa_vari_data TO i_vari_data.          ENDIF.          MOVE wa_valu_tab-high TO wa_vari_data-value.          IF wa_vari_data-value IS INITIAL.          ELSE.            APPEND wa_vari_data TO i_vari_data.          ENDIF.        ENDLOOP.      ENDIF.    ENDIF.    CLEAR wa_valu_tab.    REFRESH i_valu_tab.  ENDLOOP.  MOVE 'NIL' TO wa_tvarvc-low.  UPDATE tvarvc FROM wa_tvarvc.

* break nwilhite.

  LOOP AT i_vari_data INTO wa_vari_data.    IF wa_vari_data-value CS p_value.      WRITE: /001 wa_vari_data-report, wa_vari_data-variant, wa_vari_data-value.    ENDIF.  ENDLOOP.

 

Now, with some tweaks, we should be also able to search for accesses to TVARVC for variant values.

 

More to follow:

 

Neal


Viewing all articles
Browse latest Browse all 8332

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>