2016-07-09 2 views
-2

属性(名前、住所、年齢、給料)を持つクラスを作成しました。私はどのようにabapの内部テーブルからすべての従業員の平均給与を計算するのですか?

Data itab_employees TYPE TABLE OF REF TO lcl_employee. 

内部テーブル内にある従業員オブジェクト(itab_employees)の給与の平均を計算する方法を作成することが可能ですが、以下のように私は定義された内部テーブルに従業員オブジェクトを作成しましたか?私は

METHOD get_avg_salary. 
DATA: r_employee TYPE REF TO lcl_employee, 
     getsalary TYPE i, 
     average  TYPE i, 
     sum_salary TYPE i, 
     no_employee TYPE i. 

getsalary = r_employee->get_salary(). 
no_employee = lcl_employee=>get_n_o_employee(). 

LOOP AT it_employees INTO r_employee. 
    AT LAST. 
    SUM . 
    sum_salary = getsalary. 
    average = sum_salary/no_employee. 
    ENDAT. 
ENDLOOP. 
re_avg_salary = average. 
ENDMETHOD. 

これまでに試したが、私はあなたのコメント@gkubedため getsalary = r_employee->get_salary().

+3

あなたが今までに試したこととどこに問題があるかを私たちに教えてください。 –

+0

ほぼ確実に可能です。 'itab_employees'をオブジェクト変数にループする必要があります。これは、例えば' total'という変数に追加します。オブジェクトをループしたら、テーブル内のオブジェクトの量で 'total'を分割します。 – gkubed

答えて

0

おかげラインについては確認していないものを

これ。

METHOD get_avg_salary. 
DATA: r_employee TYPE REF TO lcl_employee, 
     average  TYPE i, 
     sum_salary TYPE i. 

LOOP AT it_employees INTO r_employee. 
    sum_salary = sum_salary + r_employee->get_salary(). 
ENDLOOP. 
average = sum_salary/sy-tfill. 
re_avg_salary = average. 
ENDMETHOD. 
+0

さて、 'sy-tfill'の代わりに' lines(it_employees) 'を使用します –

+0

コメントの@LPK – user2120167

+0

また、ABAP 7.4システムで作業している場合は、[table reduction](https:// help.sap.com/abapdocu_750/en/abenconstructor_expression_reduce.htm)。 '平均=は/ライン(it_employees)(it_employees \t次のA = A + r_employee-> get_salary()ではR_EMPLOYEE FOR \t INITのA = 0 \t)私REDUCE:それは一種の、このようになります。 'これは、中間変数を必要とせずに、無料のアプローチです。 –

関連する問題