我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么使用ABAP提高工作效率

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么使用ABAP提高工作效率

本篇内容主要讲解“怎么使用ABAP提高工作效率”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用ABAP提高工作效率”吧!

(1) 直接批量生成数据到ABAP内表里:

* 2017-05-14 7:17PM in Xun's house, Wiesloch

INSERT demo_join1 FROM TABLE @( VALUE #(

( a = 'a1' b = 'b1' c = 'c1' d = 'uu' )

( a = 'a2' b = 'b2' c = 'c2' d = 'uu' )

( a = 'a3' b = 'b3' c = 'c3' d = 'vv' )

( a = 'a4' b = 'b4' c = 'c4' d = 'ww' ) ) ).

(2) 采用内联方式遍历ABAP内表:

DATA address_annos TYPE STANDARD TABLE OF field_anno-annoname

WITH EMPTY KEY.

address_annos = VALUE #(

( 'SEMANTICS.NAME.FULLNAME' )

( 'SEMANTICS.ADDRESS.STREET' )

( 'SEMANTICS.ADDRESS.CITY' )

( 'SEMANTICS.ADDRESS.ZIPCODE' )

( 'SEMANTICS.ADDRESS.COUNTRY' ) ).

DATA address_components TYPE STANDARD TABLE OF field_anno-fieldname

WITH EMPTY KEY.

address_components = VALUE #(

FOR address_anno IN address_annos

( VALUE #( fieldannos[ annoname = address_anno ]-fieldname

DEFAULT '---' ) ) ).

(3) 两个内表间数据的复制,两个内表的列结构可以不同,开发人员需要额外传入一个映射表,告诉corresponding关键字,源内表的哪一列应该赋到目标内表的哪一列。

* This is exactly what I want!!

REPORT demo_corresponding_vs_for.

CLASS demo DEFINITION.

PUBLIC SECTION.

CLASS-METHODS:

main,

class_constructor.

PRIVATE SECTION.

TYPES:

BEGIN OF struct,

carrier TYPE spfli-carrid,

connection TYPE spfli-connid,

departure TYPE spfli-cityfrom,

destination TYPE spfli-cityto,

END OF struct.

CLASS-DATA:

itab TYPE HASHED TABLE OF spfli

WITH UNIQUE KEY carrid connid,

result1 TYPE HASHED TABLE OF struct

WITH UNIQUE KEY carrier connection,

result2 TYPE HASHED TABLE OF struct

WITH UNIQUE KEY carrier connection,

result3 TYPE HASHED TABLE OF struct

WITH UNIQUE KEY carrier connection,

in TYPE REF TO if_demo_input,

out TYPE REF TO if_demo_output.

ENDCLASS.

CLASS demo IMPLEMENTATION.

METHOD main.

DATA(iterations) = 10.

in->request( CHANGING field = iterations ).

DO iterations TIMES.

DATA t1 TYPE i.

GET RUN TIME FIELD DATA(t11).

result1 = CORRESPONDING #(

itab MAPPING carrier = carrid

connection = connid

departure = cityfrom

destination = cityto ).

GET RUN TIME FIELD DATA(t12).

t1 = t1 + t12 - t11.

DATA t2 TYPE i.

GET RUN TIME FIELD DATA(t21).

result2 = VALUE #( FOR wa IN itab ( carrier = wa-carrid

connection = wa-connid

departure = wa-cityfrom

destination = wa-cityto ) ).

GET RUN TIME FIELD DATA(t22).

t2 = t2 + t22 - t21.

DATA t3 TYPE i.

GET RUN TIME FIELD DATA(t31).

result3 = VALUE #( FOR wa IN itab (

CORRESPONDING #(

wa MAPPING carrier = carrid

connection = connid

departure = cityfrom

destination = cityto ) ) ).

GET RUN TIME FIELD DATA(t32).

t3 = t3 + t32 - t31.

ENDDO.

IF result1 = result2 AND result1 = result3.

out->write(

|CORRESPONDING: {

CONV decfloat16( t1 / iterations )

WIDTH = 10 ALIGN = RIGHT } Microseconds\n| &&

|FOR: {

CONV decfloat16( t2 / iterations )

WIDTH = 10 ALIGN = RIGHT } Microseconds\n| &&

|FOR CORRESPONDING: {

CONV decfloat16( t3 / iterations )

WIDTH = 10 ALIGN = RIGHT } Microseconds\n|

)->line(

)->display( result1 ).

ELSE.

out->display( `What?` ).

ENDIF.

ENDMETHOD.

METHOD class_constructor.

in = cl_demo_input=>new( ).

out = cl_demo_output=>new( ).

SELECT *

FROM spfli

INTO TABLE @itab.

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

demo=>main( ).

(4) DISCARDING DUPLICATES的用法

REPORT demo_corresponding_duplicates.

CLASS demo DEFINITION.

PUBLIC SECTION.

CLASS-METHODS main.

ENDCLASS.

CLASS demo IMPLEMENTATION.

METHOD main.

TYPES:

BEGIN OF line,

a1 TYPE i,

a2 TYPE i,

