在第一次调用函数模块的时候,会把整个函数组放入内存,而且在程序执行的期间不会释放,这就导致全局变量会一直存在直到你去显式的改变它,所以需要特别注意全局变量的清空。
如何在函数组第一次调用的时候设置断点呢?使用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.