Funktioniert meine Idee?

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

Funktioniert meine Idee?

Beitrag von DeathAndPain (Top Expert / 1961 / 261 / 415 ) »
Hallo zusammen,

es gibt ja so einige Standard-SAP-Funktionsbausteine, denen man Programm- und (ggf.) Dynpronamen mitgeben muss (beispielsweise DYNP_VALUES_UPDATE). Dabei wird immer gesagt, dass die naheliegende Idee, einfach SY-REPID und SY-DYNNR zu übergeben, nicht funktioniert, weil diese Felder als Referenz übergeben werden und im Fuba dann zu dessen eigenen Werten mutieren. Aus diesem Grund ist es gängige Praxis, diese Werte in lokale Felder umzukopieren und die dann zu übergeben (Beispiel siehe Onlinedoku zum FB DYNP_VALUES_UPDATE).

Diese Ballastfelder nebst ihrer Zuweisung haben mir nie so richtig gefallen, weil sie Wasserkopfcharakter haben. Nun denke ich mir, dass es doch eigentlich möglich sein sollte, den Fuba bei seinem Aufruf unabhängig von seiner (von der SAP festgelegten) Definition zu einer Werte- statt Referenzübergabe zu zwingen, indem man eine redundante Konvertierung durchführt. Also einfach:

Code: Alles auswählen.

  CALL FUNCTION 'DYNP_VALUES_UPDATE'
    EXPORTING
      DYNAME               = CONV PROGNAME( SY-REPID ) ##OPERATOR[PROGNAME]
      DYNUMB               = CONV SYCHAR04( SY-DYNNR ) ##OPERATOR[SYCHAR04]
    TABLES
      DYNPFIELDS           = DYNPFIELDS.
Die redundante Konvertierung sollte auch nicht langsamer sein als die Zuweisung der SY-Felder an lokale Felder. Haut das hin, oder gibt es dabei Effekte, die ich nicht im Auge habe?

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


Re: Funktioniert meine Idee?

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Ich würd sage, das sollte so funktionieren.
Problematisch ist übrigens nur der SY-REPID weil der sich mit dem Aufruf des Funktionsbausteins ändert. SY-DYNNR ändert sich nur beim Aufruf eines anderen Dynpros und wenn man dann Werte auf anderen Dynpros ändern möchte, muss man sowieso die Dynpronummer als eigene Variable übergeben.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Funktioniert meine Idee?

Beitrag von jocoder (Specialist / 343 / 3 / 102 ) »
Die Idee funktioniert tatsächlich. "conv" erzeugt eine lokale Hilfsvariable und übergibt diese als Aktualparameter.
Habe dazu folgendes kleines Testprogramm geschrieben

Code: Alles auswählen.

REPORT ZTEST_CONV.

CLASS test_conv DEFINITION.

  PUBLIC SECTION.

  CLASS-METHODS with_reference
    IMPORTING
      tabix TYPE i.

ENDCLASS.

CLASS test_conv IMPLEMENTATION.

  METHOD with_reference.

    sy-tabix = 4.
    WRITE tabix.

  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

  WRITE: 'Wenn mit "conv" eine lokale Hilfsvariable erzeugt wird, wird die Ausgabe von erwartet:'. NEW-LINE.
  WRITE: 1, 4. NEW-LINE.
  WRITE: 'Tatsaechlich'. NEW-LINE.
  sy-tabix = 1.
  test_conv=>with_reference( tabix = conv i( sy-tabix ) ).
  WRITE sy-tabix.

Re: Funktioniert meine Idee?

Beitrag von ewx (Top Expert / 4854 / 313 / 644 ) »
oder man nimmt SY-CPROG...

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
Icke0801


Seite 1 von 1

Vergleichbare Themen

8
Antw.
3191
Views
hat jemand idee?
von Bernard » 25.02.2005 09:04 • Verfasst in ABAP® Core
1
Antw.
1356
Views
Idee für Übungsprogramm
von JanMeier » 11.08.2007 23:04 • Verfasst in ABAP® für Anfänger
0
Antw.
1768
Views
ATP Problem und keine Idee
von Matthias_L. » 24.03.2006 07:32 • Verfasst in Sales and Distribution
2
Antw.
1769
Views
Idee für folgende Fragestellung?
von Jan Dirk » 28.11.2005 21:18 • Verfasst in Dialogprogrammierung
3
Antw.
2107
Views
Workflow starten nach Anlage Debitor (Idee!!!)
von Slim_Chance » 22.09.2005 16:46 • 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.