~~~~~~~~~~~~~~~~~~~~【Lesson 1:Working with Structures】~~~~~~~~~~~~~~~~~~~~
1.用Global Types定义Structures
2.用Local Types定义Structures
3.访问Structure Components
4.Copy相同名字的Structure Components
5.使用Structures示例
REPORT ZBC400_40_STRUCTURE.
PARAMETERS:pa_car TYPE bc400_s_flight-carrid,
pa_con TYPE bc400_s_flight-connid,
pa_date TYPE bc400_s_flight-fldate.
DATA:gs_carrier TYPE bc400_s_carrier,
gs_flight TYPE bc400_s_flight.
TYPES:BEGIN OF gty_s_carrierflight,
carrid TYPE bc400_s_flight-carrid,
connid TYPE bc400_s_flight-connid,
fldate TYPE bc400_s_flight-fldate,
seatsmax TYPE bc400_s_flight-seatsmax,
seatsocc TYPE bc400_s_flight-seatsocc,
percentage TYPE bc400_s_flight-percentage,
carrname TYPE bc400_s_carrier-carrname,
currcode TYPE bc400_s_carrier-currcode,
url TYPE bc400_s_carrier-url,
END OF gty_s_carrierflight.
DATA:gs_carrierflight TYPE gty_s_carrierflight.
TRY.
CALL METHOD cl_bc400_flightmodel=>get_flight
EXPORTING
iv_carrid = pa_car
iv_connid = pa_con
iv_fldate = pa_date
IMPORTING
es_flight = gs_flight.
CALL METHOD cl_bc400_flightmodel=>get_carrier
EXPORTING
iv_carrid = pa_car
IMPORTING
es_carrier = gs_carrier.
CATCH cx_bc400_no_data.
WRITE:'No data found!'(ndf).
CATCH cx_bc400_no_auth.
WRITE:'No authority for this carrier!'(nau).
ENDTRY.
MOVE-CORRESPONDING gs_carrier TO gs_carrierflight.
MOVE-CORRESPONDING gs_flight TO gs_carrierflight.
IF gs_carrierflight IS NOT INITIAL.
WRITE: / gs_carrierflight-carrid,
gs_carrierflight-connid,
gs_carrierflight-fldate,
gs_carrierflight-carrname,
gs_carrierflight-currcode,
gs_carrierflight-seatsmax,
gs_carrierflight-seatsocc,
gs_carrierflight-percentage,'%',
gs_carrierflight-url.
ENDIF.
~~~~~~~~~~~~~~~~~~【Lesson 2:Working with Internal Tables】~~~~~~~~~~~~~~~~~~
1.Internal Table的属性
1)Line Type
2)Primary Key
· Components
· Uniqueness
· Sequence
3)Table Kind
· Standard
· Sorted
· Hashed
2.用Global Type定义Internal Table
1)和定义Structure的语句是一样的。
3.用Local Type定义Internal Table
4.单独定义Internal Tables
5.访问记录
6.Internal table操作示例
1)Work Area:用来存放正被操作的记录的Structure,可理解为缓存。
2)Index从1开始。
3)WRITE:/——换行
* Define internal table and work area
DATA:gt_flightinfo TYPE bc400_t_flight,
gs_flightinfo LIKE LINE OF gt_flightinfo.
* Fill structure with values
gs_flightinfo-carrid = ……
gs_flightinfo-connid = ……
gs_flightinfo-fldate = ……
gs_flightinfo-seatsmax = ……
gs_flightinfo-seatsocc = ……
gs_flightinfo-percentage = ……
* Insert structure into internal table
INSERT gs_flightinfo INTO TABLE gt_flightinfo.
* Read by Index
LOOP AT gt_flightinfo INTO gs_flightinfo FROM 1TO 5.
WRITE: / gs_flightinfo-carrid,
gs_flightinfo-connid,
gs_flightinfo-fldate,
gs_flightinfo-seatsmax,
gs_flightinfo-seatsocc,
gs_flightinfo-percentage,'%'.
ENDLOOP.
READ YABLE gt_flightinfo INTO gs_flightinfo INDEX 3.
WRITE: / gs_flightinfo-carrid,
gs_flightinfo-connid,
gs_flightinfo-fldate,
gs_flightinfo-seatsmax,
gs_flightinfo-seatsocc,
gs_flightinfo-percentage,'%'.
* Read by Key
LOOP AT gt_flightinfo INTO gs_flightinfo WHERE carrid = 'LH'.
WRITE: / gs_flightinfo-carrid,
gs_flightinfo-connid,
gs_flightinfo-fldate,
gs_flightinfo-seatsmax,
gs_flightinfo-seatsocc,
gs_flightinfo-percentage,'%'.
ENDLOOP.
READ YABLE gt_flightinfo INTO gs_flightinfo WITH TABLE KEY carrid = 'LH' connid = '0400' fldate = sy-datum.
IF sy-subrc = 0.
WRITE: / gs_flightinfo-seatsmax,
gs_flightinfo-seatsocc,
gs_flightinfo-percentage,'%'.
ENDIF.
* Sorting and Deleting Content
SORT gt_flightinfo.
SORT gt_flightinfo BY carrid.
SORT gt_flightinfo BY percentage DESCENDING
carrid ASCENDING.
REFRESH gt_flightinfo.
FREE gt_flightinfo.
7.Internal Tables with and without Header Lines
1)不想写Work Area时,可以把数据放到Header Line中代替。
8.把DB中信息读到Internal Table示例
REPORT ZBC400_40_LOOP.
DATA: gt_connections TYPE bc400_t_connections,
gs_connection TYPE bc400_s_connection.
TRY.
CALL METHOD cl_bc400_flightmodel=>get_connections
IMPORTING
et_connections = gt_connections.
CATCH cx_bc400_no_data .
WRITE: / 'No data found!'(ndf).
ENDTRY.
SORT gt_connections ASCENDING BY deptime.
LOOP AT gt_connections INTO gs_connection.
WRITE: / gs_connection-carrid,
gs_connection-connid,
gs_connection-cityfrom,
gs_connection-airpfrom,
gs_connection-cityto,
gs_connection-airpto,
gs_connection-fltime,
gs_connection-deptime,
gs_connection-arrtime.
ENDLOOP.