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: 

CONVERSION_EXIT_ALPHA_INPUT not resulting the output with leading zeros

Former Member
0 Kudos

Dear Experts,

When i was trying to call the fm 'converison_exit_alpha_input ' is not resulting the output with leading zeros. Need help in resolving the same.

A piece of coding is as below..

*&---------------------------------------------------------------------*
*&      Form  POPULATE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM POPULATE_DATA .
   LOOP AT GT_MCHA INTO GS_MCHA.

    GS_FINAL-MATNR = GS_MCHA-MATNR.
    GS_FINAL-WERKS = GS_MCHA-WERKS.
    GS_FINAL-CHARG = GS_MCHA-CHARG.
    GS_FINAL-J_3ASIZE = GS_MCHA-J_3ASIZE.


READ TABLE GT_MSKA INTO GS_MSKA WITH KEY MATNR = GS_MCHA-MATNR
                                          WERKS = GS_MCHA-WERKS
                                          CHARG = GS_MCHA-CHARG
                                        J_3ASIZE = GS_MCHA-J_3ASIZE.

    GS_FINAL-VBELN = GS_MSKA-VBELN.
    GS_FINAL-POSNR = GS_MSKA-POSNR.
    GS_FINAL-LGORT = GS_MSKA-LGORT.
    GS_FINAL-KALAB = GS_MSKA-KALAB.

  READ TABLE GT_MCHB INTO GS_MCHB WITH KEY CHARG = GS_MCHA-CHARG
                                           MATNR = GS_MCHA-MATNR.

    GS_FINAL-CLABS = GS_MCHB-CLABS.

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
   EXPORTING
     INPUT         = GS_FINAL-CHARG
  IMPORTING
    OUTPUT        GS_FINAL-CHARG.


   APPEND GS_FINAL TO GT_FINAL.

   CLEAR : GS_FINAL, GS_MCHA , GS_MSKA , GS_MCHB.

31 REPLIES 31

POV8FE
Explorer
0 Kudos

Hallo Shrikanth,

normally the function module should work as you expected but only with numeric values. Please check if the field GS_FINAL-CHARG does not contain any character. Best to check in debugger looking at the Hex-String of the field.

Bye, Volker

Former Member
0 Kudos

Hi Srikanth,

I would suggest you to defined local variable of length char10 and store parameter OUTPUT value in it. Further, transfer local variable value into GS_FINAL-CHARG.

Regards,

Sudeesh Soni

Former Member
0 Kudos

Hello vn,

For material number conversion, the most commonly used are :

CONVERSION_EXIT_MATN1_INPUT

CONVERSION_EXIT_MATN1_OUTPUT

However, you have also some others in various function groups :

MGV_MATN3                      conversion exit matn3

CONVERSION_EXIT_MATN3_INPUT    Conversion exit MATN3 for LAMA

CONVERSION_EXIT_MATN3_OUTPUT   Conversion exit matn3

MGV_NUMBER_CONVERSION

CONVERSION_EXIT_MATN2_INPUT

CONVERSION_EXIT_MATN2_OUTPUT

CONVERSION_EXIT_MATNV_INPUT

CONVERSION_EXIT_MATNV_OUTPUT

MG_MATN1_RANGE                 MATN1 Conversion with Ranges

CONVERSION_EXIT_MATN1_RANGE_I  Conversion Exit MATN1, External Range -> Internal Range

CONVERSION_EXIT_MATN1_RANGE_O  Conversion Exit MATN1, Internal Range -> External Range

OMCV

CONVERSION_EXIT_MATN1_INPUT

CONVERSION_EXIT_MATN1_OUTPUT

CONVERSION_EXIT_MATNL_INPUT

CONVERSION_EXIT_MATNL_OUTPUT

CONVERSION_EXIT_MATNW_INPUT

CONVERSION_EXIT_MATNW_OUTPUT

Cheers,

Alex

former_member1716
Active Contributor
0 Kudos

Hi Srikanth,

