Mit dem Fuba RFC_IS_GUI_ON kannst du prüfen, ob die SAP GUI aktiv ist.
--
Ansich sollte die Transaktion im "Fiori" ja nur via Webgui gerufen werden. Muss du mal prüfen, ob der Fuba das auch unterscheiden kann.
Mit CALL FUNCTION 'RFC_IS_GUI_ON' kann man abfragen ob der GUI zur Verfügung steht. Das ist meines Erachtens die sicherste Variante. Ansonsten kann man sich noch das Coding der GUI-Controls anschauen. Da werden in CL_GUI_OBJECT=>CLASS_INIT diverse Informationen zur aktuellen Umgebung ermittelt, damit die richtigen Control-Implementierungen geladen werden können.
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.
Bei der Namenssuche muss man etwas Geschichtswissen bei der SAP haben :).
ITS = Internet Transaction Server. Dieser war früher dafür da, um SAP GUI Transaktionen im Browser zu verwenden. Dann hieß dieser webGUI und wird jetzt in der Fiori-Oberfläche verwendet, um einfache SAP GUI Transaktion als Fiori "zu verkaufen".
Ist zwar schon gelöst, aber du könntest auch den Callstack auslutschen.
DATA: LT_CALLSTACK TYPE SYS_CALLST.
CALL FUNCTION 'SYSTEM_CALLSTACK'
IMPORTING
ET_CALLSTACK = LT_CALLSTACK.
READ TABLE LT_CALLSTACK
ASSIGNING FIELD-SYMBOL(<FIORI_SERVICE_CALLSTACK>) WITH KEY
PROGNAME = 'TESTNAME'.
IF SY-SUBRC = 0.
" ja, Aufruf aus Fiori.
" noch genauer einschränken anhand des Events falls nötig:
" CASE <fiori_service_callstack>-eventname.
" WHEN 'EVENTNAME_XYZ'.
" WHEN OTHERS.
" ENDCASE.
ENDIF.
Folgende Benutzer bedankten sich beim Autor mazu für den Beitrag: wreichelt
Es gibt für den Call Stack auch eine freigegebene Variante. Also in halbwegs modernen Systemen besser DATA(call_stack) = xco_cp=>current->call_stack->full( ). nutzen, als den FUBA.