dynamisch funktionsbausteine generieren

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

dynamisch funktionsbausteine generieren

Beitrag von andipesel (ForumUser / 8 / 0 / 0 ) »
Hallo,

ich muss anhand von eingaben dynamisch funktionsbausteine erstellen. Gibt es in ABAP eine geeignete Lösung dafür?

Was ich bis jetzt gefunden habe ist "Insert Report", dies übernimmt bzw übergibt keine Paramater wie ein normaler Funktionsbaustein.

Gibt es da sonst eine Lösung?

mfg,
Andi

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


Beitrag von DeathGuardian (Expert / 759 / 0 / 3 ) »
Willst du einen FuBa dynamisch erstellen/generiren oder nur dynamisch aufrufen?

Das dynamisch Aufrufen geht einfach als man denkt:
Einach "CALL FUNCTION variable_wo_fuba_drinnensteht".
Bei den Parametern kannst alles mitgeben, da er beim aufruf dann nur die tatsächlich für den FuBa vorhandenen nimmt.

Beitrag von andipesel (ForumUser / 8 / 0 / 0 ) »
hi,

danke für die Antwort. Ich muss aber einen Funktionsbaustein dynamisch erstellen. Weißt du da auch was?

lg,
Andi

Beitrag von edwin (Specialist / 302 / 10 / 68 ) »
Hallo,

schau Dir mal folgende Bausteine an:

FB: 'FUNCTION_EXISTS' - prüfen ob FB existiert
FB: 'FUNCTION_CREATE' - anlegen FB ,


Gruss Edwin

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Hallo Andi,
der von Edwin vorgeschlagene Funktionsbaustein FUNCTION_CREATE erzeugt einen Funktionsbaustein z.B.:

Code: Alles auswählen.

data ls_tfdir type tfdir.
data lv_incname type tfdir-pname.

data:
EXCEPTION_LIST   type  table of RSEXC WITH HEADER LINE,
EXPORT_PARAMETER type  table of RSEXP WITH HEADER LINE,
IMPORT_PARAMETER type  table of RSIMP WITH HEADER LINE,
PARAMETER_DOCU type  table of RSFDO WITH HEADER LINE,
TABLES_PARAMETER type  table of RSTBL WITH HEADER LINE.

IMPORT_PARAMETER-PARAMETER = 'T1'.
IMPORT_PARAMETER-TYP = 'C'.
append IMPORT_PARAMETER.

CALL FUNCTION 'FUNCTION_CREATE'
  EXPORTING
*   CORRNUM                       = ' '
    funcname                      = 'ZXYZJENS'
    function_pool                 = 'ZTEST'
*   INTERFACE_GLOBAL              = ' '
*   REMOTE_CALL                   = ' '
    short_text                    = 'Auto created'
*   SUPPRESS_CORR_CHECK           = 'X'
*   UPDATE_TASK                   = ' '
*   NAMESPACE                     = ' '
*   SUPPRESS_ENQUEUE              = ' '
*   SAVE_ACTIVE                   = 'X'
*   EXCEPTION_CLASS               = ' '
* IMPORTING
*   FUNCTION_INCLUDE              =
  tables
    exception_list                = EXCEPTION_LIST
    export_parameter              = EXPORT_PARAMETER
    import_parameter              = IMPORT_PARAMETER
    parameter_docu                = PARAMETER_DOCU
    tables_parameter              = TABLES_PARAMETER
*   CHANGING_PARAMETER            =
 EXCEPTIONS
   DOUBLE_TASK                   = 1
   ERROR_MESSAGE                 = 2
   FUNCTION_ALREADY_EXISTS       = 3
   INVALID_FUNCTION_POOL         = 4
   INVALID_NAME                  = 5
   TOO_MANY_FUNCTIONS            = 6
   OTHERS                        = 7.

IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

select single * from tfdir into ls_tfdir
where funcname =  'ZABCZJENS2'.

* Includenamen zum neuen FUB ermitteln für das Coding
concatenate ls_tfdir-pname+3 'U' ls_tfdir-include
into lv_incname.

