在对话框程序中的选择屏幕添加图标
要在选择屏幕中添加图标,其中包括参数:
在参数的选择文本中或选择选项(select-option)中写入 @01@
或选择选项:
您可以使用 01、02、03,依此类推,以获取不同的不同图标。
在运行时更改参数的名称
这是在运行时更改参数的很酷的技巧:
在特定时间或单击参数标签将更改...
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS : rd1 RADIOBUTTON GROUP g1 USER-COMMAND abc DEFAULT 'X',
rd2 RADIOBUTTON GROUP g1.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN: COMMENT 1(50) text_003. " (text_003 will holds the name)
PARAMETERS p_matnr TYPE matnr .
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
*To change the name on click of radio button
AT SELECTION-SCREEN OUTPUT.
IF rd1 = 'X'.
text_003 = 'Matnr'.
ELSEIF rd2 = 'X'.
text_003 = 'Material Number'.
ENDIF.
实际开发中遇到的解决方式:
代码如下:
**----------------------------------------------------------------------*
*& 选择屏幕部分
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text002.
SELECTION-SCREEN: BEGIN OF LINE.
PARAMETERS: p1 TYPE c RADIOBUTTON GROUP rb1 USER-COMMAND uc DEFAULT 'X'.
SELECTION-SCREEN: COMMENT (30) FOR FIELD p1.
PARAMETERS: p2 TYPE c RADIOBUTTON GROUP rb1.
SELECTION-SCREEN: COMMENT (30) FOR FIELD p2.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text001.
SELECT-OPTIONS:
s_pbom FOR zmmt076-zcompocode MODIF ID ty1, " Component Code
s_fbom FOR zmmt077-zforpegcode MODIF ID ty2," Forecast Pegging Code
so_sku FOR mara-zmatsku, " SKU
s_zbrand FOR mara-zbrand , " Brand
s_zrange FOR mara-zrange, " Range
s_zprod FOR mara-zprod, " Product
s_zprgrp FOR mara-zprdgrp, " Product Group
s_series FOR mara-zseries_int, " Internal Series
s_erdat FOR zmmt076-erdat, " Update Date
s_bismt FOR zmmt076-zbismt, " Old Material No.
s_crdat FOR zmmt076-erdat. " Sales Order Created Date
SELECTION-SCREEN END OF BLOCK b1.
INITIALIZATION.
text001 = 'Selection'.
text002 = 'PBOM/FBOM'.
s_crdat-low = '20200101'.
s_crdat-high = sy-datum.
s_crdat-sign = 'I'.
s_crdat-option = 'BT'.
APPEND s_crdat.
CLEAR s_crdat.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'TY1'.
IF p1 = 'X'.
screen-active = '1'.
ELSE.
screen-active = '0'.
ENDIF.
WHEN 'TY2'.
IF p2 IS INITIAL.
screen-active = '0'.
ELSE.
screen-active = '1'.
ENDIF.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
显示效果如下:
Describe 方法的替代
我们可以在不使用 DESCRIBE 语句的情况下计算内表的行:
count = lines(itab)
动态 SQL 语句
动态创建选择查询语句的技巧:
SELECT (<fs_fields>)
FROM (<fs_tabname>)
APPENDING TABLE <fs_itab>
WHERE (wa_tab) .
[every variable should be of character type]
显示 ALV 的最简单方式
使用此代码显示 ALV 的最简单和最短方法:
DATA: gr_table TYPE REF TO cl_salv_table.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = itab. " internal table having data to display
gr_table->display( ).
运行阻塞的 T-Code
Tcodes 被中断...不是一个大问题。这是运行任何 T-code 的两种方法:
RS_HDSYS_CALL_TC_VARIANT: RS_HDSYS_CALL_TC_VARIANT 并使用参数进行权限检查- 在报表中使用如下的代码:
DATA: l_tcode TYPE sytcode.
PARAMETERS: p_tcode TYPE sy-tcode.
START-OF-SELECTION.
SELECT SINGLE tcode FROM tstc
INTO l_tcode
WHERE tcode = p_tcode.
IF sy-subrc = 0.
CALL TRANSACTION p_tcode.
ELSE.
MESSAGE 'TCODE not found.' TYPE 'I'.
ENDIF.
显示弹出窗口
使用 method th_popup 函数来显示弹出框或消息提示。
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
text_question = '确定删除?'
IMPORTING
answer = lv_answer
* TABLES
* PARAMETER =
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
CHECK lv_answer = '1'.
报表中创建日志
这是在 ABAP 中创建日志显示的代码:
CREATE OBJECT lc_app_log
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2.
*Error messages
LOOP AT i_msg_log INTO wa_msg_log.
lw_msg = wa_msg_log-message.
lw_msgty = wa_msg_log-msgtyp.
CALL METHOD lc_app_log->add_msg_free_text
EXPORTING
im_msg = lw_msg
im_msgty = lw_msgty
EXCEPTIONS
msg_error = 1
OTHERS = 2.
IF NOT sy-subrc IS INITIAL.
RETURN.
ENDIF.
CLEAR wa_msg_log.
ENDLOOP.
lc_app_log->display_log( ).
用字符串查找报表
我们可以通过使用报表输入任何程序中编写的字符串来找到报表:RS_ABAP_SOURCE_SCAN
在不按 CTRL+C 或 CTRL+V 的情况下复制任何行
使用 CTRL+D 来复制任何一行,通常在更新代码时使用,将原有的逻辑注释,复制当前行的代码,重新写新的业务逻辑代码
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 8 天,点击查看活动详情