The ddt_open command is setting the row to the zero row (the first one in the table)and then you are "bumping" the table row to row one. Then setting a value in column1 to the string value "fa_list_fa_num" then attempting to set a value in the second column of the table in the maximum row minus 1.
MAX Number of rows returned for the table - 1) which if you received 10 rows would be 8 (0-9).
Is this what you are really intending to do or are you wanting to write a value in each successive column of a row???
If this is the case then you would want tbl_get_cols_count and "add one" to move to the next column but remain on the same row until you reach MAX_COLS or whatever value you assign to the maximum column name ...