vorrausgesetzt wird die Funktionsgruppe ZTEST. Der Programmcode kann dann mit INSERT REPORT LZTESTU01 FROM itab o.ä. erzeugt werden.
Der passende INCLUDE zum generierten FUB kann aus der Tabelle TFDIR ermittelt werden.
Der Name des Includes setzt sich zusammen aus 'LZ' + FUGRname+ U + TFDIR-INCLUDE.
(Übrigens erfolgt keine Prüfung auf den Namensraum)

gruß Tron
<:: 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.

Beitrag von andipesel (ForumUser / 8 / 0 / 0 ) »
Danke für die Antwort!!! sieht ziemlich gut aus!

Eine Frage habe ich noch. Kann ich wenn ich die Function generiere auch code übergeben? Ich habe beim Funktionsaufruf nix dergleichen gesehen, oder vielleicht übersehen.

mfg,
Andi

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Hallo,
der Baustein 'FUNCTION_CREATE' gibt das wohl nicht her, deshalb der Kommentar zu den Includes und welcher Include bei mehreren FUBs innerhalb einer Gruppe der Richtige ist.
Ich würde adhoc den vorhanden Quelltext in eine interne Tabelle mit
read report <Include> into itab lesen, anreichern und mit insert report <Include> zurückschreiben (siehe Doku.).
(Versuch doch mal herauszufinden, wie Quickviews (SQVI) erzeugt werden, das sind im Grunde auch Funktionsbausteine)
PS: was ist überhaupt Dein Ziel ?
gruß Tron
<:: 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.

Beitrag von andipesel (ForumUser / 8 / 0 / 0 ) »
Hallo Tron!

ich lese den quelltext anhand einer txt Datei welche ich dynamisch in einem C# Programm erstelle durch den FB UPLOAD_FILES in eine interne Tabelle vom Typ c.

Für das Insert Report brauch ichaber eine iTab vom typ rssource-line und da kommt bei mir das nächste Problem.

Kann ich die irgendwie g'scheit konvertieren?

lg,
Andi
PS: Ich muss eine Offline anwendung für den Produktionsplannungsberater schreiben welche für die Maximalstücklisten und MAximalarbeitspläne FB dynamisch erstellt

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

naja, daß es wirklich erforderlich ist, im Anwendungsbereich Funktionsbausteine zu generieren erscheint mir schon sehr überdenkenswert.

Selbst SAP hat so seine Probleme beim Generieren mit oder ohne Vorlage.

Und wenn dann die Programme parallel laufen, generiert man sich "in die Quere".

Es gibt die Möglichkeit, temporäres Coding in den Speicher zu schreiben und aufzurufen (Subroutine-Pool).

Und mittlerweile ist die Möglichkeit im dynamischen Programmieren von ABAP so derartig umfangreich daß es wohl möglich sein müsste, auf die diversesten Problem und diversesten Variablen zu reagieren.

Für jede Struktur sind die Felder herauszubekomkmen. Zu jedem Feld bekommt man Typ und Inhalt. Man kann Strukturen im Programm variabel zusammenbasteln lassen und und und.

Und weiterhin kann man sich jede mögliche Struktur dynamisch generieren lassen (Stichwort Feldkatalog).

Also, generieren würde ich erstmal nicht ...

Gruß
babap

Seite 1 von 1

Vergleichbare Themen

4
Antw.
2276
Views
Funktionsbaustein dynamisch generieren
von gabrielgn » 21.01.2008 08:57 • Verfasst in ABAP® Core
2
Antw.
1954
Views
Report dynamisch generieren...
von gabrielgn » 16.01.2008 08:17 • Verfasst in ABAP® Core
8
Antw.
5389
Views
Interne Tabelle dynamisch generieren
von inab » 22.10.2008 10:19 • Verfasst in ABAP Objects®
3
Antw.
4565
Views
Dynamisch Struktur und Tabelle generieren und füllen
von Kresiquadratur » 16.07.2007 14:32 • Verfasst in ABAP® für Anfänger
3
Antw.
3323
Views
Innterne Tabelle dynamisch generieren und in ALV ausgeben
von SAP_ENTWICKLER » 29.01.2018 15:49 • Verfasst in ABAP® Core

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 3 Stunden von Bright4.5 1 / 66
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1713
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8317