ABAP小技巧

1.在ALV添加check选中后值不变化

data:o_alv type REF TO cl_gui_alv_grid.

在user_command下
   CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = o_alv.

   CALL METHOD o_alv->check_changed_data
*    IMPORTING
*      e_valid   =
*    CHANGING
*      c_refresh = 'X'

即可解决

2.单位转换

"单位转换
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
  EXPORTING
    input                = xxx
    language             = sy-langu
 IMPORTING
   output               = xxx
 EXCEPTIONS
   unit_not_found       = 1
   OTHERS               = 2

3.跳转事务携带参数

1.如果是选择屏幕无法通过SET PARAMETER携带参数则用SUBMIT
SUBMIT pp_pick_list  VIA SELECTION-SCREEN   "停留屏幕
          WITH s_matnr IN lr_matnr
          WITH s_aufnr IN lr_aufnr AND RETURN. "返回后回到现在的页面

2.直接通过Call Transction
CALL TRANSACTION 'CO03' AND SKIP FIRST SCREEN.

4.前导零增加删除

"增加前导零
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  EXPORTING
    input  = MATNR
  IMPORTING
    output = MATNR.
 
"去掉前导零
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    input  = MATNR
  IMPORTING
    output = MATNR.

5.快捷增加去除前导零

"增加前导0
DATA: ls_matnr TYPE matnr VALUE '15000042'.
DATA(ls_in_matnr) = |{ ls_matnr ALPHA = IN }|.
WRITE: ls_in_matnr.  "示例结果:000000000015000042

"删除前导0
DATA: gs_matnr TYPE matnr VALUE '000000000015000042'.
DATA(gs_out_matnr) = |{ gs_matnr ALPHA = OUT }|.
WRITE:/ gs_out_matnr.  "示例结果:15000042

6.增加进度提示

DO 1000 TIMES.
  LV_PERCENTAGE = sy-index / 1000.
  DATA(lv_temp) = | { sy-index } / 1000 '正在处理,耐心等候' |.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = LV_PERCENTAGE
      text       = lv_temp.
ENDDO.

7.F4搜索帮助

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield         = 'VTEXT'     "将内表哪一列数据取出
      dynpprog         = sy-repid
      dynpnr           = sy-dynnr
      dynprofield      = 'GV_VTEXT'  "显示在哪个控件上
      value_org        = 'S'
      callback_program = sy-repid
    TABLES
      value_tab        = lt_f4       "数据内表
      return_tab       = lt_return
   EXCEPTIONS
     PARAMETER_ERROR  = 1
     NO_VALUES_FOUND  = 2
     OTHERS           = 3
    .

8.Dialog下拉框

  DATA lt_values TYPE vrm_values WITH HEADER LINE.

  CLEAR lt_values.
  lt_values-key = 'A'.
  lt_values-text = '销售部'.
  APPEND lt_values.

  CLEAR lt_values.
  lt_values-key = 'B'.
  lt_values-text = '市场部'.
  APPEND lt_values.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'GV_DROPDOWN'    "dialog控件名
      values          = lt_values[]
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

9.编号自增长

T-CODE:SNRO

间隔:
    编号长度域:NUMC10
    % 警告:99.0

定制:
    缓冲:无缓冲

Function

DATA: LV_NUMBER TYPE I.
CALL FUNCTION 'NUMBER_GET_NEXT'
  EXPORTING
    nr_range_nr                   = '02'        "编号
    object                        = 'YTEST001'  "对象名称
    QUANTITY                      = '1'
 IMPORTING
   NUMBER                        = LV_NUMBER
 EXCEPTIONS
   INTERVAL_NOT_FOUND            = 1
   NUMBER_RANGE_NOT_INTERN       = 2
   OBJECT_NOT_FOUND              = 3
   QUANTITY_IS_0                 = 4
   QUANTITY_IS_NOT_1             = 5
   INTERVAL_OVERFLOW             = 6
   BUFFER_OVERFLOW               = 7
   OTHERS                        = 8

10.生产订单的状态

表:TJ02
关联状态表:JEST

11.连续打印

LV_CONTROL_PARAMETERS TYPE SSFCTRLOP

在循环打印中
    AT FIRST.
      LV_CONTROL_PARAMETERS-NO_CLOSE = 'X'.
    ENDAT.
    AT LAST.
      LV_CONTROL_PARAMETERS-NO_CLOSE = SPACE.
    ENDAT.

在循环最后
    LV_CONTROL_PARAMETERS-NO_OPEN = 'X'.

12.MODULE STATUS排除状态栏

  DATA:fcodes TYPE  TABLE OF fcode .
  CLEAR fcodes .
  IF rb_sea EQ 'X' .
    APPEND 'CHANGE' TO fcodes .
  ELSEIF rb_mod EQ 'X' .
    APPEND 'DELETE' TO fcodes .
  ELSEIF rb_del EQ 'X' .
    APPEND 'CHANGE' TO fcodes .
  ENDIF .
  "添加EXCLUDING排除按钮
  SET PF-STATUS 'STATUS_0100' EXCLUDING fcodes .
  SET TITLEBAR 'TITLE0100'.

13.退出标准程序回到初始页(例如VA02删除销售订单不允许,回到VA02页面)

LEAVE TO TRANSACTION SY-TCODE.

猜你喜欢

转载自blog.csdn.net/wx774891/article/details/109444942