ABAP-一些很方便的小运算及小函数

A = 3.14

B= -3.1415

1.四舍五入取整

CEIL( A ) = 3.

2.向下取整

FLOOR( A ) = 3 .

3.取绝对值

ABS( B ) = 3.1415 .

4.字符串长度

STRLEN( A ) = 4

5.除法取整

A DIV B = 0 .

B DIV A = -1 .

6.除法取余

A MOD B

7.内表行数

DATA: LV_LINES TYPE INT4.
LV_LINES = LINES( GT_OUT[] ).

8.取UUID

cl_system_uuid=>if_system_uuid_static~create_uuid_c22( RECEIVING uuid = DATA(lv_uuid_c22) ).
cl_system_uuid=>if_system_uuid_static~create_uuid_x16( RECEIVING uuid = DATA(lv_uuid_x16) ).
cl_system_uuid=>if_system_uuid_static~create_uuid_x16( RECEIVING uuid = DATA(lv_uuid_c26) ).
cl_system_uuid=>if_system_uuid_static~create_uuid_x16( RECEIVING uuid = DATA(lv_uuid_c32) ).
cl_system_uuid=>if_system_uuid_static~create_uuid_x16( RECEIVING uuid = DATA(lv_uuid_c36) ).
 
"取不同位数的UUID
9.快速展示报表,无fieldcat

  cl_demo_output=>display( <itab> ) .

10.抓异常的万能异常

DATA lv_oref TYPE REF TO cx_root.
TRY .
。。。              
    CATCH cx_root INTO lv_oref.

11.选择屏幕假必输,选择屏幕带必输的勾,但是实际上可以不输入数据


initialization.
  LOOP AT SCREEN.
    IF screen-NAME = 'p_gjahr' OR screen-NAME = 'p_monat'.
      screen-required = '2'.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.
 

12. 直接修改程序不传请求:程序RS_REPAIR_SOURCE的FORM authority_check 

13.去掉无用的0和空格
CONDENSE  l_str .  " 必须有,否则下面的语句不生效
SHIFT  l_str RIGHT DELETING TRAILING  '0' . "去掉没用的小数位的0
SHIFT  l_str RIGHT DELETING TRAILING  '.' . "去掉没用的小数点
SHIFT  L_STR LEFT  DELETING TRAILING  SPACE .去掉左边无用空格

13. 程序检查报错直接返回选择屏幕不往后面执行


    IF s_budat[] IS INITIAL.
      MESSAGE '过账日期必输' TYPE 'S'  DISPLAY LIKE  'E'.
      LEAVE LIST-PROCESSING AND RETURN TO SCREEN 0.
    ENDIF.

四舍五入函数

DATA p1 TYPE p DECIMALS 2 VALUE '1.6'.
DATA p2 TYPE i .
CALL FUNCTION 'ROUND'
  EXPORTING
   DECIMALS            = 0
    input               = p1
   SIGN                = '+ '
 IMPORTING
   OUTPUT              = p2
 EXCEPTIONS
   INPUT_INVALID       = 1
   OVERFLOW            = 2
   TYPE_INVALID        = 3
   OTHERS              = 4
          .
IF sy-subrc <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WRITE p2.

输出的结果是2,注意:

1.如果sign参数传入的是'-',则输出的是1,

2.如果不传入参数输出的是2,如果P2定义的和p1是一样的类型时,输出的是原来的数据。

3.如果是’+‘,并且P2定义的和P1一样的类型时,输出的是2.00

