ABAP开发遇到的小问题-LIJQ

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ABAP开发遇到的⼩问题-LIJQ
索引
1.在报表程序中,对屏幕字段进⾏检查提⽰错误时 (1)
2. SAP部分快捷键 (2)
3.时间戳转换 (2)
4.表控制中对列显⽰模式控制 (2)
5.代码效率括号的使⽤ (3)
6.时间区间处理 (3)
7.数学函数的应⽤ (4)
8.通过表格维护⽣成器维护视图 (5)
9.报表代码中快速隐藏报表屏幕字段 (10)
10.视图定义中CLIENT的问题 (11)
11.内存存储数据对象的应⽤ (14)
12.CALL FUNCTION func IN UPDATE TASK定义及注意点 (16)
13.FILE分配物理路径到逻辑路径 (17)
1.在报表程序中,对屏幕字段进⾏检查提⽰错误时
AT SELECTION-SCREEN.
* check the search parameters
PERFORM PARAMETER_CHECK CHANGING P_CHECK.
START-OF-SELECTION.
CHECK P_CHECK = 'X'.
1 如上写法可以在perform中输出message e/i 等错误信息.清空检查标识P_CHECK.将程序停⽌在录⼊窗⼝,⽽不返回SE38界⾯.
2 或者将判断语句和EXIT. 直接放在START-OF-SELECTION.下⾯,EXIT.不在perofrm⾥,也⼀样
或者如下:
START-OF-SELECTION.
IF s_tcode[] IS INITIAL.
MESSAGE s000(oo) WITH '请输⼊需要锁定/解锁的T-CODE' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
2. SAP部分快捷键
Ctrl+“.”和紫光输⼊法v6.5有冲突,是输⼊法中英⽂标点切换键,导致取消注释快捷键失效Ctrl+y -> Ctrl+c 在ALV表格内复制某⾏的某⼀字段
⼀次性注释多⾏先选中要注释代码⾏,然后按Ctrl+“,”
⼀次性去掉多⾏注释先选中要去掉的注释⾏,然后按Ctrl+“.”
新增会话窗⼝1 Ctrl+Shift+'+'
新增会话窗⼝2 /o+TCode
快速调整字体⼤⼩Ctrl +⿏标滚轮
剪切⼀⾏Ctrl + Shift + X
删除⼀⾏Ctrl + Shift + L
复制⼀⾏Ctrl + D 或Ctrl + Shift + T
转成⼩写Ctrl + L
转成⼤写Ctrl + U
⼤⼩写相互转换Ctrl + K
取消Ctrl + Z
重做Ctrl + Y
gui710_patch_16 点IF LOOP CASE 等可以⾼亮显⽰这个语句块,但是gui710_patch_17貌似不能⾼亮显⽰,⽤起有点不⽅便.
3.时间戳转换
GET TIME STAMP FIELD LV_CUR_TSTAMP . "等同于FM: TZ_TIMEFIELD_SINGLE_INPUT 当TIMEZONE = LV_TZ
即'AUSWA'时
data:lv_created_date type sy-datum.
CONVERT TIME STAMP iv_created_at TIME ZONE sy-zonlo
INTO DATE lv_created_date.
FM:时间戳和⽇期时间间的相互转换
IB_CONVERT_FROM_TIMESTAMP
IB_CONVERT_INTO_TIMESTAMP
4.表控制中对列显⽰模式控制
* Table-control
CONTROLS textp TYPE TABLEVIEW USING SCREEN 330.
DATA: ls_col LIKE LINE OF textp-cols.
LOOP AT textp-cols INTO ls_col WHERE screen-name = 'RIBOF-DEVICEID'.
ls_col-screen-input = 0. "不能输⼊
MODIFY textp-cols FROM ls_col.
ENDLOOP.
在屏幕上直接控制字段的显⽰输⼊属性更快捷
5.代码效率括号的使⽤
a. WHERE orgunit = gt_orgunit-orgunit AND
( process_status = '1' AND
process_date <= sy-datum OR
process_status = '5' AND
reprocess_date <= lv_current_time ) .
b. WHERE orgunit = gt_orgunit-orgunit AND
( ( process_status = '1' AND
process_date <= sy-datum ) OR
( process_status = '5' AND
reprocess_date <= lv_current_time ) ) .
a段代码远⾼于b段代码执⾏效率
6.时间区间处理
如果为时间区间没有扩展时,如果没有high值时的处理
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001. SELECT-OPTIONS : pro_date FOR sy-datum NO-EXTENSION OBLIGATORY. SELECTION-SCREEN END OF BLOCK b1.
IF pro_date-high IS INITIAL.
LOOP AT pro_date.
pro_date-high = pro_date-low.
pro_date-option = 'BT'. "输⼊区间后,option⼀定改成BT
MODIFY pro_date.
ENDLOOP.
ENDIF.
区间表字段包含⼀下字段:
SIGN“‘I’‘E’
PTION “‘ EQ’‘BT’
LOW
HIGH
7.数学函数的应⽤
所有数值数据类型的函数
以下内部函数使⽤所有三种数值数据类型(F、I 和P)作为参数。

