Please adapt this program and add the functionality that it either has a look at a specified object or a whole package. Also include associations, aggregations, method parameter, uses, inheritance and other useful stuff.
*&---------------------------------------------------------------------*
*& Report z_test_mass
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_test_mass.

DATA: lo_uml_scanner TYPE REF TO cl_uml_class_scanner,
      lt_diagram     TYPE cl_uml_class_scanner=>uml_tab,
      lv_puml_text   TYPE string.

" Specify the class name you want to scan
DATA(lv_class_name) = 'ZCA_MON'. " Replace with your class name

" Create an instance of the UML Class Scanner
CREATE OBJECT lo_uml_scanner.

" Set up scanner configuration (optional)
lo_uml_scanner->set_scanner_configuration(
  EXPORTING
    scan_local_types       = abap_true
    add_structures         = abap_true
    scan_used_types        = abap_true
    scan_function_groups   = abap_false
    scan_programs          = abap_false
    scan_deep              = abap_false
    scan_business_objects  = abap_false
    max_scan_depth         = 10
).

" Define which types to scan (type range)
DATA: lt_scan_types TYPE cl_uml_class_scanner=>uml_range_types,
      ls_scan_type  LIKE LINE OF lt_scan_types.

ls_scan_type-sign   = 'I'.
ls_scan_type-option = 'EQ'.
ls_scan_type-low    = lv_class_name.
APPEND ls_scan_type TO lt_scan_types.

" Define which packages to scan (package range)
DATA: lt_scan_packages TYPE cl_uml_class_scanner=>uml_range_packages,
      ls_scan_package  LIKE LINE OF lt_scan_packages.

ls_scan_package-sign   = 'I'.
ls_scan_package-option = 'CP'.
ls_scan_package-low    = ''. " Scan all packages or specify your package
APPEND ls_scan_package TO lt_scan_packages.

" Execute the scanner
TRY.
    lo_uml_scanner->execute(
      EXPORTING
        scan_packages = lt_scan_packages
        scan_types    = lt_scan_types
    ).
  CATCH cx_root INTO DATA(lx_root).
    MESSAGE lx_root->get_text( ) TYPE 'E'.
    EXIT.
ENDTRY.

" Get the diagram data
DATA: lv_kind TYPE c,
      lr_data TYPE REF TO data.

lo_uml_scanner->get_diagram(
  IMPORTING
    e_kind = lv_kind
  CHANGING
    c_data = lr_data
).

" Check if the returned kind is the expected UML table
IF lv_kind <> lo_uml_scanner->c_kind_uml_tab.
  MESSAGE 'Unexpected diagram kind' TYPE 'E'.
  EXIT.
ENDIF.

" Assign the diagram data to a field symbol
FIELD-SYMBOLS: <lt_uml_tab> TYPE cl_uml_class_scanner=>uml_tab.
ASSIGN lr_data->* TO <lt_uml_tab>.

IF sy-subrc <> 0 OR <lt_uml_tab> IS INITIAL.
  MESSAGE 'Failed to retrieve diagram data' TYPE 'E'.
  EXIT.
ENDIF.

" Generate PlantUML text from the diagram data
DATA: lt_output TYPE TABLE OF string,
      lv_line   TYPE string.

APPEND '@startuml' TO lt_output.

LOOP AT <lt_uml_tab> ASSIGNING FIELD-SYMBOL(<ls_uml_line>).
  " Check if the line represents a class
  IF <ls_uml_line>-kind = 'C' OR <ls_uml_line>-kind = 'O'.
    CONCATENATE 'class' <ls_uml_line>-name INTO lv_line SEPARATED BY ' '.
    APPEND lv_line TO lt_output.

    " Open class block
    APPEND '{' TO lt_output.

    " Add attributes
    LOOP AT <ls_uml_line>-t_attributes ASSIGNING FIELD-SYMBOL(<ls_attribute>).
      CONCATENATE '    ' <ls_attribute>-visibility <ls_attribute>-name ':' <ls_attribute>-type INTO lv_line SEPARATED BY ' '.
      APPEND lv_line TO lt_output.
    ENDLOOP.

    " Add methods
    LOOP AT <ls_uml_line>-t_methods ASSIGNING FIELD-SYMBOL(<ls_method>).
      CONCATENATE '    ' <ls_method>-visibility <ls_method>-name '()' INTO lv_line SEPARATED BY ' '.
      APPEND lv_line TO lt_output.
    ENDLOOP.

    " Close class block
    APPEND '}' TO lt_output.
  ENDIF.

  " Handle other kinds if necessary
ENDLOOP.

APPEND '@enduml' TO lt_output.

" Convert the output table to a single string
lv_puml_text = ''.
LOOP AT lt_output INTO lv_line.
  CONCATENATE lv_puml_text lv_line cl_abap_char_utilities=>cr_lf INTO lv_puml_text.
ENDLOOP.

" Output the PlantUML diagram as text
WRITE: / 'PlantUML Diagram as Text:', lv_puml_text.