背景:
SE11中减少某个非空表的字段的长度后,在SE14中的操作不当,并且对该表进行了删除重建的操作后,发生SE11激活该表报错。
原因:
出现了一些未知原因,导致该表在底层数据库存在,但是运行时对象不存在
解决:
1. 删除或者重命名数据库表,再进行激活操作
2. 查出数据库表中数据后,放弃使用该表名,并更换新表名进行创建激活
备注:
OPEN SQL 中无法执行数据库表删除操作,这一步骤可以让basis协助处理或者使用方法cl_sql_statement->execute_ddl 进行操作。参考代码如下:
DATA: lo_sql TYPE REF TO cl_sql_statement,
lx_sql TYPE REF TO cx_sql_exception,
lx_sqlpa TYPE REF TO cx_parameter_invalid.
TRY.
CREATE OBJECT lo_sql EXPORTING con_ref = cl_sql_connection=>get_connection( cl_sadl_dbcon=>get_default_dbcon( ) ).
lo_sql->execute_ddl( |DROP TABLE YLC_TEST01| ).
CATCH cx_sql_exception INTO lx_sql.
DATA(lv_t) = lx_sql->get_text( ).
CATCH cx_parameter_invalid INTO lx_sqlpa.
lv_t = lx_sqlpa->get_text( ).
ENDTRY.
WRITE:/ lv_t.
参考notes:
2444632 - Error DA300 "No active nametab exists" occurs during table activation in transaction SE11