SAP NW developer, java web dynpro async calls

Hola,

Necesito ayuda para realizar una llamada asincrona desde un formulario web dynpro a un proceso que me gustaría que corriese en backfground porque tarda unos segundos y al finalizar solo tiene que actualizar un campo en pantalla.

Alguien me puede facilitar un ejemplo?

Saludos
Paulo Alexandre.

Hola @psycholammer,
lo que puedes hacer es por ejemplo, asociar código al evento que sea hacer click al botón y en ese código poner algo así:

 lv_jobname = 'TU_NOMBRE_JOB'.

CALL FUNCTION 'JOB_OPEN'
EXPORTING
  jobname          = lv_jobname
IMPORTING
  jobcount         = lv_jobcount
EXCEPTIONS
  cant_create_job  = 1
  invalid_job_data = 2
  jobname_missing  = 3
  OTHERS           = 4. 
 
  SUBMIT z_..
  WITH p_idreme = idremesa
  USER sy-uname
  VIA JOB lv_jobname NUMBER lv_jobcount
  AND RETURN.

  CALL FUNCTION 'JOB_CLOSE'
    EXPORTING
      jobcount             = lv_jobcount
      jobname              = lv_jobname
      strtimmed            = 'X'
    EXCEPTIONS
      cant_start_immediate = 1
      invalid_startdate    = 2
      jobname_missing      = 3
      job_close_failed     = 4
      job_nosteps          = 5
      job_notex            = 6
      lock_failed          = 7
      OTHERS               = 8.
 DO.
  SELECT SINGLE * FROM  tbtco WHERE  jobname   = lv_jobname  AND
                                     jobcount  = lv_jobcount AND
                                   ( status  = 'F' OR status  = 'A' ).
  IF sy-subrc = 0.
    IF tbtco-status = 'F'. "el job ha acabado bien
      "rellena el campo
      EXIT.
    ELSE.
      "el job a acabado bien
      "dar error
      EXIT.
    ENDIF.
  ELSE.
    WAIT UP TO 3 SECONDS.
  ENDIF.
ENDDO.
2 Me gusta

La única forma en la que realice algo parecido para WebDynpro for ABAP, lo realice tal y como comenta @Salco

Lo único a tener en cuenta es que el tiempo de timeout en la parte web no suele ser tan amplio como en R/3 con lo que puede terminar dando time out si el proceso que realices mediante el job tarda demasiado, aunque si solo tarda unos segundos no debería haber problema.

Saludos.

Muy interesante esto! Posiblemente lo use a futuro así que haré un copy-paste je je :+1:

Gracias Luis por tu ayuda pero me temo que hablamos de cosas diferentes (o no lo he entendido bien)…
De lo que yo hablo es de aplicaciones puramente web que se ejecutan sobre el SAP Netweaver Portal, son aplicaciones java+html+javascript que se desarrollan con el Netweaver Developer Studio.

Es decir…, aplicaciones con vistas y controladores java desarrollados con:

Pues bien, las llamadas que se hacen desde la vista HTML+JavaScript al controlador java que se ejecuta en un servidor de aplicaciones java, actualmente son sincronas y me gustaría cambiarlas a asincronas al estilo de Ajax…

Saludos
Paulo Alexandre.

1 me gusta

Gracias por la aclaración, cambio tag de “abap” a “portal”.

Creo que depende de la versión de NW que corras, ¿cuál tenes?
Digo esto porque estoy leyendo que las “vistas asíncronas” están disponibles a partir de la versión 7.3:

The asynchronous mode for view processing is supported. A typical use case is the integration of an application with high data volume. Users can interact with the main application while the integral asynchronous part processes large data amounts.
More information: Asynchronous Views , Enabling the Portal to Process Asynchronous Views

Has leído esto?
h_tp://help.sap.com/saphelp_nw73/helpdata/en/4a/498e58cb511c6ce10000000a42189b/frameset.htm

Buscar más sobre:

  • com.sapportals.portal.prt.core.async.IAsyncPortalComponentResponse

Que grande eres SidV !!!, si, creo que el que indicas es el buen camino.
Muchas gracias, sondearé las Async Views, no necesito una vista asincrona sino mas bien un proceso pero el mecanismo creo que será similar…

una vez mas, gracias por vuestra ayuda !!
:wink:

No olvides marcar una respuesta como solucion si te ha puesto en el camino correcto, o si te ha brindado la solucion misma. Un placer leer tus inquietudes @psycholammer.