abap帅哥
专注sap
展开
-
ABAP OPENSQL 语法积累
之前一直忽视了SQL的语法拓展,因为感觉没有HANA运用从数据库取数很慢,特别是加了点SQL操作更慢,接触了7.4 之后的版本有HNAN数据库,感觉SQL真的很快,并且有了新语法就不用取数据出来再进行循环处理了,数据量大的话反而慢了,与时俱进吧,多积累一点对于自己来说算是进步的新知识,能够提升效率。一, substring 在SQL中可以截取对应字段中数据的长度,也可以适用在WHERE条件中,目前感觉很方便。二,ltrim 同样可以用在WHERE 中,去前导零。原创 2022-09-09 08:37:19 · 387 阅读 · 0 评论 -
ABAP BDC代码
每次写BDC要去copy之前的PERFORM子程序,觉得不爽。。。。刚好最近学习使用了新语法,跟上一下时代,BDC代码就是往BDC的内表一条条复制,我不如直接用新语法,整齐直观。具体代码如下:SHDB录好屏了直接对着一个个填到VALUE中,对应的五个字段。“A” 显示所有输入屏幕,如果在 bdc_tab 中包含该屏幕的功能码,则会出现小窗口显示这个功能码。它也是默认值,如果指定不是下面的值,则都认为是 A。“E” 只有在出现错误时才显示屏幕,用户可以修正数据,修正后程序可以继续处理。“N” 不显示屏原创 2022-06-17 17:40:20 · 318 阅读 · 0 评论 -
SAP ABAP MOVE 及 CORRESPONDING 7.4版本新用法
从功能以及效果来分类说明吧,其实也算是新语法的一个对比解释了。当然对于以下演示都是基于内表操作来的,如果是工作区同理。1.MOVE-CORRESPONDING ITAB_A TO ITAB_B.隐式操作会把 B 清空 然后按字段名依次赋值 。7.4新语法:ITAB_B = CORRESPONDING #(ITAB_A) .2.MOVE-CORRESPONDING ITAB_A TO ITAB_B KEEPING TARGET LINES . ITAB_B = CORRESPO原创 2022-04-22 18:48:36 · 3113 阅读 · 0 评论 -
SAP ABAP 检查一行数据是否存在 (UP TO 1 ROWS 与 SELCET SINGE 浅析)
这与之前的一篇有点类似,但是这里想表达的是关于两个语法性能方面的问题,关于SINGE 和 UP TO X ROWS 的争论各执己见。检查数据库中某一行的数据存在SELECT SINGLE col FROM dbtab WHERE any_key INTO (field) ##warn_ok.IF sy-subrc = 0. …ENDIF.740 之后新语法可以把 ‘X’ 以及 文本 来替换数据库字段,以此隔断 DB原创 2022-04-22 11:56:06 · 2508 阅读 · 0 评论 -
ABAP SELECT SQL 判断是否存在
TABLES:XXXX.SELECT * FROM XXXX WHERE XXX = XXXIF SY-SUBRC = 0.ENDIF.这句判断一下EKKO表中有没有符合条件的数据,要提前声明这张表。还有另一种判断的语法,是聚合函数COUNT,计算数据数量的,用SUBRC判断也可以用另外一个字段判断,忘记了。。。。。。,也是SY-XXXX。SELECT COUNT(*) FROM XXXX WHERE XXX=XXXX“2022.3.29 更新sy-dbcnt 判断OUNT返回条数.原创 2021-12-12 18:34:16 · 2195 阅读 · 0 评论 -
ABAP 截取字符串
lv_1 = text+0(5). "取1-5个字符lv_1 = text+3(5). "取4-5个字符原创 2021-12-12 18:28:08 · 4020 阅读 · 0 评论 -
ABAP RANGES及比较符号
RANGES*选项介绍:*1.SIGN 值为 I 和 E 。 I是包含, E是排除, 一般使用I。2.OPTION 如果HIGH 为空 ,为单值选择 。有 EQ、NE、GT、LE、LT等逻辑操作 对于的 CP包含 NP是排除 如果HIGH 不为空 为区间选择 有BT,NB可选*3.LOW 低值*4.HIGH 高值lt:less than 小于le:less than or equal to 小于等于eq:equal to 等于ne:原创 2021-12-12 17:41:13 · 3392 阅读 · 1 评论 -
ABAP 语法新特性
表达式vs关键字ABAP是一门包含有大量关键字的语言。SAP似乎意识到了关键字过多带来的不便,在尝试着在近期的更新中引入更多表达式的写法。表达式的写法比关键字更加简洁、可读,推荐尽量使用表达式代替关键字,比如: "实例化对象 DATA(e_receiver) = NEW event_receiver( ). "推荐的写法 DATA e_receiver TYPE REF TO event_receiver. "不推荐的写法 CREATE OBJECT e_receiver. *调用.原创 2021-11-23 14:27:16 · 406 阅读 · 0 评论 -
ABAP SORT排序注意点
SORT TABLE BY XXX XXX 。如果不加任何语法都是默认升序,延伸可以用ASCENDING和DESCENDING对具体的字段进行升序和降序排列。简单通俗的来阐释一下,在字段名后面加ASC和DEC只能控制这个字段的排序,其他的还是默认。列如: SORT TABLE BY XXX DESCENDING XX 。这种情况下就是XXX降序 XX 就是升序。反之在表后面加就是控制整个表字段的排序,列如: SORT TABLE DESCENDING BY XXX XX 。这种情况下就是整原创 2021-06-17 12:02:19 · 7264 阅读 · 0 评论 -
ABAP TABLE CONTORLP中 FIELD(重新赋值) 注意事事项
今天被TABLE CONTROL 的LOOP 坑了一个小时,最后才注意到这个问题。在创建TABLE CONTROL 的时候 需要在逻辑流中PBO写一段LOOP 的语法。这个是没问题的,但是在PAI中需要对内表作处理的时候,继续写了一段LOOP,并且CHAIN 了表中多个字段.当我在修改下面这段逻辑时,发现了问题。LOOP AT LT_XXXX.CHAIN.FIELD XXXX-物料 MOUDLE XXX ON REQUEST.FIELD XXXX-XXFIELD XXXX-XXFI原创 2021-06-09 17:01:57 · 532 阅读 · 0 评论 -
另一种获取存储在HANA DB中的表中的记录数的方法
仍然使用旧方法SELECT COUNT(*)来获取存储在表中的记录总数吗?如果您使用的是HANA数据库,则可以使用另一种方法来实现。在HANA中,有一个元数据表m_tables存储相关信息:您可以在SAP帮助中找到其定义。您可以使用以下ABAP代码从ABAP服务器访问此HANA表:class CL_CRM_HOME_TABLE_SIZE_TOOL definition public final create public .public section. TYPES: B原创 2021-05-01 12:55:56 · 441 阅读 · 0 评论 -
ABAP 前导零操作
*补充前导零CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’EXPORTINGinput = p_inIMPORTINGoutput = p_in.*去除前导零CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_OUTPUT’EXPORTINGinput = p_outIMPORTINGoutput = p_out.注意字符类型一致!...原创 2021-05-12 17:10:20 · 1456 阅读 · 0 评论 -
ABAP SELECT 用法习惯
关于取数SELECT *FROM XXXINTO TABLE.大多数人我们用的是INTO ,但是这个语法有个隐式操作,会初始化整张表或工作区或字段。比如,前面取数完成了,我需要从另外的表继续捞数据放进同一张表,应该用APPEND追加数据 ,不然之前的数据都没了,SELECT *FROM XXXXAPPEND TABLE 。...原创 2021-05-12 16:53:54 · 1118 阅读 · 0 评论 -
ABAP CASE 用法
CASE 变量when 变量的值.when 变量的值.when 变量的值.OTHER WEHN .ENDCASE.为了避免出现不可控错误,最好加上 OTHER WHEN.原创 2021-04-27 19:38:42 · 3714 阅读 · 0 评论 -
abap SY-INDEX SY-TABIX
对这两个语法的解释:SY-INDEX:在DO…ENDO.里面有效,在LOOP AT…ENDLOOP.和READ TABLE里面无效。SY-TABIX: 在LOOP AT…ENDLOOP.和READ TABLE里面有效,在DO…ENDO里面无效。这是另外一个说法:sy-index 是系统变量,在sap系统里的描述是:Loop Index–>这里我理解loop仅仅是循环的意思,并不是sap abap中loop。也就是说sy-index只是记录程序当前循环的次数,但是,对于sap abap中的loo原创 2021-04-27 19:36:20 · 3836 阅读 · 0 评论 -
ABAP JOIN使用习惯
使用JOIN 时,两个表的字段都能作为查询条件,只要两个表有关联就OK 。SELECT*INTO CORRESPONDING FIELDS OF TABLE gt_alvFROM z06pmt0210aINNER JOIN z06pmt270 ON z06pmt0210a~wfnum = z06pmt270~wfnumWHERE z06pmt0210a~wfnum IN s_wfnumAND z06pmt0210a~iwerk IN s_iwerkAND z06pmt0..原创 2021-04-27 19:23:37 · 581 阅读 · 0 评论 -
ABAP READ TABEL使用习惯
关于这个语法怎么用,网上已经很全了,我只是记录自己的一些常用,用法不定期更新。1.READ TABLE itab INTO 工作区 INDEX 1.拿出第一行来进行操作。原创 2021-04-27 19:14:54 · 1632 阅读 · 0 评论 -
ABAP合计求和累加数据及COLLECT at new at end at first at last)
对于内表中有些数据需要进行一些合并求和的操作时,可以尝试用以下一些的语法进行逻辑处理。注意:1.使用AT 语法一定要先排序;2.在循环时要重新装进另一张表,不然数据会弄混。语法1. collect2.AT END OF3.AT NEW OF4.AT LSAT (FIRST) OF1. collectcollect 非数字字段内容相同的,将数字字段进行汇总。DATA: BEGIN OF seats,carrid TYPE sflight-carrid,connid TYPE原创 2021-04-27 19:10:26 · 4257 阅读 · 0 评论 -
ABAP BYPASSING BUFFER 及 表缓存,缓冲概念 SAP
缓存BUFFER,SE11数据库表的技术设置种能进行设置。使用缓冲表可以显着提高性能。例如在网页上视频中播放到一半,暂停,这时它将加载(缓冲)。因此,在这种情况下,视频已加载到浏览器/应用程序中,并且当您播放时,它不再从视频网站本身的服务器 (Server)中加载,而是直接从Application Server的缓冲区中播放。这样,您可以节省时间并获得更好的体验。ABAP表也使用这种缓冲概念,在SAP ABAP中称为表缓冲。接着介绍一下设置中的含义。从“缓冲权限”中选择一个单选按钮。不允原创 2021-01-29 10:35:39 · 2698 阅读 · 0 评论 -
ABAP SQL取最大值及聚合函数OUNT, AVG, MAX的简单例子 SAP
函数里面APEEND 内表之前要清理REFRESH内表SELECT ekko~bsartFROM ekkoUP TO 1 ROWSINTO lv_bsartWHERE ekko~ebeln = wa_zchgordi-mainkey.ENDSELECT.READ TABLE it_zchgmtd_tab TRANSPORTING NO FIELDS WITH KEY sel = ‘X’.原创 2021-01-28 20:13:40 · 4377 阅读 · 0 评论 -
ABAP 字符串操作 SAP
去空格 CONDENSE text [NO-GAPS].SAP 帮助文档的注意事项!数据对象文本必须是字符类型。如果数据对象具有固定长度,则压缩操作创建的任何空间都将在右侧填充空格(就是把字符往左边对齐)。如果数据对象的类型为string,则其长度将根据压缩操作的结果进行调整。 CONDENSE lv_num NO-GAPS .可以看到采购订单是C(50) 的长度,前面有空格填充,执行完成空格就会消除。再来看看STRING字符的处理效果,先定义一个结构,再把结构的值传入到STRING字符中.原创 2021-01-24 20:25:30 · 1197 阅读 · 0 评论 -
ABAP DESCRIBE TABLE itab [KIND knd] [LINES lin] [OCCURS n]
记录一下,DESCRIBE TABLE 的用法。根据F1帮助查看共有三种用法: KIND,LINES,OCCURS.此语句确定内表itab的某些属性,并将它们分配给指定的目标字段。1.首先来看一下KIND的使用,确定内部表itab的表类别。返回值是一个类似ID的单字符。在声明中,将声明一个长度为1的tye c变量。对于标准表,可能的id是“T”,对于排序表,可能的id是“S”,对于哈希表,可能的id是“H”。DATA : LW_KND TYPE CHAR1, lt_r原创 2021-01-17 17:09:39 · 1002 阅读 · 0 评论