ABAP: Tabele wewnętrzne

Możemy pobrać dane z bazy za pomocą select ... into obszar roboczy / tabela wewnętrzna

Pobrane dane są reprezentowane w pamięci jako:
- wartość jednej zmiennej
- obszar roboczy
- tabela wewnętrzna (może przechowywać rekordy)

 

REPORT  ZGAMETEST1.

*-----------deklarujemy użycie tabeli systemowej

tables vbak.

*-----------deklarujemy zmienną typu i (Integer) o nazwie dv_licz

data gv_licz type i.


select * FROM vbak.

endselect.
 

*-----------wyświetlam zawartość obaszaru roboczego
select * FROM vbak.
  write :/ vbak-vbeln.
endselect.

 

*-----------tak nie powinno się pisać, ale to tylko przykład :)
WHERE auart = 'TA'.

select * FROM vbak WHERE auart = 'TA'.
  gv_licz = gv_licz + 1.

*-----------wyświetlam zawartość obszaru roboczego
  write :/ vbak-vbeln.
endselect.

*-----------wypiszemy na końcu ile elementów zostało wybranych

write gv_licz.

 

 


REPORT  ZGAMETEST2.
tables vbak.
data gv_licz type i.

DATA: IT_VBAK TYPE STANDARD TABLE OF VBAK WITH HEADER LINE.

DATA: IT_VBAK1 TYPE STANDARD TABLE OF VBAK.
*GS - global structure WA - work area
DATA: WA_VBAK1 TYPE VBAK.

PARAMETERS : PA_RODZ type VBAK-AUART.

SELECT-OPTIONS : S0_VBELN FOR VBAK-VBELN.

select * FROM vbak INTO table IT_VBAK  WHERE auart = PA_RODZ
                          AND VBELN IN SO_VBELN.

LOOP AT IT_VBAK into WA_VBAK1
*zatrzyma każdego
  BREAK-POINT.
*zatrzyma tylko nas
  break GAMEMAKER.
 
 
  WRITE : WA_VBAK1-VBELN

ENDLOOP.