Why changing domains is a bad idea
Problems with changing Domain values: Table Level
This is a special case and very important in our daily coding activity in ABAP, wherein I need to change the domain which has character to Decimals data type of one field. I had done the changes to domain and adjusted all the tables. Immediately in a popup by pressing the continue button. When I changed the table it is giving the message that table was not found.
I checked the table in ABAP Dictionary and came to know that table is there. I tried to see on Menu: Utilities->Database object->Database utilities to adjust the database, but I didn’t found the ‘Activate and adjust database’ button and I got the new button called ‘Unlock Table’ button which was shock to me. I push the ‘Unlock Table’ button then I got the message in a popup which I haven’t read because of too long and confirmed with ‘Yes’ button. Then I got the table back in a change mode and I see the table data and it is empty.
Then I realized that data has gone. In my observation what happened means by seeing the table logs I understand that conversion of character value to decimals data in the field not happening so system struck at the place by giving the errors in processing the data. I goggled this problem online but I didn’t get solution to this problem.
Next time I tried by deleting that field in all tables. Then I changed the domain to decimals and added back that field to all tables provided no data on that field or on that table. I didn’t get any problem.
Screen field decimal value in Dynamic Programming: Screen level
I have another situation which I want to share if the screen elements or screen text fields are having the data type of decimals. They behave not usual like others which I observed recently. Just like in the below screen shot the decimal values are displaying like below as ‘*’. I got this for two fields when I restrict these with one condition with SCREEN-INVISIBLE = 1.
I realized that it’s not working and added SCREEN-INPUT = 0 and SCREEN-ACTIVE = 0. Then it’s not accepting the value because of SCREEN-INPUT is 0. So finally I wrote
SCREEN–INVISIBLE = 1.
SCREEN–INPUT = 1.
SCREEN–ACTIVE = 0.
Then it’s worked.
This is a very critical and important situation and sometimes we lost data also. That is the reason i am sharing this information to help all SCN members.