Sourcecode und Klassen scannen und zählen

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

Sourcecode und Klassen scannen und zählen

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
Moin liebe Community,

ich habe heute den Auftrag bekommen ein Programm zu schreiben der Sourcecode scannt und die Anzahl der Klassen und Objekte zählt.. ich weis nicht wie ich damit anfangen soll oder wie sowas überhaupt möglich ist, ich weis nur DASS es möglich ist.
Ich hab erstmal gehofft dass es evtl ein FuBa gibt der das kann, aber keins gefunden.
Habt ihr Anregungen wie ich damit anfangen könnte, bzw ob es solche FuBas überhaupt gibt?

Hintergrund ist Folgender:
Wir sind gerade dabei großangelegt unseren gesamten Code auf OO umzubauen, ich denke das wird gebraucht um zu ermitteln wie weit wir sind und wo noch etwas fehlt.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Sourcecode und Klassen scannen und zählen

Beitrag von Icke0801 (Specialist / 126 / 97 / 7 ) »
Abaphalbsocke hat geschrieben:Moin liebe Community,

ich habe heute den Auftrag bekommen ein Programm zu schreiben der Sourcecode scannt und die Anzahl der Klassen und Objekte zählt.. ich weis nicht wie ich damit anfangen soll oder wie sowas überhaupt möglich ist, ich weis nur DASS es möglich ist.
Ich hab erstmal gehofft dass es evtl ein FuBa gibt der das kann, aber keins gefunden.
Habt ihr Anregungen wie ich damit anfangen könnte, bzw ob es solche FuBas überhaupt gibt?

Hintergrund ist Folgender:
Wir sind gerade dabei großangelegt unseren gesamten Code auf OO umzubauen, ich denke das wird gebraucht um zu ermitteln wie weit wir sind und wo noch etwas fehlt.
Ich musste mal Programme nach Authority-check scannen.
Hier der relevante Auszug, ggf. reicht dir das schon :-)

Code: Alles auswählen.

*----------------------------------------------------------------------*
      " SELECTION-TABLE aufbauen
      CLEAR: rspar_tab, lt_listobject, lt_tlist.
      REFRESH: rspar_tab, lt_listobject, lt_tlist.
      " Suchstring
      rspar_line-selname = 'SKEYWORD'.
      rspar_line-sign     = 'I'.
      rspar_line-option   = 'EQ'.
      rspar_line-low      = 'AUTHORITY-CHECK'.
      rspar_line-high     = ' '.
      APPEND rspar_line   TO rspar_tab.
      " Programmname
*      rspar_line-selname  = 'REPNAME'.
*      rspar_line-sign     = 'I'.
*      rspar_line-option   = 'EQ'.
*      rspar_line-high     = ' '.
*      rspar_line-low      = <programm_name>.
*      APPEND rspar_line   TO rspar_tab.
*----------------------------------------------------------------------*
*      IF <programm_name> EQ 'Z_TEST_AUTH'.
*        BREAK-POINT.
*      ENDIF.
      SUBMIT rsabapsc USING SELECTION-SCREEN '1000'
                                 WITH SELECTION-TABLE rspar_tab
                                 WITH program    = <programm_name>
                                 WITH s_prog     = 'X'
                                 WITH maxlevel   = 1
                                 WITH selonly    = 'X'
                                 WITH showpath   = 'X'
                                 EXPORTING LIST TO MEMORY
                                 AND RETURN.

      ASSIGN ('(SABAPSC)RESULT[]') TO <source_table>.

      CALL FUNCTION 'LIST_FROM_MEMORY'
        TABLES
          listobject = lt_listobject
        EXCEPTIONS
          not_found  = 1
          OTHERS     = 2.
      IF sy-subrc EQ 0.

        CALL FUNCTION 'LIST_TO_ASCI'
          IMPORTING
            list_string_ascii = lt_tlist
          TABLES
            listobject        = lt_listobject
          EXCEPTIONS
            OTHERS            = 0.
