- 將structural 中的欄位動態 assign 到 field-symbo
FORM count_up_percentage TABLES ft_data STRUCTURE it_data.
DATA: lw_data_total LIKE ft_data.
DATA: l_subrc LIKE syst-subrc,
l_index(2) TYPE n,
l_field_name TYPE string,
l_tabix LIKE syst-tabix.
FIELD-SYMBOLS: <l_menge> TYPE ANY,
<l_wewrt> TYPE ANY,
<l_wewup> TYPE ANY.
*-計算單價
LOOP AT ft_data.
l_tabix = sy-tabix.
CLEAR: l_subrc, l_index.
WHILE l_subrc EQ 0.
l_index = sy-index.
IF sy-index GE 100.
EXIT.
ENDIF.
*-----取得各月份欄位(數量)
CONCATENATE 'FT_DATA-MENGE' l_index INTO l_field_name.
ASSIGN (l_field_name) TO <l_menge>.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
*-----取得各月份欄位(金額)
CONCATENATE 'FT_DATA-WEWRT' l_index INTO l_field_name.
ASSIGN (l_field_name) TO <l_wewrt>.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
*-----計算單價
IF <l_menge> EQ 0.
<l_wewup> = 0.
ELSE.
<l_wewup> = <l_wewrt> / <l_menge>.
ENDIF.
ENDWHILE.
*---Put data
MODIFY ft_data INDEX l_tabix.
ENDLOOP.
ENDFORM. " COUNT_UP_PERCENTAGE
FORM write_it_output USING fw_output STRUCTURE it_output.
DATA: l_subrc LIKE syst-subrc,
l_index LIKE syst-index.
FIELD-SYMBOLS: <fs_field> TYPE ANY.
CLEAR: l_subrc, l_index.
WHILE l_subrc EQ 0.
l_index = sy-index.
*---Assign space field
ASSIGN COMPONENT l_index OF STRUCTURE fw_output TO <fs_field>.
*---Check assign success or not
l_subrc = sy-subrc.
IF l_subrc NE 0.
CONTINUE.
ENDIF.
*---Write field content and space
WRITE <fs_field>.
ENDWHILE.
ENDFORM. " write_it_output