屏幕-弹出对话框
用于OO_ALV报表的双击事件弹出框显示详情中,时间有限就不做修改了,直接上注释:
P_ROW_ID :行
P_COLUMN_ID :列
FORM FRM_DOUBLE_CLICK USING P_ROW_ID
P_COLUMN_ID
P_ROW_NO_ID.
DATA LV_EXIT TYPE C VALUE 'X'.
包含颜色代码的内部输出表字段的名称:
完整的列表行由内部输出表的一列中的颜色编码单独着色。此字段的名称分配给此参数。
内部输出表字段必须是char(3)类型。
编码必须具有以下语法:‘CXY’:
** C = color(每段代码必须以‘C’开头)
** x = 颜色编号(‘1’-‘9’)
** y = 突出显示(‘0’=off,‘1’=on)
** 注意:键列的颜色不受影响。
TYPES: BEGIN OF STRUCT_POPUP,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
COLOR TYPE CHAR03,
END OF STRUCT_POPUP.
DATA: GT_POPUP TYPE TABLE OF STRUCT_POPUP,
GS_POPUP TYPE STRUCT_POPUP.
** 将双击选中的行内容添加到显示表:
CLEAR GS_CHECK.
READ TABLE GT_CHECK INTO GS_CHECK INDEX P_ROW_ID.
GS_POPUP-MATNR = GS_CHECK-MATNR.
GS_POPUP-MAKTX = GS_CHECK-MAKTX.
GS_POPUP-COLOR = 'C70'.
APPEND GS_POPUP TO GT_POPUP.
** 删除弹出框右下部分工具栏的部分按钮:
DATA LT_EXCLUDE TYPE SLIS_T_EXTAB.
DATA LS_EXCLUDE TYPE SLIS_EXTAB.
LS_EXCLUDE-FCODE = '&ETA'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '%SC'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '%SC+'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&OUP'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&ODN'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&ILT'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&OL0'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&CRB'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&CRL'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&CRR'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&CRE'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
* LS_EXCLUDE-fcode = '&AC1'. APPEND LS_EXCLUDE TO LT_EXCLUDE. " cancel
LS_EXCLUDE-FCODE = '&ALL'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
LS_EXCLUDE-FCODE = '&SAL'. APPEND LS_EXCLUDE TO LT_EXCLUDE.
** 为弹出框ALV显示添加字段目录:
DATA IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
* DATA IT_FIELDCAT TYPE TABLE OF SLIS_FIELDCAT_ALV WITH HEADER LINE.
IT_FIELDCAT-COL_POS = '1'.
IT_FIELDCAT-FIELDNAME = 'MATNR'.
IT_FIELDCAT-SELTEXT_L = '物料号'.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '2'.
IT_FIELDCAT-FIELDNAME = 'MAKTX'.
IT_FIELDCAT-SELTEXT_L = '物料描述'.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'Title of the popup'
I_SELECTION = ' '
* I_ALLOW_NO_SELECTION =
I_ZEBRA = 'X'
I_SCREEN_START_COLUMN = 2
I_SCREEN_START_LINE = 5
I_SCREEN_END_COLUMN = 68
I_SCREEN_END_LINE = 10
* I_CHECKBOX_FIELDNAME =
I_LINEMARK_FIELDNAME = 'COLOR'
** I_SCROLL_TO_SEL_LINE: 一行已被高亮显示,其在内部输出表中的索引大于可以在弹出窗口中显示的条目数,而无需滚动。
** 当调用弹出时,光标应立即定位在该行上或滚动到该行上。先决条件:用“C50”对突出显示的行进行颜色编码
* I_SCROLL_TO_SEL_LINE = 'X'
** it_tabname:调用程序中内部输出表的名称
** 显示表的目录字段添加的两种方式:
** 方式一:数据库结构体
* I_TABNAME = '1' "调用程序中内部输出表的名称
* I_STRUCTURE_NAME = 'MARA'
** 方式二:使用 IT_FIELDCAT,此时必须注意,I_TABNAME必须有值,即使是赋值为空
** 此处必须赋值(目前已经测试:可以赋值为空,也可以赋值为需要显示的内表)
* I_TABNAME = 'GT_POPUP' "调用程序中内部输出表的名称
I_TABNAME = SPACE
IT_FIELDCAT = IT_FIELDCAT[] "自己添加的字段目录
IT_EXCLUDING = LT_EXCLUDE "删除不需要的菜单栏/工具栏按钮
* I_CALLBACK_PROGRAM =
* I_CALLBACK_USER_COMMAND =
* IS_PRIVATE =
IMPORTING
* ES_SELFIELD = "返回光标相关信息
E_EXIT = LV_EXIT "当用户使用‘Cancel’函数离开弹出窗口时,将设置标志。
TABLES
T_OUTTAB = GT_POPUP
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
*Implement suitable error handling here
ENDIF.
CLEAR GS_CHECK.
REFRESH GT_POPUP.
ENDFORM.