二维码

[ddic] 创建自定义conversion routine并分配给domain

Twilight发表于 2014-10-23 15:51Twilight 最后回复于 2014-10-23 15:51 [复制链接] 4605 0

我们在看到这种现象:在se16-mara表中输入条件没有前导零的物料号(MATNR),输出的结果物料号却有前导零;有时在ALV报表中看到的物料号却没有前导零。
原因:双击域MATN1,可以看到CONVERSION_EXIT_MATN1_INPUT和CONVERSION_EXIT_MATN1_OUTPUT两个函数,它们分别负责输入转换和输出转换。conversion routine是绑定在domain层级的。

自定义conversion routine的命名格式:
CONVERSION_EXIT_xxxxx_INPUT  
CONVERSION_EXIT_xxxxx_OUTPUT
PS:其中的'XXXXX'表示可以自定义,已Z/Y开头

实例场景:利用conversion routine把日期20121203显示更改成12/2012格式。
1、se11 创建一个日期类型的domain
conversion routine 1.png
2、创建2个function module
FM:CONVERSION_EXIT_YDATE_INPUT
conversion routine 2.png
conversion routine 3.png
这是一个空FM,这个只是日期输出时转换格式,但若需要你定义日期输入时转换的规则
FM:CONVERSION_EXIT_YDATE_OUTPUT
conversion routine 4.png
conversion routine 5.png
conversion routine 6.png
source code
  1. FUNCTION CONVERSION_EXIT_YDATE_OUTPUT.
  2. *"--------------------------------------------------------------------
  3. *"*"Local Interface:
  4. *"  IMPORTING
  5. *"     REFERENCE(INPUT)
  6. *"  EXPORTING
  7. *"     REFERENCE(OUTPUT)
  8. *"--------------------------------------------------------------------
  9.   DATA:l_input  TYPE sydatum,
  10.        l_output TYPE rvdat-extdatum.
  11.   l_input = input.
  12.   CALL FUNCTION 'PERIOD_AND_DATE_CONVERT_OUTPUT'
  13.     EXPORTING
  14. *     COUNTRY         = ' '
  15.       internal_date   = l_input
  16.       internal_period = '3'
  17. *     LANGUAGE        = SYST-LANGU
  18. *     I_PERIV         =
  19. *     I_WERKS         =
  20. *     I_MRPPP         =
  21.     IMPORTING
  22.       external_date   = l_output
  23. *     EXTERNAL_PERIOD =
  24. *     EXTERNAL_PRINTTEXT       =
  25. * EXCEPTIONS
  26. *     DATE_INVALID    = 1
  27. *     PERIODE_INVALID = 2
  28. *     OTHERS          = 3
  29.     .
  30.   output = l_output.
  31. ENDFUNCTION.
复制代码

3、回到刚才建的domain,Convers. Routine输入YDATE(刚才自建函数的自定义部分);保存激活
conversion routine 7.png
双击‘YDATE’,弹出如下界面,可以看到domain上绑定的这两个函数
conversion routine 8.png
4、自建表:YDATA_UTL
conversion routine 9.png
新建数据元素YDEDAT,domain用我们刚建的YCRDAT,保存激活
conversion routine 10.png
5、向YDATA_UTL表中插入一条数据
conversion routine 11.png
6、菜单Settings->User Parameters
conversion routine 12.png
conversion routine 13.png
7、执行查看结果
conversion routine 14.png
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表