REPORT ytest_cds01.
PERFORM frm_innter_table.
PERFORM frm_cdsview.
PERFORM frm_fliter.
PERFORM frm_reduce.
* 测试没通过,
*cl_salv_gui_table_ida=>create_for_cds_view( iv_cds_view_name = 'ydemo_c_rstatus' )->fullscreen()->display().
* 测试没通过,
*SELECT a~bukrs,a~belnr,b~sgtxt
* FROM bkpf AS a INNER JOIN mseg AS b
* ON right( a~belnr,5 ) = right( b~belnr,5 )
* INTO TABLE @DATA(lt_doc).
*&---------------------------------------------------------------------*
*& Form FRM_FLITER
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_fliter .
DATA: lt_flights_all TYPE STANDARD TABLE OF spfli
WITH NON-UNIQUE SORTED KEY carrid COMPONENTS carrid,
lt_flight_final TYPE STANDARD TABLE OF spfli.
TYPES: BEGIN OF ty_sorted,
carrid TYPE spfli-carrid,
END OF ty_sorted.
DATA: filter_tab1 TYPE SORTED TABLE OF ty_sorted WITH UNIQUE KEY carrid.
filter_tab1 = VALUE #(
( carrid = 'AH' )
( carrid = 'LH' )
).
SELECT * FROM spfli INTO TABLE @lt_flights_all.
DATA: filter_tab TYPE SORTED TABLE OF spfli-carrid WITH UNIQUE KEY table_line.
*下面这个方法报错,可能版本问题
* filter_tab = VALUE #(
* ( 'AH' )
* ( '' )
* ).
lt_flight_final = FILTER #(
lt_flights_all IN filter_tab
WHERE carrid = table_line ).
cl_demo_output=>write( 'test rudce' ).
LOOP AT lt_flights_all ASSIGNING FIELD-SYMBOL(<fs>).
WRITE:/ <fs>-carrid,<fs>-connid.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_REDUCE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_reduce .
TYPES:BEGIN OF ty_data,
carrid TYPE ydemo_c_rstatus-carrid,
connid TYPE ydemo_c_rstatus-connid,
planetype TYPE ydemo_c_status-planetype,
END OF ty_data.
TYPES: ty_t_data TYPE STANDARD TABLE OF ty_data.
DATA: lt_tab TYPE ty_t_data.
"\_spfliptype是VIEW ydemo_c_Rstatus 中的association view 的名字,
* VIEW ydemo_c_Rstatus 并不包含planetype 这个字段,但是出可以访问
SELECT carrid,
connid,
\_spfliptype-planetype AS plane_type
FROM ydemo_c_rstatus
WHERE ydemo_c_rstatus~carrid = 'LH'
AND \_spfliptype-planetype = 'A319' INTO TABLE @lt_tab.
WRITE: lines( lt_tab[] ).
* append
APPEND VALUE #( carrid = 'wq' connid = '223' planetype = 'nj' ) TO lt_tab.
DATA(lv_lines) = lines( lt_tab ).
* reduce
DATA(lv_lines_g) = REDUCE i(
INIT x = 0
FOR ls_tab IN lt_tab WHERE ( carrid = 'LH' )
NEXT x = x + 1
).
cl_demo_output=>write( lv_lines ) .
cl_demo_output=>write( lv_lines_g ).
* reduce
DATA(result) = REDUCE string(
INIT text = `Count up:`
FOR n = 1 UNTIL n > 10
NEXT text = text && | { n }| ).
cl_demo_output=>write( result ) .
* intertable insert
lt_tab = VALUE #(
( carrid = 'qq' connid = '123' planetype = 'nj' )
( carrid = 'q1' connid = '123' planetype = 'nj' )
).
WRITE / 'test reduce ' .
LOOP AT lt_tab ASSIGNING FIELD-SYMBOL(<fs>).
WRITE:/ <fs>-carrid,<fs>-connid,<fs>-planetype.
ENDLOOP.
WRITE / 'test reduce ' .
cl_demo_output=>write( lt_tab ) .
TYPES outref TYPE REF TO if_demo_output.
DATA(output) = REDUCE outref(
INIT out11 = cl_demo_output=>new( )
text1 = 'COUNT '
FOR n = 1 UNTIL n > 11
NEXT out11 = out11->write( text1 )
text1 = | 'TEST' { n } 'end' | ).
output->display( ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CDSVIEW
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_cdsview .
TYPES:BEGIN OF ty_data,
carrid TYPE ydemo_c_rstatus-carrid,
connid TYPE ydemo_c_rstatus-connid,
planetype TYPE ydemo_c_status-planetype,
END OF ty_data.
TYPES: ty_t_data TYPE STANDARD TABLE OF ty_data.
DATA: lt_tab TYPE ty_t_data.
"\_spfliptype是VIEW ydemo_c_Rstatus 中的association view 的名字,
* VIEW ydemo_c_Rstatus 并不包含planetype 这个字段,但是出可以访问
SELECT carrid,
connid,
\_spfliptype-planetype AS plane_type
FROM ydemo_c_rstatus
WHERE ydemo_c_rstatus~carrid = 'LH'
AND \_spfliptype-planetype = 'A319' INTO TABLE @lt_tab.
WRITE: lines( lt_tab[] ).
WRITE / 'test cds' .
LOOP AT lt_tab ASSIGNING FIELD-SYMBOL(<fs>).
WRITE:/ <fs>-carrid,<fs>-connid,<fs>-planetype.
ENDLOOP.
* cl_demo_output=>write( lt_tab ) .
WRITE / 'test cds' .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_INNTER_TABLE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_innter_table .
TYPES: BEGIN OF ty_bkpf,
belnr LIKE bkpf-belnr,
END OF ty_bkpf.
DATA: lt_bkpf TYPE STANDARD TABLE OF ty_bkpf.
DATA: lt_bkpf_all TYPE STANDARD TABLE OF bkpf.
lt_bkpf = VALUE #(
( belnr = '0100000006' )
( belnr = '0100000007' )
( belnr = '0100000008' ) ).
*----- inner join 内表
*----- 在SQL命令中不能使用多个内部表。
SELECT a~*
FROM bkpf AS a
INNER JOIN @lt_bkpf AS b
ON a~belnr = b~belnr
INTO TABLE @lt_bkpf_all.
DATA(lv_line) = lines( lt_bkpf_all ).
WRITE:lv_line.
ENDFORM.
ABAP的新语法向SPARK的RDD靠拢啊
最新推荐文章于 2024-07-12 15:15:13 发布