4.如果sign参数传入的是空,会自动四舍五入

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在ABAP中创建一个四则运算函数,您可以按照以下步骤进行: 1. 创建一个Function Module:在ABAP Workbench的SE37事务中,您可以创建一个名为“Z_CALCULATE”的Function Module。 2. 定义输入和输出参数:在Function Module的界面上,您可以为Function Module定义输入和输出参数。在这个例子中,您可以定义以下输入和输出参数: * 输入参数: - num1(类型为I,长度为10) - num2(类型为I,长度为10) - operator(类型为C,长度为1) * 输出参数: - result(类型为I,长度为10) 3. 编写ABAP代码:在Function Module的“源代码”选项卡中,您可以编写实现四则运算ABAP代码。在这个例子中,您可以使用CASE语句实现不同的运算符。以下是一个简单的示例代码: FUNCTION z_calculate. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(NUM1) TYPE I *" VALUE(NUM2) TYPE I *" VALUE(OPERATOR) TYPE C *" EXPORTING *" VALUE(RESULT) TYPE I *"---------------------------------------------------------------------- CASE operator. WHEN '+'. result = num1 + num2. WHEN '-'. result = num1 - num2. WHEN '*'. result = num1 * num2. WHEN '/'. IF num2 <> 0. result = num1 / num2. ELSE. result = 0. ENDIF. ENDCASE. ENDFUNCTION. 4. 测试Function Module:您可以使用SE37事务测试Function Module。在输入参数中输入您想要计算的数字和运算符,然后运行Function Module。在输出参数中,您将获得计算结果。 这就是在ABAP中创建四则运算函数的简单步骤。 ### 回答2: 在ABAP中,可以通过创建一个函数来实现四则运算。以下是一个示例: 首先,我们需要在ABAP编辑器中创建一个函数模块。可以通过进入事务码`SE37`进入函数构建器界面。在这个界面中,选择创建一个新的函数模块。 接下来,我们需要定义输入和输出参数。对于四则运算函数,我们需要定义四个输入参数(操作数1、操作数2、运算符、结果)以及一个输出参数(结果)。 在“接口/参数”选项卡下,点击“添加”按钮以创建输入参数。为每个输入参数分别指定一个名称、数据元素和描述。例如,对于操作数1和操作数2,可以选择INT4数据元素。 然后,点击“添加”按钮以添加输出参数。指定输出参数的名称、数据元素和描述。对于结果,也可以选择INT4数据元素。 接下来,在“源代码”选项卡下,我们需要编写ABAP代码来执行四则运算。根据输入参数中指定的运算符,使用条件语句(如CASE语句)来执行相应的运算。根据运算符的不同,可以使用ABAP提供的数学函数(如ADD、SUBTRACT、MULTIPLY、DIVIDE)来执行相应的运算。将结果分配给输出参数。 最后,保存函数模块,并使用事务码`SE93`来创建一个事务代码,以便在ABAP系统中调用该函数模块。 现在,我们可以在ABAP系统的任何地方使用该事务代码来调用四则运算函数。将操作数1、操作数2和运算符作为输入参数传递给函数,然后获取结果参数的值作为计算结果。 通过以上步骤,我们可以在ABAP中创建一个四则运算函数,可以在需要计算的地方方便地调用该函数。 ### 回答3: 在ABAP中创建一个四则运算函数,可以按照以下步骤进行: 1. 首先,使用函数建立一个函数模块。可以使用T-code SE37打开Function Builder。 2. 在Function Builder中,选择“创建函数模块”。 3. 将函数模块命名为合适的名称,比如“四则运算”。 4. 在“接口”标签页中,定义输入和输出参数。对于四则运算,我们需要定义四个输入参数(两个操作数和一个运算符)和一个输出参数(结果)。 5. 在“源代码”标签页中,编写函数逻辑。首先,使用“DATA”语句定义所需的变量。然后,使用“CASE”语句根据运算符执行相应的计算操作,并将结果存储在输出参数中。 6. 检查并保存函数模块。 以下是一个示例实现的函数模块的源代码: FUNCTION ZARITHMETIC. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(OP1) TYPE I *" VALUE(OP2) TYPE I *" VALUE(OPERATOR) TYPE C *" EXPORTING *" VALUE(RESULT) TYPE I *"---------------------------------------------------------------------- DATA: LV_RESULT TYPE I. CASE OPERATOR. WHEN '+'. LV_RESULT = OP1 + OP2. WHEN '-'. LV_RESULT = OP1 - OP2. WHEN '*'. LV_RESULT = OP1 * OP2. WHEN '/'. LV_RESULT = OP1 / OP2. WHEN OTHERS. LV_RESULT = 0. ENDCASE. RESULT = LV_RESULT. ENDFUNCTION. 通过以上步骤,我们可以成功创建一个四则运算函数模块。之后,可以在其他ABAP程序或报表中调用该函数,实现四则运算的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值