ABAP 零碎知识3

作者:ABAP老白 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, SD, 开发, 数据工程, 销售分销

在第一次调用函数模块的时候,会把整个函数组放入内存,而且在程序执行的期间不会释放,这就导致全局变量会一直存在直到你去显式的改变它,所以需要特别注意全局变量的清空。

如何在函数组第一次调用的时候设置断点呢?使用LOAD-OF-PROGRAM事件。

精确到微秒的时间戳:DATA:tsl TYPE timestampl,tsstr TYPE string. GET TIME STAMP FIELD

tsl. tsstr = |{ tsl TIMEZONE = 'UTC+8 ' }|. WRITE tsstr.

无列名的单列内表:

DATA: itab TYPE TABLE OF matnr WITH HEADER LINE.
使用:READ TABLE itab WITH KEY table_line = ''.

检查程序在哪些Job中用到: 表:V_OP,字段:PROGNAME

三大代码样例集散地Tcode:ABAPDOCU、DWDM、BIBS

Modern ABAP关于字符串的新语法:

str2 = substring_after( val = str sub = '.' occ = count( val = str sub = '.' )

).

str = substring_before( val = '1111-2222-3333' sub = '-' occ = 2 ).

str = translate( val = translate( val = str from = |\t| to = '' ) from =

|\r\n| to = '' ). 去掉制表符、回车换行

如果str最后一个有效字符是*,则删掉这个*,否则不删。

IF substring( val = str off = strlen( str ) - 1 len = 1 ) = '*'.

str = substring( val = str len = strlen( str ) - 1 ) .

ENDIF.

更简洁的写法:str = shift_right( val = str sub = |*| ).

Modern ABAP开始支持LOOP的Where条件动态:

LOOP AT itab WHERE (stt).

WRITE itab.

ENDLOOP.

使用FTP_R3_TO_SERVER时,如果文本内汉字上传后有乱码,把文本文件转换成FTP编码格式的二进制文件,然后FTP_R3_TO_SERVER用BOLB方式。

用BAPI生成/修改PO/SO,然后紧接着使用BAPI_OUTB_DELIVERY_CREATE_STO/BAPI_OUTB_DELIVERY_CREATE_SLS来生成交货单,就会出现很多莫名其妙的错误。

原因是因为没有清空函数的全局变量,暂时的解决方案可以用DESTINATION 'NONE'。

或者另一个解决方案:

FIELD-SYMBOLS <fs>.

ASSIGN ('(SAPLME03)GT_EKET_DOC[]') to <fs>.

IF sy-subrc = 0.

CLEAR <fs>.

ENDIF.
ABAP 零碎知识3 - 封面图
ABAP 零碎知识3 - 封面图
ABAP老白

关于作者:ABAP老白

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP零碎知识3.md」整理生成,仅用于内部技术分享与学习交流。