{"id":254,"date":"2018-10-27T12:14:21","date_gmt":"2018-10-27T11:14:21","guid":{"rendered":"http:\/\/www.laufzeitfehler.net\/?p=254"},"modified":"2018-10-27T12:16:56","modified_gmt":"2018-10-27T11:16:56","slug":"popup-weg-ohne-klick","status":"publish","type":"post","link":"https:\/\/www.laufzeitfehler.net\/index.php\/2018\/10\/27\/popup-weg-ohne-klick\/","title":{"rendered":"Popup weg &#8211; ohne Klick!"},"content":{"rendered":"<p>Ich hatte in meiner Zeit als Berater immer wieder die Diskussion mit Kunden, warum manche Meldungen immer weggeklickt werden m\u00fcssen. Dabei ist schon mal sinnvoll, wenn Meldungen nicht einfach unten in der Statusleiste versauern und vielleicht vom User gar nicht wahrgenommen werden. Das Gegenargument war h\u00e4ufig, dass das Anklicken des Fensters einen Mehraufwand f\u00fcr die Nutzer bedeuten w\u00fcrde <em>(Kleine Anekdote am Rande: Ich musste mal ein Dialogprogramm entwickeln, wo in einem Schritt eine Handling Unit gebildet, diese \u00fcber die VLMOVE in einen WM-gef\u00fchrten Lagerort umgebucht und anschlie\u00dfend ein WM-Transportauftrag zur Einlagerung angelegt werden sollte. Da so viele Dinge in der Transaktion passierten, hatte ich alle Meldungen gesammelt und am Ende gesammelt in einem Popup angezeigt. Jemand im Lager hat sich \u00fcber den Mehraufwand [Wegklicken des Popups] beschwert und auf Sekundenbasis hochgerechnet, wieviele Manntage Mehraufwand f\u00fcr das Unternehmen im Jahr bedeutete. Sagen mir mal so: das Ausrechnen war wahrscheinlich unterm Strich aufw\u00e4ndiger als das Klicken selber&#8230;)<\/em>. Wie auch immer: Ein Kunde hatte mal die Idee, wie es denn w\u00e4re, wenn ein Popup nach einer bestimmten Zeit (z.B. drei Sekunden) von selber verschw\u00e4nde. Mein erster Impuls war zu sagen, dass das nicht geht, denn nach dem PBO wartet das System auf eine Nutzeraktion. Und so lange keine Aktion, wird auch das PAI nicht verarbeitet und das Fenster kann nicht verschwinden. Aber am Ende hat es mir dann doch keine Ruhe gelassen und ich habe etwas recherchiert und es gibt tats\u00e4chlich einen Funktionsbaustein, der ein Ereignis aus zu l\u00f6sen vermag. Mit dem Funktionsbaustein &#8216;SAPGUI_SET_FUNCTIONCODE&#8217; kann man Funktionscodes im PBO ausl\u00f6sen. Dabei ist das &#8220;=&#8221; der Default-Funktionscode.<\/p>\n<pre lang=\"ABAP\" line=\"1\"> \r\nCALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE' \r\n  EXPORTING \r\n    FUNCTIONCODE = '=' \r\n  EXCEPTIONS \r\n    FUNCTION_NOT_SUPPORTED = 1 \r\n    OTHERS = 2 .\r\n<\/pre>\n<p>Da nicht alle Front-End-Plattformen diese Funktion unterst\u00fctzen, sollte man zur Sicherheit pr\u00fcfen, ob eine Ausnahme stattgefunden hat. Im SAP GUI funktioniert das einwandfrei, im ITSmobile habe ich das (leider) nicht ans Laufen gebracht. Anbei mal ein einfaches Anwendungsbeispiel. Dieses Programm ruft den Screen 100 auf, der als Popup definiert ist. Im PBO l\u00f6st es sofort ein Ereignis aus und im PAI wird drei Sekunden gewartet, bis der Screen 200 aufgerufen wird.<\/p>\n<pre lang=\"ABAP\" line=\"1\"> \r\n*---------------------------------------------------------------------* \r\n* Report ZMM_TEST_LZF\r\n* \r\n*---------------------------------------------------------------------* \r\n*\r\n*\r\n*---------------------------------------------------------------------* \r\nREPORT ZMM_TEST_LZF. \r\n\r\ncall screen 0100 starting at 10 10. \r\n\r\n*---------------------------------------------------------------------* \r\n* Module USER_COMMAND_0100 INPUT \r\n*---------------------------------------------------------------------* \r\n* PAI-Module des Popup-Bildschirms \r\n*----------------------------------------------------------------------* \r\nMODULE USER_COMMAND_0100 INPUT. \r\n\r\n  WAIT UP TO 3 SECONDS. \r\n  call SCREEN 0200. \r\n\r\nENDMODULE. \" USER_COMMAND_0100 INPUT \r\n\r\n*---------------------------------------------------------------------* \r\n* Module USER_COMMAND_0200 INPUT \r\n*---------------------------------------------------------------------* \r\n* PAI-Module des Folge-Bildschirms \r\n*----------------------------------------------------------------------* \r\nMODULE USER_COMMAND_0200 INPUT. \r\n\r\n  LEAVE PROGRAM. \r\n\r\nENDMODULE. \" USER_COMMAND_0200 INPUT \r\n\r\n*---------------------------------------------------------------------* \r\n* Module STATUS_0100 OUTPUT \r\n*---------------------------------------------------------------------* \r\n* PBO-Module des Popup\r\n*----------------------------------------------------------------------* \r\nMODULE STATUS_0100 OUTPUT. \r\n  CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE' \r\n    EXPORTING \r\n      FUNCTIONCODE = '=' \r\n    EXCEPTIONS \r\n      FUNCTION_NOT_SUPPORTED = 1 \r\n      OTHERS = 2 . \r\n  \r\n  IF SY-SUBRC NE 0. \r\n* Implement suitable error handling here \r\n  ENDIF. \r\n\r\nENDMODULE. \" STATUS_0100 OUTPUT<\/pre>\n<p>Nach Aufruf des Programms erscheint ein Popup-Fenster:<\/p>\n<p><a href=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/10\/2018-10-27-Popup.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-487\" src=\"http:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/10\/2018-10-27-Popup.jpg\" alt=\"\" width=\"559\" height=\"184\" srcset=\"https:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/10\/2018-10-27-Popup.jpg 559w, https:\/\/www.laufzeitfehler.net\/wp-content\/uploads\/2018\/10\/2018-10-27-Popup-300x99.jpg 300w\" sizes=\"(max-width: 559px) 100vw, 559px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/imageshack.us\/a\/img801\/4460\/mfir.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"http:\/\/imageshack.us\/a\/img801\/4460\/mfir.jpg\" alt=\"\" width=\"260\" height=\"167\" \/><\/a> Dieses verschwindet nach drei Sekunden und das Folgedynpro wird angezeigt&#8230;<a href=\"http:\/\/imageshack.us\/a\/img16\/2807\/3f0r.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter\" src=\"http:\/\/imageshack.us\/a\/img16\/2807\/3f0r.jpg\" alt=\"\" width=\"295\" height=\"248\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Ich hatte in meiner Zeit als Berater immer wieder die Diskussion mit Kunden, warum manche Meldungen immer weggeklickt werden m\u00fcssen. Dabei ist schon mal sinnvoll, <a class=\"mh-excerpt-more\" href=\"https:\/\/www.laufzeitfehler.net\/index.php\/2018\/10\/27\/popup-weg-ohne-klick\/\" title=\"Popup weg &#8211; ohne Klick!\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":487,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[86,59],"tags":[87,181,147,88,92],"_links":{"self":[{"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/posts\/254"}],"collection":[{"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/comments?post=254"}],"version-history":[{"count":5,"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/posts\/254\/revisions"}],"predecessor-version":[{"id":491,"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/posts\/254\/revisions\/491"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/media\/487"}],"wp:attachment":[{"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/media?parent=254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/categories?post=254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.laufzeitfehler.net\/index.php\/wp-json\/wp\/v2\/tags?post=254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}