SAP ABAP开发指南SAP ABAP

《SAP ABAP 开发指南》第二单元第四课时

2018-08-20  本文已影响13人  46b61a5f089d
翱翔云天的SAP 技术网校

程序源代码

*&---------------------------------------------------------------------*
*& Report zaxyt_c2u4_all
*&---------------------------------------------------------------------*
*&  课程:ABAP 开发入门
*&  章节:第二单元第四课时
*&  作者:A_216 @ Aug 20, 2018
*&---------------------------------------------------------------------*
REPORT zaxyt_c2u4_all.

TYPES: BEGIN OF ty_student,
         name      TYPE char10,
         number(6) TYPE n,
         mark      TYPE i,
         height    TYPE p DECIMALS 2,
         unit      TYPE unit3,
         level     TYPE char10,
       END OF ty_student.
DATA: wa_student TYPE ty_student,
      it_student TYPE TABLE OF ty_student.
FIELD-SYMBOLS: <fs> TYPE ty_student.

wa_student-name     = 'John'.
wa_student-number   = 1.
wa_student-mark     = 68.
wa_student-height   = '1.46'.
wa_student-unit     = 'm'.
APPEND wa_student TO it_student.
wa_student-name     = 'Peter'.
wa_student-number   = 2.
wa_student-mark     = 45.
wa_student-height   = '1.56'.
wa_student-unit     = 'm'.
APPEND wa_student TO it_student.
wa_student-name     = 'Tom'.
wa_student-number   = 3.
wa_student-mark     = 23.
wa_student-height   = '1.34'.
wa_student-unit     = 'm'.
APPEND wa_student TO it_student.
wa_student-name     = 'Kevin'.
wa_student-number   = 4.
wa_student-mark     = 87.
wa_student-height   = '1.76'.
wa_student-unit     = 'm'.
APPEND wa_student TO it_student.

LOOP AT it_student INTO wa_student.
  WRITE: /, wa_student-name   ,
            wa_student-number,
            wa_student-mark  ,
            wa_student-height,
            wa_student-unit  .
ENDLOOP.

WRITE: /, '名字中带有 o 的'.
LOOP AT it_student INTO wa_student.
  IF wa_student-name CS 'o'.

    WRITE: /, wa_student-name   ,
              wa_student-number,
              wa_student-mark  ,
              wa_student-height,
              wa_student-unit  .
  ENDIF.
ENDLOOP.

WRITE: /, '成绩评级并更新表'.
LOOP AT it_student ASSIGNING <fs>.
  CASE <fs>-mark / 20.
    WHEN 1 OR 2 .
      <fs>-level = '差'.
    WHEN 3.
      <fs>-level = '还行'.
    WHEN 4 OR 5.
      <fs>-level = '优秀'.
    WHEN OTHERS.
      <fs>-level = '没有'.
  ENDCASE.
ENDLOOP.
LOOP AT it_student INTO wa_student.
  WRITE: /, wa_student-name   ,
            wa_student-number,
            wa_student-mark  ,
            wa_student-height,
            wa_student-unit  ,
            wa_student-level.
ENDLOOP.

DATA: avg TYPE p DECIMALS 2,
      total TYPE i.
DO lines( it_student ) TIMES.
    READ TABLE it_student INTO wa_student INDEX sy-index.
    total = total + wa_student-mark.
ENDDO.

WRITE: /, '取得系统异常'.
DATA: cx_ref TYPE REF TO cx_sy_arithmetic_error.
TRY.
    avg = total / 0.
  CATCH cx_sy_arithmetic_error INTO cx_ref.
    WRITE: cx_ref->get_text( ).
ENDTRY.

WRITE: /, '班级平均成绩'.
avg = total / lines( it_student ).
WRITE: /, avg.

运行结果展示

image
上一篇下一篇

猜你喜欢

热点阅读