Code Inspector erweitern durch neue Checks

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

Code Inspector erweitern durch neue Checks

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Hallo zusammen, ich bin im Netz auf die Möglichkeit gestoßen, Code Inspector durch eigene Checks zu erweitern.
Ein Beispiel hiervon ist hier gegeben:
http://sapignite.com/2010/05/enhancemen ... inspector/

Also habe ich einen neuen Check erzeugt, aber .... jetzt kommen die Schwierigkeiten:

Wie müsste mein Check aussehen (bzw welche Methode muss ich ändern / erzeugen), wenn ich ein beliebiges Programm (bzw. Quelltext) auf das vorkommen der authority-checks abfragen und deren Berechtigungsobjekte mit Berechtigungsobjekten aus Tabelle xyz vergleich möchte?

Vielen Dank

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


Re: Code Inspector erweitern durch neue Checks

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Hier ist der Code von einem bereits vorhandenen Check nach WRITE - Anweisungen:

Code: Alles auswählen.

method RUN.

  data:
      L_INCLUDE      type SOBJ_NAME,
      L_LAST_INCLUDE type SOBJ_NAME,
      L_ROW      type TOKEN_ROW,
      L_COLUMN   type TOKEN_COL,
      L_KEYWORD  type STRING,
      L_CNT         type I,
      L_CNT_INCLUDE type I,
      L_CNT_CHAR         type C length 20,
      L_CNT_CHAR_INCLUDE type C length 20,
      L_FROM    type I,
      L_TO      type I.

  check PROGRAM_NAME is not initial.

  if REF_SCAN is initial.
    check GET( ) = 'X'.
  endif.

  check REF_SCAN->SUBRC = 0.

  L_CNT = 0.
*-- loop at all tokens
  loop at REF_SCAN->STATEMENTS into STATEMENT_WA.
    check STATEMENT_WA-FROM <= STATEMENT_WA-TO.
*-- avoid unexpanded MAKROS
    check STATEMENT_WA-TYPE ne 'M'.

    L_KEYWORD  = KEYWORD( ).
*-- WRITE ---------------------------------------------------------
    if L_KEYWORD = 'WRITE'.
*-----exclude 'WRITE ... TO'
      L_FROM = STATEMENT_WA-FROM + 2.
      L_TO   = STATEMENT_WA-TO - 1.
      if L_FROM <= L_TO.
        loop at REF_SCAN->TOKENS into TOKEN_WA
                from L_FROM to L_TO.
          if TOKEN_WA-STR = 'TO'.
            exit.
          endif.
        endloop.
      endif.
      check TOKEN_WA-STR ne 'TO'.
      write: 'JAAAA'.
      add 1 to L_CNT. add 1 to L_CNT_INCLUDE.
*--- show every single WRITE
      if P_SHOW = 'X'.
        L_INCLUDE  = GET_INCLUDE( ).
        GET_LINE_COLUMN_REL( exporting P_N      = 1
                             importing P_LINE   = L_ROW
                                       P_COLUMN = L_COLUMN ).
        INFORM( P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
                P_SUB_OBJ_NAME = L_INCLUDE
*               P_POSITION     =
                P_LINE         = L_ROW
                P_COLUMN       = L_COLUMN
                P_TEST         = C_MY_NAME
                P_CODE         = '0002'
*               P_SUPPRESS =
*               P_PARAM_1  =
*               P_PARAM_2  =
*               P_PARAM_3  =
*               P_PARAM_4  =
                          ).
*--- only show first WRITE of every INCLUDE
      endif.
      if P_SUM_INCLUDES = 'X'.
        L_INCLUDE  = GET_INCLUDE( ).
        GET_LINE_COLUMN_REL( exporting P_N      = 1
                             importing P_LINE   = L_ROW
                                       P_COLUMN = L_COLUMN ).

        if L_INCLUDE ne L_LAST_INCLUDE and
           L_LAST_INCLUDE is not initial.
          L_CNT_INCLUDE = L_CNT_INCLUDE - 1.
          move L_CNT_INCLUDE to L_CNT_CHAR_INCLUDE.
          L_CNT_INCLUDE = 1.
          INFORM( P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
               P_SUB_OBJ_NAME = L_LAST_INCLUDE
*               P_POSITION     =
               P_LINE         = L_ROW
               P_COLUMN       = L_COLUMN
               P_TEST         = C_MY_NAME
               P_CODE         = '0003'
*               P_SUPPRESS =
               P_PARAM_1  = L_LAST_INCLUDE
               P_PARAM_2  = L_CNT_CHAR_INCLUDE
*               P_PARAM_3  =
*               P_PARAM_4  =
                         ).
        endif.
        L_LAST_INCLUDE = L_INCLUDE.

      endif.
    endif.
  endloop.

