Mandant abfragen

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

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

Mandant abfragen

Beitrag von hmaxi96 (ForumUser / 77 / 13 / 1 ) »
Hallo Leute,

ich habe einen Parameter (p_logname) der mit einem logischen Namen gefüllt werden soll.
Wenn ich mich im C01 befinde soll "Z_RLPLAT00_DEV" als default-Wert darin stehen,
im CQ1 "Z_RLPLAT00_QUAL" und im C02 "Z_RLPLAT00".
Wie stelle ich das an?

Gruß
Max
Investor im Bereich Kryptowährungen.
Bei Interesse oder Fragen stehe ich Ihnen gerne zur Verfügung.

https://www.xing.com/profile/Maximilian_Hauer3

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


Re: Mandant abfragen

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin,

na indem du den Mandant abfragst?! :D

Code: Alles auswählen.

CASE sy-mandt.
 WHEN 100.
    "Parameter 1 setzen
  WHEN 200.
    "Paramter 2 setzen.
ENDCASE
Wobei C01 und CQ1 für mich eher nach Systemen und nicht nach Mandanten klingt. Wenn du danach abfragen willst ist dass das Feld SYSID der Struktur SYST / SY.

Folgende Benutzer bedankten sich beim Autor Thanatos82 für den Beitrag:
hmaxi96

Gruß,
der Matze

Re: Mandant abfragen

Beitrag von hmaxi96 (ForumUser / 77 / 13 / 1 ) »
Ja ich meinte Systeme :D

Ich habs genau so aber es funktioniert nicht möglicherweise ist meine Parametersetzung falsch?

CASE sy-sysid.
WHEN 'C01'.
p_logname = 'Z_RLPLAT00_DEV'.
ENDCASE.

Wenn ich debugge wird auch der Wert in meinen Parameter p_logname geschrieben.. aber ich möchte dass es im Selektionsbild angezeigt wird
Investor im Bereich Kryptowährungen.
Bei Interesse oder Fragen stehe ich Ihnen gerne zur Verfügung.

https://www.xing.com/profile/Maximilian_Hauer3

Re: Mandant abfragen

Beitrag von hmaxi96 (ForumUser / 77 / 13 / 1 ) »
INITIALIZATION. ist abgegangen :D
Investor im Bereich Kryptowährungen.
Bei Interesse oder Fragen stehe ich Ihnen gerne zur Verfügung.

https://www.xing.com/profile/Maximilian_Hauer3

Re: Mandant abfragen

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Kleine Empfehlung:
Eine Mandanten/System-Abfrage im Code ist NIE gut!
Besser ist es, dafür immer eine Tabelle oder irgendeine andere Form von Konfigurationsmöglichkeit vorzusehen.
Bei einem Report und wenn man nicht eine eigene Tabelle anlegen möchte, könnte man sich zum Beispiel mit unterschiedlichen Varianten je System behelfen.

lg ADT
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: Mandant abfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Wieso soll man das Feld SY-SYSID fuer die Systemabfrage nicht verwenden? ... oder das Feld SY-MANDT?

Extra Tabelle anlegen, die expliziet in jedem System gepflegt werden muss oder andere Arten von pflegebeduerftigen Varianten/Konfigurationen?

"System-Felder luegen nie".... (fast nie)

Re: Mandant abfragen

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Moin,

ich glaube was ADT meinte ist, dass man Variablen leichter systemunabhängig machen kann, indem man für sie einen Parameter auf dem Selektionsbild definiert. Dann kann man sich über die Variante auf dem jeweiligen System den gewünschten Wert dort hinterlegen und muss das ganze nicht fest im Programm verdrahten.

Stell dir nur mal vor das Programm wird in eine andere Systemlandschaft migriert, dann kann es nicht 1:1 genutzt werden, es muss erst jemand den Quelltext anfassen. Und das kann man damit umgehen. :)
Gruß,
der Matze

