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 program for updating database table

Former Member
0 Likes
787

Does anybody have a sample code for a table control program which can insert/delete/update a database table?

I mean like on the output on table control, if the user insert/delete/update the records, the corresponding records will be updated in database table also.

Appreciate your input.

Thanks.

1 ACCEPTED SOLUTION
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
684

All of that can be handled automatically for you if you use the table control wizard in screen painter. Or if you want to generate a table maintenance program, you don't have to code anything. Just go to SE11, Utilities, Table Mainteance Generator. Once you have the table maintenance program, you can maintain the db table via SM30

Regards,

Rich Heilman

6 REPLIES 6
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
685

All of that can be handled automatically for you if you use the table control wizard in screen painter. Or if you want to generate a table maintenance program, you don't have to code anything. Just go to SE11, Utilities, Table Mainteance Generator. Once you have the table maintenance program, you can maintain the db table via SM30

Regards,

Rich Heilman

Read only

0 Likes
684

Rich,

Thank you very much.

What if I just want to insert/modify/delete a row in internal table?

Regards.

Read only

0 Likes
684

hi nuren,

TABLES: kna1,knbk.

DATA: v_kunnr LIKE kna1-kunnr.

DATA: v_check TYPE c.

DATA: BEGIN OF it_knbk OCCURS 0,

banks LIKE knbk-banks,

bankl LIKE knbk-bankl,

bankn LIKE knbk-bankn,

bkont LIKE knbk-bkont,

koinh LIKE knbk-koinh,

chk TYPE c,

END OF it_knbk.

DATA: v_ucomm TYPE sy-ucomm,

v_dynnr TYPE sy-dynnr.

DATA: l_index TYPE sy-index.

data: count type i.

CONTROLS: tc1 TYPE TABLEVIEW USING SCREEN 0200.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'ABC'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE user_command_0100 INPUT.

v_ucomm = sy-ucomm.

CASE v_ucomm.

WHEN 'DISP' OR 'CHNG'.

IF v_kunnr <> space.

SELECT banks

bankl

bankn

bkont

koinh

FROM knbk

INTO TABLE it_knbk

WHERE kunnr = v_kunnr.

LEAVE TO SCREEN '0200'.

ENDIF.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module MOD_KUNNR INPUT

&----


  • text

----


MODULE mod_kunnr INPUT.

IF NOT v_kunnr IS INITIAL.

SELECT SINGLE

kunnr

FROM kna1

INTO v_kunnr

WHERE kunnr = v_kunnr.

IF sy-subrc <> 0.

MESSAGE e000(zz) WITH 'INCORRECT CUSTOMER NUMBER'.

ENDIF.

ENDIF.

IF v_kunnr IS INITIAL.

MESSAGE e000(zz) WITH 'PLEASE ENTER A VALUE'.

ENDIF.

ENDMODULE. " MOD_KUNNR INPUT

&----


*& Module STATUS_0200 OUTPUT

&----


  • text

----


MODULE status_0200 OUTPUT.

SET PF-STATUS 'ABC1'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0200 OUTPUT

&----


*& Module SCREENMOD OUTPUT

&----


  • text

----


MODULE screenmod OUTPUT.

IF v_ucomm = 'DISP'.

LOOP AT SCREEN.

screen-input = 0.

MODIFY SCREEN.

ENDLOOP.

ELSE."if v_UCOMM = 'CHNG'.

LOOP AT SCREEN.

IF screen-group1 = 'G1'.

screen-input = 0.

ELSE.

screen-input = 1.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

endif.

if sy-ucomm = 'INSE'.

loop at screen.

IF ( tc1-current_line <> tc1-lines ).

screen-input = 0.

else.

screen-input = 1.

modify screen.

endif.

endloop.

endif.

ENDMODULE. " SCREENMOD OUTPUT

&----


*& Module EXIT2 INPUT

&----


  • text

----


MODULE exit2 INPUT.

LEAVE TO SCREEN 0.

ENDMODULE. " EXIT2 INPUT

&----


*& Module modify INPUT

&----


  • text

----


MODULE modify INPUT.

IF v_check = 'X'.

it_knbk-chk = 'X'.

MODIFY it_knbk index tc1-current_line.

ELSE.

CLEAR it_knbk-chk .

ENDIF.

ENDMODULE. " modify INPUT

&----


*& Module USER_COMMAND_0200 INPUT

&----


  • text

----


MODULE user_command_0200 INPUT.

v_ucomm = sy-ucomm.

CASE v_ucomm.

WHEN 'DELE'.

DELETE it_knbk where chk eq 'X'.

DESCRIBE TABLE it_knbk LINES tc1-lines.

WHEN 'INSE'.

CLEAR it_knbk.

APPEND it_knbk.

DESCRIBE TABLE it_knbk LINES tc1-lines.

WHEN 'LIST'.

LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN '0200'.

