在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. 数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。

    #include <iostream> using namespace std; int maxCover(int* a, int n, int l) { ; ; ; while(end ...

  2. MySQL实现类似Oracle的序列

    MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列   Oracl ...

  3. ISO给UIImageView增加点击事件

    自己做了一个九宫格,里面的图标都是由多张图片重叠构成,然后包装成一个button来使用: 遇到的问题是如何给这个“button”增加点击事件? 解决思路1:网友提示在该“button”上增加一个真正的 ...

  4. [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

    课程主页:http://cs231n.stanford.edu/   Introduction to neural networks -Training Neural Network ________ ...

  5. 没有找到cxcore100.dll,因此这个应用程序未能启动,重新安装应用程序可能会修复此问题

    第一种情况: 出现这个问题多数是因为“环境变量PATH”未设置,虽然你可能在安装的过程中勾选了Add <...>\OpenCV\bin to the system PATH项!安装Open ...

  6. 64位Win7下安装与配置PHP环境【Apache+PHP+MySQL】

    [软件下载] 本安装实例所使用安装文件如图所示: 其中,64位版本的MySQL安装文件mysql-5.5.33-winx64.msi,可直接从官网下载,下载地址:http://dev.mysql.co ...

  7. redis实现有序的消息队列

    redis是什么东西就不多说了,网上文章一搜一大堆. 首先来说一下我要实现的功能: 类似一个消息中转站吧,如果有人要发送消息,先将消息发到我这里来,然后我这边进行转发,为的就是有一个统一的管理和修改时 ...

  8. 4、总结:基于Oracle Logminer数据同步

    最近开发Oracle数据同步功能,做了些调研和验证,这个工作过去有段时间,怕时间长了忘记,故用博客共享出来.在这系列中共写了三篇文章,第一篇是写LogMiner配置及使用,第二篇是测试了LogMine ...

  9. 初涉SQL Server性能问题(3/4):列出阻塞的会话

    在 初涉SQL Server性能问题(2/4)里,我们讨论了列出等待资源或正运行的会话脚本.这篇文章我们会看看如何列出包含具体信息的话阻塞会话清单. /************************ ...

  10. Redis设计与实现-客户端服务端与事件

    事件 redis服务器是事件驱动的,事件分为文件事件与时间事件 文件事件是服务器通过套接字与客户端连接,两者之间的通信会产生相应的文件事件,服务器监听并处理这些事件完成网络操作: 时间事件是指redi ...