Re: Mandant abfragen

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Wir hatten bei uns früher mal 24 Mandanten, dann hat die Politik (öffentliches Unternehmen) gesagt, wir müssen sparen. Dazu wurden und werden nacheinander Mandanten "zusammengelegt". Nicht nur, dass wir dafür ständig das alte Coding nach Abfragen auf SY-MANDT durchforsten müssen, nein, auch Organisationseinheiten wurden oft der Einfachheit halber direkt im Code hinterlegt. :x
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: Mandant abfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Thanatos82 hat geschrieben:Moin,

ich glaube was ADT meinte ist, dass man Variablen leichter systemunabhängig machen kann, indem man für sie einen Parameter auf dem Selektionsbild definiert. Dann kann man sich über die Variante auf dem jeweiligen System den gewünschten Wert dort hinterlegen und muss das ganze nicht fest im Programm verdrahten.

Stell dir nur mal vor das Programm wird in eine andere Systemlandschaft migriert, dann kann es nicht 1:1 genutzt werden, es muss erst jemand den Quelltext anfassen. Und das kann man damit umgehen. :)
OK, ich verstehe das Argument.

Bei mir was es, wenn es mal zur Abfrage des Systems via SY-SYSID kam, aber immer so, dass genau fuer dieses eine System extra Coding eingefuegt/geandert wurde.
D.h., das Coding, das gerade fuer diese exakte System eingefuegt wurde, wuerde sowieso in keiner anderen Systemlandschaft einen Sinn ergeben und soll dort auch nirgendwo durchlaufen werden.

Re: Mandant abfragen

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Unit605 hat geschrieben:
Thanatos82 hat geschrieben:Moin,

ich glaube was ADT meinte ist, dass man Variablen leichter systemunabhängig machen kann, indem man für sie einen Parameter auf dem Selektionsbild definiert. Dann kann man sich über die Variante auf dem jeweiligen System den gewünschten Wert dort hinterlegen und muss das ganze nicht fest im Programm verdrahten.

Stell dir nur mal vor das Programm wird in eine andere Systemlandschaft migriert, dann kann es nicht 1:1 genutzt werden, es muss erst jemand den Quelltext anfassen. Und das kann man damit umgehen. :)
OK, ich verstehe das Argument.

Bei mir was es, wenn es mal zur Abfrage des Systems via SY-SYSID kam, aber immer so, dass genau fuer dieses eine System extra Coding eingefuegt/geandert wurde.
D.h., das Coding, das gerade fuer diese exakte System eingefuegt wurde, wuerde sowieso in keiner anderen Systemlandschaft einen Sinn ergeben und soll dort auch nirgendwo durchlaufen werden.
Für richtiges Coding gebe ich dir Recht. Da bleibt wenig anderes übrig als auf die SYSID abzufragen. Aber der Threadersteller will ja nur den Inhalt einer Variablen je nach System ändern. Da ist ADT's Vorschlag doch der bessere finde ich.
Gruß,
der Matze

Re: Mandant abfragen

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Das waere auch meine Loesung gewesen:

Code: Alles auswählen.

CASE sy-sysid.
   WHEN 'C01'.
      p_logname = 'Z_RLPLAT00_DEV'.
   WHEN 'CQ1'.  
      p_logname = 'Z_RLPLAT00_QUAL'.
   WHEN 'C02'.
      p_logname = 'Z_RLPLAT00'.
   When others.
      clear p_logname.
      message 'Programm fuer dieses System nicht geeignet' type 'E'.
" Programm abbrechen, nicht ausfuehren lassen. 
endcase.
Also die gleiche Loesung, die auch Du, Thantaso82, vorgeschlagen hast, wenn ich Deine Antwort richtig interpretiere!?! Deshalb hab ich auch nichts zusaetzliches geantwortet.

Dann kam die Aussage von a-dead-trousers
Kleine Empfehlung:
Eine Mandanten/System-Abfrage im Code ist NIE gut!
Besser ist es, dafür immer eine Tabelle oder irgendeine andere Form von Konfigurationsmöglichkeit vorzusehen.
Bei einem Report und wenn man nicht eine eigene Tabelle anlegen möchte, könnte man sich zum Beispiel mit unterschiedlichen Varianten je System behelfen.
Was waere jetzt genau in diesem konkreten Fall die konkrete Loesung von a-dead-trousers?
Wuerde mich wirklich interessieren.

