VinceCoder
2/26/2019 - 3:57 PM

Step Loop

Moduli e Form per Step Loop

*Logica di controllo della Dynpro
PROCESS BEFORE OUTPUT.
  MODULE status_5003.
  LOOP AT gt_conf_ot INTO gs_conf_ot CURSOR c FROM n1 TO n2.
    module transp_itab_out.
  ENDLOOP.
*
PROCESS AFTER INPUT.
  LOOP.

  ENDLOOP.
  MODULE user_command_5003.

*Modulo del PBO
MODULE transp_itab_out OUTPUT.
  idx = sy-stepl + line.
  READ TABLE gt_conf_ot INTO gs_conf_ot INDEX idx.
ENDMODULE.

*User Command per gestione dei tasti di navigazione
FORM pg_down.
  DATA: lv_num       TYPE i.

  lv_num = lines( gt_conf_ot ).
  y_lv_d = lv_num / 3.
  y_lv_div = ceil( y_lv_d ).

  y_curr_p_num = y_lv_div * 3.

  y_v_index = y_v_next + 1.

  IF y_v_next < y_lv_div.
    y_v_next = y_v_next + 1.
  ELSE.
    y_v_next = y_lv_div.
  ENDIF.
  y_v_prev = y_v_next.

  IF y_v_next <> y_lv_div.
    n2 = lv_num - 3 *  y_v_next.
    IF n2 > 3.
      n2 = 3 * y_v_next.
    ENDIF.
    n1 = 1.

    line = line + lines.
    limit = y_curr_p_num - lines.
    IF line > limit.
      line = limit.
    ENDIF.
  ELSE.
    y_v_next = y_v_next - 1.
  ENDIF.

ENDFORM.

FORM pg_up.

  n2 = 3 * y_v_next.
  IF n1 < 0.
    n1 = 1.
  ENDIF.

  IF y_v_next > 0.
    y_v_next = y_v_next - 1.
  ELSE.
    y_v_next = 0.
  ENDIF.
  y_v_prev = y_v_next.

  IF line NE 0 AND y_curr_p_num GT 3.
    line = y_v_next * 3.
  ELSE.
    line = 0.
    y_v_index = y_v_next - 1.
  ENDIF.

  IF line < 0.
    line = 0.
  ENDIF.


ENDFORM.

*Dichiarazione delle variabili coinvolte
DATA: idx          TYPE i,
      line         TYPE i,
      lines        TYPE i VALUE 3,
      limit        TYPE i,
      c            TYPE i,
      n1           TYPE i, "VALUE 1,
      n2           TYPE i,
      y_v_next     TYPE i,
      y_v_prev     TYPE i,
      y_v_limit    TYPE i,
      y_v_index    TYPE sy-index,
      y_lv_d       TYPE f,
      y_lv_div     TYPE i,
      y_curr_p_num TYPE i.