07-23-2007 10:10 AM
Hi,
I want to convert decimal value like '10' to binary value like '1010'. Is there a FM that I can use?
Thanks!
07-23-2007 10:13 AM
Hi
Check the fun modules related to Binary Conversions
SCMS_BINARY_TO_FTEXT
SCMS_BINARY_TO_STRING
SCMS_BINARY_TO_TEXT
SCMS_BINARY_TO_XSTRING
SCMS_FTEXT_TO_BINARY
SCMS_TEXT_TO_BINARY
SCMS_XSTRING_TO_BINARY
SRET_BINARY_TO_TEXT
SRET_TEXT_TO_BINARY
<b>Reward points for useful Answers</b>
Regards
Anji
07-23-2007 10:14 AM
07-23-2007 10:18 AM
Hi Long,
There is as such no function module like that. But you can use the below code to achive your desired result. Create a function module and call the same in your program to make it more modularized.
REPORT ZC1BIN_TO_DECI MESSAGE-ID zc1conmsg.
PARAMETERS: bin TYPE i.
DATA: flag TYPE i,
deci TYPE i,
rev_bin TYPE string.
START-OF-SELECTION.
IF bin IS INITIAL.
MESSAGE i000.
EXIT.
ENDIF.
PERFORM validate_data USING bin CHANGING flag.
IF flag = 1.
MESSAGE i001.
EXIT.
ENDIF.
WRITE:/ 'Binary :',bin.
PERFORM string_reverse USING bin CHANGING rev_bin.
PERFORM binary_to_decimal USING rev_bin CHANGING deci.
WRITE:/ 'Decimal:',deci.
&----
*& Form validate_data
&----
This subroutine whether entered data is binary or not.
----
-->P_BIN text
<--P_FLAG text
----
FORM validate_data USING p_bin
CHANGING p_flag.
DATA: val TYPE string,
tem TYPE c,
l TYPE i.
val = p_bin.
l = strlen( val ).
DO l TIMES.
tem = val.
IF tem <> 1 .
IF tem <> 0.
p_flag = 1.
EXIT.
ENDIF.
ENDIF.
SHIFT val.
ENDDO.
ENDFORM. " validate
&----
*& Form string_reverse
&----
This subroutine reverses a given string.
----
-->P_BIN text
<--P_REV_BIN text
----
FORM string_reverse USING p_bin
CHANGING p_rev_bin.
DATA : t_bin TYPE string,
temp1 TYPE c,
l TYPE i.
t_bin = p_bin.
l = strlen( t_bin ).
DO l TIMES.
temp1 = t_bin.
CONCATENATE temp1 p_rev_bin INTO p_rev_bin.
SHIFT t_bin.
ENDDO.
ENDFORM. " string_reverse
&----
*& Form binary_to_decimal
&----
This Subroutine converts a binary number into decimal equivalent
----
-->P_REV_BIN text
<--P_DECI text
----
FORM binary_to_decimal USING p_rev_bin
CHANGING p_deci.
DATA : dig TYPE c,
dig1 type i,
t_bin TYPE string,
l TYPE i,
t_deci type i,
c TYPE i.
t_bin = p_rev_bin .
l = strlen( t_bin ).
c = 0.
DO l TIMES.
dig = p_rev_bin.
dig1 = dig.
t_deci = 2 ** c .
p_deci = p_deci + t_deci * dig1.
SHIFT p_rev_bin.
c = c + 1.
ENDDO.
ENDFORM.
Thanks,
Samantak
Rewards points for useful answers.