ABAP开发中零散知识点汇总

来源:互联网 发布:人民大学数据库水平 编辑:程序博客网 时间:2024/05/14 23:32

1、CLEAR、REFRESH、FREE的用法

内表:如果使用有表头行的内表,CLEAR 仅清除表格工作区域。要重置整个内表而不清除表格工作区域,使用REFRESH语句或 CLEAR 语句CLEAR <itab>[].;REFRESH加不加中括号都是只清内表,另外REFRESH是专为清内表的,不能清基本类型变量,但CLEAR可以。

以上都不会释放掉内表所占用的空间,如果想初始化内表的同时还要释放所占用的空间,请使用:FREE <itab>。


2、删除内表中的重复数据

SORT  GT_TAB BY FIELD1 FIELD1...

DELETE ADJACENT DUPLICATES FROM GT_TAB COMPARING FIELD1 FIELD2 ...  

需要先排序再删除重复数据


3、双击行项目进行跳转的一般做法

在ALV函数的 I_CALLBACK_COMMAND里面定义用户动作的FORM,再在FORM里面定义双击事件

FORM USER_FORM USING I_UCOMM     LIKE SY-UCOMM
                                                    I_SELFIELD TYPE SLIS_SELFIELD.
  CASE I_UCOMM .
    WHEN '&IC1' .
      READ TABLE ITAB_MX_OUTPUT INDEX I_SELFIELD-TABINDEX .
      SET PARAMETER ID 'BLN' FIELD ITAB_MX_OUTPUT-BELNR  .
      SET PARAMETER ID 'BUK' FIELD ITAB_MX_OUTPUT-BUKRS .
      SET PARAMETER ID 'GJR' FIELD P_GJAHR .
      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN .
  ENDCASE .
ENDFORM .


4、在普通的ALV控件里面使用OO ALV的方法

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'    "相当于把普通的ALV转化为OO的使用,使其具有OO的方法
     IMPORTING
       E_GRID LR_GRID  .


  CALL METHOD LR_GRID->CHECK_CHANGED_DATA.        "调用方法,检查和记录事件触发前数据的变化
  RS_SELFIELD-REFRESH 'X'.                                                   "刷新屏幕

  CALL METHOD LR_GRID->GET_CURRENT_CELL      "读取当前光标的行和列
        IMPORTING
          E_ROW V_ROW       "都是I类型的
          E_COL V_COL.


5、使用E类型的消息后程序还可以进行正常执行的方法

MESSAGE '保存失败!' TYPE 'S' DISPLAY LIKE 'E' .


6、在ALV中修改数量、金额等字段时,系统会自动减少1000倍的解决方法

在该字段的FIELDCAT属性里面限制datatype,如:

      GS_FIELDCAT-DATATYPE 'QUAN' .       "经测试QUAN类型的需要指定INTTYPE      CURR类型的不需要下面这行
      GS_FIELDCAT-INTTYPE    'C' .







原创粉丝点击