SAP ABAP开发,关于SORT ITAB的问题,关于CALL FUNCTION 'XXXX' IN BACKGROUND TASK的使用问题
2026-01-14 18:17 覆盆子 阅读(2) 评论(0) 收藏 举报1.关于SORT ITAB
SORT ITAB如果没有标注倒序DESCENDING,则都表示正序
SORT ITAB BY F1 F2 F3 DESCENDING.并不是表示F1&F2&F3倒序,而是F2和F2正序,F3倒序
如果要所有字段都倒序,那么SORT ITAB BY F1 DESCENDING F2 DESCENDING F3 DESCENDING.,这样写的结果是先对F1倒序,如果F1相同,则对F2倒序,F2如果相同,则对F3倒序
2.关于CALL FUNCTION 'RFC1' IN BACKGROUND TASK
需求:这次的需求是在一个RFC接口里的最后增加一个CALL FUNCTION 'FUN1'的功能,而FUN1中的取值依赖于RFC2的更新。
而RFC1原本是在RFC最后通过CALL FUNCTION 'RFC1' IN BACKGROUND TASK来执行的,也就是在CALL FUNCTION 'RFC1' IN BACKGROUND TASK后的COMMIT WORK AND WAIT后增加一个CALL FUNCTION 'FUN1'的功能
设计:原本的计划是在CALL FUNCTION 'RFC1' IN BACKGROUND TASK后(其后原本就有COMMIT WORK AND WAIT),在调用FUN1里做一个取数的等待,
即DO循环10次,每次取不到就WAIT UP TO 1 SECONDS。
确认原本RFC1执行不会超过1S,想着等10S足够了吧
问题:结果在执行时发现外部系统调用接口RFC时FUN1怎么都无法正常执行,而我们自己通过POSTMAN或者直接DEBUG RFC时一点问题没有,FUN1跑的飞起
当将等待时长演唱至50S时,原本1秒就能跑完的RFC1居然跑了50S,LOG明明确确记录了执行市场49.8S,而FUN1依然没有更新记录(由于客户要求,数据更新只是在FUN1最后更新的,至于更新前是不是有问题只能通过DEBUG检查,但检查一点问题没有)
真的是很奇怪
解决办法:最后实在没功夫研究RFC1为什么会执行这么久了,就直接把FUN1写到了RFC1里面的最后,问题才解决
问题原因至今不得而知,猜测RFC1的执行强以来于RFC的执行,只有RFC执行完了RFC1才会启动,但现在无法验证,以后有机会再研究吧
浙公网安备 33010602011771号