Could you please tell us the data type of the field GS_FINAL-CHARG.

Regards,

Satish

0 Kudos

Dear Satish,

Yes , the data type is a char, which i'm considering from MCHA, but the type i'm displaying the numeric value in the report. Pls suggest how to convert the char type with leading zeros.

Best rgds/thnks,
Srikanth.

0 Kudos

No. The data type is not CHAR. It is char with a specific length. Without the exact type of GS_FINAL-CHARG it is not possible to diagnose your problem.


By the way, your programming technique is not good. GS_FINAL should not be defined globally. It should be defined in the form. As a general principle the number of global variables should be kept to an absolute minimum. Secondly, FORMs are now deprecated (used in old code, but now obsolete).

jayanthi_jayaraman
Active Contributor
0 Kudos

Hi,

I think you will be referring CHARG in MCHA table which doesn't have conversion routine in its domain. But LIFNR in the same table has the same FM as conversion which you can see by clicking the domain. As mentioned already, it will work for numeric value.

If you just want leading zeros for a character, you can use unpack also as below.

data lv_1 type char10.
lv_1 = '234'.
unpack lv_1 to lv_1.
write lv_1.

former_member192050
Participant
0 Kudos

This message was moderated.

0 Kudos

Hello Sathish,

FYI.

Please note that leading zeros can be added to even char fields, for example take the field MATNR, AUFNR etc. There are so many fields which is a char field. It is about whether those fields have conversion routine declared in their respective domain.

Hope you got it.

Thanks & Regards,

Satish

Former Member
0 Kudos

Hi srikanth,

Is there other char besides 0~9 in string GS_FINAL-CHARG?

In my experience,only the string of puer digital can be output with leading zeros .

For example:

DATA CHAR(10) VALUE '8A9D'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

   EXPORTING

     INPUT         = CHAR

  IMPORTING

    OUTPUT      = CHAR.

You will get 'CHAR = '8A9D''.

Regasds.

mayur_priyan
Active Participant
0 Kudos

Hi,

As per my knowledge the data field which you are referrign to is of type CHAR10.

You might be facing an issue with the FM becuse of the value which it might be holding. If the value within it is only contains numbers then the FM provides appropriate output, whereas the FM doesn't work in case of alphanumeric values. Please check the simple code below which shows the difference.


DATA: lv_charg  TYPE charg_d VALUE '10',
      lv_charg1 TYPE charg_d VALUE '10AB'.

WRITE/ '-----------Correct----------',
         / lv_charg.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    input  = lv_charg
  IMPORTING
    output = lv_charg.

WRITE: / lv_charg.

WRITE: / '-----------InCorrect----------',
        / lv_charg1.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    input  = lv_charg1
  IMPORTING
    output = lv_charg1.

WRITE: / lv_charg1.

Regards,

Mayur Priyan. S

jayanthi_jayaraman
Active Contributor
0 Kudos

Hi,

If it is char, it will work.

   data lv_charg type mchb-charg.
lv_charg = '1234'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    INPUT         = lv_charg
IMPORTING
   OUTPUT        = lv_charg
          .
write lv_charg.

If not, check what is happening in debugging and find what is getting passed as input and what is coming as output.

former_member1716
Active Contributor
0 Kudos

Hi Srikanth,

When we check the domain of the CHARG field in SE11, we find there is no conversion exit maintained for it as marked below,

Regards,

Satish

former_member192050
Participant
0 Kudos

Hi,

it is converting the value and adding leading ZERO's but if the result is started with character it is not convering.

data lv_charg type mcha-charg.

select single charg from mcha into lv_charg where matnr = '350-100'.

   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

     EXPORTING

       INPUT         = lv_charg

    IMPORTING

      OUTPUT        = lv_charg

             .

   write 😕 lv_charg.

Regards

Sathish

former_member1716
Active Contributor
0 Kudos

Hi Srikanth,

