ABAP Function

ABAP Coding过程中比较好用的Function整理。

1.获取Domain信息

代码实例:

"********************************获取domain
FORM f_get_domain.
  DATA:fs_taba TYPE dd07v.
  DATA:it_taba TYPE STANDARD TABLE OF dd07v.
  DATA:it_tabb TYPE STANDARD TABLE OF dd07v.   CALL FUNCTION 'DD_DOMA_GET'
    EXPORTING
      DOMAIN_NAME   = 'XXX'
      LANGU         = SY-LANGU
      WITHTEXT      = 'X'
    TABLES
      DD07V_TAB_A   = it_taba
      DD07V_TAB_N   = it_tabb
    EXCEPTIONS
      ILLEGAL_VALUE = 1
      OP_FAILURE    = 2
      OTHERS        = 3.
  IF SY-SUBRC = 0.
    LOOP AT  it_taba INTO fs_taba.
      WRITE:/ sy-tabix,fs_taba-domvalue_l,fs_taba-ddtext.
    ENDLOOP.
    LOOP AT it_tabb INTO fs_taba.
      WRITE:/ sy-tabix,fs_taba-domvalue_l,fs_taba-ddtext.
    ENDLOOP.
  ENDIF.
ENDFORM.

2.非金额单位数据转换

代码实例:

"*************************单位数据转换
FORM f_change_unit.
  DATA:v_out TYPE P DECIMALS 1.
  DATA:v_in TYPE P DECIMALS 1 VALUE 1000.
  CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'
    EXPORTING
      INPUT                      = v_in
*     NO_TYPE_CHECK              = 'X'
*     ROUND_SIGN                 = ' '
      UNIT_IN                    = 'G'
      UNIT_OUT                   = 'KG'
    IMPORTING
      OUTPUT                     = v_in.   IF SY-SUBRC <> 0.
    MESSAGE s000 WITH 'error'.
  ELSE.
    MESSAGE s000 WITH v_in.
*  Implement suitable error handling here
  ENDIF.
ENDFORM.

3.获取金额转换汇率

代码实例:

"获取汇率转换汇率
FORM f_get_rate.
  DATA:lv_type TYPE tcurr-kurst.
  DATA:lv_rate TYPE P LENGTH 15 DECIMALS 2.
  DATA:lv_msg TYPE string.
  lv_type = 'AVTW'.
  "获取汇率
  CALL FUNCTION 'READ_EXCHANGE_RATE'
    EXPORTING
      CLIENT           = sy-mandt
      DATE             = sy-datum
      FOREIGN_CURRENCY = 'RMB'
      LOCAL_CURRENCY   = 'USD'
      TYPE_OF_RATE     = lv_type
    IMPORTING
      EXCHANGE_RATE    = lv_rate
    EXCEPTIONS
      NO_RATE_FOUND = 1
      NO_FACTORS_FOUND = 2
      NO_SPREAD_FOUND = 3
      DERIVED_2_TIMES = 4
      OVERFLOW = 5
      ZERO_RATE = 6.
  IF sy-subrc <> 0.
    lv_msg = 'Get exchange rate failed!'.
    MESSAGE lv_msg TYPE 'E'.
  ELSE.
    lv_msg = 'Translate RMB TO USD Rate:' && lv_rate.
    MESSAGE lv_msg TYPE 'S'.
  ENDIF.
ENDFORM.

4.字符串转换到字符串内表

Function Group:SCMS_CONV

字符串转换到字符串内表:SCMS_STRING_TO_FTEXT

字符串转换成Xstring: SCMS_STRING_TO_XSTRING

字符串内表转换Xstring: SCMS_FTEXT_TO_XSTRING

字符串内表转换String: SCMS_FTEXT_TO_STRING

代码实例:

