Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Table control

Former Member
0 Likes
546

Hi experts,

How i can insert data from tablecontrol field to Ztable by clicking the Pushbutton at that screen. I get the fields of table control from internal table define in program, and internal table is like of ztable.

Thanks

5 REPLIES 5
Read only

Former Member
0 Likes
514

write a module in the PAI between loop and endloop. Inside that module get the values from screen varialbles to program variables and then write the insert commend.

if u want the exact code. I can provide that too.

Read only

Former Member
0 Likes
514

Hi Prakash,

Create an internal table similar to the fields of table control and when u select the push button write the code in PAI, to put the data in internal table. and then itab to your Ztable.

See this code...It will give u some idea: -

program z_k_table1 .

*tables declaration

tables : zemploykk.

*data declaration

data : ok_code type sy-ucomm.

data : v_lines type i.

data : i_final type table of zemploykk.

*for using table control

controls : tabcont type tableview using screen '3000'.

*for pbo event in screen programming

include z_k_table1_pbo.

*for pai event in screen programming

include z_k_table1_pai.

INCLUDE PROGRAM FOR PBO

----


  • INCLUDE Z_K_TABLE1_PBO *

----


&----


*& Module STATUS_3000 OUTPUT

&----


  • text

----


module status_3000 output.

set pf-status 'DEMO'.

set titlebar 'TABLE1'.

describe table i_final lines tabcont-lines.

endmodule. " STATUS_3000 OUTPUT

&----


*& Module output OUTPUT

&----


  • text

----


" output OUTPUT

INCLUDE PROGRAM FOR PAI

----


  • INCLUDE Z_K_TABLE1_PAI *

----


&----


*& Module USER_COMMAND_3000 INPUT

&----


  • text

----


module user_command_3000 input.

case ok_code.

when 'DISPLAY'.

if i_final is initial.

select * from zemploykk into table i_final.

endif.

when 'BACK'.

leave to screen '0'.

when 'CLEAR'.

clear i_final.

when 'MODIFY'.

update zemploykk from table i_final.

clear i_final.

when 'INSERT'.

insert zemploykk from table i_final.

clear i_final.

endcase.

endmodule. " USER_COMMAND_3000 INPUT

&----


*& Module update_tab_control1 INPUT

&----


  • text

----


module update_tab_control1 input.

describe table i_final lines v_lines.

if v_lines < tabcont-current_line.

append zemploykk to i_final.

else.

modify i_final from zemploykk index tabcont-current_line.

endif.

endmodule. " update_tab_control1 INPUT

Flow Logic

process before output.

module status_3000.

loop at i_final into zemploykk with control tabcont.

endloop.

process after input.

loop at i_final.

module update_tab_control1.

endloop.

module user_command_3000.

Give me your mail ID...I have the one which I already developed.

Regards,

Krishna.

Read only

Former Member
0 Likes
514

Here is the exact code for your question: -

PROCESS BEFORE OUTPUT.

*-- Initialize data before outputting the screen

MODULE initialize_data.

*-- Get default data

MODULE get_defaultdata.

LOOP AT i_test WITH CONTROL TC.

MODULE screen_modify.

ENDLOOP.

PROCESS AFTER INPUT.

LOOP AT i_test.

FIELD I_TEST-MARK MODULE check.

CHAIN.

FIELD: i_test-source_type,

i_test-length,

i_test-width,

i_test-height.

MODULE pass_data.

ENDCHAIN.

ENDLOOP.

MODULE user_command.

-


Top declarations

-


&----


*& Include ZHKTEST2TOP

&----


PROGRAM ZHKTEST2.

TABLES: ZTEST.

*-- OKCODE to handle

DATA: ok_code TYPE SY-UCOMM.

*---Table control declaration

CONTROLS: tc TYPE TABLEVIEW USING SCREEN 100.

TYPES: BEGIN OF ty_test.

TYPES MARK TYPE CHAR1.

INCLUDE TYPE ZTEST.

TYPES: END OF ty_test.

DATA: t_test TYPE ty_test.

DATA: i_test like t_test OCCURS 0 WITH HEADER LINE,

wa_test TYPE ty_test.

DATA: i_ztest LIKE ZTEST OCCURS 0 WITH HEADER LINE.

DATA: lv_count TYPE i,

gv_tabix TYPE i,

lv_test TYPE i,

flag_check type CHAR1,

flagx TYPE char1,

flag_init TYPE CHAR1,

flag_all type char1, "For select all icon

flag_deselect type char1, "For deselecting icon

flag_ins TYPE CHAR1,

flag_sortup TYPE CHAR1,

flag_sortdown TYPE CHAR1.

-


PBO Modules

-


&----


*& Module initialize_data OUTPUT

&----


  • text

----


MODULE initialize_data OUTPUT.

*-- To get GUI status

PERFORM get_gui_status.

*-- Set cursor field

PERFORM set_cursor_field.

ENDMODULE. " initialize_data OUTPUT

&----


*& Module get_defaultdata OUTPUT

&----


  • text

----


MODULE get_defaultdata OUTPUT.

*-- Get default data from ZTEST table

IF flag_init IS INITIAL.

SELECT *

FROM ZTEST

INTO CORRESPONDING FIELDS OF TABLE i_test.

flag_init = 'X'.

ENDIF.

*-- For table control scrolling

DESCRIBE TABLE i_test LINES lv_count.

TC-lines = lv_count + 100.

*-- For selecting all rows in a table control

IF flag_all = 'X'.

LOOP AT i_test.

i_test-MARK = 'X'.

MODIFY i_test TRANSPORTING MARK.