Please use the below code it is working fine, i just checked in my system.

  SHIFT lwa_charg RIGHT DELETING TRAILING space.

  TRANSLATE lwa_charg USING ' 0'.

  WRITE : lwa_charg.

Regards,

Satish

0 Kudos

Don't use this code. It is bad programming. The correct approach is the function modules. Find out why that's not working and fix the issue.

former_member1716
Active Contributor
0 Kudos

The earlier step that I have mentioned can be used to find the existence of conversion routine for a field. If the domain has conversion routine then it is advisable to use the same in program.

 

Please get back if you still have any issues.


Regards,

Satish

0 Kudos

Dear satish,

I tried the same the output is not displayed with the leading zeros..

SHIFT LV_CHARG RIGHT DELETING TRAILING space.

   TRANSLATE lV_CHARG USING ' 0'.


      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
   EXPORTING
     INPUT         = LV_CHARG
  IMPORTING
    OUTPUT        LV_CHARG.

0 Kudos

Dear Srikanth,

You need not use the conversion routine at all. You can simply use my code and check the output in debugger, It will be appended with zeros.

Regards,

Satish

0 Kudos

take the conversion routine 'CONVERSION_EXIT_ALPHA_INPUT'  from the code. It will work. As I have mentioned below you can also use OVERLAY command instead of TRANSLATE. Both will work.

Regards,

Satish

0 Kudos

Dear Srikanth,

Did you ensure that while translate command as below,

TRANSLATE lV_CHARG USING ' 0'.

there is space before zero in single quotation as ' 0'.

Regards,

Satish


0 Kudos

Both will work, but the function module is the correct way. Using overlay and translate is bad programming.

former_member1716
Active Contributor
0 Kudos

You can also use the below command to achieve the requirement,

SHIFT lwa_charg RIGHT DELETING TRAILING space.

OVERLAY lwa_charg with '0000000000'. " Here we are overlaying with ten zeros since field length is 10.

Hope you got it. Please get back if issue still persists.

Regards,

Satish

0 Kudos

This is not a good way of programming the leading zero issue. The correct way is to use conversion function modules.

0 Kudos

Thanks for suggesting. Do we have function modules for this kind of scenario. If so please suggest us.

Regards,

Satish

0 Kudos

Yes we do. It's called CONVERSION_EXIT_ALPHA_INPUT. This is what you should use to deal with leading zeros. Instead of casting around for other "solutions", you should figure out why the standard way of dealing with leading zeros isn't working for you.


Then fix it. This is NOT rocket science.

former_member1716
Active Contributor
0 Kudos

The below code will also help you in achieving your requirement, please find the Image below which shows the runtime performance,

  DATA : charlength TYPE i,

              final_length TYPE I,

              lwa_charg TYPE mcha-charg,

             lwa       TYPE mcha-charg.


  lwa_charg = 'ed12'.


  charlength = strlen( lwa_charg ).

  final_length = 10 - charlength.

  lwa = lwa_charg.

DO final_length TIMES.

    CONCATENATE '0' lwa INTO lwa.

  ENDDO.

0 Kudos

More bad programming. Use CONVERSION_EXIT_ALPHA_INPUT

Former Member
0 Kudos

Hi Srikanth,

Batch field 'CHARG' need not have leading zeros . Batch value will alwyas be same in both external and internal format. (i.e. if external format has leading zeros , then internal format will have the same and vice versa).

Also the exit 'CONVERSION_EXIT_ALPHA_INPUT' will not be applicable for CHARG since this is not declared as Conversion Routine at domain level.

0 Kudos

Hi arul,

Request to suggest the correct function module for to get the CHARG with leading zeros.

Best rgds/thnks,

Srikanth.

matt
Active Contributor
0 Kudos

CONVERSION_EXIT_ALPHA_INPUT


Again. Find out why it is working for YOU and fix it. It isn't rocket science. Do not use anything else to deal with leading zeros. Unless you're going in the other direction, in which case use CONVERSION_EXIT_ALPHA_OUTPUT.


Thread locked to prevent any further useless discussion.