Quellcodeänderung mehrerer Programme

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
12 Beiträge Seite 1 von 1
12 Beiträge Seite 1 von 1

Quellcodeänderung mehrerer Programme

Beitrag von Ben2408 (ForumUser / 13 / 0 / 0 ) » 12. Jun 2019 13:16

Hallo zusammen,

hat jemand eine Idee wie man ein Programm realisieren könnte (wenn das überhaupt geht), bei dem eine Liste von Programmen eingelesen wird und in diesen dann der Quelltext nach einem Suchstring/Pattern geändert wird. Evtl. Batch oder Skript?

Hintergrund sind die immer wieder kehrenden Unicode Umstellungen und die manuelle Änderung ist doch recht aufwendig.

Danke und Grüße
Ben


Re: Quellcodeänderung mehrerer Programme

Beitrag von Tron (Top Expert / 1046 / 9 / 213 ) » 12. Jun 2019 14:27

Moin Ben.
Klar geht... mit RFC -fähigem Funktionsbaustein RPY_PROGRAM_READ kann das Programm gelesen werden. Dann ändert man es und mit RPY_PROGRAM_INSERT, oder besser RPY_PROGRAM_UPDATE schreibt man den Quellcode zurück auf die DB.
Es wird die Nummer eines Transportauftrags erwartet (wenn nicht lokale Entwicklung).

viel Glück
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Quellcodeänderung mehrerer Programme

Beitrag von Ben2408 (ForumUser / 13 / 0 / 0 ) » 12. Jun 2019 19:26

Hi Jens,

das hört sich schon einmal ganz gut an.

Danke für die Tipps.
Gruß
Ben

Re: Quellcodeänderung mehrerer Programme

Beitrag von Tron (Top Expert / 1046 / 9 / 213 ) » 13. Jun 2019 08:38

Hallo Ben.
Der eigentliche "Fun-Part" ist natürlich die Syntaxanalyse.
Der Vollständigkeit halber möchte ich noch den Report RS_ABAP_SOURCE_SCAN erwähnen, der Codestellen sucht.

viel Erfolg
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Quellcodeänderung mehrerer Programme

Beitrag von Ben2408 (ForumUser / 13 / 0 / 0 ) » 13. Jun 2019 13:58

Hallo Jens,

vielen Dank.

Ich frage mich gerade noch wie ich den Modifikationsassistenten umgehen kann.
Viele der Anwendungen sind aus Fremdsystemen.
Oder wird der bei Aufruf der Bausteine umgangen bzw. ignoriert?

Grüße
Ben

Re: Quellcodeänderung mehrerer Programme

Beitrag von jocoder (ForumUser / 64 / 0 / 14 ) » 13. Jun 2019 14:56

Ich wurde Transaktion sci vorschlagen.
In der Prüfvariante kann der Suchstring konfiguriert werden und in der Objektmenge die Programme

Re: Quellcodeänderung mehrerer Programme

Beitrag von Romaniac (Specialist / 107 / 21 / 16 ) » 13. Jun 2019 17:06

Ich war diese Woche bei meinem Kunden (Automotive, S4 Umstellung, selected Greenfield, 3,6 Mio lines of Custom Code, 30.000 ABAP Objekte), also was Größeres. Dort war in einer Besprechung auch die Firma Smartshift anwesend und hat sich vorgestellt (bin weder bekannt noch verschwägert mit denen) und deren Tools sind schon sehr mächtig:
+ zusammenfassung von verstreuten Komponenten eines Programmes in verschiedenen Paketen in ein Paket (Depency Analysis)
+ Umbenennung von Namensräumen und ersetzen aller Aufrufe
+ Ersetzung von Konstanten zu Methodenaufrufen
+ Ersetzen alter obsoleter Anweisungen (occurs, select single auf Pooltabellen usw.)
+ select * zu select Feld 1 Feld 2 Feld n für alle im programm verwendeten Felder
und das alles (fast)automatisch.

Da war ich echt begeistert wie weit die Automatisierung hier fortgeschritten ist und wieviel Arbeit einem hier abgenommen wird.
Klar, das wird auch was kosten, ist aber sicher billiger und weniger Fehleranfällig wie wenn 30 Entwickler das in Handarbeit machen.
Geht nicht gibts nicht

Re: Quellcodeänderung mehrerer Programme

Beitrag von ewx (Top Expert / 3999 / 165 / 378 ) » 13. Jun 2019 17:07

Ben2408 hat geschrieben:
13. Jun 2019 13:58
Ich frage mich gerade noch wie ich den Modifikationsassistenten umgehen kann.
Viele der Anwendungen sind aus Fremdsystemen.
Wenn dir (dem SAP-System) die Programme nicht gehören, darfst du sie auch nicht ändern. Dann ist es eine Modifikation.
Wenn es alte Z-Programme sind, die in einem anderen Entwicklungssystem von euch erstellt wurden, dann kannst du das Originalsystem umsetzen auf das SAP-System, in dem du dich befindest. Transaktion SE03 und dann "Objektkatalogeinträge ändern".

Re: Quellcodeänderung mehrerer Programme

Beitrag von Tron (Top Expert / 1046 / 9 / 213 ) » 13. Jun 2019 17:30