ENDLOOP.

CLEAR flag_all.

ENDIF.

*-- For deselecting all rows

IF flag_deselect = 'X'.

LOOP AT i_test.

i_test-MARK = SPACE.

MODIFY i_test TRANSPORTING MARK.

ENDLOOP.

CLEAR flag_deselect.

ENDIF.

*-- For sorting

IF flag_sortup = 'X'.

SORT i_test BY source_type ASCENDING.

CLEAR flag_sortup.

ELSEIF flag_sortdown = 'X'.

SORT i_test BY source_type DESCENDING.

CLEAR flag_sortdown.

ENDIF.

ENDMODULE. " get_defaultdata OUTPUT

&----


*& Module screen_modify OUTPUT

&----


  • text

----


MODULE screen_modify OUTPUT.

READ TABLE I_TEST INTO WA_TEST INDEX TC-CURRENT_LINE.

IF SY-SUBRC = 0.

LOOP AT SCREEN.

IF SCREEN-NAME = 'I_TEST-SOURCE_TYPE'.

SCREEN-INPUT = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

CASE ok_code.

WHEN 'INSE'.

IF TC-CURRENT_LINE = gv_tabix.

LOOP AT SCREEN.

IF SCREEN-NAME = 'I_TEST-SOURCE_TYPE'.

SCREEN-INPUT = '1'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

CLEAR gv_tabix.

ENDIF.

ENDCASE.

ENDMODULE. " screen_modify OUTPUT

-


PAI Modules

-


&----


*& Module user_command INPUT

&----


  • text

----


MODULE user_command INPUT.

DATA: lin type i.

CLEAR ok_code.

ok_code = SY-UCOMM.

CASE ok_code.

*-- When clicking on BACK, EXIT or CANCEL buttons

WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.

LEAVE TO SCREEN 0.

*-- Inserting a new record within selection

WHEN 'INSE'.

READ TABLE i_test WITH KEY mark = 'X'.

IF SY-SUBRC = 0.

INSERT INITIAL LINE into I_TEST INDEX sy-tabix.

gv_tabix = sy-tabix.

flag_ins = 'X'.

flag_deselect = 'X'.

ENDIF.

*-- Deleting the selected records

WHEN 'DEL'.

IF NOT i_test[] IS INITIAL.

DATA: answer TYPE c.

CALL FUNCTION 'POPUP_TO_CONFIRM'

EXPORTING

TITLEBAR = 'Confirmation'

TEXT_QUESTION = 'This will delete database entry also...'

TEXT_BUTTON_1 = 'Yes'

TEXT_BUTTON_2 = 'No'

DEFAULT_BUTTON = '1'

DISPLAY_CANCEL_BUTTON = 'X'

START_COLUMN = 25

START_ROW = 6

IMPORTING

ANSWER = answer.

IF answer = '1'.

LOOP AT i_test WHERE MARK = 'X'.

DELETE FROM ZTEST WHERE source_type = i_test-source_type.

COMMIT WORK.

ENDLOOP.

DELETE i_test WHERE mark = 'X'.

ELSEIF answer = '2'.

LOOP AT i_test WHERE MARK = 'X'.

i_test-mark = SPACE.

MODIFY i_test TRANSPORTING MARK.

ENDLOOP.

ENDIF.

ENDIF.

*--- select all button

WHEN 'ALSI'.

flag_all = 'X'.

*-- Deselect all

WHEN 'DESEL'.

flag_deselect = 'X'.

*-- Sort UP

WHEN 'SUP'.

flag_sortup = 'X'.

*-- Sort down

WHEN 'SDOWN'.

flag_sortdown = 'X'.

*--Save

WHEN 'SAVE'.

IF NOT i_test[] IS INITIAL.

LOOP AT i_test.

i_ztest-mandt = SY-MANDT.

i_ztest-source_type = i_test-source_type.

i_ztest-length = i_test-length.

i_ztest-width = i_test-width.

i_ztest-height = i_test-height.

APPEND i_ztest.

CLEAR i_ztest.

ENDLOOP.

MODIFY ZTEST from table i_ztest.

COMMIT WORK.

MESSAGE s998(hk) WITH 'Table ZTEST successfully updated'.

ENDIF.

ENDCASE.

ENDMODULE. " user_command INPUT

&----


*& Module check INPUT

&----


  • text

----


MODULE check INPUT.

MODIFY i_test INDEX tc-current_line.

ENDMODULE. " check INPUT

&----


*& Module pass_data INPUT

&----


  • text

----


MODULE pass_data INPUT.

IF tc-current_line GT lv_count.

APPEND i_test.

ELSE.

MODIFY i_test INDEX tc-current_line.

ENDIF.

ENDMODULE. " pass_data INPUT

-


  • subroutines

-


&----


*& Form get_gui_status

&----


FORM get_gui_status .

SET PF-STATUS 'TEST'.

ENDFORM. " get_gui_status

&----


*& Form set_cursor_field

&----


FORM set_cursor_field .

SET CURSOR FIELD 'I_TEST-SOURCE_TYPE' LINE

TC-TOP_LINE.

ENDFORM. " set_cursor_field

Reward points if the information is helpful

Regards,

Hari krishna

Read only

Former Member
0 Likes
514

Hello Rajiv ,

please give me the code so that i can understand easily.

Thanks

Read only

0 Likes
514

In the Flow logic write:

PROCESS AFTER INPUT.

loop at itab.

module insert.

endloop.

after double clicking when u get into the insert module.

there you write:

move-corresponding fields of ztable to ztable.

INSERT INTO database table VALUES ztable.