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.