Вы находитесь на странице: 1из 18

Tipul si obiectul de data Tabelul intern

*&---------------------------------------------------------------------*
*& Report Y_PRC_08
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_08.
DATA: BEGIN OF ls_tab,
col1 TYPE i,
col2 TYPE i,
col3 TYPE i,
END OF ls_tab.
DATA: it_tab LIKE STANDARD TABLE OF ls_tab.
DO 4 TIMES.
ls_tab-col1 = sy-index.
ls_tab-col2 = sy-index ** 2.
ls_tab-col3 = sy-index ** 3.
APPEND ls_tab TO it_tab.
ENDDO.
START-OF-SELECTION.
LOOP AT it_tab INTO ls_tab.
WRITE: / ls_tab-col1, ls_tab-col2, ls_tab-col3.
ENDLOOP.
Tabel intern cu symbol de camp
*&---------------------------------------------------------------------*
*& Report Y_PRC_09
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_09.
DATA: BEGIN OF ls_tab,
col1 TYPE i,

col2 TYPE i,
col3 TYPE i,
END OF ls_tab.
DATA it_tab LIKE STANDARD TABLE OF ls_tab.
FIELD-SYMBOLS <wa_tab> LIKE ls_tab.
ASSIGN ls_tab TO <wa_tab>.
DO 4 TIMES.
<wa_tab>-col1 = sy-index.
<wa_tab>-col2 = sy-index ** 2.
<wa_tab>-col3 = sy-index ** 3.
APPEND <wa_tab> TO it_tab.
ENDDO.
START-OF-SELECTION.
LOOP AT it_tab ASSIGNING <wa_tab>.
WRITE: / <wa_tab>-col1, <wa_tab>-col2, <wa_tab>-col3.
ENDLOOP.
Tabel intern si ecran de selectie
*&---------------------------------------------------------------------*
*& Report Y_PRC_10
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_10.
PARAMETERS linii TYPE i.
DATA: BEGIN OF ls_tab,
col1 TYPE i,
col2 TYPE i,
col3 TYPE i,
END OF ls_tab.
DATA it_tab LIKE STANDARD TABLE OF ls_tab.
FIELD-SYMBOLS <wa_tab> LIKE ls_tab.
ASSIGN ls_tab TO <wa_tab>.
DO linii TIMES.
<wa_tab>-col1 = sy-index.

<wa_tab>-col2 = sy-index ** 2.
<wa_tab>-col3 = sy-index ** 3.
APPEND <wa_tab> TO it_tab.
ENDDO.
START-OF-SELECTION.
LOOP AT it_tab ASSIGNING <wa_tab>.
WRITE: / <wa_tab>-col1, <wa_tab>-col2, <wa_tab>-col3.
ENDLOOP.
Data din ultima zi a lunii anterioare
*&---------------------------------------------------------------------*
*& Report Y_PRC_11
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_11.
DATA: rezultat TYPE c LENGTH 15,
d_zi TYPE d.
d_zi = sy-datum.
d_zi+6(2) = '01'.
d_zi = d_zi - 1.
WRITE d_zi TO rezultat.
START-OF-SELECTION.
WRITE d_zi.
MESSAGE rezultat TYPE 'I'.
SQL CU WA (workarea)
*&---------------------------------------------------------------------*
*& Report Y_PRC_11_SQL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_11_sql.

TYPES: BEGIN OF st_spfli,


carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.
DATA: it_spfli TYPE TABLE OF st_spfli,
wa_spfli LIKE LINE OF it_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
*& INTO CORRESPONDING FIELDS OF wa_spfli
INTO wa_spfli
WHERE carrid = 'LH'.
APPEND wa_spfli TO it_spfli.
ENDSELECT.
LOOP AT it_spfli INTO wa_spfli.
WRITE: /
wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto,
wa_spfli-dist,
wa_spfli-unit.
ENDLOOP.
SQL where DINAMIC (input)
*&---------------------------------------------------------------------*
*& Report Y_PRC_12
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Y_PRC_12.
PARAMETERS p_carrid TYPE spfli-carrid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.
DATA: it_spfli TYPE TABLE OF st_spfli,
wa_spfli LIKE LINE OF it_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
*& INTO CORRESPONDING FIELDS OF wa_spfli
INTO wa_spfli
WHERE carrid = p_carrid.
APPEND wa_spfli TO it_spfli.
ENDSELECT.
LOOP AT it_spfli INTO wa_spfli.
WRITE: /
wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto,
wa_spfli-dist,
wa_spfli-unit.
ENDLOOP.
SQL ARRAY FETCH
*&---------------------------------------------------------------------*
*& Report Y_PRC_13
*&

