有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 的帮助