"***********************字符串转换为字符串内表
FORM f_trans_strtoitab.
  TYPES:BEGIN OF t_str,
        str(255) TYPE C,
        END OF t_str.
  DATA:lt_str TYPE TABLE OF t_str.
  DATA:ls_str LIKE LINE OF lt_str.
  DATA:lv_length TYPE i.
  CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
    EXPORTING
      TEXT            = 'hello world懒得看缴费对的看法角度abcdef'
    IMPORTING
      LENGTH          = lv_length
    TABLES
      FTEXT_TAB       = lt_str.
  WRITE:/ lv_length.
  LOOP AT lt_str INTO ls_str.
    WRITE:/ ls_str-str.
  ENDLOOP.
ENDFORM.

5.根据字符串公式计算值

代码实例:

"******************通过公式计算分数
TYPES:t_p TYPE p LENGTH 15 DECIMALS 2.
FORM f_calculate_formula
  USING iv_formula TYPE string
  CHANGING ev_result TYPE t_p.
  DATA:lv_qsollwerte TYPE qsollwerte.
  DATA:lv_float TYPE float.   CALL FUNCTION 'EVAL_FORMULA'
    EXPORTING
      formula = iv_formula
    IMPORTING
      value = lv_float.   ev_result = lv_float.
ENDFORM.
FORM f_test_cal.
  DATA:lv_formula TYPE string.
  DATA:lv_res TYPE P LENGTH 15 DECIMALS 2.   lv_formula = '1000/200+20*(0.25/1.2)*10'.
  PERFORM f_calculate_formula USING lv_formula CHANGING lv_res.
  lv_res = lv_res.
  WRITE:/ lv_res.
ENDFORM.

6.字符串前导0的添加与删除

代码实例:

"******************字符串前补0,删除前导0
FORM f_numb_0.
  "*******************************************数字符串前补0
  WRITE:/'数字字符串前补0'.
  DATA: input_p(3) type N value '344'.
  DATA: output_p(20) type N.   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT         = input_p
   IMPORTING
     OUTPUT        = output_p
            .
  WRITE:/ input_p,'----', output_p.   "*****************************************消除数字符串前0
  DATA: input_p1(10) type N value '00034'.
  DATA: output_p1(3) type N .
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      INPUT         = input_p1
   IMPORTING
     OUTPUT        = output_p1
     .
  WRITE:/ input_p1,'----',output_p1.
ENDFORM.

7.全角半角转换

代码实例:

"*******************************全角半角转换
FORM f_change_quanjiao.
  DATA:lv_c TYPE C  LENGTH 20.
  lv_c = '  hello自大'.   "全角转换半角
  CALL FUNCTION 'SJIS_DBC_TO_SBC'
    EXPORTING
      ALL = 'X'
  CHANGING
    TEXT = lv_c.
  IF SY-SUBRC <> 0.   ELSE.
    WRITE:/ lv_c.
    CONDENSE lv_c NO-GAPS.
    WRITE:/ lv_c.
  ENDIF.   "半角转换全角
  CALL FUNCTION 'SJIS_SBC_TO_DBC'
    EXPORTING
      ALL   = 'X'
*   IMPORTING
*     CONVERTED              =
*     HIT                    =
    CHANGING
      TEXT  = lv_c
    EXCEPTIONS
      OVERFLOW               = 1
      OTHERS                 = 2.
  IF SY-SUBRC <> 0.
    MESSAGE 'error' TYPE 'E'.
  ELSE.
    WRITE:/ lv_c.
  ENDIF.
ENDFORM.

 

