在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.
 
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.
 
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.
p = 12.
WRITE: / 'For p = 12, the output is:', p.
 
在选择屏幕上输入Ten之后,我们可以看到输出:
Now internal value of p is: 10
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个等号
在SCREEN的LAYOUT上则有Conv. Exit的一个小框框。
在 ALV 的FIELD CATALOG中则有字段EDIT_MASK可用来设置Conversion Routine。如果EDIT_MASK不行,那么再试试字段CONVEXIT吧,有点记不清了:-)

ABAP中Conversion Routine示例的更多相关文章

  1. ABAP中的AMDP(ABAP-Managed Database Procedures )

    ABAP管理下的数据库存储过程(ABAP-Managed Database Procedure,以下简称AMDP)是在APAP on SAP HANA开发中的一种优化模式.AMDP使用数据库语言书写, ...

  2. 字符串处理:ABAP中的正则表达式

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  4. Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...

  5. Android 自定义View及其在布局文件中的使用示例(二)

    转载请注明出处 http://www.cnblogs.com/crashmaker/p/3530213.html From crash_coder linguowu linguowu0622@gami ...

  6. ABAP中使用浏览器打开网页

    在SAP ABAP中可以在Screen中嵌入Html control打开网页,也可以通过调用本地的IE浏览器打开. 1.在Screen中嵌入Html control的例子,在系统中有,se38:SAP ...

  7. XPath语法 在C#中使用XPath示例 【转http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html】非常详细的文章

    XPath语法 在C#中使用XPath示例   XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml ve ...

  8. ABAP 中的搜索帮助

    ABAP 中的搜索帮助 https://blog.csdn.net/u011576750/article/details/50999078 一.简介:在abap中,用到的搜索帮助个人遇到的情况如下,进 ...

  9. VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)

    步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...

随机推荐

  1. HIS系统的处方录入控件

    前文<EFW框架Winform前端开发之强大的自定义控件库>中我们介绍了EFW框架中Winform系统中的自定义控件,本章使用自定义控件中的GridBoxCard控件开发了一个HIS系统的 ...

  2. Sublime Text3 插件集合

    下载地址:http://download.csdn.net/detail/yinluhui/9029791 [包含的插件有: AndyJS2.BracketHighlighter.emmet-subl ...

  3. 解决访问StackOverFlow太慢的问题

    Stackoverflow加载时访问了被屏蔽的站点ajax.googleapis.com,导致加载缓慢,把这个站点加到Hosts里,指向127.0.0.1即可

  4. swift实现冒泡排序

    刚刚坐着没事干,就用swift语言写了写冒泡排序,还望高手指点.拍砖!哈哈! 废话不多说,上代码! import Cocoa var array = [,,,,,,,,,,,,,,,,,] print ...

  5. gulp-uglify《JS压缩》----gulp系列(四)

    本节实现JS压缩,在实现压缩前,先配置JS任务,设置源目录和输出目录. 在系列(三)代码的基础上,再进行扩展. 1.找到gulp->config.js,对JS进行源目录(src->img) ...

  6. HMM 自学教程(六)维特比算法

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  7. HMM 自学教程(三)隐藏模式

    本系列文章摘自 52nlp(我爱自然语言处理: http://www.52nlp.cn/),原文链接在 HMM 学习最佳范例,这是针对 国外网站上一个 HMM 教程 的翻译,作者功底很深,翻译得很精彩 ...

  8. 最近一段时间开发客户端app的感悟

    关于android和cocos2d 凭着对大学时候写html+css的一点点的记忆,我还是认为android的布局xml文件还是参考了html+css,只是他更加臃肿!就想 android平台本身那样 ...

  9. CSS中的rem

    为什么会使用rem呢?主要还是浏览器和设备的大小不一. 这样就涉及到页面布局的不统一啦,先说说pc中的多栏布局吧,多栏布局有三种基本的实现方式:固定宽度.流动.弹性,下面我们就分别说说这三种布局吧. ...

  10. 调试报“The source file is different from when the module was built.”问题的解决

    It is related to the checksums which is used to ensure that you are stepping in matching source. You ...