*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Y_PRC_13.
PARAMETERS p_carrid TYPE spfli-carrid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.
DATA: it_spfli TYPE TABLE OF st_spfli,
wa_spfli LIKE LINE OF it_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop
*& tehnica array fetch::
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
INTO TABLE it_spfli
WHERE carrid = p_carrid.
LOOP AT it_spfli INTO wa_spfli.
WRITE: /
wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto,
wa_spfli-dist,
wa_spfli-unit.
ENDLOOP.

Field SYMBOLS
*&---------------------------------------------------------------------*
*& Report Y_PRC_14
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_14.
PARAMETERS p_carrid TYPE spfli-carrid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.
DATA: it_spfli TYPE TABLE OF st_spfli.
FIELD-SYMBOLS <wa_spfli> TYPE st_spfli.
* wa_spfli LIKE LINE OF it_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
INTO TABLE it_spfli
WHERE carrid = p_carrid.
LOOP AT it_spfli ASSIGNING <wa_spfli>.
WRITE: /
<wa_spfli>-carrid,
<wa_spfli>-connid,
<wa_spfli>-cityfrom,
<wa_spfli>-cityto,
<wa_spfli>-dist,
<wa_spfli>-unit.

ENDLOOP.
2 parametrii (input)
*&---------------------------------------------------------------------*
*& Report Y_PRC_15
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Y_PRC_15.
PARAMETERS: p_carrid TYPE spfli-carrid,
p_connid TYPE spfli-connid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.

DATA: it_spfli TYPE TABLE OF st_spfli.


FIELD-SYMBOLS <wa_spfli> TYPE st_spfli.
* wa_spfli LIKE LINE OF it_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
INTO TABLE it_spfli
WHERE carrid = p_carrid
AND connid = p_connid.
LOOP AT it_spfli ASSIGNING <wa_spfli>.
WRITE: /
<wa_spfli>-carrid,

<wa_spfli>-connid,
<wa_spfli>-cityfrom,
<wa_spfli>-cityto,
<wa_spfli>-dist,
<wa_spfli>-unit.
ENDLOOP.
TABEL IT MODIFICAT
*&---------------------------------------------------------------------*
*& Report Y_PRC_16
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Y_PRC_16.
PARAMETERS p_carrid TYPE spfli-carrid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.

DATA: it_spfli TYPE TABLE OF st_spfli.


FIELD-SYMBOLS <wa_spfli> TYPE st_spfli.
* wa_spfli LIKE LINE OF it_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
INTO TABLE it_spfli
WHERE carrid = p_carrid.

LOOP AT it_spfli ASSIGNING <wa_spfli>.


IF <wa_spfli>-unit = 'MI'.
<wa_spfli>-dist = <wa_spfli>-dist * '1.609344'.
<wa_spfli>-unit = 'KM'.
ENDIF.
WRITE: /
<wa_spfli>-carrid,
<wa_spfli>-connid,
<wa_spfli>-cityfrom,
<wa_spfli>-cityto,
<wa_spfli>-dist,
<wa_spfli>-unit.
ENDLOOP.
SELECT IMBRICAT
*&---------------------------------------------------------------------*
*& Report Y_PRC_17
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_17.
PARAMETERS: p_carrid TYPE sflight-carrid,
p_connid TYPE sflight-connid.
TYPES: BEGIN OF st_mixtdata,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
cityto TYPE spfli-cityto,
fldate TYPE sflight-fldate,
currency TYPE sflight-currency,
END OF st_mixtdata.
DATA: it_mixtdata TYPE TABLE OF st_mixtdata,
wa_mixtdata LIKE LINE OF it_mixtdata.
SELECT carrid carrname
FROM scarr
INTO CORRESPONDING FIELDS OF wa_mixtdata
WHERE carrid = p_carrid.