ABAP学习(35):常用Function的更多相关文章

  1. abap 常用 function

    ABAP常用函数总结  alv .smartform. excel .text.邮件 .远程访问,FTP服务器...  **********常用功能function REUSE_ALV_GRID_DI ...

  2. 转载-聊一聊深度学习的activation function

    目录 1. 背景 2. 深度学习中常见的激活函数 2.1 Sigmoid函数 2.2 tanh函数 2.3 ReLU函数 2.4 Leaky ReLu函数 2.5 ELU(Exponential Li ...

  3. SAP ABAP学习路线图--标准教程

    SAP ABAP学习路线图--标准教程 摘自:http://www.cnblogs.com/clsoho/archive/2010/07/05/1771400.html

  4. IOS学习:常用第三方库(GDataXMLNode:xml解析库)

    IOS学习:常用第三方库(GDataXMLNode:xml解析库) 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过 ...

  5. Swift学习之常用UI的使用

    Swift学习之常用UI的使用 最近笔者在开始学习苹果最新的编程语言,因为笔者认为,苹果既然出了这门语言就绝对不会放弃,除非苹果倒闭了(当然这里知识一个玩笑). 所以在不久的将来,swift绝对是iO ...

  6. IOS开发-OC学习-常用功能代码片段整理

    IOS开发-OC学习-常用功能代码片段整理 IOS开发中会频繁用到一些代码段,用来实现一些固定的功能.比如在文本框中输入完后要让键盘收回,这个需要用一个简单的让文本框失去第一响应者的身份来完成.或者是 ...

  7. springmvc学习笔记(常用注解)

    springmvc学习笔记(常用注解) 1. @Controller @Controller注解用于表示一个类的实例是页面控制器(后面都将称为控制器). 使用@Controller注解定义的控制器有如 ...

  8. c/c++再学习:常用字符串转数字操作

    c/c++再学习:常用字符串转数字操作 能实现字符串转数字有三种方法,atof函数,sscanf函数和stringstream类. 具体demo代码和运行结果 #include "stdio ...

  9. 一张图学习vim常用命令

    一张图学习vim常用命令

  10. Python 常用模块系列学习(1)--random模块常用function总结--简单应用--验证码生成

    random模块--random是一个生成器 首先: import random    #导入模块 print (help(random))    #打印random模块帮助信息 常用function ...

随机推荐

  1. python基础23 之初识面向对象

    人狗大战 # 编写代码简单实现人打狗 狗咬人的小游戏 """推导步骤1:代码定义出人和狗""" person1 = { 'name': 'j ...

  2. ASP.NET 6.0 Core 迁移 ASP.NET Core 7.0

    2022年微软发布了.NET 7, 同时提供了详细的升级迁移方案. Migrate from ASP.NET Core 6.0 to 7.0 今天给大家简单整理.分享一篇文章. 一.首先需要升级Vis ...

  3. Redefinition of 'y1' as different kind of symbol

    Redefinition of 'y1' as different kind of symbol 原因 解释:此次定义的y1变量与函数库中定义的y1重名了,所以编译错误,重定义了y1变量. 解决方法: ...

  4. 深入Typescript--01-使用roolup编译Typescript

    Typescript是什么? TypeScript是Javascript的超集,遵循最新的ES5/ES6规范.Typescript扩展了Javascript语法. 为什么要用Typescript? 1 ...

  5. Python3+Selenium3自动化测试-(准备)

    Python3+Selenium3自动化测试-(准备) 最近在学习selenium自动化测试相关的内容,所以将实际准备情况做一记录, # 系统:win10(64位) # 浏览器:Chrome(67.0 ...

  6. Idea 2022 springboot 3.0 druid: testWhileIdle is true, validationQuery not set

    druid启动错误解决方法: Druid连接池 :严重: testWhileIdle is true, validationQuery not set 增中配置 在 application.yml 增 ...

  7. SQL笔试真题练习

    一.现有以下两张表: 第一张表名为cust,其表结构如下: 字段名 字段说明 是否主键 Studentno 学号,数据类型为整型的 是 Name 学生名字,数据类型为字符串型的 否 Address 学 ...

  8. Navicat 15 or 16 永久版本(window和Mac)

    一.下载Navicat Premium 官网https://www.navicat.com.cn/下载最新版本下载安装 链接包含(window激活包和Mac版本,请选择性下载): https://no ...

  9. SRS视频服务器CallBack的Demo

    1.安装环境(很麻烦,可以选择编译启动) 官方文档快速开始docker配置: docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 -d ...

  10. ES6的Promise用法

    一.是什么: promise是异步编程的一种解决方案,它是一个对象,可以获取异步操作的信息,它的出现改善了异步编程,避免了地狱回调,它比传统的解决方案回调函数和事件更合理和更强大 二.promise的 ...