如何判断传输请求是否已从导入缓冲区中删除?
判断传输请求是否已从导入缓冲区删除的编程实现
以下是两种可靠的实现方法:
方法1:直接查询导入缓冲区表TBATG
系统导入缓冲区的传输请求记录存储在表TBATG中,若指定请求不在该表内,即可判定它已从导入缓冲区删除。
示例ABAP代码:
DATA: lv_trkorr TYPE e070-trkorr VALUE 'YOUR_TR_NUMBER'. SELECT SINGLE trkorr FROM tbatg WHERE trkorr = lv_trkorr AND sysid = 'TARGET_SYSTEM_ID'. " 可选:指定目标系统,仅当前系统查询可省略 IF sy-subrc <> 0. WRITE: / '传输请求', lv_trkorr, '已从导入缓冲区删除'. ELSE. WRITE: / '传输请求', lv_trkorr, '仍在导入缓冲区中'. ENDIF.
方法2:使用函数模块TR_REQUESTS_IN_BUFFER
该函数模块会返回当前系统导入缓冲区中的所有传输请求列表,通过检查目标请求是否在列表中来判断状态。
示例ABAP代码:
DATA: lv_trkorr TYPE e070-trkorr VALUE 'YOUR_TR_NUMBER', lt_requests TYPE STANDARD TABLE OF trwbo_trkorr, ls_request TYPE trwbo_trkorr. CALL FUNCTION 'TR_REQUESTS_IN_BUFFER' TABLES requests = lt_requests. READ TABLE lt_requests INTO ls_request WITH KEY trkorr = lv_trkorr. IF sy-subrc <> 0. WRITE: / '传输请求', lv_trkorr, '已从导入缓冲区删除'. ELSE. WRITE: / '传输请求', lv_trkorr, '仍在导入缓冲区中'. ENDIF.
补充说明
- E070、E071等表存储的是传输请求的基础定义和历史变更记录,无论请求是否在导入缓冲区都会保留,因此无法用于判断缓冲区状态。
TR_READ_GLOBAL_INFO_OF_REQUEST仅返回请求的全局属性、导入步骤等信息,不包含缓冲区的存在状态。
内容的提问来源于stack exchange,提问作者Cutter
相关产品推荐
相关产品推荐