WRITE 'Report'.

WHEN 'BACK'.

LEAVE TO SCREEN '0100'.

ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

&----


*& Module validate INPUT

&----


  • text

----


module validate input.

IF IT_KNBK IS INITIAL.

MESSAGE E000(ZZ) WITH 'A BLANK LINE CANNOT BE SAVED'.

ENDIF.

endmodule. " validate INPUT

Read only

Former Member
0 Likes
684

Hi Nuren,

Here is easy sample prg u can go thru...

TABLES: ZFRIENDS_CONTACT.

DATA: BEGIN OF ITAB OCCURS 0.

INCLUDE STRUCTURE ZFRIENDS_CONTACT.

DATA: END OF ITAB.

DATA: BEGIN OF ITAB1 OCCURS 0,

NAME LIKE ZFRIENDS_CONTACT-NAME,

FRIEND_NAME LIKE ZFRIENDS_CONTACT-FRIEND_NAME,

CHECK1 TYPE C,

END OF ITAB1.

DATA: V_NAME LIKE ZFRIENDS_CONTACT-NAME,

VTAB TYPE C.

CONTROLS:

TC TYPE TABLEVIEW USING SCREEN 200.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'SSS'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

SELECT NAME

FRIEND_NAME

DOB

CELL_NO

INTO CORRESPONDING FIELDS OF TABLE ITAB

FROM ZFRIENDS_CONTACT

WHERE NAME = V_NAME.

DESCRIBE TABLE ITAB LINES TC-LINES.

CASE SY-UCOMM.

WHEN 'EXIT'.

LEAVE PROGRAM.

WHEN 'BACK'.

LEAVE PROGRAM.

WHEN 'DISPLAY'.

LEAVE TO SCREEN 200.

WHEN 'CHANGE'.

LEAVE TO SCREEN 200.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Module GETDATA OUTPUT

&----


  • text

----


MODULE GETDATA OUTPUT.

ENDMODULE. " GETDATA OUTPUT

&----


*& Module SHOWDATA INPUT

&----


  • text

----


MODULE SHOWDATA INPUT.

CASE SY-UCOMM.

WHEN 'DELETE'.

IF VTAB = 'X'.

ITAB1-NAME = ITAB-NAME.

ITAB1-FRIEND_NAME = ITAB-FRIEND_NAME.

ITAB1-CHECK1 = 'D'.

APPEND ITAB1.

DELETE ITAB INDEX TC-CURRENT_LINE.

DESCRIBE TABLE ITAB LINES TC-LINES.

ENDIF.

WHEN 'MODIFY'.

IF VTAB = 'X'.

ITAB1-NAME = ITAB-NAME.

ITAB1-FRIEND_NAME = ITAB-FRIEND_NAME.

ITAB1-CHECK1 = 'M'.

APPEND ITAB1.

MODIFY ITAB INDEX TC-CURRENT_LINE.

ENDIF.

WHEN 'INSERT'.

IF VTAB = 'X'.

APPEND INITIAL LINE TO ITAB.

DESCRIBE TABLE ITAB LINES TC-LINES.

CLEAR SY-UCOMM.

ENDIF.

WHEN 'SINS'.

ITAB1-NAME = ITAB-NAME.

ITAB1-FRIEND_NAME = ITAB-FRIEND_NAME.

ITAB1-CHECK1 = 'I'.

APPEND ITAB1.

MODIFY ITAB INDEX TC-CURRENT_LINE.

ENDCASE.

ENDMODULE. " SHOWDATA INPUT

&----


*& Module PROCESS INPUT

&----


  • text

----


MODULE PROCESS INPUT.

IF SY-UCOMM = 'SAVE'.

LOOP AT ITAB1.

IF ITAB1-CHECK1 = 'I'.

READ TABLE ITAB WITH KEY NAME = ITAB1-NAME

FRIEND_NAME = ITAB1-FRIEND_NAME.

INSERT INTO ZFRIENDS_CONTACT VALUES ITAB.

ELSEIF ITAB1-CHECK1 = 'D'.

DELETE FROM ZFRIENDS_CONTACT WHERE NAME = ITAB1-NAME

AND FRIEND_NAME = ITAB1-FRIEND_NAME.

ELSEIF ITAB1-CHECK1 = 'M'.

READ TABLE ITAB WITH KEY NAME = ITAB1-NAME

FRIEND_NAME = ITAB1-FRIEND_NAME.

UPDATE ZFRIENDS_CONTACT SET NAME = ITAB-NAME

FRIEND_NAME = ITAB-FRIEND_NAME

DOB = ITAB-DOB

CELL_NO = ITAB-CELL_NO

WHERE NAME = ITAB-NAME AND

FRIEND_NAME = ITAB-FRIEND_NAME.

ENDIF.

ENDLOOP.

ENDIF.

ENDMODULE. " PROCESS INPUT

Regards,

