用ABAP实现下图的第五种整数相加算法:
实现代码:
REPORT zint.
PARAMETERS: a TYPE int4 OBLIGATORY DEFAULT 100,
b TYPE int4 OBLIGATORY DEFAULT 100.
DATA: threshold TYPE int4.
FORM add USING a TYPE int4 b TYPE int4 CHANGING cv_result TYPE int4.
DATA: n TYPE int4 VALUE 0,
c TYPE int4 VALUE 0.
DATA: i TYPE int4 VALUE 1.
DATA: boolean_a TYPE abap_bool,
boolean_b TYPE abap_bool,
_a TYPE int4,
_b TYPE int4,
aa TYPE int4,
bb TYPE int4.
DATA(wrapper_one) = zcl_integer=>value_of( 1 ).
DATA(wrapper_c) = zcl_integer=>value_of( c ).
aa = a.
bb = b.
WHILE i < threshold.
DATA(wrapper_a) = zcl_integer=>value_of( aa ).
DATA(wrapper_b) = zcl_integer=>value_of( bb ).
boolean_a = boolc( wrapper_a->and( wrapper_one )->get_raw_value( ) EQ 1 ).
boolean_b = boolc( wrapper_b->and( wrapper_one )->get_raw_value( ) EQ 1 ).
_a = COND int4( WHEN boolean_a EQ abap_true THEN 1 ELSE 0 ).
_b = COND int4( WHEN boolean_b EQ abap_true THEN 1 ELSE 0 ).
wrapper_a = zcl_integer=>value_of( _a ).
wrapper_b = zcl_integer=>value_of( _b ).
wrapper_c = zcl_integer=>value_of( c ).
DATA(_n_wrapper) = wrapper_a->xor( wrapper_b )->xor( wrapper_c ).
DATA(b_or_c) = wrapper_b->or( wrapper_c ).
DATA(b_and_c) = wrapper_b->and( wrapper_c ).
DATA(_c_wrapper) = wrapper_a->and( b_or_c )->or( b_and_c ).
c = _c_wrapper->get_raw_value( ).
DATA(_n_i0_wrapper) = zcl_integer=>value_of( COND int4( WHEN _n_wrapper->get_raw_value( ) > 0 THEN i ELSE 0 ) ).
DATA(wrapper_n) = zcl_integer=>value_of( n ).
n = wrapper_n->or( _n_i0_wrapper )->get_raw_value( ).
wrapper_a = zcl_integer=>value_of( aa ).
aa = wrapper_a->shift_right( )->get_raw_value( ).
wrapper_b = zcl_integer=>value_of( bb ).
bb = wrapper_b->shift_right( )->get_raw_value( ).
cv_result = n.
DATA(wrapper_i) = zcl_integer=>value_of( i ).
wrapper_i->shift_left( ).
i = wrapper_i->get_raw_value( ).
ENDWHILE.
ENDFORM.
START-OF-SELECTION.
DATA: i TYPE int4.
threshold = ipow( base = 2 exp = 30 ).
PERFORM add USING a b CHANGING i.
WRITE: / i.
算法描述参考我的SCN博客 Just for fun – Implement a + b using pure bitwise operation in ABAP
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关推荐
云南鸿翔SAP培训------ABAP,abap的ppt,很好的资料哦
-----ABAP FAQs--------------------------------------------
SAP,ABAP培训+学习+练习,网络下载资料与大家分享
SAP-ABAP+IDOC+Interface 主要涉及的是SAP系统中的ABAP编程语言以及IDOC(Intermediate Document)在企业间接口的应用场景。文档标题“SAP-ABAP+IDOC+Interface.pdf”表明了其主要内容是围绕这些技术展开的。 #### ...
标题“abap-ALV.rar_ABAP系统ALV_abap_abap开发alv”暗示我们将深入探讨ABAP ALV的使用,特别是在ABAP系统中的应用以及如何进行开发。 描述中提到“ABAP ALV总结,ALV格式,REUSE_ALV_GRID_DISPLAY_LVC函数使用”,...
通过"实战SAP程序开发--从实例学SAP ABAP编程"这本书,你可以期望学到如何将这些概念应用到实际项目中,理解SAP ABAP的开发流程,并掌握解决实际问题的技能。书中的实例会帮助你巩固理论知识,提高编程能力,从而在...
此外,SAP标准教程部分会进一步阐述ABAP在实际SAP系统中的应用,帮助你更好地将理论知识转化为实际操作技能。无论你是初学者还是经验丰富的开发者,这套教程都能提供宝贵的学习资料,助你在ABAP和SAP领域不断提升。
### ABAP常见面试问题解析 #### 1. ABAP程序的典型结构是什么? ABAP (Advanced Business Application Programming) 是一种广泛应用于 SAP (Systems, Applications, and Products in Data Processing) 系统中的...
1500+页的abap图文教程+sap标准教程
- **变量声明**:在ABAP中,你需要先声明变量,再进行操作,如`DATA: lv_name TYPE string.`。 - **语句结构**:ABAP使用BEGIN OF和END OF定义结构,IF...ENDIF和SELECT...ENDSELECT等控制结构进行条件判断和数据...
然而,对于一些负责的算法,相关性程序无法直接实现,需要通过调用ABAP函数来实现。那么,如何调用ABAP函数成了相关性程序的一大难题。 在SAP系统中,相关性程序可以调用标准函数,但是这些函数的数量有限,无法...
ABAP - Keyword Documentation This documentation describes the syntax and meaning of the keywords of the ABAP language and its object-oriented part ABAP Objects. Alongside this, language frameworks ...
"ABAP经典面试题" ABAP是一种高级编程语言,用于开发SAP R/3系统中的应用程序。本文总结了ABAP经典面试题,涵盖了ABAP基础知识、数据对象、语句、报表程序设计等多方面的知识点。 1.ABAP基础知识 在ABAP中,数据...
在ABAP编程中,函数模块扮演着至关重要的角色,它们是SAP系统中的可重用代码块,用于执行特定任务。...在实际项目中,开发者需要根据具体需求灵活运用并结合其他ABAP语言特性,以实现高效、稳定的业务逻辑。
ABAP面试题最全合集(含答案)
ABAP开发面试题知识点总结 ABAP开发是一种强大的编程语言,用于开发SAP R/3系统中的应用程序。以下是ABAP开发面试题中涵盖的知识点总结: 1. 授权对象:授权对象是由多个字段组成的,它们的值将用于进行授权检查。...
在给定的问题中,语句 C)sflight-price = a+b; 将编译报错,因为 sflight 是一个结构,price 是其一个字段,而 a 和 b 是未定义的变量。 2. 关于 TCODE 在 ABAP/4 的开发工作中,SE80 是直接进入创建程序、函数组...
Notepad++ ABAP代码高亮显示
ABAP 面试问题及答案 ABAP 是一種高级编程语言,主要應用在 SAP 系统中。以下是 ABAP 面试问题及答案,涵盖了锁对象、Function Module、ABAP 内存、授权对象、修改、修改助手、功能模块出口、事务变式等知识点。 ...