问题:使用LVC_S_STYL参数赋值修改内表LVC_T_STYL表字段时,报ABAP系统错误如下:
'Error inserting into or changing a sorted table';具体代码如下:
IS_STYLE-FIELDNAME = 'ZWEIZHI1'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
IS_STYLE-FIELDNAME = 'ZWEIZHI2'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
................
IS_STYLE-FIELDNAME = 'ZWEIZHI9'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
IS_STYLE-FIELDNAME = 'ZWEIZHI10'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
IS_STYLE-FIELDNAME = 'ZWEIZHI11'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
解决:ALV编辑单元格状态或控制单元格显示等可使用参数LVC_S_STYL,
参照LVC_S_STYL定义工作区,参照LVC_T_STYL定义一个表字段,放在显示内表中,
并把该表字段在layout参数中激活STYLEFNAME,即可实现。
对于表字段的具体赋值,CALL FUNCTION和CALL METHOD不同ALV方式的实现方法也不相同。
但是在表字段赋值时,一定要注意FIELDNAME字段的排序方式,按照1 10 11...2 20 21...3...
依次顺序排序,如果append进内表的字段排序顺序不对的话,就会报SORT表的排序错误。
更改后代码为:
IS_STYLE-FIELDNAME = 'ZWEIZHI1'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
IS_STYLE-FIELDNAME = 'ZWEIZHI10'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
IS_STYLE-FIELDNAME = 'ZWEIZHI11'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
IS_STYLE-FIELDNAME = 'ZWEIZHI2'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.
................
IS_STYLE-FIELDNAME = 'ZWEIZHI9'.
IS_STYLE-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
APPEND IS_STYLE TO TAB_G_ZMRM-CELLSTYLES.