Moin.
Ohne den Assistenten kommt man natürlich aus , wenn man es so löst:
Das Beispiel kommentiert "vergessene" breaks aus.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*& Report  ZTEST89
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztest89.
DATA program_name TYPE rpy_prog-progname VALUE 'ZTEST_BASE64'.

DATA:
  t_src TYPE TABLE OF abapsource,
  t_scx TYPE TABLE OF abaptxt255,
  l_changed type xfeld.

FIELD-SYMBOLS: <s> TYPE abapsource,
               <x> TYPE abaptxt255.



CALL FUNCTION 'RPY_PROGRAM_READ'
  EXPORTING
*   LANGUAGE         = SY-LANGU
    program_name     = program_name
    with_includelist = ' '
    only_source      = 'X'
*   ONLY_TEXTS       = ' '
*   READ_LATEST_VERSION       = ' '
*   WITH_LOWERCASE   = ' '
* IMPORTING
*   PROG_INF         =
  TABLES
*   INCLUDE_TAB      =
    source           = t_src
    source_extended  = t_scx
*   TEXTELEMENTS     =
  EXCEPTIONS
    cancelled        = 1
    not_found        = 2
    permission_error = 3
    OTHERS           = 4.

IF sy-subrc <> 0.
  EXIT.
ENDIF.
IF t_src[] IS INITIAL AND t_scx[] IS INITIAL.
  EXIT.
ENDIF.


clear l_changed.
IF NOT t_scx[] IS INITIAL.
  LOOP AT t_scx ASSIGNING <x>.

    IF <x>-line CS 'BREAK'.
      REPLACE 'BREAK' IN <x>-line WITH '"BREAK'.
      l_changed = 'X'.
    ENDIF.

  ENDLOOP.

  if not l_changed is INITIAL.
    INSERT REPORT program_name FROM t_scx.
  endif.

ENDIF.

IF NOT t_src[] IS INITIAL.
  LOOP AT t_src ASSIGNING <s>.

    IF <s>-line CS 'BREAK'.
      REPLACE 'BREAK' IN <s>-line WITH '"BREAK'.
      l_changed = 'X'.
    ENDIF.

  ENDLOOP.

  if not l_changed is INITIAL.
    INSERT REPORT program_name FROM t_src.
  endif.

ENDIF.
Zuerst mußt Du sowieso analysieren und prüfen, was das Changeprogramm vorhat.
Dazu fragt man Tabelle TADIR und TRDIR nach den Kundenprogrammen.
Dann läßt man sich ausgeben, welche Programme betroffen sind.
Prüft, ob Diese aus Alt-Systemen imporiert wurden. (TADIR-SRCSYSTEM)
Ob es das Paket überhaupt noch gibt (TADIR-DEVCLASS) prüfen gegen Tabelle TDEVC und alles ggf. korrigieren.

Später:
Änderungen, die durch das Programm vorgeschlagen werden ausgiebig prüfen !

Ich würde mir ggf. den Baustein RPY_PROGRAM_INSERT kopieren und so anpassen, das er weiterhin mit Transportaufträgen arbeitet und das Maß an störenden Popups elemeniert und vor allen Dingen absprechen, was man da vor hat und zwar vorher ;-).


gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Quellcodeänderung mehrerer Programme

Beitrag von Ben2408 (ForumUser / 13 / 0 / 0 ) » 17. Jun 2019 08:38

Danke für den ganzen Input, bis hierhin.

Grüße
Ben

Re: Quellcodeänderung mehrerer Programme

Beitrag von Tron (Top Expert / 1046 / 9 / 213 ) » 17. Jun 2019 09:10

... kein Problem... was möchtet Ihr eigentlich automatisiert ändern ?
( bei uns wurden zuletzt die ganzen SELECT Anweisungen angepasst für S4/Hana )
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Quellcodeänderung mehrerer Programme

Beitrag von Ben2408 (ForumUser / 13 / 0 / 0 ) » 17. Jun 2019 15:31

Selects, Open Dataset, die alten ws_upload/download Bausteine (wenn das in dem Umfang machbar ist)... Solche Sachen

Seite 1 von 1

Aktuelle Forenbeiträge

Excel OLE2 Blatt schützen gelöst
vor 18 Minuten von Kerstin 5 / 21
Wann wird VBFA-MATNR gefüllt? gelöst
vor 26 Minuten von deejey 3 / 37
VL10B - Partner ändern -> Funktionsbaustein?
vor 14 Stunden von black_adept 2 / 44
Datenaustausch mit externen Lieferanten
vor 21 Stunden von DeathAndPain 5 / 163
Vorschlagswerte IT0700
vor 23 Stunden von DeathAndPain 8 / 122

Unbeantwortete Forenbeiträge

SP01 Verweildauer
vor 4 Tagen von SAP_ENTWICKLER 1 / 67
Transaktion OMT3B Subscreens in Dynpros einhängen
vor 5 Tagen von SAP_ENTWICKLER 1 / 49
Zeitereignisarten anlegen
vor einer Woche von Flashtie 1 / 160
Genehmiger & Status der Genehmigung bei einer BANF
vor 3 Wochen von Der Formulator 1 / 233
Migrationstool Upload QUAN und CURR Felder
vor 3 Wochen von SAP_ENTWICKLER 1 / 222