Dynamischer ("Dirty") Assign

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

Dynamischer ("Dirty") Assign

Beitrag von Gast ( / / 0 / 3 ) »
Hallo! Bei noch ABAP-Neuling und habe mir im Forum schon die Einträge zum dynamischen ("Dirty") Assign angesehen, jedoch funktioniert es bei mir nicht. Vielleicht weiß hier ja jemand Rat.

Ich möchte von einem FuBa aus auf einen Parameter des rufenden Reports zugreifen.

R/3 Release 4.6C

Mein Test-Code:

Report:

Code: Alles auswählen.

REPORT zs_test_mn_2.

PARAMETER: p_werk TYPE t001w-werks DEFAULT '0001'.

START-OF-SELECTION.
  CALL FUNCTION 'ZS_TEST_MN'.
FuBa:

Code: Alles auswählen.

FUNCTION zs_test_mn.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"----------------------------------------------------------------------

  DATA: var(6) TYPE c VALUE 'p_werk'.

  FIELD-SYMBOLS: <var>.

  ASSIGN ('(sy-cprog)(var)') TO <var>.
  IF sy-subrc = 0.
    WRITE: 'HURRA!'.
  ELSE.
    EXIT.
  ENDIF.

ENDFUNCTION.
Sowohl Report als auch FuBa sind nur lokal angelegt.

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo auch,

dieser ASSIGN funktioniert m.W. nur bei global definierten Variablen (oder Parametern in FB's).
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von BesenWesen (Specialist / 183 / 0 / 0 ) »
hi,

du musst bei deinem FuBa einen Import-parameter einrichten (Registerkarte Import) und diesen musst du dann beim Aufruf fuellen.

Code: Alles auswählen.

REPORT zs_test_mn_2. 

PARAMETER: p_werk TYPE t001w-werks DEFAULT '0001'. 

START-OF-SELECTION. 
  CALL FUNCTION 'ZS_TEST_MN'
* hier wird uebergeben
exporting 
e_werk = p_werk
.
und dein FuBa saehe dann ungefaehr so aus.

Code: Alles auswählen.

FUNCTION zs_test_mn. 
*"---------------------------------------------------------------------- 
*"*"Lokale Schnittstelle: 
*"  IMPORTING
*"     VALUE(E_WERK) TYPE  CHAR3
*"---------------------------------------------------------------------- 

*  DATA: var(6) TYPE c VALUE 'p_werk'. 

  FIELD-SYMBOLS: <var>. 

  ASSIGN ('(sy-cprog)(var)') TO <var>. 
  IF sy-subrc = 0. 
    WRITE: 'HURRA!'. 
  ELSE. 
    EXIT. 
  ENDIF. 

ENDFUNCTION. 
Gruss
BesenWesen

Beitrag von Gast ( / / 0 / 3 ) »
Und wie könnte ich dann dynamisch auf Parameter/SelectOptions des rufenden Reports zugreifen, ohne Schnittstelle, wenn das da oben generell nicht geht?

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
offiziell: überhaupt nicht!

Inoffiziell mit besagtem ASSIGN (ich hatte mich von der Angabe 'lokal' irritieren lassen):

Code: Alles auswählen.

ASSIGN ('(ZS_TEST_MN_2)P_WERK') TO <var>. 
Sollte funktionieren, weil P_WERK im Report global definiert ist.

PS:
SAP hat verschiedentlich damit Probleme, wenn die Bezeichner bei dynamischen Zugriffen nicht groß geschrieben sind.

PPS:
diese Variante sollte ohnehin NUR dann verwendet werden, wenn es absolut keine andere Möglichkeit (z.B. EXPORT/IMPOPRT MEMORY etc.) gibt!!!
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »

Code: Alles auswählen.

concatenate '(' sy-cprog ') p_var into feldname.
ASSIGN (feldname)...
Gruß,
Enno

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1646
Views
Dirty Assign
von allgrinder » 10.08.2015 11:14 • Verfasst in ABAP® für Anfänger
9
Antw.
6081
Views
Dirty Assign und danach Änderung
von FelixFICO » 11.03.2016 15:08 • Verfasst in ABAP® Core
3
Antw.
4231
Views
Dirty Assign auf Variablen einer Klasse
von jensschladitz » 17.01.2019 11:23 • Verfasst in ABAP® Core
7
Antw.
1384
Views
AIF: Dirty assign in background funktioniert nicht?
von Romaniac » 02.01.2023 11:10 • Verfasst in ABAP® Core
5
Antw.
3016
Views
Dirty assign auf Feld in interner Tabelle mit Index
von Romaniac » 06.12.2019 12:31 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

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

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
Gestern von Bright4.5 1 / 511
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742