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

How to update the table control,

Former Member
0 Likes
669

Hi,

My table control is saving data in the database,

But i want it to display and update data in the database,

I am pasting my code which basically saves data,

Please help me out in updating & displaying data using this table cotnrol.

*************

In PBO

MODULE ETABDM_TABCON OUTPUT.

LOOPS = SY-LOOPC.

READ TABLE IT_ZETABDM INDEX TABCON-CURRENT_LINE.

IF SY-SUBRC = 0.

ZETABDM-BDM = IT_ZETABDM-BDM.

ZETABDM-CNAME = IT_ZETABDM-CNAME.

ZETABDM-CITY = IT_ZETABDM-CITY.

ZETABDM-ETANO = IT_ZETABDM-ETANO.

ZETABDM-ISSUE_DATE = IT_ZETABDM-ISSUE_DATE.

ZETABDM-APPROVED_DATE = IT_ZETABDM-APPROVED_DATE.

ENDIF.

ENDMODULE.

********************************************************

In PAI

ODULE USER_COMMAND_9003 INPUT.

CASE OK_CODE.

WHEN 'SAVE'.

IF ZETABDM-BDM IS INITIAL.

MESSAGE E000(38) WITH 'Enter BDM'.

ELSE.

SELECT SINGLE * FROM PA0000

WHERE PERNR = ZETABDM-BDM

AND BEGDA LE SY-DATUM

AND ENDDA GE SY-DATUM

AND STAT2 EQ 3.

IF SY-SUBRC NE 0.

MESSAGE E000(38) WITH ZETABDM-BDM 'Enter Active Employee'.

ENDIF.

ENDIF.

LOOP AT IT_ZETABDM.

IT_ZETABDM-BDM = ZETABDM-BDM.

MODIFY IT_ZETABDM.

ENDLOOP.

MODIFY ZETABDM FROM TABLE IT_ZETABDM.

COMMIT WORK AND WAIT.

IF SY-SUBRC = 0.

MESSAGE S000(38) WITH 'Records updated sucessfully.'

ENDIF.

****************************************

Thanks in advance

Irfan Hussain

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
624

ZETABDM seems to be structure used on screen and IT_ZETABDM is internal table in program.

This piece of code should go in Module MODULE UPDATE_ETABDM. and not in USER_COMMAND_9003.

<i>IF ZETABDM-BDM IS INITIAL.

MESSAGE E000(38) WITH 'Enter BDM'.

ELSE.

SELECT SINGLE * FROM PA0000

WHERE PERNR = ZETABDM-BDM

AND BEGDA LE SY-DATUM

AND ENDDA GE SY-DATUM

AND STAT2 EQ 3.

IF SY-SUBRC NE 0.

MESSAGE E000(38) WITH ZETABDM-BDM 'Enter Active Employee'.

ENDIF.</i>

<u>MODIFY IT_ZETABDM FROM ZETABDM INDEX TABCON-CURRENT_LINE.</u>

In USER_COMMAND_9003

You can use -

CASE SY-UCOMM.

WHEN 'SAVE'.

MODIFY ZETABDM FROM TABLE IT_ZETABDM.

COMMIT WORK AND WAIT.

IF SY-SUBRC = 0.

MESSAGE S000(38) WITH 'Records updated sucessfully.'.

ENDIF.

ENDCASE.

Hi,

My table control is saving data in the database,

But i want it to display and update data in the database,

I am pasting my code which basically saves data,

Please help me out in updating & displaying data using this table cotnrol.

*************

In PBO

MODULE ETABDM_TABCON OUTPUT.

LOOPS = SY-LOOPC.

READ TABLE IT_ZETABDM INDEX TABCON-CURRENT_LINE.

IF SY-SUBRC = 0.

ZETABDM-BDM = IT_ZETABDM-BDM.

ZETABDM-CNAME = IT_ZETABDM-CNAME.

ZETABDM-CITY = IT_ZETABDM-CITY.

ZETABDM-ETANO = IT_ZETABDM-ETANO.

ZETABDM-ISSUE_DATE = IT_ZETABDM-ISSUE_DATE.

ZETABDM-APPROVED_DATE = IT_ZETABDM-APPROVED_DATE.

ENDIF.

ENDMODULE.

********************************************************

In PAI

ODULE USER_COMMAND_9003 INPUT.

CASE OK_CODE.

WHEN 'SAVE'.

IF ZETABDM-BDM IS INITIAL.

MESSAGE E000(38) WITH 'Enter BDM'.

ELSE.

SELECT SINGLE * FROM PA0000

WHERE PERNR = ZETABDM-BDM

AND BEGDA LE SY-DATUM

AND ENDDA GE SY-DATUM

AND STAT2 EQ 3.

IF SY-SUBRC NE 0.

MESSAGE E000(38) WITH ZETABDM-BDM 'Enter Active Employee'.

ENDIF.

ENDIF.

LOOP AT IT_ZETABDM.

IT_ZETABDM-BDM = ZETABDM-BDM.

