Vous êtes sur la page 1sur 6

PROGRAM zchk_tablecontrol3 .

TABLES lfa1.
DATA: BEGIN OF it OCCURS 0,
check(1),
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
land1 LIKE lfa1-land1,
END OF it.
data okcode like sy-ucomm.
DATA: a LIKE lfa1-lifnr,b LIKE lfa1-lifnr. .
DATA: lines TYPE i,limit TYPE i,fill TYPE i.
CONTROLS tc1 TYPE TABLEVIEW USING SCREEN 100.
DATA cols LIKE LINE OF tc1-cols.
DATA: rad1 TYPE c,rad2 TYPE c.
DATA land LIKE lfa1-land1.
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
okcode = sy-ucomm.
clear sy-ucomm.
CASE okcode.
WHEN 'DISP'.
REFRESH it.
SELECT lifnr name1 land1 FROM lfa1
INTO CORRESPONDING FIELDS
OF TABLE it
WHERE lifnr BETWEEN a and b.
IF sy-subrc <> 0.
MESSAGE i003(zmsg).
ENDIF.
LOOP AT tc1-cols INTO cols.
cols-screen-input = '0'.
MODIFY tc1-cols FROM cols.
ENDLOOP.
WHEN 'BACK'.
LEAVE TO SCREEN 50.
WHEN 'DEL'.
READ TABLE tc1-cols INTO cols WITH KEY screen-input = '1'.
IF sy-subrc = 0.
LOOP AT it WHERE check = 'X'..
DELETE it.
ENDLOOP.

ENDIF.
WHEN 'MODIFY'.
LOOP AT it WHERE check = 'X'.
SELECT SINGLE land1 FROM t005
INTO land
WHERE land1 = it-land1.
IF sy-subrc = 0.
UPDATE lfa1 SET name1 = it-name1
land1 = it-land1 WHERE lifnr = it-lifnr.
it-check = ' '.
MODIFY it.
ELSE.
MESSAGE w008(zmsg).
ENDIF.
ENDLOOP.
WHEN 'DOWN'.
tc1-top_line = tc1-top_line + 1.
limit = fill - lines + 1.
IF tc1-top_line > limit.
tc1-top_line = limit.
ENDIF.
WHEN 'UP'.
SUBTRACT 1 FROM tc1-top_line.
WHEN 'TOGG'.
LOOP AT tc1-cols INTO cols WHERE index > 1.
IF cols-screen-input = '1'.
cols-screen-input = '0'.
ELSEIF cols-screen-input = '0'.
cols-screen-input = '1'.
ENDIF.
MODIFY tc1-cols FROM cols.
ENDLOOP.
clear okcode.
WHEN 'PLIST'.
LEAVE TO LIST-PROCESSING.
IF NOT it[] IS INITIAL.
LOOP AT it.
WRITE:/ it-lifnr,it-name1.
ENDLOOP.
ELSE.
MESSAGE i007(zmsg).
ENDIF.
WHEN 'ALTP'.
IF NOT it[] IS INITIAL.
CALL SCREEN 200 .
ELSE.
MESSAGE i007(zmsg).

ENDIF.
WHEN 'PDOWN'.
limit = 8 - lines.
IF limit = 0.
tc1-top_line = tc1-top_line + 8.
ENDIF.
WHEN 'PUP'.
limit = fill - lines.
tc1-top_line = tc1-top_line - 8.
ENDCASE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = a
IMPORTING
output = a.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = b
IMPORTING
output = b.

ENDMODULE.

" USER_COMMAND_0100 INPUT

*&---------------------------------------------------------------------*
*&
Module modify_rec INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE modify_rec INPUT.
lines = sy-loopc.
MODIFY it INDEX tc1-current_line.
ENDMODULE.

" modify_rec INPUT

*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS space.
DESCRIBE TABLE it LINES fill.
tc1-lines = fill.

ENDMODULE.
" STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*&
Module cancel INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
" cancel INPUT
*&---------------------------------------------------------------------*
*&
Module validate INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE validate INPUT.
IF b < a.
MESSAGE e001(zmsg).
ENDIF.
ENDMODULE.
" validate INPUT
*&---------------------------------------------------------------------*
*&
Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_0200 OUTPUT.
SET PF-STATUS 'SCR_000'.
* SET TITLEBAR 'xxx'.
SUPPRESS DIALOG.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 100.
LOOP AT it.
WRITE:/ it-lifnr,it-name1.
ENDLOOP.
ENDMODULE.
" STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*&
Module output OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE output OUTPUT.
LOOP AT tc1-cols INTO cols WHERE index = 1.
cols-screen-input = '0'.
MODIFY tc1-cols FROM cols.
CLEAR cols.
ENDLOOP.
ENDMODULE.
" output OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0050 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0050 INPUT.

IF rad1 = 'X'.
SET SCREEN 300.
ELSE.
SET SCREEN 100.
CLEAR: it[],a,b.
ENDIF.

ENDMODULE.
" USER_COMMAND_0050 INPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0300 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0300 INPUT.
CASE sy-ucomm.
WHEN 'CREATE'.
INSERT lfa1.
IF sy-subrc = 0.
MESSAGE i010(zmsg).
CLEAR lfa1.
ENDIF.
WHEN 'BACK'.
LEAVE TO SCREEN 50.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0300 INPUT
*&---------------------------------------------------------------------*
*&
Module STATUS_0050 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_0050 OUTPUT.
SET PF-STATUS 'SCR01'.
* SET TITLEBAR 'xxx'.
ENDMODULE.
" STATUS_0050 OUTPUT
*&---------------------------------------------------------------------*
*&
Module EXIT INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE.
" EXIT INPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*

MODULE user_command_0200 INPUT.


SET PF-STATUS space.
CASE sy-ucomm.
WHEN 'BAC'.
LEAVE TO SCREEN 100.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*&
Module cancel1 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module cancel1 input.
leave to screen 50.
endmodule.

" cancel1 INPUT

Vous aimerez peut-être aussi