*      lt_tlist = list_to_asci( lt_listobject ).

        lt_program_auth = filter_auth_list(
                      programm     = <programm_name>
                      it_tlist     = lt_tlist ).
        IF lt_program_auth IS NOT INITIAL.
          APPEND LINES OF lt_program_auth TO rt_program_auth.
        ENDIF.

      ENDIF.

Folgende Benutzer bedankten sich beim Autor Icke0801 für den Beitrag:
Abaphalbsocke

--
Grüße aus der Endlosschleife
-= Icke =-
abapTools

Re: Sourcecode und Klassen scannen und zählen

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
ist Report RS_ABAP_SOURCE_SCAN keine Alternative?

Folgende Benutzer bedankten sich beim Autor zzcpak für den Beitrag:
Abaphalbsocke


Re: Sourcecode und Klassen scannen und zählen

Beitrag von Icke0801 (Specialist / 126 / 97 / 7 ) »
zzcpak hat geschrieben:ist Report RS_ABAP_SOURCE_SCAN keine Alternative?
Sicher, kommt drauf an, welches Rückgabeformat man bevorzugt.
--
Grüße aus der Endlosschleife
-= Icke =-
abapTools

Re: Sourcecode und Klassen scannen und zählen

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
Icke0801 hat geschrieben:
Abaphalbsocke hat geschrieben:Moin liebe Community,

ich habe heute den Auftrag bekommen ein Programm zu schreiben der Sourcecode scannt und die Anzahl der Klassen und Objekte zählt.. ich weis nicht wie ich damit anfangen soll oder wie sowas überhaupt möglich ist, ich weis nur DASS es möglich ist.
Ich hab erstmal gehofft dass es evtl ein FuBa gibt der das kann, aber keins gefunden.
Habt ihr Anregungen wie ich damit anfangen könnte, bzw ob es solche FuBas überhaupt gibt?

Hintergrund ist Folgender:
Wir sind gerade dabei großangelegt unseren gesamten Code auf OO umzubauen, ich denke das wird gebraucht um zu ermitteln wie weit wir sind und wo noch etwas fehlt.
Ich musste mal Programme nach Authority-check scannen.
Hier der relevante Auszug, ggf. reicht dir das schon :-)

Code: Alles auswählen.

*----------------------------------------------------------------------*
      " SELECTION-TABLE aufbauen
      CLEAR: rspar_tab, lt_listobject, lt_tlist.
      REFRESH: rspar_tab, lt_listobject, lt_tlist.
      " Suchstring
      rspar_line-selname = 'SKEYWORD'.
      rspar_line-sign     = 'I'.
      rspar_line-option   = 'EQ'.
      rspar_line-low      = 'AUTHORITY-CHECK'.
      rspar_line-high     = ' '.
      APPEND rspar_line   TO rspar_tab.
      " Programmname
*      rspar_line-selname  = 'REPNAME'.
*      rspar_line-sign     = 'I'.
*      rspar_line-option   = 'EQ'.
*      rspar_line-high     = ' '.
*      rspar_line-low      = <programm_name>.
*      APPEND rspar_line   TO rspar_tab.
*----------------------------------------------------------------------*
*      IF <programm_name> EQ 'Z_TEST_AUTH'.
*        BREAK-POINT.
*      ENDIF.
      SUBMIT rsabapsc USING SELECTION-SCREEN '1000'
                                 WITH SELECTION-TABLE rspar_tab
                                 WITH program    = <programm_name>
                                 WITH s_prog     = 'X'
                                 WITH maxlevel   = 1
                                 WITH selonly    = 'X'
                                 WITH showpath   = 'X'
                                 EXPORTING LIST TO MEMORY
                                 AND RETURN.

      ASSIGN ('(SABAPSC)RESULT[]') TO <source_table>.

      CALL FUNCTION 'LIST_FROM_MEMORY'
        TABLES
          listobject = lt_listobject
        EXCEPTIONS
          not_found  = 1
          OTHERS     = 2.
      IF sy-subrc EQ 0.

        CALL FUNCTION 'LIST_TO_ASCI'
          IMPORTING
            list_string_ascii = lt_tlist
          TABLES
            listobject        = lt_listobject
          EXCEPTIONS
            OTHERS            = 0.
