Application Development 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: 

Creating a Calculator in Screen painter

sudhir_uppalapati
Participant
0 Kudos

Can any one send me the program to create a calculator in Screen painter.

5 REPLIES 5

Former Member
0 Kudos

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

Former Member
0 Kudos

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

0 Kudos

HI,

Check FM FITRV_CALCULATOR.

Regards,

Sesh

former_member375669
Participant
0 Kudos

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

Former Member
0 Kudos

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