END OF line,

ntab1 TYPE STANDARD TABLE OF line WITH EMPTY KEY,

ntab2 TYPE SORTED TABLE OF line WITH UNIQUE KEY a1,

BEGIN OF line1,

x1 TYPE i,

x2 TYPE ntab1,

END OF line1,

BEGIN OF line2,

y1 TYPE i,

y2 TYPE ntab2,

END OF line2,

itab1 TYPE STANDARD TABLE OF line1 WITH EMPTY KEY,

itab2 TYPE SORTED TABLE OF line2 WITH UNIQUE KEY y1.

DATA(itab1) =

VALUE itab1( ( x1 = 1 x2 = VALUE #( ( a1 = 1 a2 = 2 )

( a1 = 3 a2 = 4 ) ) )

( x1 = 2 x2 = VALUE #( ( a1 = 1 a2 = 2 )

( a1 = 1 a2 = 4 ) ) )

( x1 = 1 x2 = VALUE #( ( a1 = 1 a2 = 2 )

( a1 = 3 a2 = 4 ) ) ) ).

DATA(itab2) =

CORRESPONDING itab2( itab1 DISCARDING DUPLICATES

MAPPING y1 = x1

y2 = x2 DISCARDING DUPLICATES ).

DATA(out) = cl_demo_output=>new( ).

LOOP AT itab2 INTO DATA(wa).

out->write( wa-y1

)->write( wa-y2

)->line( ).

ENDLOOP.

out->display( ).

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

demo=>main( ).

(5) DESCRIBE DISTANCE BETWEEN

REPORT demo_describe_distance.

CLASS demo DEFINITION.

PUBLIC SECTION.

CLASS-METHODS main.

ENDCLASS.

CLASS demo IMPLEMENTATION.

METHOD main.

DATA: BEGIN OF struc,

comp1 TYPE i,

comp2 TYPE x LENGTH 1,

comp3 TYPE c LENGTH 4 VALUE 'Hey',

comp4 TYPE c LENGTH 4 VALUE 'you!',

comp5 TYPE x,

END OF struc.

FIELD-SYMBOLS: <hex> TYPE x,

<result> TYPE c.

DESCRIBE DISTANCE BETWEEN:

struc AND struc-comp3 INTO DATA(off) IN BYTE MODE,

struc-comp3 AND struc-comp5 INTO DATA(len) IN BYTE MODE.

ASSIGN: struc TO <hex> CASTING,

<hex>+off(len) TO <result> CASTING.

cl_demo_output=>display(

|Offset off is { off }.\n| &&

|Length len is { len }.\n| &&

|<result> points to "{ <result> }".| ).

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

demo=>main( ).

(6) 全动态方式调用RFC

REPORT demo_rfc_dynamic_dest.

CLASS demo DEFINITION.

PUBLIC SECTION.

CLASS-METHODS:

main.

ENDCLASS.

CLASS demo IMPLEMENTATION.

METHOD main.

DATA:

val_in TYPE string VALUE `val_in`,

val_in_out TYPE string VALUE `val_in_out`,

val_out TYPE string,

msg TYPE c LENGTH 80.

IF sy-uname IS INITIAL.

cl_demo_output=>display(

|Example not possible for anonymous user| ).

RETURN.

ENDIF.

DATA(in) = cl_demo_input=>new( ).

DATA(client) = sy-mandt.

in->add_field( CHANGING field = client ).

DATA(uname) = sy-uname.

in->add_field( CHANGING field = uname ).

DATA(langu) = sy-langu.

in->add_field( CHANGING field = langu ).

DATA(sysid) = sy-sysid.

in->add_field( CHANGING field = sysid ).

DATA(host) = CONV rfchost( sy-host ).

in->add_field( CHANGING field = host ).

DATA(group) = CONV rfcload( 'PUBLIC' ).

in->add_field( CHANGING field = group ).

in->request( ).

DATA(dest) = cl_dynamic_destination=>create_rfc_destination(

logon_client = client

logon_user = uname

logon_language = langu

sid = sysid

server = host

group = group ).

CALL FUNCTION 'DEMO_RFM_PARAMETERS'

DESTINATION dest

EXPORTING

p_in = val_in

IMPORTING

p_out = val_out

CHANGING

p_in_out = val_in_out

EXCEPTIONS

system_failure = 2 MESSAGE msg

communication_failure = 4 MESSAGE msg.

IF sy-subrc <> 0.

cl_demo_output=>display( |Error when calling sRFC.\n{ msg }| ).

RETURN.

ENDIF.

cl_demo_output=>display( |{ val_out }\n{ val_in_out }| ).

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

demo=>main( ).

(7) 内联函数line_index

REPORT.

CLASS demo DEFINITION.

PUBLIC SECTION.

CLASS-METHODS: class_constructor,

main.

PRIVATE SECTION.

CLASS-DATA

flight_tab

TYPE STANDARD TABLE OF spfli

WITH EMPTY KEY

WITH UNIQUE HASHED KEY id COMPONENTS carrid connid

WITH NON-UNIQUE SORTED KEY cities COMPONENTS cityfrom cityto.