*      lt_tlist = list_to_asci( lt_listobject ).

        lt_program_auth = filter_auth_list(
                      programm     = <programm_name>
                      it_tlist     = lt_tlist ).
        IF lt_program_auth IS NOT INITIAL.
          APPEND LINES OF lt_program_auth TO rt_program_auth.
        ENDIF.

      ENDIF.

Das könnte eventuell funktionieren aber das kann ich so noch nicht mit sicherheit sagen. ich müsste das ein paar tage austesten und umbauen. könntest du mir vielleicht auch erklären was ich da sehe? das wäre echt nett...
mir bleibt jetzt nur die frage ob man so denn überhaupt klassen zählen kann, denn die stehen ja nicht im sourcecode oder? die sind ja immer seperat irgendwo gespeichert. vielleicht kann ich einfach nach klassenaufrufen und objektinstanzierungen suchen? was meint ihr?

Re: Sourcecode und Klassen scannen und zählen

Beitrag von DeathAndPain (Top Expert / 1964 / 261 / 415 ) »
mir bleibt jetzt nur die frage ob man so denn überhaupt klassen zählen kann, denn die stehen ja nicht im sourcecode oder?
Kommt drauf an, was für Klassen. Lokale Klassen stehen im Sourcecode. Globale Klassen (also die aus der Transaktion SE24) nicht. Aber die gehören ja auch nicht fest zu einem Programm.

Re: Sourcecode und Klassen scannen und zählen

Beitrag von ewx (Top Expert / 4871 / 314 / 644 ) »
Alles Objektorientierte steht in den Tabelle SEO*
Klassen SEOCLASS
Methoden SEOCOMPO

Hier steht, wie du an die "Programmnamen" der Klassen und damit an den Sourcecode kommst (READ REPORT):
https://www.tricktresor.de/blog/classname-utilities/

Und hier habe ich mal aufgeschrieben, wie man den SCAN Befehl nutzen kann, um die FORM Routinen zu ermitteln.
https://www.tricktresor.de/blog/unterpr ... ermitteln/
Analog dazu könnte man auch lokale Klassen in einem Report analysieren:

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Abaphalbsocke



Re: Sourcecode und Klassen scannen und zählen

Beitrag von deejey (Specialist / 422 / 129 / 45 ) »
Das ist ja mal 'ne komische Aufgabe :D

Re: Sourcecode und Klassen scannen und zählen

Beitrag von ralf.wenzel (Top Expert / 3946 / 201 / 281 ) »
Achtung, in SEOCOMPO stehen nicht nur Methoden!!!


Ralf

Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
Abaphalbsocke

Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Sourcecode und Klassen scannen und zählen

Beitrag von Abaphalbsocke (ForumUser / 42 / 18 / 0 ) »
Vielen vielen dank Männer, ich setz mich dann ran und forsche ein wenig! :)
Aber das Ding hier lasse ich vorerst noch ungelöst, da sich sicherlich noch Fragen ergeben könnten. Keine Sorge, werde es nicht als ungelöst hier verlieren und vergessen! :D

Seite 1 von 1

Vergleichbare Themen

3
Antw.
544
Views
Sourcecode in Änderung bringen und Transportauftrag erstellen
von Markus69 » 28.05.2022 18:25 • Verfasst in ABAP® Core
20
Antw.
3796
Views
Globale Klassen oder Lokale Klassen
von ZF_SAPler » 29.11.2022 13:47 • Verfasst in ABAP® für Anfänger
8
Antw.
9649
Views
Architektur von Abap-Klassen (Klassen Attribute)
von snooze » 12.04.2005 12:56 • Verfasst in ABAP Objects®
9
Antw.
5927
Views
Lokale Klassen in globalen Klassen
von ralf.wenzel » 20.04.2020 22:55 • Verfasst in ABAP Objects®
3
Antw.
3192
Views
Zahlen formatieren
von Aggressor » 19.06.2006 15:45 • Verfasst in Web-Dynpro, BSP + BHTML

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1777
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2319

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1777
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2319

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 353
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 949
MS-Word als Editor
letzen Monat von tekko 1 / 4464