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 / 4916 / 332 / 653 ) »

Code: Alles auswählen.

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

Seite 1 von 1

Vergleichbare Themen

0
Antw.
3068
Views
Dirty Assign
von allgrinder » 10.08.2015 11:14 • Verfasst in ABAP® für Anfänger
9
Antw.
7479
Views
Dirty Assign und danach Änderung
von FelixFICO » 11.03.2016 15:08 • Verfasst in ABAP® Core
7
Antw.
4765
Views
AIF: Dirty assign in background funktioniert nicht?
von Romaniac » 02.01.2023 11:10 • Verfasst in ABAP® Core
3
Antw.
5876
Views
Dirty Assign auf Variablen einer Klasse
von jensschladitz » 17.01.2019 11:23 • Verfasst in ABAP® Core
5
Antw.
6182
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

Aktuelle Forenbeiträge

BAPI zur ABSO?
vor 2 Tagen von DeathAndPain 2 / 535
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1170
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46836
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4746

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

BAPI zur ABSO?
vor 2 Tagen von DeathAndPain 2 / 535
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1170
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46836
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4746