BC400-Unit5:Complex Data Objects

这篇博客探讨了在BC400-Unit5中的复杂数据对象,包括Structures和Internal Tables的处理。Lesson 1介绍了如何定义Structures(全局和局部类型),访问Components,以及复制组件。Lesson 2深入讲解了Internal Table的属性,如Line Type、Primary Key,以及Standard、Sorted和Hashed Table Kind。此外,还展示了如何定义、操作和访问Internal Tables,以及将数据库信息读取到Internal Table的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

~~~~~~~~~~~~~~~~~~~~【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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值