User Defined Conversion Exits

This post will show how to create custom user defined Conversion-Exits.

Step 1) Create a Function Group and two Function Modules:

a) Create a Function Group. For eg. ZCONVERSION_EXIT.

b) Create two Function Modules with naming convention:

CONVERSION_EXIT_xxxxx_INPUT and CONVERSION_EXIT_xxxxx_OUTPUT, where XXXXX is the name of the Conversion Routine. Here I will create a Routine ZZERO so the
name of the Function Modules will be CONVERSION_EXIT_ZZERO_INPUT and CONVERSION_EXIT_ZZERO_OUTPUT. While create the Function Module you may get some error like "Function Module name is reserved for SAP", you can ignore this.



The Function Modules should have one Import Parameter Input and one Export Parameter Output.

The FM for conversion from External Format to Internal Format:



The Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FUNCTION conversion_exit_zzero_input.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(INPUT)
*" EXPORTING
*" REFERENCE(OUTPUT)
*"----------------------------------------------------------------------

output = input.
REPLACE ALL OCCURRENCES OF 'Ø' IN output
WITH '0' IN CHARACTER MODE.

ENDFUNCTION.


The FM for conversion from Internal Format to External Format:



The Code:

1
2
3
4
5
6
7
8
9
10
11
12
13
FUNCTION CONVERSION_EXIT_ZZERO_OUTPUT.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(INPUT)
*" EXPORTING
*" REFERENCE(OUTPUT)
*"----------------------------------------------------------------------
output = input.
REPLACE ALL OCCURRENCES OF '0' IN output
WITH 'Ø' IN CHARACTER MODE.

ENDFUNCTION.


Step 2) Create a data Element and a Domain.

Create the Data Element ZZERO:



The Domain ZZERO:



The name of the conversion routine created has to provided here. Now if the FM's for Conversion are created, if you double click on the Routine name, it will display the FM's.



Step 3)Now we can use a sample code to test the Conversion Routine:
The Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
*&---------------------------------------------------------------------*
*& Report ZTEST_CONVERSION_EXIT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ztest_conversion_exit.


PARAMETERS: p_value TYPE c LENGTH 20 OBLIGATORY.

DATA: v_result TYPE zzero. " data type with the Coversion Exit ZZERO

v_result = p_value.

WRITE: /5 'Input:',22 p_value,
/5
'Converted Value:',22 v_result.


Now test it, If we give an input as "345RGT00VDF4340".



When Executed:



The "0" has been replaced by "Ø"

Similarly the Input Conversion Routine can be used and tested.