SELECT s~carrid s~connid s~fldate c~carrname FROM scarr AS c INNER JOIN sflight AS s ON c~carrid = s~carrid INTO TABLE gt_combined WHERE s~carrid = iv_carrid.
" 定义 FORM calc_percentage USING pv_act TYPE i pv_max TYPE i CHANGING cv_result TYPE decfloat16. IF pv_max = 0. cv_result = 0. ELSE. cv_result = pv_act / pv_max * 100. ENDIF. ENDFORM.
" 调用 PERFORM calc_percentage USING gv_act gv_max CHANGING gv_result.
参数传递
类型
方向
传递方式
USING
输入到子程序
引用传递(默认)或值传递
CHANGING
双向
引用传递(默认)或值结果传递
⚠️默认引用传递
默认情况下,参数通过引用传递。子程序可以直接修改调用者的数据。为防止这种情况,在 FORM 定义中使用 VALUE()。
形式参数与实际参数
形式参数:在 FORM 语句中定义(如 pv_act)
实际参数:在 PERFORM 调用中传递(如 gv_actual_value)
子程序中的全局与局部数据
1 2 3 4 5 6
程序(全局作用域) ├── gv_global ← 可在 FORM 中访问 ├── FORM example. │ ├── pv_param(形式参数) ← 仅在 FORM 中 │ └── lv_local (DATA) ← 仅在 FORM 中 └── ENDFORM.