平均计算



有100名学生和7个科目。 如何计算每个学生的平均值。 在选择屏幕中选择学生ID时,它应该显示该特定学生的平均值。

源代码

TYPES:
    test_1 TYPE SORTED TABLE OF ztest_03
                      WITH UNIQUE DEFAULT KEY.
DATA:
    it_test     TYPE test_1,
    wa_test     LIKE LINE OF IT_TEST,
    total(3) TYPE n,
    average(2) TYPE n.
SELECT-OPTIONS:
    std_id for wa_test-studentid.
PARAMETERS:
    test_id TYPE ztest_03-test.

START-OF-SELECTION.
 SELECT *
      FROM ztest_03
      INTO CORRESPONDING FIELDS OF TABLE it_test
      WHERE test = test_id
    and     studentid in std_id.
 IF sy-subrc <> 0.
    MESSAGE A123(Z455).
  ENDIF.
END-OF-SELECTION.
 LOOP AT it_test INTO wa_test.
*    WRITE: /
*        wa_test-studentid.
*        wa_test-subjectid,
*        wa_test-test,
*        wa_test-marks.
total = total + wa_test-marks.

   at END OF studentid.
      IF TEST_ID = 'FINALS'.
     WRITE:/ 'Test FINALS Details for student ID:' ,  WA_TEST-STUDENTID.
     ELSE.
       WRITE:/ 'Test CYCLE TEST Details for student ID:', WA_TEST-STUDENTID.
       ENDIF.
      average = total / 7.
      uline.
      WRITE:/ WA_TEST-STUDENTID, 'Average %:', average.
      if average Le 50.
        write:/ 'Grade E'.
        ULINE.
        ELSEif average le 60.
          write:/ 'Grade D'.
          ULINE.
          ELSEIF average le 70.
            WRITE:/ 'Grade C'.
            ULINE.
            ELSEIF average le 80.
              WRITE:/ 'Grade B'.
              ULINE.
              ELSEIF average le 90.
                WRITE:/ 'Grade A'.
                ULINE.
                ELSEIF average le 100.
                  WRITE:/ 'Grade O'.
                  ULINE.
                  ENDIF.
      ENDAT.
  ENDLOOP.

假设你的数据存储在数据库中,请参阅 SAP 关于 AVG 的帮助

相关内容

  • 没有找到相关文章

最新更新