Domain 的Value Range 值转换 (Conversion Routine) .
来源:互联网 发布:qt 编程视频教程 编辑:程序博客网 时间:2024/04/30 15:04
需要定义 input 。。和output。。 两个函数才起作用。
在SAP的Domain定义中,Output Length下面有个Convers. routine的标识,这是SAP用来进行输入输出转换的。我们知道,屏幕上的I/O字段都是字符串形式的,而数据在我们内部则分为C, S, N, P, D等诸多类型,这中间就有个转换过程。Conversion Routine就是实现这种转换的一种工具。
可以在SE12中录入Domain:MATNR,我们可以看到,这里定义了名为MATN1的转换方法。这就是为什么我们输入的物料号都会被系统自动加上前导0。双击MATN1,可以看到CONVERSION_EXIT_MATN1_INPUT和CONVERSION_EXIT_MATN1_OUTPUT两个函数,它们分别负责输入转换和输出转换。
下面我们也可以定义个简单的Conversion Routine实例。假设我们有个类型为NUMC、长度为2的数字,要求其前台录入和输出的必须是英文单词。
1,定义函数CONVERSION_EXIT_YTEST_INPUT.
可以参考CONVERSION_EXIT_MATN1_INPUT来定义我们的接口:INPUT和OUTPUT。该函数的功能是,当用户录入一个字符串形式的屏幕字段后,将其转化成内部数据的格式。INPUT在这里代表用户录入,当被系统调用时,它就是字符串的格式;OUTPUT则代表了内部的数据,函数被调用时它代表的是NUMC(2)格式。
我们的代码如下:
CHECK input IS NOT INITIAL.
IF input = 'TEN'.
output = 10.
ELSEIF input = 'ELEVEN'.
output = 11.
ELSEIF input = 'TWELVE'.
output = 12.
ELSE.
MESSAGE 'Invalid value.' TYPE 'E' RAISING invalid_value.
ENDIF.
output = 10.
ELSEIF input = 'ELEVEN'.
output = 11.
ELSEIF input = 'TWELVE'.
output = 12.
ELSE.
MESSAGE 'Invalid value.' TYPE 'E' RAISING invalid_value.
ENDIF.
2,定义函数CONVERSION_EXIT_YTEST_OUTPUT.
可以参考CONVERSION_EXIT_MATN1_OUTPUT来定义我们的接口。该函数的功能是执行输出转化,将内部数据转化成字符串形式。INPUT代表了我们的内部数据,而OUTPUT则代表了输出到界面上的字符串效果。
代码如下:
IF input = 10.
output = 'TEN'.
ELSEIF input = 11.
output = 'ELEVEN'.
ELSEIF input = 12.
output = 'TWELVE'.
ENDIF.
output = 'TEN'.
ELSEIF input = 11.
output = 'ELEVEN'.
ELSEIF input = 12.
output = 'TWELVE'.
ENDIF.
3,定义我们的Domain和Data element.
我们给domain命名为YCRTEST,类型为NUMC, length为2。Output length为10,Convers. routine则代表我们新编写的两个函数,填写“YTEST”。Data element的创建这里就不赘述。
4,编程测试
DATA: c2 TYPE c LENGTH 2.
PARAMETERS: p TYPE ycrtest.
c2 = p.
WRITE: 'Now internal value of p is:', c2.
WRITE: 'Now internal value of p is:', c2.
p = 12.
WRITE: / 'For p = 12, the output is:', p.
WRITE: / 'For p = 12, the output is:', p.
在选择屏幕上输入Ten之后,我们可以看到输出:
Now internal value of p is: 10
For p = 12, the output is: TWELVE
For p = 12, the output is: TWELVE
5,Conversion Routine的应用
很多人都知道调用函数CONVERTION_ROUTINE_ALPHA_OUTPUT进行输出,其实这个ALPHA就出自于Domain: VBELN的Conversion Routine。还有为何SAP单位在内部是ST,却会在界面根据不同语言显示“PC”,“件”等不同内容,也是Conversion Routine的功劳。
总的来说,建立全新的Conversion Routine并不常见。不过在编程中可以很便捷地利用一些现有Conversion Routine达到某些功能。
比如LIST中:
DATA: n2 TYPE num2.
n2 = 11.
WRITE (10) n2 USING EDIT MASK '==YTEST'.'注意有2个等号
n2 = 11.
WRITE (10) n2 USING EDIT MASK '==YTEST'.'注意有2个等号
在SCREEN的LAYOUT上则有Conv. Exit的一个小框框。
在 ALV 的FIELD CATALOG中则有字段EDIT_MASK可用来设置Conversion Routine。如果EDIT_MASK不行,那么再试试字段CONVEXIT吧,有点记不清了:-)
转自: http://blog.chinaunix.net/uid-150062-id-2780068.html
- Domain 的Value Range 值转换 (Conversion Routine)
- Domain 的Value Range 值转换 (Conversion Routine) .
- 获取domain的value range
- 访问Domain中Value Range的方法
- 访问Domain中Value Range的方法
- domain value range
- ABAP--如何访问SAP的Domain的Value Range
- ABAP--如何访问SAP的Domain的Value Range
- ABAP--如何访问SAP的Domain的Value Range
- 如何访问SAP的Domain的Value Range
- 获取Domain中Value Range值和描述文本的方法
- sap 如何访问域(domain)的value range?
- 如何获得Domain Value Range and Description
- SE11 Conversion Routine
- ABAP中Conversion Routine示例
- ABAP中Conversion Routine示例
- 6:ZigZag Conversion(锯齿形的转换)
- 访问Domain的Value有两种方法
- 设计模式学习6--外观模式
- 父子节点问题
- 关于echo %classpath% 曾经错误的改正
- JSP中常见的错误及其处理方式
- Np16、输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
- Domain 的Value Range 值转换 (Conversion Routine) .
- 主流操作系统中给网卡添加内存IP
- 各种排序算法的实现及其比较
- Unity3d 模型的淡入淡出
- CPU私有变量(per-CPU变量)
- gdb断点调试的两个技巧-condition和ignore
- 解决android程序调用摄像头黑屏
- web测试 (五)安全测试
- unity3d lightmap简单步骤