Thursday, May 14, 2026

Find Global Variable Usage in all programs

 This program find the global variable usage in programs. For example SAPMV45A is a major consumer of global variables because of extensive use of statics and constants in its user exits.

The output can be sorted to find the highest usages.



REPORT zgb_gv_usage.

TYPESBEGIN OF lty_progs,
         repid TYPE syrepid,
         size  TYPE i,
         msize TYPE i,
         perct TYPE i,
       END OF lty_progs.

DATA :ls_prog_name TYPE lty_progs.
DATAlt_prog_name TYPE STANDARD TABLE OF lty_progs.
DATAlt_global_sizes TYPE bcablim_global_tab.

SELECT obj_name
  FROM tadir
  INTO TABLE @DATA(lt_all_prog)
 WHERE obj_name LIKE 'Z%'
  AND object 'PROG' OR object 'REPS'.

IF sy-subrc EQ 0.
  WRITE:lineslt_all_prog ).
ENDIF.

LOOP AT lt_all_prog ASSIGNING FIELD-SYMBOL(<lfs_prog>).
  CLEAR ls_prog_name.
  TRY.
      ls_prog_name-repid cl_sedi_shared=>get_main_programi_include <lfs_prog>-obj_name i_dialog  abap_false ).
      APPEND ls_prog_name TO lt_prog_name.
    CATCH cx_sedi_error.
  ENDTRY.
ENDLOOP.

SORT lt_prog_name.
DELETE ADJACENT DUPLICATES FROM lt_prog_name.

WRITE:lineslt_prog_name ).

SORT lt_prog_name.
DELETE ADJACENT DUPLICATES FROM lt_prog_name.

DELETE lt_prog_name WHERE repid CP 'Z*' OR repid CP 'Y*'.

WRITE:lineslt_prog_name ).

LOOP AT lt_prog_name ASSIGNING FIELD-SYMBOL(<lfs_prog_name>).

  TRY.
      CALL METHOD cl_abap_gen_limits=>get_values
        EXPORTING
          prog_name    <lfs_prog_name>-repid
*         jump_limit   = 16000
*         local_limit  = 50
        IMPORTING
*         load_total   =
          global_sizes lt_global_sizes.
*                local_sizes  =
*                jump_sizes   =

      <lfs_prog_name>-size lt_global_sizes[ limit_key 'DATA' ]-used.
      <lfs_prog_name>-msize lt_global_sizes[ limit_key 'DATA' ]-max_val.
      <lfs_prog_name>-perct 100 * <lfs_prog_name>-size / <lfs_prog_name>-msize.

    CATCH cx_abap_load_error.
  ENDTRY.


ENDLOOP.

*==============Display ALV==================*
DATAgr_table TYPE REF TO cl_salv_table.

TRY.
    CALL METHOD cl_salv_table=>factory
      IMPORTING
        r_salv_table gr_table
      CHANGING
        t_table      lt_prog_name" Provide the table name

  CATCH cx_salv_msg.

ENDTRY.

*... Display Table
gr_table->display).

No comments:

Post a Comment

Search SAPMV45A includes for Constants and Statics

 This report can find CONSTANTS and STATICS in SAPMV45A Z-includes. We know that Constants and Statics consume global variables so identifyi...