07-02-2007 9:00 AM
Can any one send me the program to create a calculator in Screen painter.
07-02-2007 9:06 AM
Hi
You can write your own.
You just need to analyze how a calculator works, and design your screen, push buttons, operations, handling of your value stack etc...
Best of luck.
Regards
Raj
07-02-2007 9:08 AM
Hi
Use the sample peace of code for design Calculator.
Hi,
Create push buttons for the + , - , / , * , = in your dialog program.
Create an input field with the data type that can accept decimal places..
When the enter 12 then press the push button "+" button store the value 12 in a variable v1..Then clear the input field..
Then when the user enters another number..lets say "13"..
Then if the user presses the "=" button...Then sum the values from the variable v1 with the input field..
Hope this helps..
Check this sample code..
MODULE USER_COMMAND.
CASE SY-UCOMM.
WHEN 'ADDITION'.
* ASSUMING THE INPUT FIELD NAME IS P_INPUT.
V_V1 = P_INPUT.
V_OPERATION = '+'.
CLEAR: P_INPUT.
WHEN 'EQUALTO'.
CASE V_OPERATION.
* ADDITION
WHEN '+'.
* SUM UP THE VALUES.
P_INPUT = P_INPUT + V_V1.
ENDCASE.
* MULTIPLICATION
WHEN '*'.
* MULTIPLY UP THE VALUES.
P_INPUT = P_INPUT * V_V1.
ENDCASE.
ENDCASE.
ENDMODULE.
Regards,
Vasanth
07-02-2007 9:10 AM
07-02-2007 9:10 AM
HI SUDHIR RUN THIS
AND GIVE THE NAMES TO THE BUTTONS LIKE FUNCTION CODE
&----
& Include MZASH_CALCULATERTOP Module poo
*& *
&----
PROGRAM SAPMZASH_CALCULATER.
DATA VALUE TYPE I.
DATA: PREVALUE TYPE F,
PREVALUE1 TYPE F,
FLAG TYPE I,
COMMAND(4) TYPE C.
DATA: OK_CODE TYPE SY-UCOMM.
----
***INCLUDE MZASH_CALCULATER_USER_COMMAI01 .
----
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
IF FLAG = 1.
FLAG = 0.
VALUE = 0.
IF COMMAND = OK_CODE.
IF COMMAND = 'MULT' OR COMMAND = 'DIV'.
VALUE = 1.
ENDIF.
ENDIF.
ENDIF.
CASE OK_CODE.
WHEN 'FIRST'.
VALUE = VALUE * 10 + 1.
WHEN 'SECOND'.
VALUE = ( VALUE * 10 ) + 2.
WHEN 'THIRD'.
VALUE = VALUE * 10 + 3.
WHEN 'FOUR'.
VALUE = VALUE * 10 + 4.
WHEN 'FIVE'.
VALUE = VALUE * 10 + 5.
WHEN 'SIX'.
VALUE = VALUE * 10 + 6.
WHEN 'SEVEN'.
VALUE = VALUE * 10 + 7.
WHEN 'EIGHT'.
VALUE = VALUE * 10 + 8.
WHEN 'NINE'.
VALUE = VALUE * 10 + 9.
WHEN 'ZERO'.
VALUE = VALUE * 10 .
WHEN 'ADD'.
CALL FUNCTION 'ZASH_CALCULATE'
CHANGING
PREVALUE = PREVALUE
VALUE = VALUE
COMMAND = COMMAND.
FLAG = 1.
COMMAND = 'ADD'.
WHEN 'SUB'.
CALL FUNCTION 'ZASH_CALCULATE'
CHANGING
PREVALUE = PREVALUE
VALUE = VALUE
COMMAND = COMMAND.
FLAG = 1.
COMMAND = 'SUB'.
WHEN 'MULT'.
CALL FUNCTION 'ZASH_CALCULATE'
CHANGING
PREVALUE = PREVALUE
VALUE = VALUE
COMMAND = COMMAND.
FLAG = 1.
COMMAND = 'MULT'.
WHEN 'DIV'.
CALL FUNCTION 'ZASH_CALCULATE'
CHANGING
PREVALUE = PREVALUE
VALUE = VALUE
COMMAND = COMMAND.
FLAG = 1.
COMMAND = 'DIV'.
WHEN 'EQU'.
CALL FUNCTION 'ZASH_CALCULATE'
CHANGING
PREVALUE = PREVALUE
VALUE = VALUE
COMMAND = COMMAND.
VALUE = PREVALUE.
FLAG = 1.
COMMAND = 'EQU'.
WHEN 'MOD'.
CALL FUNCTION 'ZASH_CALCULATE'
CHANGING
PREVALUE = PREVALUE
VALUE = VALUE
COMMAND = COMMAND.
FLAG = 1.
COMMAND = 'MOD'.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
VALUE = VALUE DIV 10.
WHEN 'CLEAR'.
VALUE = 0.
PREVALUE = 0.
COMMAND =' '.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
DON'T FORGET TO REWARD THE POINTS
Message was edited by:
ashish gupta
07-02-2007 9:10 AM
DATA: ENTER(10) TYPE C,
OK_CODE TYPE SY-UCOMM.
DATA: NUM1(15) TYPE C.
DATA: NUM2(15) TYPE P DECIMALS 3.
DATA: RESULT(15) TYPE P DECIMALS 3.
DATA: OPRTR.
DATA F_POINT.
MODULE USER_COMMAND_0100 INPUT.
CASE OK_CODE.
WHEN '1'.
SHIFT ENTER LEFT DELETING LEADING '0'.
CONCATENATE ENTER '1' INTO ENTER.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '2'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '3'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '4'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '5'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '6'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '7'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '8'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '9'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '0'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '00'.
SHIFT ENTER LEFT DELETING LEADING '0'.
IF F_POINT = 'X'.
CONCATENATE NUM1 '1' INTO ENTER.
ELSE.
CONCATENATE ENTER '1' INTO ENTER.
ENDIF.
CLEAR F_POINT.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN 'C'.
ENTER = 0.
WHEN 'POINT'.
F_POINT = 'X'.
SHIFT ENTER LEFT DELETING LEADING '0'.
CONCATENATE ENTER '.' INTO ENTER.
IF OPRTR = ' '.
NUM1 = ENTER.
ELSE.
NUM2 = ENTER.
ENDIF.
WHEN '+'.
CLEAR ENTER.
OPRTR = '+'.
RESULT = NUM1 + NUM2.
ENTER = RESULT.
CLEAR: NUM2.
NUM1 = RESULT.
CLEAR: OPRTR,RESULT.
WHEN '-'.
CLEAR ENTER.
OPRTR = '-'.
WHEN '/'.
CLEAR ENTER.
OPRTR = '/'.
WHEN '*'.
CLEAR ENTER.
OPRTR = '*'.
WHEN '%'.
CLEAR ENTER.
OPRTR = '%'.
WHEN 'point'.
CLEAR ENTER.
OPRTR = '.'.
WHEN 'EQ'.
IF NOT NUM1 IS INITIAL AND NOT NUM2 IS INITIAL.
CASE OPRTR.
WHEN '+'.
RESULT = NUM1 + NUM2.
WHEN '-'.
RESULT = NUM1 - NUM2.
WHEN '/'.
RESULT = NUM1 / NUM2.
WHEN '*'.
RESULT = NUM1 * NUM2.
WHEN '%'.
RESULT = NUM1 / NUM2 * 100.
result = num1 num2.
ENDCASE.
ENTER = RESULT.
CLEAR: NUM2.
NUM1 = RESULT.
CLEAR: OPRTR,RESULT.
ENDIF.
WHEN 'EXIT'.
CALL TRANSACTION 'ZCALCU'.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
screen:
and screen i will send you on your skype id or on mail address.if you give me on skype id sanketsethi.
here screen layout is not possible