技术开发 频道

在SAP中设计自动刷新的报表代码

【IT168 技术文章】

    REPORT zauto_refresh .
    DATA: g_init_once,
          ok_code(20),
          g_ref_from_timer.

    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
    END OF t_ekko.

    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.


    IF g_init_once <> 'X'.
      g_init_once = 'X'.
      CALL FUNCTION 'Z_ENQUE_SLEEP'
         STARTING NEW TASK 'WAIT'
         PERFORMING when_finished ON END OF TASK.

    ENDIF.

    WRITE:/ 'wait for 10 sec....'.

    AT USER-COMMAND.
      CASE ok_code.
        WHEN 'FCT_R'.
          SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
           UP TO 10 ROWS
            FROM ekpo
            INTO TABLE it_ekko.
          WRITE:/ sy-uzeit. "Time
          LOOP AT it_ekko INTO wa_ekko.
            WRITE:/ wa_ekko-ebeln, wa_ekko-ebelp.
          ENDLOOP.
          sy-lsind = 0.
          IF g_ref_from_timer = 'X'.

            CALL FUNCTION 'Z_ENQUE_SLEEP'
              STARTING NEW TASK 'INFO'
              PERFORMING when_finished ON END OF TASK.

            g_ref_from_timer = ''.
          ENDIF.
      ENDCASE.


    *---------------------------------------------------------------------*
    *       FORM WHEN_FINISHED                                            *
    *---------------------------------------------------------------------*
    *       ........                                                      *
    *---------------------------------------------------------------------*
    *  -->  TASKNAME                                                      *
    *---------------------------------------------------------------------*
    FORM when_finished USING taskname.
      RECEIVE RESULTS FROM FUNCTION 'Z_ENQUE_SLEEP'.

      g_ref_from_timer = 'X'.

    * Trigger an event to run the at user-command
      SET USER-COMMAND 'FCT_R'.
      ok_code = 'FCT_R'.
      sy-ucomm = 'FCT_R'.

    ENDFORM.                    " WHEN_FINISHED

 

    FUNCTION Z_ENQUE_SLEEP.
    *"----------------------------------------------------------------------
    *"*"Local interface:
    *"----------------------------------------------------------------------
    wait up to 10 seconds.

    *CALL FUNCTION 'ENQUE_SLEEP'
    *     EXPORTING
    *        SECONDS = 1.

    ENDFUNCTION.

0
相关文章