Kiran B

Read only

Former Member
0 Likes
684

HI

GOOD

GO THROUGH THIS PROGRAM

REPORT Y730_BDC5 .

*HANDLING TABLE CONTROL IN BDC

DATA : BEGIN OF IT_DUMMY OCCURS 0,

DUMMY(100) TYPE C,

END OF IT_DUMMY.

DATA : BEGIN OF IT_XK01 OCCURS 0,

LIFNR(10) TYPE C,

BUKRS(4) TYPE C,

EKORG(4) TYPE C,

KTOKK(4) TYPE C,

NAME1(30) TYPE C,

SORTL(10) TYPE C,

LAND1(3) TYPE C,

SPRAS(2) TYPE C,

AKONT(6) TYPE C,

FDGRV(2) TYPE C,

WAERS(3) TYPE C,

END OF IT_XK01,

BEGIN OF IT_BANK OCCURS 0,

BANKS(3) TYPE C,

BANKL(10) TYPE C,

BANKN(10) TYPE C,

KOINH(30) TYPE C,

LIFNR(10) TYPE C,

END OF IT_BANK.

DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = 'C:\VENDOR.TXT'

FILETYPE = 'ASC'

TABLES

DATA_TAB = IT_DUMMY.

LOOP AT IT_DUMMY.

IF IT_DUMMY-DUMMY+0(2) = '11'.

IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10).

IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4).

IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4).

IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4).

IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30).

IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10).

IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3).

IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2).

IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6).

IT_XK01-FDGRV = IT_DUMMY-DUMMY+75(2).

IT_XK01-WAERS = IT_DUMMY-DUMMY+77(3).

APPEND IT_XK01.

ELSE.

IT_BANK-BANKS = IT_DUMMY-DUMMY+2(3).

IT_BANK-BANKL = IT_DUMMY-DUMMY+5(10).

IT_BANK-BANKN = IT_DUMMY-DUMMY+15(10).

IT_BANK-KOINH = IT_DUMMY-DUMMY+25(30).

IT_BANK-LIFNR = IT_DUMMY-DUMMY+55(10).

APPEND IT_BANK.

ENDIF.

ENDLOOP.

LOOP AT IT_XK01.

REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPMF02K' '0100'.

perform bdc_field using 'BDC_CURSOR'

'RF02K-REF_LIFNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02K-LIFNR'

IT_XK01-LIFNR.

perform bdc_field using 'RF02K-BUKRS'

IT_XK01-BUKRS.

perform bdc_field using 'RF02K-EKORG'

IT_XK01-EKORG.

perform bdc_field using 'RF02K-KTOKK'

IT_XK01-KTOKK.

perform bdc_dynpro using 'SAPMF02K' '0110'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-TELX1'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFA1-NAME1'

IT_XK01-NAME1.

perform bdc_field using 'LFA1-SORTL'

IT_XK01-SORTL.

perform bdc_field using 'LFA1-LAND1'

IT_XK01-LAND1.

perform bdc_field using 'LFA1-SPRAS'

IT_XK01-SPRAS.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-KUNNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-KOINH(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

DATA : FNAM(20) TYPE C,

IDX TYPE C.

MOVE 1 TO IDX.

LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR.

CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKS.

CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKL.

CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKN.

CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-KOINH.

IDX = IDX + 1.

ENDLOOP.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-BANKS(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_dynpro using 'SAPMF02K' '0210'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-FDGRV'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFB1-AKONT'

IT_XK01-AKONT.

perform bdc_field using 'LFB1-FDGRV'

IT_XK01-FDGRV.

perform bdc_dynpro using 'SAPMF02K' '0215'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-ZTERM'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0220'.

perform bdc_field using 'BDC_CURSOR'

'LFB5-MAHNA'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0310'.

perform bdc_field using 'BDC_CURSOR'

'LFM1-WAERS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFM1-WAERS'

IT_XK01-WAERS.

perform bdc_dynpro using 'SAPMF02K' '0320'.

perform bdc_field using 'BDC_CURSOR'

'WYT3-PARVW(01)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

perform bdc_dynpro using 'SAPLSPO1' '0300'.

perform bdc_field using 'BDC_OKCODE'

'=YES'.

CALL TRANSACTION 'XK01' USING IT_BDCDATA

MODE 'A'

UPDATE 'S'

MESSAGES INTO IT_BDCMSGCOLL.

ENDLOOP.

FORM BDC_DYNPRO USING PROG SCR.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROG.

IT_BDCDATA-DYNPRO = SCR.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM.

FORM BDC_FIELD USING FNAM FVAL.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDFORM.

THANKS

MRUTYUN

Read only

Former Member
0 Likes
684

Hi Nuren,

You can go through this document...

http://esnips.com/doc/48bd95e8-facc-4932-b923-465ba59bad24/Table-Control.pdf

Regards,

SP.