所有数值数据类型的函数
函数结果
ABS 参数的绝对值。

SIGN参数符号:1 X > 0
SIGN( X) = 0 if X = 0
-1 X < 0
CEIL 不⼩于参数的最⼩整数值。

FLOOR 不⼤于参数的最⼤整数值。

TRUNC 参数的整数部分。

FRAC 参数的分数部分。

范例:
DATA n TYPE p DECIMALS2.
DATA m TYPE p DECIMALS2VALUE'-5.55'.
n = ABS( m ). WRITE: 'ABS: ', n.
n = SIGN( m ). WRITE: / 'SIGN: ', n.
n = CEIL( m ). WRITE: / 'CEIL: ', n.
n = FLOOR( m ). WRITE: / 'FLOOR:', n.
n = TRUNC( m ). WRITE: / 'TRUNC:', n.
n = FRAC( m ). WRITE: / 'FRAC: ', n.
*输出如下:
*ABS: 5.55
*SIGN: 1.00-
*CEIL: 5.00-
*FLOOR: 6.00-
*TRUNC: 5.00-
*FRAC: 0.55-
8.通过表格维护⽣成器维护视图
该实例可参照:
/doc/3fc4912058fb770bf78a558b.html /Tutorials/ABAP/Viewcluster/Create.htm 1 SE11 ⾃建表格
2 创建视图
红⾊部分为的是后⾯显⽰的时候可以把主键显⽰在最上⾯. 实例中ZZV1220设置同上, ZZV1219 和ZZV1222⽆需此设置3
4 SE54
选第⼀⾏ZZV1222 ,双击左侧字段附属
后两个类似.
配置好后,激活.
5 SM34或通过SE93分配T-CODE
填加屏幕字段
保存后,即可通过T-CODE来维护视图了。

左⾯四项分别对应ZZV1222 ZZV1223 ; ZZV1219 ZZV1220 每两个分别为上下级关系当前右⾯显⽰数据为ZZV1222对应系统表中数据
右⾯选⼀⾏,左⾯双击,
右⾯显⽰的为ZZV1223对应系统表中的数据,并且将上⼀级的数据带到下级屏幕中. ( 这⾥就是因为在创建视图时P列选择
的‘S’视图被⽤于格式⼦集)
9.报表代码中快速隐藏报表屏幕字段
LOOP AT SCREEN.
IF
screen-name = '%_S_TBJID_%_APP_%-TEXT'
* OR screen-name = 'S_TBJID-LOW'
* OR screen-name = 'S_TBJID-HIGH'
* OR screen-name = '%_S_TBJID_%_APP_%-TO_TEXT'
* OR screen-name = '%_S_TBJID_%_APP_%-VALU_PUSH' .
screen-name CP'*S_TBJID*'.“可⽤通配符来代替上⾯的代码
screen-invisible = 1.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
10.视图定义中CLIENT的问题
在创建视图关联表时,如果没有指定客户端,或客户端字段没有放到视图第⼀⾏,则,视图提取的数据将跨客户端.(当前客户端为200)
关联字段中指定关联字段
当视图字段没有放MANDT或不在第⼀⾏时,
将MANDT字段放到第⼀⾏,则查询结果只为当前客户端数据
11.内存存储数据对象的应⽤
程序 A 中,将数据存储到内存
程序 B 中,将数据从内存中读取使⽤
读取
12.CALL FUNCTION func IN UPDATE TASK定义及注意点
SM13 SM14 可以查看调⽤错误结果,参考
CALL FUNCTION 'ZCRM_REDUCE_TIERSPOINT' IN UPDATE TASK EXPORTING
lv_partner_guid = lv_partner_guid
lv_net_value = ls_cumulat_h-net_value
lv_process_type = 'ZRE1'.
如果上⾯Pass Value 不勾选,在激活时,会出现如下错误提⽰:
ZH:“参考参数在更新任务中不允许”
EN:"Reference parameters are not allowed in the update task".
在代码中不能有COMMIT WORK 语句,因为该函数就是在调⽤程序的commit 时才实际执⾏.另:RFC 函数定义时Pass Value 也必须勾选
13.FILE分配物理路径到逻辑路径
T-CODE: FILE 数据存储表:PATH
注意:UNIX实际路径区分⼤⼩写。

相关文档
最新文档