2005 Sep 19 5:35 AM
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
2005 Sep 19 9:36 AM
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
2005 Sep 19 5:58 AM
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
2005 Sep 19 6:29 AM
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
2005 Sep 19 8:31 AM
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
2005 Sep 19 9:36 AM
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.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |