Convert Char (##) to P

Hi experts
I have to convert a char-variable to a p-variable.
The char-variable contains "##" (HEX = 001C).
Normaly it should be "1" and not '##'. Because when I put a "1" to the P-variable, I get the same hex-value like in the char.
When I say p-variable = char-variable, I get a dumpt CONVT_NO_NUMBER.
So, how can I convert the char-variable to the p-variable.
Thx in advance.
Christian

Hi Christian,
The problem here lies in interpretation.
The same sequence of bytes (or bits) doesn't always mean the same. In your case 001C hex value is something different for character variable and means something other for p-var. It is the system who interprets this byte sequence.
With p var the system parses each byte as sequence of two digits (BCD - byte coded decimal). This means if we have such declaration
data p_var(2) type p value 12.
Its hex representation is 012C . 1 - is stored in memory on 4 bits (half a byte), 2 - is stored as 4 bits too. C - stands for sign of this variable (half a byte), 0 - is just added in front (half a byte). In total its 2 bytes.
If p_var was -12 then its hex would be 012D .
In contrary your c_var with hex 001C is UTF-16 representation of special character 1C which in [ASCII table|http://ascii-table.com] is not a printable one. That's why it is displayed to you as ##
What is more it doens't really make sense to convert p_var to c_var or vice versa, as system treats these two variables in totally different manner. It only make sense to take the integer representation of c_var . This is similar to saying: "please find this character in current code page or in Unicode and give me its position in this table (its integer value)".
So you can perform such conversion
data i_var type i.
data c_var type c value 'A'
i_var = c_var.
"i_var = 65
Only then you could map this i_var to your p_var but it really doens't make sense as the sytem would write it like 065C - p_var = 65
Hope you get the difference and will not persist on conversion b/w those two incompatible types
Regards
Marcin

Similar Messages

  • Convert char to currency

    Hi all,
    i searched alot but couldn't find solution.
    i have l_value char(45) field value has 4560
    I need to convert this into vbak-netwr field in sales order user exit MV45AFZZ
    when i assign vbak-netwr = l_value.
    I am getting 45.60 in vbak-netwr field.
    when i try same login in report progam it is working fine but not in user exit.
    any suggestions?
    Giri

    Sample program to convert Char to Curr.
    data: curr type kna1-umsa1,
          char(254) type c.
    data: temp type p length 15 decimals 2.
    char = '1,405.25'.
    REPLACE ALL OCCURRENCES OF '.' IN char WITH space.
    REPLACE ALL OCCURRENCES OF ',' IN char WITH space.
    CONDENSE char NO-GAPS.
    temp = char.
    curr = temp / 100.
    write: 'CHAR = '.
    write :/ char.
    write:/ 'CURR = '.
    write: curr.
    << Removed by moderator >>
    Regards,
    Uttam Agrawal
    << Removed by moderator >>
    Edited by: uttamagrawal on Feb 22, 2011 9:21 AM
    Edited by: Neil Gardiner on Feb 22, 2011 9:01 PM

  • Convert Char to Date format - Evaluate

    Hi,
    Could anyone provide us the Evaluate formula to convert Char to Date format
    2009-06-20 should be converted to 06/20/2009
    Regards,
    Vinay

    Hi,
    Refer the below threads...
    Re: How to convert string to date format?
    how to convert character string into date format????
    Regards,
    Chithra Saravanan

  • Convert char to ascii code and vice versa

    HI
    Is there any function module to convert char to ascii code and vice versa.
    Thanks in advance

    Hi,
    be careful if you have unicode running in your system. URL_ASCII_CODE_GET is platform-dependent so it will return the internal HERX representation of the character in your system - which is hopefully and in most cases ASCII.
    Under unicode, we use double-byte characters here. I tried this function and the result CHAR_CODE is '00' regardless what character I specify for TRANS_CHAR. But the coding is so simple I corrected resultig in this sample code:
    [P]
    convert p_form to ASCII (internal) representation
      DATA:
        l_ofs TYPE syfdpos,
        l_len TYPE sy-linsz,
        l_ascii TYPE i.
      FIELD-SYMBOLS:
        <x> TYPE x.
      l_len = STRLEN( p_ascii ).
      DO l_len TIMES.
        l_ofs = sy-index - 1.
        ASSIGN p_ascii+l_ofs(1) TO <x> CASTING.
        l_ascii = <x>.
        WRITE: l_ascii.
      ENDDO.
    [/P]
    Here, for each character of string p_ascii, the internal (ASCII) representation is determined and written to the output list.
    Regards,
    Clemens

  • Convert Char to Date in SQL Server

    Hello Experts,
    I am trying to convert Char to Date but getting error in Universe designer. Can anybody advise please?
    Thanks,
    Ravi

    Hi,
    Try with CAST() and CONVERT() functions. For more information refer use this url : http://msdn.microsoft.com/en-us/library/ms187928.aspx.
    It is more easy to get solution if you can post your query.
    Cheers,
    Suresh Babu Aluri.

  • Convert char to dec

    Dear all ,
        I have to convert char to dec , my requirement is to covert  12344434 to 123444.34 .
    note i don't want 12344434 to 12344434.00 .
    Thanks in advance
    Debesh

    You can try like this.
    DATA : v_tot_len TYPE i,
            v_off_len TYPE i.
    DATA : v_off_text(50) TYPE c,
            v_dec_text(2)  TYPE c,
            v_fin_text(50) TYPE c.
    PARAMETERS : p_input TYPE text20 OBLIGATORY.
    START-OF-SELECTION.
    v_tot_len = STRLEN( p_input ).
    v_off_len = v_tot_len - 2.
    v_off_text = p_input+0(v_off_len).
    v_dec_text = p_input+v_off_len(2).
    CONCATENATE v_off_text v_dec_text INTO v_fin_text SEPARATED BY '.'.
    Here I am inputting the text to be converted.

  • Convert char * to LPCTSTR

    How I can convert char * to LPCTSTR.
    I reading msdn but I don't know nothing sensible to do.
    Thx for all hepl.

    If your program is not using Unicode as the default, then "char *" is the same thing as LPCTSTR; the compiler will see the same thing, the only difference is that the preprocessor replaces LPCTSTR with "char *".
    Your program however is probably using Unicode as the default. If so, then you need to convert the non-Unicode "char *" string to a Unicode string. There are many ways to do that and the most convenient solution for you depends on what your program is already using. If your program is using MFC then there is a MFC solution. If your program is using the CLI (.Net) then there is a different solution using that. If your program uses the C++ standard classes (std namespace) then there is a solution using that. There is also a solution using the C runtime and anotehr using the Windows SDK.

  • Function modules for converting Char value to hexadecimal value

    Hi All,
    Function modules for converting Char value to hexadecimal value.
    Thanks in advance

    Hi,
    use this function module:
    <b>RSS_UNIQUE_CONVERT_TO_HEX</b>
    regards
    Debjani
    Rewards point for helpful answer

  • Converting CHAR or CLOB to BLOB in Oracle9i

    Hi!
    I want to convert CHAR or CLOB to BLOB.
    I am working with Oracle9i Database.
    Oracle9i Supplied PL/SQL Package Release 2 (9.2) does'nt support DBMS_LOB.CONVERTTOBLOB procedure.
    How I can convert CHAR or CLOB to BLOB in Oracle9i?
    Valery

    Hi Valery,
    For conversion to blob, just try the utl_raw package.
    I use utl_raw.cast_to_raw quite often.
    Or have a look at:
    http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:437819871174
    Good luck,
    Jan-Marcel

  • How to convert char to curr ?

    Hi gurus.
    Forgive me for the silly question.
    I have a problem with data conversion from char to curr with 2 decimal places.
    This is the scenario, I have a Z transaction which receives an excel file containing data from invoices and when the field contains a value such as 35,0 the program records the value 3.50 in the destination variable. But when the value is 35,45, it works.
    Here is the piece of code:
    WHEN '0007 '.
            TRANSLATE USING ITAB-VALUE. " '.
            ITAB-VALUE USING TRANSLATE',.'.
            CONDENSE ITAB-VALUE NO-GAPS.
            WA_OPER_MENORES-VL_BRUTO = ITAB-VALUE.
    If I format the column in the excel file for numeric value with 2 decimal places also works, because when the value is formatted 35,0 change to 35,00. But I can not tell all the users hey formatt your files before upload to SAP.
    To test I generate a simple report that reads the excel file and makes the conversion of the columns, like the code above, so I had no problems. I think there should be some configuration that has been changed in the transaction, but I'm new in ABAP, I come from "Java World" and I have no idea that could be.
    I could just use a quick and dirty solution, adding a zero at the end of the column, when there is the 2 decimal places, but I prefer a clean solution.
    Guys, is there any function module or class that does that kind of data conversion? If not, you could tell me what is the best practice to solve this problem?
    thank you very much,
    Ronaldo S. Vieira

    Follow this example to convert Char to Curr and Vice-Versa
    DATA iamnt(17) TYPE c VALUE '243567.00'.
    DATA eamnt TYPE p DECIMALS 2.
    DATA oamnt(17) TYPE c.
    MOVE iamnt TO eamnt.
    WRITE eamnt TO oamnt.
    WRITE oamnt.

  • JNI: Converting char* to jstring

    Hello all, i was wondering if there is another alternative to
    env->NewStringUTF(ajstring);in converting char* to jstring as NewStringUTF causes my app to crash.
    thanks

    Have you tried debugging the application to see why exactly that method is crashing?
    Finding alternatives is not a solution, there is a problem here that you need to figure out. Are you sure env is valid? Are you sure ajstring is a valid string (null-terminated for example)?

  • How to convert char(1) to int32 datatype in pl/sql

    Hello,
    I am trying to convert char(1) to an integer data type to be put into an int32 variable in C#. I tried several options such as TO_NUMBER ,CAST(.. AS INTEGER), and CAST(.. AS SMALLINT) but they all return int64.
    Is there a way to ensure the casting into a datatype that is compatible with int32 ?
    Thanks

    Oracle's SQL Datatypes are limited to NUMBER, BINARY_FLOAT and BINARY_DOUBLE.
    There's a few others through PL/SQL including BINARY_INTEGER.
    If you look in USER_ARGUMENTS you can see it is defined slightly differently.
    Don't know whether / how .Net infers datatypes, but it is worth a shot.
    create or replace function v (p number) return  binary_integer is
    begin
    return p;
    end;
    /

  • Converting char to decimal value format as defined in SU3(User profile)

    Hi Techies,
    Is there any FM to convert CHAR value into Decimal fomat as defined in SU3.
    If we use, WRITE statement for printing the value in decimal format , it shows the value in decimal format correctly
    in SU3 transaction , there are three different decimal format notations which can be user specific
    I would appreciate your valuable inputs ....
    Thanks
    Santhosh

    This is my code in a generic method to transform a table into a csvrow
    when 'P'.
            tmpstr = <p_field>.
            len = strlen( tmpstr ) - 1.
            tmpstr = tmpstr+0(len).
            if <p_field> < 0.
              sign = '-'.
            else.
              sign = ' '.
            endif.
            case decimalformat.
              when 'X' or 'E'.
                split tmpstr at '.' into int frac.
                ptmp = int.
                write ptmp to cp.
                shift cp left deleting leading space.
                replace all occurrences of '.' in cp with ','.
                concatenate
                  s
                  sign
                  cp
                  frac
                  delimiter
                into s in character mode.
              when 'Y' or 'D'.
                split tmpstr at '.' into int frac.
                ptmp = int.
                write ptmp to cp.
                shift cp left deleting leading space.
                replace all occurrences of ',' in cp with '.'.
                concatenate
                  s
                  sign
                  cp
                  frac
                  delimiter
                into s in character mode.
              when ' '.
                concatenate s sign tmpstr delimiter into s in character mode.
              when others.
                concatenate s '????????' delimiter into s in character mode.
            endcase.
    where pfield is a fieldsymbol type P. (honestly ist from type any, but determined by RTTI). I needed this cause i want to format the value from "outside" without taking the user settings in consideration as write...to.. is doing.
    What i'm doing is to use the write... to... clause modifying the result (change decimal point, thousand separator and sign) according to the demanded decimal notation.
    Edited by: Rainer Hübenthal on Oct 7, 2009 4:47 PM

  • Any way to Convert CHAR(8)  field to QUAN(8)?

    Any way to Convert CHAR(8)  field to QUAN(8)?
    Thank-You.

    Hi
    The MOVE statament automatically converts the data format
    DATA: VAR_IN(8) TYPE C,
          VAR_OUT   TYPE P.
    MOVE VAR_IN TO VAR_OUT.
    It's important your char has only number and the point as separator of decimal part.
    Max

  • Converting char type to numeric

    hi,
    is there any Function Module that converts char type to numeric.
    thanks.

    hi,
    data : w_num type i,
             w_char type char10.
    Use can asign character to numeric in PGM by using the statement try endtry.
    try .
    w_num = w_char.
    endtry.
    Regards,
    Prabhudas

  • Is there any FM convert char to number ?

    Hi guys,
    Is there any FM convert char to number ?
    what are they? and how can I find them ?
    thx in advance.

    Hi
    data: wl_char(3) type c value '123',
          wl_num type n .
          CALL FUNCTION 'MOVE_CHAR_TO_NUM'
               EXPORTING
                    CHR             = wl_char
               IMPORTING
                    NUM             = wl_num
               EXCEPTIONS
                    CONVT_NO_NUMBER = 1
                    CONVT_OVERFLOW  = 2
                    OTHERS          = 3.

Maybe you are looking for

  • Warning message in Transaction VF31

    Hi, I want a warning message in transaction VF31 and my system is ECC 5.0. I couldnt locate any billing exit. Is it possible to throw a warning message in this case?

  • Wrong speech agent selected

    Hi all, I feel sort of stupid posting this, but here goes. In converting text to speech, I accidentally selected the "don't show this again" box in the speech agent selection dialog box. Only problem is, it was pointed to Kate, and I prefer Paul. Now

  • Where to place the third party jars on WLS 7.0SP2

    Our application use the thirdparty JDBC driver, for example, the JDBC driver for mySQL. I donot want my customer to modify startWeblogic.cmd or some file else to make the jar file available for the applicaiton. my question is if some directory exists

  • Intergration betwees WDA and AIF doesen't works as expected

    Hi guys, i need your help about integration between AIF (Adobe interactive form) and WDA (Web Dynpro Abap). I've created an adobe interactive form. It contains an image (embedded) and a simply button (type webdynpro native). Technical details : Form

  • InDesign CS3 crashed

    I was opening a font in suitcase, when my CS3 crashed, and now it won't open