Re: Mandant abfragen

Beitrag von IHe (Specialist / 142 / 35 / 45 ) »
Unit605 hat geschrieben: Was waere jetzt genau in diesem konkreten Fall die konkrete Loesung von a-dead-trousers?
Wuerde mich wirklich interessieren.
Eine saubere Lösung wäre eine Paramter-Customizingtabelle z.B. ZMYPARAMETERS mit den Feldern: MANDT, PARAMETER, SYSID, VALUE.

Dann noch eine statische Methode mit Parameter IV_PARAM und Returnwert VALUE(RV_VALUE):

Code: Alles auswählen.

METHOD get_parameter.
  DATA lv_sysid TYPE sysysid.

  CLEAR: rv_value, lv_sysid.

  SELECT SINGLE value INTO rv_value
    FROM zmyparameters
    WHERE parameter = iv_param
    AND   sysid = sy-sysid.
  IF sy-subrc <> 0. "no specific parameter for sid
    SELECT SINGLE value INTO rv_value
     FROM zmyparameters
     WHERE parameter = iv_param
     AND   sysid = lv_sysid.
  ENDIF.

ENDMETHOD.
In der Tabelle werden dann zum Parameter 'LOGNAME' pro System entsprechende Werte hinterlegt und im Report abgefragt:

Code: Alles auswählen.

CONSTANTS gc_param_logname TYPE zmyparameters-parameter VALUE 'LOGNAME'.

p_logname = zmyclass=>get_parameter( gc_param_logname ).
Ingo Hoffmann

ECC|S/4HANA|BTP
dbh SAP Solutions

Re: Mandant abfragen

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Unit605 hat geschrieben: Dann kam die Aussage von a-dead-trousers
Kleine Empfehlung:
Eine Mandanten/System-Abfrage im Code ist NIE gut!
Besser ist es, dafür immer eine Tabelle oder irgendeine andere Form von Konfigurationsmöglichkeit vorzusehen.
Bei einem Report und wenn man nicht eine eigene Tabelle anlegen möchte, könnte man sich zum Beispiel mit unterschiedlichen Varianten je System behelfen.
Was waere jetzt genau in diesem konkreten Fall die konkrete Loesung von a-dead-trousers?
Wuerde mich wirklich interessieren.
Da von INITIALIZATION die Rede war, nehme ich einen Report an.
Da würde ich einfach für den logischen Dateinamen einen Parameter auf dem Selektionsschirm vorsehen. Diesen über eine Variante vorbelegen und ausblenden. Dann noch eine Transaktion dazu anglegen, durch die der Report automatisch mit der Variante gestartet wird. Die Variante ist natürlich je System unterschiedlich.

Die Parameter-Customizing-Tabelle von IHe ist natürlich auch ein Weg. Nur, wenn das nicht immer sauber dokumentiert wird, kennt sich bald keiner mehr aus. Wir habe so eine bei uns im System und die wird leider schon für sehr viele Dinge "misbraucht". :x
Aus Erfahrung würde ich mir daher eher den Aufwand antun wirklich eine eigene Tabelle für jeden (Spezial-)Anwendungsfall zu erstellen. So kann man das am Ende auch sauber voneinander trennen.

lg ADT
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

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2500
Views
SAP Mandant ändern
von Aggressor » 17.02.2006 08:40 • Verfasst in Web-Dynpro, BSP + BHTML
0
Antw.
891
Views
IDES Mandant
von bohne » 13.09.2006 12:33 • Verfasst in ABAP® für Anfänger
3
Antw.
1800
Views
Bilanzstruktur aus Mandant 000 kopieren,
von guest » 29.06.2005 09:46 • Verfasst in Financials
2
Antw.
1005
Views
Mandant bei CSV-Upload vorbelegen
von Patrick1982 » 14.02.2020 10:35 • Verfasst in ABAP® für Anfänger
1
Antw.
1775
Views
Falscher Mandant bei BSP Applukation
von chaos2oo2 » 11.07.2006 16:21 • Verfasst in Web-Dynpro, BSP + BHTML

Ü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.