SELECT connid cityto


FROM spfli
INTO CORRESPONDING FIELDS OF wa_mixtdata
WHERE carrid = p_carrid
AND connid = p_connid.
SELECT fldate currency
FROM sflight
INTO CORRESPONDING FIELDS OF wa_mixtdata
WHERE carrid = p_carrid
AND connid = p_connid.
APPEND wa_mixtdata TO it_mixtdata.
ENDSELECT.
ENDSELECT.
ENDSELECT.
LOOP AT it_mixtdata INTO wa_mixtdata.
WRITE: /
wa_mixtdata-carrid,
wa_mixtdata-carrname,
wa_mixtdata-connid,
wa_mixtdata-cityto,
wa_mixtdata-fldate,
wa_mixtdata-currency.
ENDLOOP.
SELECT CU JOIN
*&---------------------------------------------------------------------*
*& Report Y_PRC_18
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_18.
PARAMETERS: p_carrid TYPE sflight-carrid,
p_connid TYPE sflight-connid.

*TYPES: BEGIN OF st_mixtdata,


* carrid TYPE scarr-carrid,
* carrname TYPE scarr-carrname,
* connid TYPE spfli-connid,
* cityto TYPE spfli-cityto,
* fldate TYPE sflight-fldate,
* currency TYPE sflight-currency,
* END OF st_mixtdata.
*yst_mixtdata structura globala
DATA: it_mixtdata TYPE TABLE OF yst_mixtdata,
wa_mixtdata LIKE LINE OF it_mixtdata.
*SELECT alias1~nume_coloana1 alias2~nume_coloana2?.
*
FROM dbtab_left AS alias1 [INNER] JOIN dbtab_right AS alias2 ON
*cond...
SELECT a~carrid a~carrname b~connid b~cityto c~fldate c~currency
FROM ( ( scarr AS a INNER JOIN spfli AS b ON b~carrid = a~carrid )
INNER JOIN sflight AS c ON c~carrid = b~carrid AND c~connid =
b~connid )
*ARRAY FETCH
INTO TABLE it_mixtdata
WHERE c~carrid = p_carrid AND c~connid = p_connid.
loop at it_mixtdata INTO wa_mixtdata.
WRITE: /
wa_mixtdata-carrid,
wa_mixtdata-carrname,
wa_mixtdata-connid,
wa_mixtdata-cityto,
wa_mixtdata-fldate,
wa_mixtdata-currency.
ENDLOOP.
PRELUCRARE DATE CU VARIABILA REFERINTA
*&---------------------------------------------------------------------*
*& Report Y_PRC_19
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT y_prc_19.
PARAMETERS p_carrid TYPE spfli-carrid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.
DATA: it_spfli TYPE TABLE OF st_spfli.
FIELD-SYMBOLS <wa_spfli> TYPE st_spfli.
* wa_spfli LIKE LINE OF it_spfli.
DATA dref TYPE REF TO st_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
INTO TABLE it_spfli
WHERE carrid = p_carrid.
LOOP AT it_spfli REFERENCE INTO dref.
WRITE: /
dref->carrid,
dref->connid,
dref->cityfrom,
dref->cityto,
dref->dist,
dref->unit.
ENDLOOP.
CREARE DINAMICA A UNUI TABEL INTERN
*&---------------------------------------------------------------------*
*& Report Y_PRC_21
*&
*&---------------------------------------------------------------------*