MODIFY IT_ZETABDM.

ENDLOOP.

MODIFY ZETABDM FROM TABLE IT_ZETABDM.

COMMIT WORK AND WAIT.

IF SY-SUBRC = 0.

MESSAGE S000(38) WITH 'Records updated sucessfully.'

ENDIF.

****************************************

Thanks in advance

Irfan Hussain

4 REPLIES 4
Read only

Former Member
0 Likes
624

Can you paste your screen flow logic.

In PAI you can one module between Loop and Endloop.

In this Module in ABAP you can validate all the rows data entry and also modify you internal table .

After Loop Endloop you will need to call another Module.

In ABAP in this module you can write

MODIFY ZETABDM FROM TABLE IT_ZETABDM.

COMMIT WORK AND WAIT.

IF SY-SUBRC = 0.

MESSAGE S000(38) WITH 'Records updated sucessfully.'

ENDIF.

Cheers

Read only

0 Likes
624

In the PBO just do a select from ZETABDM to updated the current values from the database.

You may want to get the latest only after saving, in such a case set a flag when saving and based on the flag value do a select from ZETABDM in the PBO.

Regards

Raja

Read only

0 Likes
624

Flow Logic

PROCESS BEFORE OUTPUT.

MODULE STATUS_9003.

LOOP.

MODULE ETABDM_TABCON.

ENDLOOP.

PROCESS AFTER INPUT.

CHAIN.

FIELD:ZETABDM-BDM.

MODULE CHECK_BDM.

ENDCHAIN.

LOOP .

MODULE UPDATE_ETABDM.

ENDLOOP.

MODULE USER_COMMAND_9003.

PROCESS ON VALUE-REQUEST.

FIELD ZETABDM-ETANO MODULE HELP-FOR-BDMETA.

FIELD ZETABDM-CNAME MODULE HELP-FOR-BDMCLT.

*******************************************

In PBO

MODULE ETABDM_TABCON OUTPUT.

LOOPS = SY-LOOPC.

READ TABLE IT_ZETABDM INDEX TABCON-CURRENT_LINE.

IF SY-SUBRC = 0.

ZETABDM-BDM = IT_ZETABDM-BDM.

ZETABDM-CNAME = IT_ZETABDM-CNAME.

ZETABDM-CITY = IT_ZETABDM-CITY.

ZETABDM-ETANO = IT_ZETABDM-ETANO.

ZETABDM-ISSUE_DATE = IT_ZETABDM-ISSUE_DATE.

ZETABDM-APPROVED_DATE = IT_ZETABDM-APPROVED_DATE.

ENDIF.

ENDMODULE.

********************************************************

In PAI

ODULE USER_COMMAND_9003 INPUT.

CASE OK_CODE.

WHEN 'SAVE'.

IF ZETABDM-BDM IS INITIAL.

MESSAGE E000(38) WITH 'Enter BDM'.

ELSE.

SELECT SINGLE * FROM PA0000

WHERE PERNR = ZETABDM-BDM

AND BEGDA LE SY-DATUM

AND ENDDA GE SY-DATUM

AND STAT2 EQ 3.

IF SY-SUBRC NE 0.

MESSAGE E000(38) WITH ZETABDM-BDM 'Enter Active Employee'.

ENDIF.

ENDIF.

LOOP AT IT_ZETABDM.

IT_ZETABDM-BDM = ZETABDM-BDM.

MODIFY IT_ZETABDM.

ENDLOOP.

MODIFY ZETABDM FROM TABLE IT_ZETABDM.

COMMIT WORK AND WAIT.

IF SY-SUBRC = 0.

MESSAGE S000(38) WITH 'Records updated sucessfully.'.

ENDIF.

*******************************************************************

I just want to update the table control for dispaly & modification.

Thanks in Advance

Irfan Hussain

Read only

Former Member
0 Likes
625

ZETABDM seems to be structure used on screen and IT_ZETABDM is internal table in program.

This piece of code should go in Module MODULE UPDATE_ETABDM. and not in USER_COMMAND_9003.

<i>IF ZETABDM-BDM IS INITIAL.

MESSAGE E000(38) WITH 'Enter BDM'.

ELSE.

SELECT SINGLE * FROM PA0000

WHERE PERNR = ZETABDM-BDM

AND BEGDA LE SY-DATUM

AND ENDDA GE SY-DATUM

AND STAT2 EQ 3.

IF SY-SUBRC NE 0.

MESSAGE E000(38) WITH ZETABDM-BDM 'Enter Active Employee'.

ENDIF.</i>

<u>MODIFY IT_ZETABDM FROM ZETABDM INDEX TABCON-CURRENT_LINE.</u>

In USER_COMMAND_9003

You can use -

CASE SY-UCOMM.

WHEN 'SAVE'.

MODIFY ZETABDM FROM TABLE IT_ZETABDM.

COMMIT WORK AND WAIT.

IF SY-SUBRC = 0.

MESSAGE S000(38) WITH 'Records updated sucessfully.'.

ENDIF.

ENDCASE.