Ich musste mal Programme nach Authority-check scannen.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.
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
Folgende Benutzer bedankten sich beim Autor zzcpak für den Beitrag:
Abaphalbsocke
Icke0801 hat geschrieben:Ich musste mal Programme nach Authority-check scannen.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.
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.
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.mir bleibt jetzt nur die frage ob man so denn überhaupt klassen zählen kann, denn die stehen ja nicht im sourcecode oder?
Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Abaphalbsocke
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
Abaphalbsocke