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 / 23 / 3 / 0 ) »
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

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


Re: Quellcodeänderung mehrerer Programme

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
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 / 23 / 3 / 0 ) »
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 / 1327 / 35 / 332 ) »
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 / 23 / 3 / 0 ) »
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 (Specialist / 343 / 3 / 102 ) »
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 / 221 / 65 / 27 ) »
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 / 4846 / 311 / 642 ) »
Ben2408 hat geschrieben:
13.06.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 / 1327 / 35 / 332 ) »
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 / 23 / 3 / 0 ) »
Danke für den ganzen Input, bis hierhin.

Grüße
Ben

Re: Quellcodeänderung mehrerer Programme

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
... 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 / 23 / 3 / 0 ) »
Selects, Open Dataset, die alten ws_upload/download Bausteine (wenn das in dem Umfang machbar ist)... Solche Sachen

Seite 1 von 1

Vergleichbare Themen

2
Antw.
1678
Views
Aufruf mehrerer Programme hintereinander
von mip » 10.04.2008 14:24 • Verfasst in ABAP® für Anfänger
2
Antw.
1205
Views
Dateiupload mehrerer Files
von whaslbeck » 03.02.2021 12:15 • Verfasst in ABAP® Core
24
Antw.
5570
Views
Felder mehrerer Tabellen zählen
von Kai999 » 12.04.2017 09:33 • Verfasst in ABAP® für Anfänger
8
Antw.
6345
Views
RFC Baustein zum Auslesen mehrerer Tabellen
von y20frank » 28.01.2005 22:54 • Verfasst in ABAP® für Anfänger
1
Antw.
1550
Views
Rückgabe mehrerer Werte mit F4IF_INT_TABLE_VALUE_REQUEST
von jondahl11 » 10.10.2006 09:06 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 787
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

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

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 787
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2402
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8986