*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_21.
PARAMETERS p_carrid TYPE spfli-carrid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.
*DATA: it_spfli TYPE TABLE OF st_spfli.
TYPES it_spfli TYPE TABLE OF st_spfli.
DATA dref TYPE REF TO data.
CREATE DATA dref TYPE it_spfli.
FIELD-SYMBOLS: <it_spfli> TYPE table,
<wa_spfli> TYPE st_spfli.
ASSIGN dref->* TO <it_spfli>.
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
INTO TABLE <it_spfli>
WHERE carrid = p_carrid.
LOOP AT <it_spfli> ASSIGNING <wa_spfli>.
WRITE: /
<wa_spfli>-carrid,
<wa_spfli>-connid,
<wa_spfli>-cityfrom,
<wa_spfli>-cityto,
<wa_spfli>-dist,
<wa_spfli>-unit.
ENDLOOP.
SUBRUTINA FARA PARAMETRII
*&---------------------------------------------------------------------*
*& Report Y_PRC_22

*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_22.
PARAMETERS p_carrid TYPE spfli-carrid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.
DATA: it_spfli TYPE TABLE OF st_spfli,
wa_spfli LIKE LINE OF it_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop
START-OF-SELECTION.
PERFORM select_data.
PERFORM write_data.
*&---------------------------------------------------------------------*
*&
Form select_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM select_data.
*& tehnica array fetch::
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
INTO TABLE it_spfli
WHERE carrid = p_carrid.
ENDFORM.
"select_data

*&---------------------------------------------------------------------*
*&
Form write_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM write_data.
LOOP AT it_spfli INTO wa_spfli.
WRITE: /
wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto,
wa_spfli-dist,
wa_spfli-unit.
ENDLOOP.
ENDFORM.
"write_data
SUBRUTINA CU PARAMETRII
*&---------------------------------------------------------------------*
*& Report Y_PRC_23
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prc_23.
PARAMETERS p_carrid TYPE spfli-carrid.
TYPES: BEGIN OF st_spfli,
carrid TYPE s_carr_id,
*& se poate si cu field name ... (jos)
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
*& nu vor fi afisate daca se foloseste CORRESPONDING FIELDS OF
dist TYPE spfli-distance,
unit TYPE spfli-distid,
END OF st_spfli.
DATA it_spfli TYPE TABLE OF st_spfli.
*& daca definim structura de baza de tip DATA nu mai e nevoie de WA
*& pentru ca o putem folosi in acest scop

START-OF-SELECTION.
PERFORM select_data USING p_carrid
CHANGING it_spfli.
PERFORM write_data USING it_spfli.
*&---------------------------------------------------------------------*
*&
Form select_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM select_data USING im_carrid TYPE spfli-carrid
CHANGING ex_it_spfli TYPE ANY TABLE.
*& tehnica array fetch::
SELECT carrid connid cityfrom cityto distance distid
FROM spfli
INTO TABLE ex_it_spfli
WHERE carrid = im_carrid.
ENDFORM.
"select_data
*&---------------------------------------------------------------------*
*&
Form write_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM write_data USING im_it_spfli TYPE ANY TABLE.
DATA wa_spfli LIKE LINE OF it_spfli.
LOOP AT im_it_spfli INTO wa_spfli.
WRITE: /
wa_spfli-carrid,
wa_spfli-connid,
wa_spfli-cityfrom,
wa_spfli-cityto,
wa_spfli-dist,
wa_spfli-unit.
ENDLOOP.
ENDFORM.
"write_data
APEL MODULE FUNCTIONALE
*&---------------------------------------------------------------------*
*& Report Y_PRC_24
*&
*&---------------------------------------------------------------------*
*&
*&

*&---------------------------------------------------------------------*
REPORT y_prc_24.
SELECTION-SCREEN BEGIN OF SCREEN 100.
PARAMETERS p_carrid TYPE spfli-carrid.
SELECTION-SCREEN END OF SCREEN 100.
DATA it_spfli TYPE spfli_tab.
START-OF-SELECTION.
CALL SELECTION-SCREEN 100
STARTING AT 10 10.
IF sy-subrc = 0.
TRY.
CALL FUNCTION 'Y_SELECT' EXPORTING im_carrid = p_carrid CHANGING
ex_it_spfli = it_spfli.
CALL FUNCTION 'Y_WRITE' EXPORTING im_it_spfli = it_spfli.
CATCH ZCX_NO_FLIGHT.
MESSAGE 'Nu exista zbor!' TYPE 'I'.
ENDTRY.
ELSE.
RETURN.
ENDIF.

Вам также может понравиться