Screen refresh nach CALL FUNCTION - STARTING NEW TASK

Benutzeroberflächen in SAP Systemen.

Screen refresh nach CALL FUNCTION - STARTING NEW TASK

Postby Alina4632 » Fri Apr 13, 2012 8:10 am

Hallo,

ich habe ein kleines Problem und hoffe ihr könnt mir helfen bzw. mir sagen das es nicht möglich ist.

Folgendes Szenario:
Auf einem Dynpro sind zwei Container in welchem jeweils ein HTML_VIEWER eingebettet ist. Mit
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CALL FUNCTION '...'
  2. STARTING NEW TASK 'SCANNER'
  3. DESTINATON 'NONE'
  4. PERFORMING refresh ON END OF TASK
  5.  
GeSHi ©

starte ich einen Hintergrundprozess und warte darauf, das in eine DB-Tabelle Daten geschrieben werden. Ist das geschehen springt er auch wie vorgesehen in die Formroutine "refresh". Ich müsste jetzt die HTML_VIEWS refreshen, aber irgendwie bekomme ich das nicht hin. Hatte gehofft, dass ein einfaches
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. go_html_head->do_refresh( ).
  2.  
GeSHi ©

reicht, abers scheint an der Stelle nicht zu funktionieren. Hat einer von euch eine Idee, wie ich an der Stelle den Screen zum refreshen bekomme.

Kurze Info noch. Ein
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. SET USER-COMMAND ‘TEST’
GeSHi ©

scheint nicht zu funktionieren. Er springt, warum auch immer, nicht ins PAI.

Danke euch schon einmal.

Viele Grüße,

Sven
Alina4632
..
..
 
Posts: 67
Joined: Tue Jun 26, 2007 8:51 am

Re: Screen refresh nach CALL FUNCTION - STARTING NEW TASK

Postby Alina4632 » Fri Apr 13, 2012 2:44 pm

So, dann mal noch ein paar Infos.

Habe auf meinem Dynpro 5000 ein Custom-Control mit dem Namen CONT_HEAD angelegt. An dieses Control wird ein CL_GUI_CUSTOM_CONTAINER gebunden. Später mal kommt an diesen dann ein CL_GUI_HTML_VIEWER.

Jetzt erst einmal ein wenig Coding. Infos zur Problemmatik dann unten. Vielleicht seht ihr ja den Fehler auf dem ersten Blick :wink:

Ablauflogik Dynpro 5000
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. PROCESS BEFORE OUTPUT.
  2.   MODULE STATUS_5000.
  3.   MODULE init_control_processing_5000.
  4.  
  5. PROCESS AFTER INPUT.
  6.   MODULE USER_COMMAND_5000.
  7.  
GeSHi ©


MODULE init_control_processing_5000.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. MODULE init_control_processing_5000 OUTPUT.
  2.  
  3.   IF go_cont_head IS NOT BOUND.
  4.     "Kopfbereich
  5.     CREATE OBJECT go_cont_head
  6.       EXPORTING
  7.         container_name = 'CONT_HEAD'
  8.       EXCEPTIONS
  9.         OTHERS         = 1.
  10.  
  11. *    CREATE OBJECT go_html_head
  12. *      EXPORTING
  13. *        parent = go_cont_head.
  14. *    IF sy-subrc <> 0.
  15. *
  16. *    ENDIF.
  17. *
  18. *    CALL FUNCTION 'WDY_CONSTRUCT_URL'
  19. *      EXPORTING
  20. *        application         = 'ZMM_ZK_HEAD'
  21. *      IMPORTING
  22. *        out_url             = l_url
  23. *      EXCEPTIONS
  24. *        invalid_application = 1.
  25. *
  26. *    g_url = l_url.
  27. *
  28. *    go_html_head->show_url( g_url ).
  29. *
  30.    CALL FUNCTION 'STARTE_TASK'
  31.       EXCEPTIONS
  32.         communication_failure = 1
  33.         system_failure        = 2.
  34.    ENDIF.
  35.  
GeSHi ©


FuBa STARTE_TASK
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1.  
  2. FUNCTION starte_task .
  3. *"----------------------------------------------------------------------
  4. *"*"Lokale Schnittstelle:
  5. *"  EXCEPTIONS
  6. *"      SYSTEM_FAILURE
  7. *"      COMMUNICATION_FAILURE
  8. *"----------------------------------------------------------------------
  9. "Zum testen
  10. CALL FUNCTION 'RFC_PING_AND_WAIT'
  11.     STARTING NEW TASK 'WAITING'
  12.     PERFORMING refresh ON END OF TASK
  13.       EXPORTING SECONDS = 5
  14.        EXCEPTIONS
  15.          COMMUNICATION_FAILURE = 1
  16.          SYSTEM_FAILURE        = 2 .
  17.  
GeSHi ©


MODULE USER_COMMAND_5000.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. MODULE user_command_5000 INPUT.
  2.  
  3.   DATA: l_url_200 TYPE char200.
  4.  
  5.   CASE sy-ucomm.
  6.     WHEN 'EXIT'.
  7.       LEAVE PROGRAM.
  8.     WHEN 'BACK'.
  9.       LEAVE TO SCREEN 1000.
  10.     WHEN 'CANC'.
  11.       LEAVE TO SCREEN 1000.
  12.     WHEN 'TEST'.
  13.      "tue etwas
  14. *      CALL FUNCTION 'STARTE_TASK'.
  15. ENDMODULE.                 " USER_COMMAND_5000  INPUT
  16.  
GeSHi ©


Form REFRESH
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. FORM refresh USING p_task TYPE clike.
  2.  
  3.   SET USER-COMMAND 'TEST'.
  4.  
  5. ENDFORM.                    "refresh
  6.  
GeSHi ©


Jetzt zur Problemmatik: kommentiere ich im INIT_CONTROL_PROCESSING die Erzeugung des CL_GUI_CUSTOM_CONTAINER (go_cont_head) aus, dann funktioniert die Logik wie gewünscht. Nach 5 Sekunden ist die parallel gestarte Task beendet, die Formroutine Refresh wird aufgerufen, der OK-Code wird abgesetzt und das MODULE user_command_5000 wird durchlaufen. Wird der Container (go_cont_head) erzeugt, dann ist die parallel gestartete Task nach 5 Sekunden beendet, er kommt auch noch zum SET USER-COMMAND 'TEST' aber im MODULE user_command_5000 kommt er nie an. Irgendwie scheint der Roundtrip zum PAI nicht angestossen zu werden. Die GUI lässt sich an der Stelle immer noch genauso bedienen wie immer. D.h. BACK, EXIT und CANC können über die Standardbuttons noch bedient werden.

Zusatzinfo: drücke ich auf dem Screen einmal Enter, dann wird anschließend die Logik ordungsgemäß durchlaufen.

Jemand eine Ahnung woran es liegen könnte? Bin gerade ein wenig ratlos.
Alina4632
..
..
 
Posts: 67
Joined: Tue Jun 26, 2007 8:51 am


Return to Dialogprogrammierung

Who is online

Users browsing this forum: No registered users and 5 guests