‎2010 Nov 18 10:15 AM
Hi,
I have a Radio Frequency application in which the module pool screen should contain step-loop with dynamic number of rows as per the number of records to be displayed.
Can you please help as to how to make the number of rows of step-loop dynamic.?
Regards,
Mansi.
‎2010 Nov 30 11:58 AM
Hi,
we can delcale step loop system varibel in pbo.
data:line type i value '10'.
MODULE transp_itab_out OUTPUT.
idx = sy-stepl + line.
READ TABLE itab INTO wa INDEX idx.
ENDMODULE.
demo pg.
REPORT demo_dynpro_step_loop.
TYPES: BEGIN OF t_itab,
col1 TYPE i,
col2 TYPE i,
END OF t_itab.
DATA: itab TYPE STANDARD TABLE OF t_itab,
wa LIKE LINE OF itab,
fill TYPE i.
DATA: idx TYPE i,
line TYPE i,
lines TYPE i,
limit TYPE i,
c TYPE i,
n1 TYPE i VALUE 5,
n2 TYPE i VALUE 25.
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
START-OF-SELECTION.
DO 40 TIMES.
wa-col1 = sy-index.
wa-col2 = sy-index ** 2.
APPEND wa TO itab.
ENDDO.
DESCRIBE TABLE itab LINES fill.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_100' EXCLUDING 'PREVIOUS'.
ENDMODULE.
MODULE status_0200 OUTPUT.
SET PF-STATUS 'STATUS_200' EXCLUDING 'NEXT'.
ENDMODULE.
MODULE transp_itab_out OUTPUT.
idx = sy-stepl + line.
READ TABLE itab INTO wa INDEX idx.
ENDMODULE.
MODULE transp_itab_in INPUT.
lines = sy-loopc.
idx = sy-stepl + line.
MODIFY itab FROM wa INDEX idx.
ENDMODULE.
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'NEXT_LINE'.
line = line + 1.
limit = fill - lines.
IF line > limit.
line = limit.
ENDIF.
WHEN 'PREV_LINE'.
line = line - 1.
IF line < 0.
line = 0.
ENDIF.
WHEN 'NEXT_PAGE'.
line = line + lines.
limit = fill - lines.
IF line > limit.
line = limit.
ENDIF.
WHEN 'PREV_PAGE'.
line = line - lines.
IF line < 0.
line = 0.
ENDIF.
WHEN 'LAST_PAGE'.
line = fill - lines.
WHEN 'FIRST_PAGE'.
line = 0.
WHEN 'NEXT'.
c = line + 1.
LEAVE TO SCREEN 200.
ENDCASE.
ENDMODULE.
MODULE get_first_line INPUT.
line = c - 1.
ENDMODULE.
MODULE user_command_0200 INPUT.
save_ok = ok_code.
CASE save_ok.
WHEN 'PREVIOUS'.
LEAVE TO SCREEN 100.
ENDCASE.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
regards
muralii
‎2010 Nov 18 10:36 AM
In table control we have table_control-lines you can increase it dynamically. As each page down will trigger PAI you can initilally assign 100 lines and on each PAI keep on increasing them.
Nabheet
‎2010 Nov 18 10:40 AM
Hi,
I cannot use table cntrl in RF applications. I have used Step-loop, so i want to know if step-loop can be made dynamic.
‎2010 Nov 18 10:44 AM
‎2010 Nov 30 11:25 AM
In case of Step-loop, i want to make it dynamic based on number of records in the table, Can you please provide me with an example code.
‎2010 Nov 30 11:58 AM
Hi,
we can delcale step loop system varibel in pbo.
data:line type i value '10'.
MODULE transp_itab_out OUTPUT.
idx = sy-stepl + line.
READ TABLE itab INTO wa INDEX idx.
ENDMODULE.
demo pg.
REPORT demo_dynpro_step_loop.
TYPES: BEGIN OF t_itab,
col1 TYPE i,
col2 TYPE i,
END OF t_itab.
DATA: itab TYPE STANDARD TABLE OF t_itab,
wa LIKE LINE OF itab,
fill TYPE i.
DATA: idx TYPE i,
line TYPE i,
lines TYPE i,
limit TYPE i,
c TYPE i,
n1 TYPE i VALUE 5,
n2 TYPE i VALUE 25.
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
START-OF-SELECTION.
DO 40 TIMES.
wa-col1 = sy-index.
wa-col2 = sy-index ** 2.
APPEND wa TO itab.
ENDDO.
DESCRIBE TABLE itab LINES fill.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_100' EXCLUDING 'PREVIOUS'.
ENDMODULE.
MODULE status_0200 OUTPUT.
SET PF-STATUS 'STATUS_200' EXCLUDING 'NEXT'.
ENDMODULE.
MODULE transp_itab_out OUTPUT.
idx = sy-stepl + line.
READ TABLE itab INTO wa INDEX idx.
ENDMODULE.
MODULE transp_itab_in INPUT.
lines = sy-loopc.
idx = sy-stepl + line.
MODIFY itab FROM wa INDEX idx.
ENDMODULE.
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'NEXT_LINE'.
line = line + 1.
limit = fill - lines.
IF line > limit.
line = limit.
ENDIF.
WHEN 'PREV_LINE'.
line = line - 1.
IF line < 0.
line = 0.
ENDIF.
WHEN 'NEXT_PAGE'.
line = line + lines.
limit = fill - lines.
IF line > limit.
line = limit.
ENDIF.
WHEN 'PREV_PAGE'.
line = line - lines.
IF line < 0.
line = 0.
ENDIF.
WHEN 'LAST_PAGE'.
line = fill - lines.
WHEN 'FIRST_PAGE'.
line = 0.
WHEN 'NEXT'.
c = line + 1.
LEAVE TO SCREEN 200.
ENDCASE.
ENDMODULE.
MODULE get_first_line INPUT.
line = c - 1.
ENDMODULE.
MODULE user_command_0200 INPUT.
save_ok = ok_code.
CASE save_ok.
WHEN 'PREVIOUS'.
LEAVE TO SCREEN 100.
ENDCASE.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
regards
muralii