MAKRO

DEFINE MAKRO_PUFFERVAR.
DATA: GT_PUFFER_&1 LIKE &1 OCCURS 1, "Puffer f黵 Lese-Zugriffe
GT_FAILED_&1 LIKE &1 OCCURS 1. "Puffer f黵 fehlgeschlagenen ...
END-OF-DEFINITION.

DEFINE MAKRO_DBTAB_LESEN0.

TABLES &1.
DATA: f_lines TYPE i.

DESCRIBE table GT_PUFFER_&1 LINES f_lines.
if ( f_lines > 1000 ).
CLEAR GT_PUFFER_&1.
REFRESH GT_PUFFER_&1.
ENDIF.

IF ( I_BUFFER_ON = SPACE ).

* ungepufferter Zugriff
SELECT SINGLE * FROM &1
INTO E_&1.
IF ( SY-SUBRC <> 0 ).
MESSAGE E100 WITH '&1' '' '' ''
RAISING ENTRY_NOT_FOUND.
ENDIF.

ELSE.

* Eintrag im (sortierten!) Puffer suchen
READ TABLE GT_PUFFER_&1
INTO E_&1
INDEX 1.
IF ( SY-SUBRC = 0 ). "Eintrag im Puffer -> fertig
.
ELSE. "Eintrag nicht im Puffer
* wurde Eintrag bereits vergebens gelesen?
READ TABLE GT_FAILED_&1 TRANSPORTING NO FIELDS
INDEX 1.
IF ( SY-SUBRC = 0 ). "ja
MESSAGE E100 WITH '&1' '' '' ''
RAISING ENTRY_NOT_FOUND.
ELSE. "nein
* Eintrag direkt von DB lesen
SELECT SINGLE * FROM &1
INTO E_&1.
IF ( SY-SUBRC <> 0 ). "Eintrag nicht in DB vorhanden
APPEND E_&1 TO GT_FAILED_&1.
MESSAGE E100 WITH '&1' '' '' ''
RAISING ENTRY_NOT_FOUND.
ELSE. "Eintrag auf DB vorhanden
APPEND E_&1 TO GT_PUFFER_&1.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

END-OF-DEFINITION.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值