[50537] in SAPr3-news

home help back first fref pref prev next nref lref last post

=?ISO-8859-1?Q?GuiXT_-_Variable_eines_Dynpr?=

daemon@ATHENA.MIT.EDU (J?rgen Spranz)
Wed Jul 7 11:09:52 2004

To: sapr3-news@mit.edu
Date: 7 Jul 2004 08:09:43 -0700
From: jspranz@gmx.de (J?rgen Spranz)
Message-ID: <c558c9b.0407070709.74c9fd9b@posting.google.com>

Ich habe einen Funktionsbaustein geschrieben. 
Dieser prüft mir, über folgenden Code, ob GuiXT aktiv ist

  INCLUDE ole2incl.

  DATA: h_gui TYPE ole2_object.

  DATA: guixt_active TYPE i.
  DATA: root         TYPE i VALUE 1.

  CHECK sy-batch IS INITIAL. "Wenn Bachverarbeitung keine
Ausführung!".

* Connect to desktop object
  CREATE OBJECT h_gui 'SAPINFO'.

* Read registry
  CALL METHOD OF h_gui 'GetRegDWValueEx'  = guixt_active
       EXPORTING
        #1 = root
        #2 = 'SOFTWARE\SAP\SAPGUI FRONT\SAP FRONTEND SERVER\CUSTOMIZE'
        #3 = 'GUIXT'.

Über folgenden Code läßt sich der GuiXT aktivieren:

      CALL METHOD OF h_gui 'SetRegDWValueEx'         = guixt_active
        EXPORTING
          #1 = root
          #2 =
             'SOFTWARE\SAP\SAPGUI FRONT\SAP FRONTEND SERVER\CUSTOMIZE'
          #3 = 'GUIXT'
          #4 = 1.

Das scheint auch zu funktionieren. 

Den kompletten Code findet man unter Tips und Tricks unter
www.synactive.com/ unter Tips und Tricks. (19).

Das stellt aber nur sicher ob die Funktionalität eingeschaltet ist. 
Es wird nicht sichergestellt, ob die Scripte laufen. 

Deshalb würde ich gerne weiter im Funktionsbaustein folgendes tun (im
PBO:)

1. in einer Konstante festlegen, welche alten temporäten Tabellen, die
von diesem Programm angelegt wurden noch vorhanden sind, gelöscht
werden könnten.

Z.B. del_file = 'C:\Programme\sappc\SAPgui\Z_GUIXT_CHECK -*'.

2. eine Variable errechnen

  concatenate: 'C:\Programme\sappc\SAPgui\Z_GUIXT_CHECK -*' 
               sy-datum
               sy-uzeit
          into 
               crt_file.

Dann wird das Dynpro mit diesen Werten angezeigt...

Im Script soll dann folgendes ablaufen:

3. Löschen der alten temporären PC-Dateien anhand dem Wert von
del_file.
   Geht das über den Script-Befehl RemoveFile? 

4. PC-Datei anhand des Wertes crt_file anlegen. 
   Geht das über den Script-Befehl OpenFile? 

5. Ausführen des Enter-Buttons mit: Enter  "STRT"

Danach wieder im Funktionsbaustein würde ich gerne mit irgendeinem
Upload-Funktionsbaustein prüfen, ob die PC-Datei vorhanden ist.
Wenn sie nicht vorhanden ist, konnte das Script nicht korrekt
ausgeführt werden.
Dann kann ich entsprechende Maßnahmen in meinem Funktionsbaustein.
Verhindern daß die Transaktion, dann weiter bearbeitet wird etc...


Ist diese Vorgehensweise total abwägig? 
Hat jemand einen anderen Vorschlag etc.? 


Mein größtes Problem im jetzigen Stadium ist, die Werte vom Bildschirm
auszulesen.
Vielleicht wirklich ein Anfängerproblem (bin ich auch in
GuiXT-Script-Programmierung...).
Ich habe es mit 
Call "StripQuotationMarks"
"dll=\\10.1.0.13\GuiXTscripte\guixtstring.dll" "In=&V[DEL_FILE]" 
"Out=cmd1" probiert.

Mit 
comment (17,50) &v[cmd1]
bekam ich allerdings keinen Wert angezeigt....

Wäre super, wenn mir jemand weiterhelfen könnte....

Falls die Lösung was wird, könnte man den Beispielcode sogar synactive
zur Verfügung stellen....

Wirklich dankbar wäre

Jürgen Spranz

home help back first fref pref prev next nref lref last post