目录
1、OP ALV转 OO ALV
2、字符串替换
3、跳转事务携带参数
4、下拉函数
5、快捷增加去除前导零
6、增加进度提示
7、F4搜索帮助
8、Dialog下拉框
9、编号自增长
10、生产订单的状态
11、连续打印
12、MODULE STATUS排除状态栏
13、退出标准程序回到初始页(例如VA02删除销售订单不允许,回到VA02页面)
14、通过编号找到描述表
15、F9找增强
16、标准类找BADI
17、获取ALV筛选后的数据
18、激活SAP Getway
20、打开GUI键值对匹配
21、数据批量导出Excel,乱行
22、多条错误信息提示框显示
23、在生产机和测试机修改代码(慎用)
24、F4IF_INT_TABLE_VALUE_REQUEST不显示值
25、SmartForms语言翻译
26、标准屏幕上增强获取操作码
27、转JSON串方法,KEY大写或小写
28、ListBox下拉框去掉空白行
29、增强里提示信息
30、submit调用传值
31、报表设置变式,动态日期设置
32、Editor提示框
33、根据表达式替换
34、AlV级别下拉框
35、UUID
36、查询字符在字符串最后的位置
37、获取用户人员和地址编号
38、错误信息捕获
39、选择屏幕上输入参数不转换大写
40、ALV排序
41、ALV TOP OF PAGE
42、传输请求DUMP,查看信息
1、OP ALV转 OO ALV
1、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、在op alv输出之前就转成oo alv
FORM frm_init_events .
CLEAR:gt_events,gs_events.
gs_events-name = 'CALLER_EXIT'.
gs_events-form = 'FRM_CALLER_EXIT'.
APPEND gs_events TO gt_events.
ENDFORM.
FORM frm_caller_exit USING ls_data TYPE slis_data_caller_exit.
data: o_alv TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = o_alv.
ENDFORM.
2、字符串替换
data: lv_str type string value '123,456,789.000'.
REPLACe ALL OCCURRENCES OF ',' IN lv_str WITH space.
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、下拉函数
1、在POV事件里设置
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'KEY' "指明内表那一列作为值
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_LIST' "将内表显示在屏幕字段
value_org = 'S' "C表示cell,S表示structure
multiple_choice = '' "多项选择,用于SELECT-OPTIONS
display = '' "C则只能显示,不能选择
callback_program = sy-repid
TABLES
value_tab = lt_list
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
2、在FORM里设置
data:LIST TYPE VRM_VALUES , "list box的值列表
VALUE LIKE LINE OF LIST . "list box的结构
VALUE-KEY = '01'.
VALUE-TEXT = '修改'.
APPEND VALUE TO LIST .
VALUE-KEY = '02'.
VALUE-TEXT = '显示'.
APPEND VALUE TO LIST .
"调用函数展示
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'P_CZ'
VALUES = LIST.
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搜索帮助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lifex-low.
PERFORM frm_get_lifex_f4_help USING 'S_LIFEX-LOW'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lifex-high.
PERFORM frm_get_lifex_f4_help USING 'S_LIFEX-HIGH'.
FORM frm_get_lifex_f4_help USING p_field TYPE help_info-dynprofld.
data: BEGIN OF lt_value OCCURS 0,
lifex TYPE likp-lifex,
END OF lt_value.
SELECT lifex INTO TABLE lt_value[] FROM likp WHERe lifex NE ''.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LIFEX'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = p_field "显示在哪个控件上
value_org = 'S'
callback_program = sy-repid
TABLES
value_tab = lt_value[].
ENDFORM.
Dialog:
PROCESS ON VALUE-REQUEST.
FIELD GV_ZDBDH MODULE F4_HELP_ZDBDH.
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.
14、通过编号找到描述表
找到对应的域元素
点进去
点击值范围
点击值表
点击头部转到->文本表
15、F9找增强
CALL CUSTOMER-FUNCTION
CALL BADI
GET BADI
CALL METHOD
一代增强:在程序的子例程里,以UserExit开头的程序
二代增强:通过Customer-Function调用,以Exit_程序名_xxx 命名
在表里MODSAP里通过出口函数找增强名称
三代增强:通过Call Badi打断点来查找,或者在类CL_EXITHANDLER里的get_instance方法打断点
16、标准类找BADI
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
data: lv_str type string value '123,456,789.000'. REPLACe ALL OCCURRENCES OF ',' IN lv_str WITH space.
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、下拉函数
1、在POV事件里设置
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'KEY' "指明内表那一列作为值
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_LIST' "将内表显示在屏幕字段
value_org = 'S' "C表示cell,S表示structure
multiple_choice = '' "多项选择,用于SELECT-OPTIONS
display = '' "C则只能显示,不能选择
callback_program = sy-repid
TABLES
value_tab = lt_list
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
2、在FORM里设置
data:LIST TYPE VRM_VALUES , "list box的值列表
VALUE LIKE LINE OF LIST . "list box的结构
VALUE-KEY = '01'.
VALUE-TEXT = '修改'.
APPEND VALUE TO LIST .
VALUE-KEY = '02'.
VALUE-TEXT = '显示'.
APPEND VALUE TO LIST .
"调用函数展示
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'P_CZ'
VALUES = LIST.
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搜索帮助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lifex-low.
PERFORM frm_get_lifex_f4_help USING 'S_LIFEX-LOW'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lifex-high.
PERFORM frm_get_lifex_f4_help USING 'S_LIFEX-HIGH'.
FORM frm_get_lifex_f4_help USING p_field TYPE help_info-dynprofld.
data: BEGIN OF lt_value OCCURS 0,
lifex TYPE likp-lifex,
END OF lt_value.
SELECT lifex INTO TABLE lt_value[] FROM likp WHERe lifex NE ''.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LIFEX'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = p_field "显示在哪个控件上
value_org = 'S'
callback_program = sy-repid
TABLES
value_tab = lt_value[].
ENDFORM.
Dialog:
PROCESS ON VALUE-REQUEST.
FIELD GV_ZDBDH MODULE F4_HELP_ZDBDH.
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.
14、通过编号找到描述表
找到对应的域元素
点进去
点击值范围
点击值表
点击头部转到->文本表
15、F9找增强
CALL CUSTOMER-FUNCTION
CALL BADI
GET BADI
CALL METHOD
一代增强:在程序的子例程里,以UserExit开头的程序
二代增强:通过Customer-Function调用,以Exit_程序名_xxx 命名
在表里MODSAP里通过出口函数找增强名称
三代增强:通过Call Badi打断点来查找,或者在类CL_EXITHANDLER里的get_instance方法打断点
16、标准类找BADI
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
1、在POV事件里设置
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'KEY' "指明内表那一列作为值
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_LIST' "将内表显示在屏幕字段
value_org = 'S' "C表示cell,S表示structure
multiple_choice = '' "多项选择,用于SELECT-OPTIONS
display = '' "C则只能显示,不能选择
callback_program = sy-repid
TABLES
value_tab = lt_list
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
2、在FORM里设置
data:LIST TYPE VRM_VALUES , "list box的值列表
VALUE LIKE LINE OF LIST . "list box的结构
VALUE-KEY = '01'.
VALUE-TEXT = '修改'.
APPEND VALUE TO LIST .
VALUE-KEY = '02'.
VALUE-TEXT = '显示'.
APPEND VALUE TO LIST .
"调用函数展示
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'P_CZ'
VALUES = LIST.
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搜索帮助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lifex-low.
PERFORM frm_get_lifex_f4_help USING 'S_LIFEX-LOW'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lifex-high.
PERFORM frm_get_lifex_f4_help USING 'S_LIFEX-HIGH'.
FORM frm_get_lifex_f4_help USING p_field TYPE help_info-dynprofld.
data: BEGIN OF lt_value OCCURS 0,
lifex TYPE likp-lifex,
END OF lt_value.
SELECT lifex INTO TABLE lt_value[] FROM likp WHERe lifex NE ''.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LIFEX'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = p_field "显示在哪个控件上
value_org = 'S'
callback_program = sy-repid
TABLES
value_tab = lt_value[].
ENDFORM.
Dialog:
PROCESS ON VALUE-REQUEST.
FIELD GV_ZDBDH MODULE F4_HELP_ZDBDH.
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.
14、通过编号找到描述表
找到对应的域元素
点进去
点击值范围
点击值表
点击头部转到->文本表
15、F9找增强
CALL CUSTOMER-FUNCTION
CALL BADI
GET BADI
CALL METHOD
一代增强:在程序的子例程里,以UserExit开头的程序
二代增强:通过Customer-Function调用,以Exit_程序名_xxx 命名
在表里MODSAP里通过出口函数找增强名称
三代增强:通过Call Badi打断点来查找,或者在类CL_EXITHANDLER里的get_instance方法打断点
16、标准类找BADI
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
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搜索帮助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lifex-low.
PERFORM frm_get_lifex_f4_help USING 'S_LIFEX-LOW'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lifex-high.
PERFORM frm_get_lifex_f4_help USING 'S_LIFEX-HIGH'.
FORM frm_get_lifex_f4_help USING p_field TYPE help_info-dynprofld.
data: BEGIN OF lt_value OCCURS 0,
lifex TYPE likp-lifex,
END OF lt_value.
SELECT lifex INTO TABLE lt_value[] FROM likp WHERe lifex NE ''.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LIFEX'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = p_field "显示在哪个控件上
value_org = 'S'
callback_program = sy-repid
TABLES
value_tab = lt_value[].
ENDFORM.
Dialog:
PROCESS ON VALUE-REQUEST.
FIELD GV_ZDBDH MODULE F4_HELP_ZDBDH.
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.
14、通过编号找到描述表
找到对应的域元素
点进去
点击值范围
点击值表
点击头部转到->文本表
15、F9找增强
CALL CUSTOMER-FUNCTION
CALL BADI
GET BADI
CALL METHOD
一代增强:在程序的子例程里,以UserExit开头的程序
二代增强:通过Customer-Function调用,以Exit_程序名_xxx 命名
在表里MODSAP里通过出口函数找增强名称
三代增强:通过Call Badi打断点来查找,或者在类CL_EXITHANDLER里的get_instance方法打断点
16、标准类找BADI
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
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.
14、通过编号找到描述表
找到对应的域元素
点进去
点击值范围
点击值表
点击头部转到->文本表
15、F9找增强
CALL CUSTOMER-FUNCTION
CALL BADI
GET BADI
CALL METHOD
一代增强:在程序的子例程里,以UserExit开头的程序
二代增强:通过Customer-Function调用,以Exit_程序名_xxx 命名
在表里MODSAP里通过出口函数找增强名称
三代增强:通过Call Badi打断点来查找,或者在类CL_EXITHANDLER里的get_instance方法打断点
16、标准类找BADI
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
表: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.
14、通过编号找到描述表
找到对应的域元素
点进去
点击值范围
点击值表
点击头部转到->文本表
15、F9找增强
CALL CUSTOMER-FUNCTION
CALL BADI
GET BADI
CALL METHOD
一代增强:在程序的子例程里,以UserExit开头的程序
二代增强:通过Customer-Function调用,以Exit_程序名_xxx 命名
在表里MODSAP里通过出口函数找增强名称
三代增强:通过Call Badi打断点来查找,或者在类CL_EXITHANDLER里的get_instance方法打断点
16、标准类找BADI
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
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.
14、通过编号找到描述表
找到对应的域元素
点进去
点击值范围
点击值表
点击头部转到->文本表
15、F9找增强
CALL CUSTOMER-FUNCTION
CALL BADI
GET BADI
CALL METHOD
一代增强:在程序的子例程里,以UserExit开头的程序
二代增强:通过Customer-Function调用,以Exit_程序名_xxx 命名
在表里MODSAP里通过出口函数找增强名称
三代增强:通过Call Badi打断点来查找,或者在类CL_EXITHANDLER里的get_instance方法打断点
16、标准类找BADI
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
找到对应的域元素 点进去 点击值范围 点击值表 点击头部转到->文本表
15、F9找增强
CALL CUSTOMER-FUNCTION
CALL BADI
GET BADI
CALL METHOD
一代增强:在程序的子例程里,以UserExit开头的程序
二代增强:通过Customer-Function调用,以Exit_程序名_xxx 命名
在表里MODSAP里通过出口函数找增强名称
三代增强:通过Call Badi打断点来查找,或者在类CL_EXITHANDLER里的get_instance方法打断点
16、标准类找BADI
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
CL_EXITHANDLER=>GET INSTANCE
17、获取ALV筛选后的数据
data: lc_grid TYPE REF TO cl_gui_alv_grid,
lv_FIDX TYPE lvc_t_fidx.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
importING
e_grid = lc_grid.
CALL METHOD lc_grid->check_changed_data.
"获取被筛选掉的数据索引内表
CALL METHOD lc_grid->get_filtered_entries
importING
et_filtered_entries = lv_FIDX.
18、激活SAP Getway
20、打开GUI键值对匹配
21、数据批量导出Excel,乱行
假设导出10W行数据
在第98000行乱行
则需要重新导出 index:98000 - 100000
不然数据会缺少
22、多条错误信息提示框显示
data: gt_error TYPE esp1_message_tab_type,
gs_error LIKE LINE OF gt_error.
MSGID:消息号 例如 ZMM
MSGTY:消息类型 例如 E
MSGNO:消息号 例如 009
MSGV1:消息1
MSGV2:消息2
MSGV3:消息3
MSGV4:消息4
LINENO :显示序号
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = gt_error.
23、在生产机和测试机修改代码(慎用)
data:BEGIN OF itab OCCURS 0,
line(200) TYPE c, "如果代码中某行大于了200个字符,请重新设定值,
END OF itab.
PARAMETERS: progname(120). "程序名称
READ REPORT progname INTO itab. "把指定的程序读取到内表
EDITOR-CALL FOR itab. "对内表数据进行修改(即代码进入编辑状态)
INSERT REPORT progname FROM itab."把修改后的程序插回sap
24、F4IF_INT_TABLE_VALUE_REQUEST不显示值
原因:数据源里的字段不能用C,需要参考数据元素
25、SmartForms语言翻译
data: gt_error TYPE esp1_message_tab_type,
gs_error LIKE LINE OF gt_error.
MSGID:消息号 例如 ZMM
MSGTY:消息类型 例如 E
MSGNO:消息号 例如 009
MSGV1:消息1
MSGV2:消息2
MSGV3:消息3
MSGV4:消息4
LINENO :显示序号
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = gt_error.
23、在生产机和测试机修改代码(慎用)
data:BEGIN OF itab OCCURS 0,
line(200) TYPE c, "如果代码中某行大于了200个字符,请重新设定值,
END OF itab.
PARAMETERS: progname(120). "程序名称
READ REPORT progname INTO itab. "把指定的程序读取到内表
EDITOR-CALL FOR itab. "对内表数据进行修改(即代码进入编辑状态)
INSERT REPORT progname FROM itab."把修改后的程序插回sap
24、F4IF_INT_TABLE_VALUE_REQUEST不显示值
原因:数据源里的字段不能用C,需要参考数据元素
25、SmartForms语言翻译
原因:数据源里的字段不能用C,需要参考数据元素
25、SmartForms语言翻译
SE63->->->
26、标准屏幕上增强获取操作码
FCODE
SY-UCOMM
27、转JSON串方法,KEY大写或小写
/ui2/cl_json=>pretty_mode-none " 大写
/ui2/cl_json=>pretty_mode-low_case " 小写
/ui2/cl_json=>pretty_mode-camel_case " 驼峰
lv_json_str = /ui2/cl_json=>serialize( data = ls_send
pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
28、ListBox下拉框去掉空白行
1、选择屏幕 设置必输即可 OBLIGATORY
2、普通dialog 设置 required
29、增强里提示信息
有的标准增强里,无法输出MESSAGE
可以用FM:
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
titel = '提示'
textline1 = 'XXX'
* TEXTLINE2 = ' '
* start_column = 25
* start_row = 6
.
30、submit调用传值
1、传输paramaters参数
submit report with p_werks = '1000'
2、传输select-options参数
data: lt_seltab TYPE TABLE OF rsparams,
ls_seltab LIKE LINE OF lt_seltab.
"也可传参paramater,kind = P
ls_seltab-selname = 'S_WERKS'.
ls_seltab-kind = 'S'.
ls_seltab-sign = 'I'.
ls_seltab-option = 'EQ'.
ls_seltab-low = '1000'.
ls_seltab-high = '2000'.
append ls_seltab to lt_seltab.
"传输参数
submit report with selection-table lt_seltab.
3、paramater和select-options结合
submit report with p_werks = '1000'
with selection-table = lt_seltab
4、调用完后,返回到当前程序
submit report and return
5、调用程序,跳过选择屏幕
submit report via selection-screen
6、调用程序,指定变式
submit report using selection-set 'variant'
7、调用程序,将结果写在内存里返回到当前程序
submit report exporting list to memory
使用FM:LIST_FROM_MEMORY和LIST_TO_ASCI接收alv参数
31、报表设置变式,动态日期设置
/ui2/cl_json=>pretty_mode-none " 大写
/ui2/cl_json=>pretty_mode-low_case " 小写
/ui2/cl_json=>pretty_mode-camel_case " 驼峰
lv_json_str = /ui2/cl_json=>serialize( data = ls_send
pretty_name = /ui2/cl_json=>pretty_mode-low_case ).
28、ListBox下拉框去掉空白行
1、选择屏幕 设置必输即可 OBLIGATORY
2、普通dialog 设置 required
29、增强里提示信息
有的标准增强里,无法输出MESSAGE
可以用FM:
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
titel = '提示'
textline1 = 'XXX'
* TEXTLINE2 = ' '
* start_column = 25
* start_row = 6
.
30、submit调用传值
1、传输paramaters参数
submit report with p_werks = '1000'
2、传输select-options参数
data: lt_seltab TYPE TABLE OF rsparams,
ls_seltab LIKE LINE OF lt_seltab.
"也可传参paramater,kind = P
ls_seltab-selname = 'S_WERKS'.
ls_seltab-kind = 'S'.
ls_seltab-sign = 'I'.
ls_seltab-option = 'EQ'.
ls_seltab-low = '1000'.
ls_seltab-high = '2000'.
append ls_seltab to lt_seltab.
"传输参数
submit report with selection-table lt_seltab.
3、paramater和select-options结合
submit report with p_werks = '1000'
with selection-table = lt_seltab
4、调用完后,返回到当前程序
submit report and return
5、调用程序,跳过选择屏幕
submit report via selection-screen
6、调用程序,指定变式
submit report using selection-set 'variant'
7、调用程序,将结果写在内存里返回到当前程序
submit report exporting list to memory
使用FM:LIST_FROM_MEMORY和LIST_TO_ASCI接收alv参数
31、报表设置变式,动态日期设置
有的标准增强里,无法输出MESSAGE
可以用FM:
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
titel = '提示'
textline1 = 'XXX'
* TEXTLINE2 = ' '
* start_column = 25
* start_row = 6
.
30、submit调用传值
1、传输paramaters参数
submit report with p_werks = '1000'
2、传输select-options参数
data: lt_seltab TYPE TABLE OF rsparams,
ls_seltab LIKE LINE OF lt_seltab.
"也可传参paramater,kind = P
ls_seltab-selname = 'S_WERKS'.
ls_seltab-kind = 'S'.
ls_seltab-sign = 'I'.
ls_seltab-option = 'EQ'.
ls_seltab-low = '1000'.
ls_seltab-high = '2000'.
append ls_seltab to lt_seltab.
"传输参数
submit report with selection-table lt_seltab.
3、paramater和select-options结合
submit report with p_werks = '1000'
with selection-table = lt_seltab
4、调用完后,返回到当前程序
submit report and return
5、调用程序,跳过选择屏幕
submit report via selection-screen
6、调用程序,指定变式
submit report using selection-set 'variant'
7、调用程序,将结果写在内存里返回到当前程序
submit report exporting list to memory
使用FM:LIST_FROM_MEMORY和LIST_TO_ASCI接收alv参数
31、报表设置变式,动态日期设置
还可以设置当前日期的前几天,后几天,范围等等
32、Editor提示框
CALL FUNCTION 'ADA_POPUP_WITH_TABLE'
EXPORTING
startpos_col = 1
startpos_row = 1
TABLES
valuetab = lt_mes.
33、根据表达式替换
" 将 lv_batch 里的所有字母替换成 *
REPLACE ALL OCCURRENCES OF REGEX '[A-Z]' IN lv_batch WITH '*'.
34、AlV级别下拉框
使用OO ALV即可简单实现,标准例子:BCALV_EDIT_06、BCALV_EDIT_07
1、LVC_S_FCAT-drdn_hndl = '1'.
两种都可实现:
1.1
data: gt_ddval TYPE lvc_t_dral,
gs_ddval TYPE lvc_s_dral.
gs_ddval-handle = '1'.
gs_ddval-value = 'ABC'.
APPEND gs_ddval TO gt_ddval.
CALL METHOD o_alv->set_drop_down_table
EXPORTING
it_drop_down_alias = gt_ddval.
1.2
data: gt_dropdown TYPE lvc_t_drop,
gs_dropdown TYPE lvc_s_drop.
gs_dropdown -handle = '1'.
gs_dropdown -value = 'ABC'.
APPEND gs_dropdown TO gt_dropdown .
CALL METHOD o_alv->set_drop_down_table
EXPORTING
it_drop_down = gt_dropdown .
35、UUID
TRY.
CALL METHOD CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32
RECEIVING
UUID = LV_UUID.
CATCH CX_UUID_ERROR .
ENDTRY.
36、查询字符在字符串最后的位置
data: moff TYPE i,
mlen TYPE i,
mcnt TYPE i.
FIND ALL OCCURRENCES OF 'X'
IN Str
MATCH OFFSET moff "最后一次出现位置
MATCH LENGTH mlen "匹配字符长度
MATCH COUNT mcnt. " 计数匹配次数
37、获取用户人员和地址编号
函数:ICL_USER_PERSNUMBER_GET
38、错误信息捕获
LOOP AT lt_return INTO ls_return WHERe type = 'EAX'.
lv_msg = lv_msg && ls_return-message.
ENDLOOP.
loop at i_messtab where msgtyp = 'E' or msgtyp = 'A'.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = i_messtab-msgid
msgnr = i_messtab-msgnr
msgv1 = i_messtab-msgv1
msgv2 = i_messtab-msgv2
msgv3 = i_messtab-msgv3
msgv4 = i_messtab-msgv4
importing
message_text_output = lv_msg.
endloop.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
INTO lv_msg
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
39、选择屏幕上输入参数不转换大写
" 将 lv_batch 里的所有字母替换成 * REPLACE ALL OCCURRENCES OF REGEX '[A-Z]' IN lv_batch WITH '*'.
34、AlV级别下拉框
使用OO ALV即可简单实现,标准例子:BCALV_EDIT_06、BCALV_EDIT_07
1、LVC_S_FCAT-drdn_hndl = '1'.
两种都可实现:
1.1
data: gt_ddval TYPE lvc_t_dral,
gs_ddval TYPE lvc_s_dral.
gs_ddval-handle = '1'.
gs_ddval-value = 'ABC'.
APPEND gs_ddval TO gt_ddval.
CALL METHOD o_alv->set_drop_down_table
EXPORTING
it_drop_down_alias = gt_ddval.
1.2
data: gt_dropdown TYPE lvc_t_drop,
gs_dropdown TYPE lvc_s_drop.
gs_dropdown -handle = '1'.
gs_dropdown -value = 'ABC'.
APPEND gs_dropdown TO gt_dropdown .
CALL METHOD o_alv->set_drop_down_table
EXPORTING
it_drop_down = gt_dropdown .
35、UUID
TRY.
CALL METHOD CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32
RECEIVING
UUID = LV_UUID.
CATCH CX_UUID_ERROR .
ENDTRY.
36、查询字符在字符串最后的位置
data: moff TYPE i,
mlen TYPE i,
mcnt TYPE i.
FIND ALL OCCURRENCES OF 'X'
IN Str
MATCH OFFSET moff "最后一次出现位置
MATCH LENGTH mlen "匹配字符长度
MATCH COUNT mcnt. " 计数匹配次数
37、获取用户人员和地址编号
函数:ICL_USER_PERSNUMBER_GET
38、错误信息捕获
LOOP AT lt_return INTO ls_return WHERe type = 'EAX'.
lv_msg = lv_msg && ls_return-message.
ENDLOOP.
loop at i_messtab where msgtyp = 'E' or msgtyp = 'A'.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = i_messtab-msgid
msgnr = i_messtab-msgnr
msgv1 = i_messtab-msgv1
msgv2 = i_messtab-msgv2
msgv3 = i_messtab-msgv3
msgv4 = i_messtab-msgv4
importing
message_text_output = lv_msg.
endloop.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
INTO lv_msg
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
39、选择屏幕上输入参数不转换大写
TRY.
CALL METHOD CL_SYSTEM_UUID=>IF_SYSTEM_UUID_STATIC~CREATE_UUID_C32
RECEIVING
UUID = LV_UUID.
CATCH CX_UUID_ERROR .
ENDTRY.
36、查询字符在字符串最后的位置
data: moff TYPE i,
mlen TYPE i,
mcnt TYPE i.
FIND ALL OCCURRENCES OF 'X'
IN Str
MATCH OFFSET moff "最后一次出现位置
MATCH LENGTH mlen "匹配字符长度
MATCH COUNT mcnt. " 计数匹配次数
37、获取用户人员和地址编号
函数:ICL_USER_PERSNUMBER_GET
38、错误信息捕获
LOOP AT lt_return INTO ls_return WHERe type = 'EAX'.
lv_msg = lv_msg && ls_return-message.
ENDLOOP.
loop at i_messtab where msgtyp = 'E' or msgtyp = 'A'.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = i_messtab-msgid
msgnr = i_messtab-msgnr
msgv1 = i_messtab-msgv1
msgv2 = i_messtab-msgv2
msgv3 = i_messtab-msgv3
msgv4 = i_messtab-msgv4
importing
message_text_output = lv_msg.
endloop.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
INTO lv_msg
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
39、选择屏幕上输入参数不转换大写
函数:ICL_USER_PERSNUMBER_GET
38、错误信息捕获
LOOP AT lt_return INTO ls_return WHERe type = 'EAX'.
lv_msg = lv_msg && ls_return-message.
ENDLOOP.
loop at i_messtab where msgtyp = 'E' or msgtyp = 'A'.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = i_messtab-msgid
msgnr = i_messtab-msgnr
msgv1 = i_messtab-msgv1
msgv2 = i_messtab-msgv2
msgv3 = i_messtab-msgv3
msgv4 = i_messtab-msgv4
importing
message_text_output = lv_msg.
endloop.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
INTO lv_msg
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
39、选择屏幕上输入参数不转换大写
在后面加lower case即可
40、ALV排序
GS_SORT-FIELDNAME = 'XXX'.
GS_SORT-UP = 'X'. " UP升序 DOWN降序
APPEND GS_SORT TO GT_SORT.
41、ALV TOP OF PAGE
I_CALLBACK_TOP_OF_PAGE = 'FRM_TOP_OF_PAGE'
FORM FRM_TOP_OF_PAGE.
data: GT_PAGE TYPE SLIS_T_LISTHEADER,
GS_PAGE TYPE SLIS_LISTHEADER.
CLEAR GS_PAGE.
GS_PAGE-TYP = 'H'.
GS_PAGE-INFO = '抬头文本'
APPEND GS_PAGE TO GT_PAGE.
CLEAR GS_PAGE.
GS_PAGE-TYP = 'S'.
GS_PAGE-KEY = '黑体关键字'.
GS_PAGE-INFO = '文本信息'.
APPEND GS_PAGE TO GT_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_PAGE.
ENDFORM.
42、传输请求DUMP,查看信息
I_CALLBACK_TOP_OF_PAGE = 'FRM_TOP_OF_PAGE'
FORM FRM_TOP_OF_PAGE.
data: GT_PAGE TYPE SLIS_T_LISTHEADER,
GS_PAGE TYPE SLIS_LISTHEADER.
CLEAR GS_PAGE.
GS_PAGE-TYP = 'H'.
GS_PAGE-INFO = '抬头文本'
APPEND GS_PAGE TO GT_PAGE.
CLEAR GS_PAGE.
GS_PAGE-TYP = 'S'.
GS_PAGE-KEY = '黑体关键字'.
GS_PAGE-INFO = '文本信息'.
APPEND GS_PAGE TO GT_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_PAGE.
ENDFORM.



