在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. 安卓开发笔记——关于照片墙的实现(完美缓存策略LruCache+DiskLruCache)

    这几天一直研究在安卓开发中图片应该如何处理,在网上翻了好多资料,这里做点小总结,如果朋友们有更好的解决方案,可以留言一起交流下. 内存缓存技术 在我们开发程序中要在界面上加载一张图片是件非常容易的事情 ...

  2. 如何使用MVC编写Winform程序代码

    efwplus开源框架官网:www.efwplus.cn 前提:业务分析设计已完成,界面设计完成   1.代码结构划分 1)界面层:FrmSugeryApplyList.ISugeryApplyLis ...

  3. 代码演示用 .NET 4.5 (C# 5.0)自带的压缩类 ZipArchive 创建一个压缩文件

    代码如下: using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; ...

  4. codeforces B. Strongly Connected City(dfs水过)

    题意:有横向和纵向的街道,每个街道只有一个方向,垂直的街道相交会产生一个节点,这样每个节点都有两个方向, 问是否每一个节点都可以由其他的节点到达.... 思路:规律没有想到,直接爆搜!每一个节点dfs ...

  5. DDD:Command模式的好处

    背景 会有朋友问我为啥用命令模式(Command Pattern)组织应用层,先看看MartinFowler咋说:http://martinfowler.com/bliki/CommandOrient ...

  6. 初探KMP算法

            数据结构上老师也没讲这个,平常ACM比赛时我也没怎么理解,只是背会了代码--前天在博客园上看见了一篇介绍KMP的,不经意间就勾起了我的回忆,写下来吧,记得更牢. 一.理论准备      ...

  7. android 视频的缩略图 缓存机制和 异步加载缩略图

    在这次的工作开发项目中,涉及到一个视频缩略图的视频列表:这个在大家看来,制作视频缩略图就是两行代码就搞定的事.确实是这样的,百度一下,每个帖子都知道制作视频缩略图的方法,在这里确实也是一样的,但是我要 ...

  8. ReflectionToStringBuilder

    1. 使用背景 后台接口需要在接口调用的初期,记录下面查询(修改)对象的参数. 2. 使用方法 通过Apache 工具类 输出entity对象所有属性值 <dependency> < ...

  9. Node.js建站笔记-使用react和react-router取代Backbone

    斟酌之后,决定在<嗨猫>项目中引入react,整体项目偏重spa模式,舍弃部分server端的模板渲染,将一部分渲染工作交给前端react实现. react拥有丰富的组件,虽然不如Back ...

  10. Linux的段错误调试方法

    linux段错误的调试方法 相关博文: http://blog.csdn.net/htianlong/article/details/7439030 http://www.cnblogs.com/pa ...