*--- show only total number of WRITEs
  if P_SHOW ne 'X' and P_SUM_INCLUDES ne 'X'.
    move L_CNT to L_CNT_CHAR.

    INFORM(
           P_SUB_OBJ_TYPE = 'PROG'
           P_SUB_OBJ_NAME = PROGRAM_NAME
*         P_POSITION     = L_POSITION
*         P_LINE         = L_ROW
*         P_COLUMN       = L_COLUMN
            P_TEST         = C_MY_NAME
            P_CODE         = '0001'
*         P_SUPPRESS     =
            P_PARAM_1      = PROGRAM_NAME
            P_PARAM_2      = L_CNT_CHAR
*         P_PARAM_3  =
*         P_PARAM_4  =
                      ).
  endif.
  if P_SUM_INCLUDES = 'X' and L_CNT_INCLUDE ne 0.
*    L_INCLUDE  = GET_INCLUDE( ).

    move L_CNT_INCLUDE to L_CNT_CHAR_INCLUDE.


    INFORM( P_SUB_OBJ_TYPE = C_TYPE_INCLUDE
         P_SUB_OBJ_NAME = L_LAST_INCLUDE
*               P_POSITION     =
         P_LINE         = L_ROW
         P_COLUMN       = L_COLUMN
         P_TEST         = C_MY_NAME
         P_CODE         = '0003'
*               P_SUPPRESS =
         P_PARAM_1  = L_LAST_INCLUDE
         P_PARAM_2  = L_CNT_CHAR_INCLUDE
*               P_PARAM_3  =
*               P_PARAM_4  =
                   ).

  endif.

endmethod.
und die KEYWORD Methode:

Code: Alles auswählen.

METHOD keyword.
  IF statement_wa-type = 'C'.
    p_result = 'COMPUTE'.
    RETURN.
  ENDIF.
  READ TABLE ref_scan->tokens INDEX statement_wa-from INTO token_wa.
  p_result = token_wa-str.
ENDMETHOD.

Habe versucht einfach statt if L_KEYWORD = 'WRITE' , L_KEYWORD = 'AUTHORITY_CHECK' zu benutzen aber das hat nicht viel gebracht ...
Habe dann das Programm im Debugger laufen lassen und es kommt bis zum loop aber der Keyword wird nicht gefunden?
Jemand eine Idee wie ich das ganze ändern könnte damit der Suchstring 'AUTHORITY_CHECK' auch gefunden wird?

Danke im Voraus!

Re: Code Inspector erweitern durch neue Checks

Beitrag von Ratazong (Specialist / 144 / 1 / 14 ) »
Einfach AUTHORITY-CHECK versuchen?!

Grüße

Re: Code Inspector erweitern durch neue Checks

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
Habe ich ja, und im Debugger sehe ich das die Anweisung auch Erfolgreich gefunden wurde und der Zähler wird um 1 erhöht,
aber im Code Inspector selber werden keine Meldungen angezeigt... Liegt bestimmt an den anderen Methoden wie INFORM, GET_MESSAGE_TEXT, MESSAGE oder sonstiges...

danke trotzdem

Re: Code Inspector erweitern durch neue Checks

Beitrag von SteveOh (ForumUser / 44 / 3 / 0 ) »
War ein kleiner Fehler, jetzt klappts.

Seite 1 von 1

Vergleichbare Themen

7
Antw.
4128
Views
Code Inspector
von Norbert_Aeq » 10.04.2012 15:54 • Verfasst in ABAP Objects®
9
Antw.
4668
Views
Code Inspector -> Eigene Prüfung
von SaskuAc » 09.05.2018 08:01 • Verfasst in ABAP® Core
0
Antw.
1188
Views
Code Inspector - Eingabeparameter nicht möglich
von SaskuAc » 22.05.2018 14:59 • Verfasst in ABAP® Core
2
Antw.
2567
Views
Code Inspector mit Prüfvariante S4HANA_READINESS_1909 spinnt
von PeterPaletti » 02.03.2021 12:25 • Verfasst in ABAP® Core
3
Antw.
2062
Views
Code Inspektor Erweitern
von Germi22 » 16.05.2012 13:38 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

FOR mit CORRESPONDING
vor 2 Stunden von msfox 3 / 85
line_exists evaluieren
vor 3 Tagen von Radinator gelöst 6 / 357

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

FOR mit CORRESPONDING
vor 2 Stunden von msfox 3 / 85
line_exists evaluieren
vor 3 Tagen von Radinator gelöst 6 / 357

Unbeantwortete Forenbeiträge

Erweiterung in ME51N/ME52N:
vor 2 Wochen von ABAPlerv 1 / 1847
Erweiterung in ME51N/ME52N:
vor 2 Wochen von ABAPlerv 1 / 1731