ENDCLASS.

CLASS demo IMPLEMENTATION.

METHOD main.

DATA idx TYPE TABLE OF i.

idx = VALUE #(

( line_index( flight_tab[ carrid = 'UA'

connid = '0941'

##primkey[id] ] ) )

( line_index( flight_tab[ KEY id

carrid = 'UA'

connid = '0941' ] ) )

( line_index( flight_tab[ KEY id

carrid = 'xx'

connid = 'yyyy' ] ) )

( line_index( flight_tab[ cityfrom = 'FRANKFURT'

cityto = 'NEW YORK'

##primkey[cities] ] ) )

( line_index( flight_tab[ KEY cities

cityfrom = 'FRANKFURT'

cityto = 'NEW YORK' ] ) )

( line_index( flight_tab[ KEY cities

cityfrom = 'xxxxxxxx'

cityto = 'yyyyyyyy' ] ) ) ).

cl_demo_output=>display( idx ).

ENDMETHOD.

METHOD class_constructor.

SELECT *

FROM spfli

ORDER BY carrid, connid

INTO TABLE @flight_tab.

ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.

demo=>main( ).

到此,相信大家对“怎么使用ABAP提高工作效率”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么使用ABAP提高工作效率

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么使用ABAP提高工作效率

本篇内容主要讲解“怎么使用ABAP提高工作效率”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用ABAP提高工作效率”吧!(1) 直接批量生成数据到ABAP内表里:* 2017-05-14
2023-06-04

SEO要怎么提高工作效率

本篇内容介绍了“SEO要怎么提高工作效率”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、SEO靠坚持,执行很重要!   对于SEO,大家都
2023-06-12

如何使用shell命令提高工作效率

这篇文章主要介绍了如何使用shell命令提高工作效率,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、切换目录注意:当前用户是xiaochao,系统为centos6,并且,s
2023-06-09

巧用history命令提高工作效率

  相信接触过Linux的朋友都知道在Linux中history是一条比较实用的shell命令。它可以显示出之前在shell中运行的命令并配合last显示之前登录的用户就可以追溯是哪个用户执行了某些命令。如果我们把history命令使用得当可以极大提高我们的工作效率。在本文中编程学习网笔者就为大家介绍一些实用的histor
巧用history命令提高工作效率
2024-04-18

汇总display使用方法来提高工作效率

提升工作效率的display用法汇总随着科技的不断进步和信息技术的蓬勃发展,工作方式和环境也在不断地发生变化。在现代工作中,display(显示器)已成为我们最常用的工作工具之一。一个高质量的display不仅可以提供清晰的图像和文字显示
汇总display使用方法来提高工作效率
2024-02-02

如何使用Java MyBatis拦截器提高工作效率

小编给大家分享一下如何使用Java MyBatis拦截器提高工作效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!场景:在后端服务开发时,现在很流行的框架组合就是
2023-06-29

怎么使用redis提高缓存效率

以下是一些使用Redis提高缓存效率的方法:1. 设置合适的过期时间:在将数据存储到Redis缓存中时,可以为每个数据设置一个过期时间。这样可以确保缓存中的数据不会过期太快或太慢,从而提高缓存的效率。2. 使用合适的数据结构:Redis支持
2023-09-05

低代码工作流提高工作效率的新选择

在数字化时代,许多企业都在寻找更高效的工作方式。其中一种方法是通过使用低代码工作流来实现。低代码工作流是一种基于规则和流程自动化的技术,能够帮助企业实现自动化处理,从而提高工作效率。本文将详细介绍低代码工作流的概念、优势以及如何应用它。一、什么是低代码工作流?低代码工作流是一种基于规则和流程自动化的技术。它利用图
低代码工作流提高工作效率的新选择
2024-01-26

怎么使用RelProxy提高Java开发效率

本篇内容介绍了“怎么使用RelProxy提高Java开发效率”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!RelProxy 旨在通过下列两种
2023-06-17

提高效率的Vue指令怎么使用

这篇文章主要介绍“提高效率的Vue指令怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“提高效率的Vue指令怎么使用”文章能帮助大家解决问题。v-model相信大家对v-model并不陌生,简单
2023-07-05

CRM公文管理提高效率,提升工作质量

随着数字化转型的深入,企业越来越依赖CRM系统进行业务管理。公文管理是企业日常运营中不可或缺的一部分,也是CRM系统的重要功能之一。本文将详细介绍CRM公文管理的实现方式,以及如何利用CRM系统提高公文管理的效率和质量。正文:公文管理是企业日常运营中的一项重要工作,涉及到各种文件的接收、分类、分发、跟踪和存档等环
CRM公文管理提高效率,提升工作质量
2023-11-19

使用WEB工具快速提高Android开发效率

正所谓工欲善其事,必先利其器。学习并应用优秀的轮子,可以让我们跑的更快,走的更远。这里所指的工具是广义的,泛指能帮助我们开发的东西,或者能提高我们效率的东西,包括:开发工具,监测工具,第三方代码库等。 在Google的广大支持下,便捷开发A
2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录