一个极好的ALV例子
在网上找了个不错的ALV例子,学习并整理了一下贴出具体的程式。
REPORT ZZWEI_ALV_EXAMPLE.
TABLES:LFA1,"供应商主数据 (一般地区)
EKPO,"采购凭证项目
EINE,"采购信息记录 - 采购组织数据
EINA."采购信息记录 - 一般数据
INCLUDE <LIST>.
TYPE-POOLS:SLIS.
DATA:i_fieldcat_alv TYPE SLIS_T_FIELDCAT_ALV,"定义列标题(属性信息)
i_layout TYPE SLIS_LAYOUT_ALV,
i_fieldcat TYPE SLIS_FIELDCAT_ALV,"定义对象
i_events TYPE SLIS_T_EVENT,"alv事件
w_events LIKE LINE OF i_events,
i_list_comments TYPE SLIS_T_LISTHEADER,"alv表单标题区域设置
w_list_comments LIKE LINE OF i_list_comments,
w_repid LIKE SY-REPID."当前程序
*定义内表字段
DATA:BEGIN OF hd_itab OCCURS 0,
infnr LIKE EINE-INFNR,"采购信息记录
ekorg LIKE EINE-EKORG,"采购组织
matnr LIKE EINA-MATNR,"物料编号
lifnr LIKE EINA-LIFNR,"供应商
erdat LIKE EINE-ERDAT,"创建日期
loekz LIKE EINE-LOEKZ,"删除标记
urznr LIKE EINA-URZNR,"批准号
color(4) TYPE C, "定义颜色
aplfz LIKE EINE-APLFZ,"计划交货时间
netpr LIKE EINE-NETPR,"净价
peinh LIKE EINE-PEINH,"单位价格
dwjj LIKE EINE-NETPR,"单位净价
bprme LIKE EINE-BPRME,"订单价格单位
maktx LIKE MAKT-MAKTX,"物料名称
name1 LIKE LFA1-NAME1,"供应商名称
iicon LIKE ICON-NAME, "ICON 图标
END OF hd_itab.
*选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE t1.
SELECT-OPTIONS:s_infnr FOR EINE-INFNR MEMORY ID INF."信息记录号码
PARAMETERS:PR_LOEKZ TYPE C AS CHECKBOX DEFAULT ''."显示有删除标志的信息记录
SELECT-OPTIONS:s_ekorg FOR EINE-EKORG MEMORY ID EKO."采购组织
SELECT-OPTIONS:s_matnr FOR EINA-MATNR MEMORY ID MAT."物料编号
SELECT-OPTIONS:s_lifnr FOR EINA-LIFNR MEMORY ID LIF."供应商编号
SELECT-OPTIONS:s_erdat FOR EINA-ERDAT MEMORY ID erd."创建日期
SELECT-OPTIONS:s_urznr FOR EINA-URZNR MEMORY ID urz."批准号
SELECTION-SCREEN END OF BLOCK block1.
*初始化事件
INITIALIZATION.
t1 = '采购查询'.
*屏幕开始事件
START-OF-SELECTION.
PERFORM getdata.
PERFORM events_build.
PERFORM layout_build.
PERFORM fieldcat_build.
PERFORM alv_display_data.
*&--------------------------------------------------------------------*
*& Form getdata
*&--------------------------------------------------------------------*
FORM getdata.
CLEAR hd_itab.
CLEAR hd_itab[].
IF PR_LOEKZ = ''.
SELECT * FROM EINE INNER JOIN EINA ON EINE~INFNR = EINA~INFNR INTO CORRESPONDING FIELDS OF hd_itab
WHERE EINE~INFNR IN s_infnr AND EINE~EKORG IN s_ekorg AND EINA~MATNR IN s_matnr AND EINA~LIFNR IN s_lifnr AND EINA~LOEKZ <> 'X' AND EINE~ERDAT IN s_erdat AND EINA~URZNR IN s_urznr
ORDER BY EINE~INFNR DESCENDING.
SELECT SINGLE MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF hd_itab WHERE matnr = hd_itab-matnr.
SELECT SINGLE NAME1 FROM LFA1 INTO CORRESPONDING FIELDS OF hd_itab WHERE lifnr = hd_itab-lifnr.
APPEND hd_itab.
CLEAR hd_itab.
ENDSELECT.
ELSE.
SELECT * FROM EINE INNER JOIN EINA ON EINE~INFNR = EINA~INFNR INTO CORRESPONDING FIELDS OF hd_itab
WHERE EINE~INFNR IN s_infnr AND EINE~EKORG IN s_ekorg AND EINA~MATNR IN s_matnr AND EINA~LIFNR IN s_lifnr AND EINE~ERDAT IN s_erdat AND EINA~URZNR IN s_urznr
ORDER BY EINE~INFNR DESCENDING.
SELECT SINGLE MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF hd_itab WHERE matnr = hd_itab-matnr.
SELECT SINGLE NAME1 FROM LFA1 INTO CORRESPONDING FIELDS OF hd_itab WHERE lifnr = hd_itab-lifnr.
APPEND hd_itab.
CLEAR hd_itab.
ENDSELECT.
ENDIF.
LOOP AT hd_itab.
IF hd_itab-loekz = 'X'.
hd_itab-color = 'C610'.
hd_itab-iicon = ICON_INCOMPLETE. "ICON圖標信息
ELSE.
hd_itab-iicon = ICON_CHECKED. "ICON圖標信息
ENDIF.
hd_itab-dwjj = hd_itab-netpr / hd_itab-peinh. "净价/价格单位
MODIFY hd_itab."更新
CLEAR hd_itab."CLEAR HEADER LINE
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------------*
*& FORM LAYOUT BUILD
*&---------------------------------------------------------------------------*
FORM layout_build.
i_layout-ZEBRA = 'X'. "ALV表格按斑马线条纹显示
"i_layout-NO_VLINE = 'X'. "ALV表格顯示時無堅向線
i_layout-COLWIDTH_OPTIMIZE = 'X'. "将ALV字段宽度设置为最优化
* i_layout-detail_initial_lines = 'X'.
* i_layout-detail_titlebar = '详细内容'.
* i_layout-box_fieldname = 'LINE'.
i_layout-INFO_FIELDNAME = 'COLOR'. "設置顏色FIELD
i_layout-NO_COLHEAD = ''.
w_repid = SY-REPID.
ENDFORM.
*&---------------------------------------------------------------------------*
*& FORM FIELDCAT BUILD
*&---------------------------------------------------------------------------*
FORM fieldcat_build.
REFRESH i_fieldcat_alv.
CLEAR i_fieldcat.
DATA column TYPE I VALUE 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'INFNR'.
i_fieldcat-SELTEXT_S = '采购信息记录'.
i_fieldcat-SELTEXT_M = '采购信息记录'.
i_fieldcat-SELTEXT_L = '采购信息记录'.
"i_fieldcat-reptext_ddic = '采购信息记录号'.
i_fieldcat-LZERO = 'X'. "字义字段前导以"0"的形式显示
i_fieldcat-KEY = 'X'.
i_fieldcat-HOTSPOT = 'X'."设置字段是否有热点(热点字段显示有下划线)
i_fieldcat-EMPHASIZE = 'C300'."设置字段颜色
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'LIFNR'.
i_fieldcat-SELTEXT_S = '供应商号码'.
i_fieldcat-SELTEXT_M = '供应商号码'.
i_fieldcat-SELTEXT_L = '供应商号码'.
"i_fieldcat-reptext_ddic = '供应商号码'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
i_fieldcat-HOTSPOT = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'NAME1'.
i_fieldcat-SELTEXT_S = '供应商名称'.
i_fieldcat-SELTEXT_M = '供应商名称'.
i_fieldcat-SELTEXT_L = '供应商名称'.
"i_fieldcat-reptext_ddic = '供应商名称'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'MATNR'.
i_fieldcat-SELTEXT_S = '物料编号'.
i_fieldcat-SELTEXT_M = '物料编号'.
i_fieldcat-SELTEXT_L = '物料编号'.
"i_fieldcat-reptext_ddic = '物料编号'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'MAKTX'.
i_fieldcat-SELTEXT_S = '物料名称'.
i_fieldcat-SELTEXT_M = '物料名称'.
i_fieldcat-SELTEXT_L = '物料名称'.
"i_fieldcat-reptext_ddic = '物料名称'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'NETPR'.
i_fieldcat-SELTEXT_S = '净价'.
i_fieldcat-SELTEXT_M = '净价'.
i_fieldcat-SELTEXT_L = '净价'.
"i_fieldcat-reptext_ddic = '净价'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'PEINH'.
i_fieldcat-SELTEXT_S = '价格单位'.
i_fieldcat-SELTEXT_M = '价格单位'.
i_fieldcat-SELTEXT_L = '价格单位'.
"i_fieldcat-reptext_ddic = '价格单位'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'DWJJ'.
i_fieldcat-SELTEXT_S = '单位净价'.
i_fieldcat-SELTEXT_M = '单位净价'.
i_fieldcat-SELTEXT_L = '单位净价'.
"i_fieldcat-reptext_ddic = '单位净价'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'BPRME'.
i_fieldcat-SELTEXT_S = '计量单位'.
i_fieldcat-SELTEXT_M = '计量单位'.
i_fieldcat-SELTEXT_L = '计量单位'.
"i_fieldcat-reptext_ddic = '计量单位'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'EKORG'.
i_fieldcat-SELTEXT_S = '采购组织'.
i_fieldcat-SELTEXT_M = '采购组织'.
i_fieldcat-SELTEXT_L = '采购组织'.
"i_fieldcat-reptext_ddic = '采购组织'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'APLFZ'.
i_fieldcat-SELTEXT_S = '计划交货时间'.
i_fieldcat-SELTEXT_M = '计划交货时间'.
i_fieldcat-SELTEXT_L = '计划交货时间'.
"i_fieldcat-reptext_ddic = '计划交货时间'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
i_fieldcat-Emphasize = 'C211'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'ERDAT'.
i_fieldcat-SELTEXT_S = '创建日期'.
i_fieldcat-SELTEXT_M = '创建日期'.
i_fieldcat-SELTEXT_L = '创建日期'.
"i_fieldcat-reptext_ddic = '创建日期'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'LOEKZ'.
i_fieldcat-SELTEXT_S = '删除标志'.
i_fieldcat-SELTEXT_M = '删除标志'.
i_fieldcat-SELTEXT_L = '删除标志'.
"i_fieldcat-reptext_ddic = '删除标志'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'URZNR'.
i_fieldcat-SELTEXT_S = '批准标记'.
i_fieldcat-SELTEXT_M = '批准标记'.
i_fieldcat-SELTEXT_L = '批准标记'.
"i_fieldcat-reptext_ddic = '批准标记'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
i_fieldcat-Emphasize = 'C211'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'IICON'.
* i_fieldcat-SELTEXT_S = '图标'.
* i_fieldcat-SELTEXT_M = 'ICON'.
i_fieldcat-SELTEXT_L = 'ICON'.
i_fieldcat-HOTSPOT = 'X'.
i_fieldcat-ICON = 'X'.
"i_fieldcat-reptext_ddic = '批准标记'.
"i_fieldcat-LZERO = 'X'.
"i_fieldcat-KEY = 'X'.
"i_fieldcat-Emphasize = 'C211'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
ENDFORM.
*&---------------------------------------------------------------------------*
*& FORM ALV DISPLAY DATA
*&---------------------------------------------------------------------------*
FORM alv_display_data.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = w_repid
I_GRID_TITLE = '采购信息记录汇总查询'
IS_LAYOUT = i_layout
IT_FIELDCAT = i_fieldcat_alv[]
IT_EVENTS = i_events[]
"I_SAVE = 'A'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "USER_COMMAND EVENT
TABLES
T_OUTTAB = hd_itab[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
FORM user_command USING i_ucomm TYPE SY-UCOMM i_selfield TYPE SLIS_SELFIELD.
CASE i_ucomm.
WHEN '&IC1'. "对于热点链接,所对应的动作码为"&IC1"
IF i_selfield-FIELDNAME EQ 'INFNR'. "判断用户当前单击的是哪列
PERFORM call_tran USING i_selfield. "调用自定义事务
ENDIF.
ENDCASE.
ENDFORM.
FORM call_tran USING i_selfield TYPE SLIS_SELFIELD.
"SET SCREEN 0. "返回主屏幕
READ TABLE hd_itab INDEX i_selfield-tabindex. "i_selfield-tabindex 当击行索引,从内表中提取数据
IF SY-SUBRC = 0.
SET PARAMETER ID 'MAT' FIELD hd_itab-MATNR. "MAT指参数ID
SET PARAMETER ID 'LIF' FIELD hd_itab-LIFNR.
SET PARAMETER ID 'EKO' FIELD hd_itab-EKORG.
SET PARAMETER ID 'INF' FIELD hd_itab-INFNR.
CALL TRANSACTION 'ME13'."AND SKIP FIRST SCREEN "调用其它事务 ME13是我们要调用的事务
ENDIF.
ENDFORM.
FORM ALV_TOP_OF_PAGE. "ALV表头信息
CLEAR:i_list_comments.
w_list_comments-typ = 'H'.
w_list_comments-key = ''.
w_list_comments-info = '采购信息记录查询报表'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
DATA:date_temp(30) TYPE C.
WRITE: SY-DATUM TO date_temp MM/DD/YYYY.
CONCATENATE '日期:' date_temp INTO date_temp.
CONCATENATE date_temp '. IT部' INTO date_temp.
w_list_comments-typ = 'S'.
w_list_comments-key = ''.
w_list_comments-info = date_temp.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' "输出注释
EXPORTING
IT_LIST_COMMENTARY = i_list_comments
I_LOGO = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID = 'X'
* I_ALV_FORM =
.
ENDFORM.
FORM ALV_END_OF_LIST.
CLEAR: i_list_comments.
* w_list_comments-typ = 'S'.
* w_list_comments-info = 'Create By IT DEPARTMENT'.
* APPEND w_list_comments TO i_list_comments.
* CLEAR w_list_comments.
*
* CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
* EXPORTING
* IT_LIST_COMMENTARY = i_list_comments
** I_LOGO = 'ENJOYSAP_LOGO'
* I_END_OF_LIST_GRID = 'X'
** I_ALV_FORM =
* .
CLEAR:i_list_comments.
w_list_comments-typ = 'S'.
w_list_comments-info = '确认:________采购申请人:___________________'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
w_list_comments-typ = 'S'.
w_list_comments-info = 'Create By Information Department'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
DATA:data_temp(30) TYPE C.
CONCATENATE '打印者:' SY-UNAME INTO data_temp.
w_list_comments-typ = 'S'.
w_list_comments-info = data_temp.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = i_list_comments
I_LOGO = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID = 'X'
* I_ALV_FORM =
.
ENDFORM.
FORM events_build.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET' "输出一个内表类型是SLIS_T_EVENT,行项为SLIS_ALV_EVENT,包含两个字段,一个是事件名称,另一个是处理事件的FORM名称
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = i_events
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE i_events WITH KEY NAME = 'TOP_OF_PAGE' INTO w_events.
IF SY-SUBRC = 0.
MOVE 'ALV_TOP_OF_PAGE' TO w_events-form.
MODIFY i_events FROM w_events INDEX SY-TABIX.
ENDIF.
READ TABLE i_events INTO w_events WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
w_events-name = 'USER_COMMAND'.
MODIFY i_events FROM w_events INDEX SY-TABIX.
ENDIF.
READ TABLE i_events WITH KEY NAME = 'END_OF_LIST' INTO w_events.
IF SY-SUBRC = 0.
MOVE 'ALV_END_OF_LIST' TO w_events-form.
MODIFY i_events FROM w_events INDEX SY-TABIX.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Report ZZWEI_ALV_EXAMPLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZZWEI_ALV_EXAMPLE.
TABLES:LFA1,"供应商主数据 (一般地区)
EKPO,"采购凭证项目
EINE,"采购信息记录 - 采购组织数据
EINA."采购信息记录 - 一般数据
INCLUDE <LIST>.
TYPE-POOLS:SLIS.
DATA:i_fieldcat_alv TYPE SLIS_T_FIELDCAT_ALV,"定义列标题(属性信息)
i_layout TYPE SLIS_LAYOUT_ALV,
i_fieldcat TYPE SLIS_FIELDCAT_ALV,"定义对象
i_events TYPE SLIS_T_EVENT,"alv事件
w_events LIKE LINE OF i_events,
i_list_comments TYPE SLIS_T_LISTHEADER,"alv表单标题区域设置
w_list_comments LIKE LINE OF i_list_comments,
w_repid LIKE SY-REPID."当前程序
*定义内表字段
DATA:BEGIN OF hd_itab OCCURS 0,
infnr LIKE EINE-INFNR,"采购信息记录
ekorg LIKE EINE-EKORG,"采购组织
matnr LIKE EINA-MATNR,"物料编号
lifnr LIKE EINA-LIFNR,"供应商
erdat LIKE EINE-ERDAT,"创建日期
loekz LIKE EINE-LOEKZ,"删除标记
urznr LIKE EINA-URZNR,"批准号
color(4) TYPE C, "定义颜色
aplfz LIKE EINE-APLFZ,"计划交货时间
netpr LIKE EINE-NETPR,"净价
peinh LIKE EINE-PEINH,"单位价格
dwjj LIKE EINE-NETPR,"单位净价
bprme LIKE EINE-BPRME,"订单价格单位
maktx LIKE MAKT-MAKTX,"物料名称
name1 LIKE LFA1-NAME1,"供应商名称
iicon LIKE ICON-NAME, "ICON 图标
END OF hd_itab.
*选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE t1.
SELECT-OPTIONS:s_infnr FOR EINE-INFNR MEMORY ID INF."信息记录号码
PARAMETERS:PR_LOEKZ TYPE C AS CHECKBOX DEFAULT ''."显示有删除标志的信息记录
SELECT-OPTIONS:s_ekorg FOR EINE-EKORG MEMORY ID EKO."采购组织
SELECT-OPTIONS:s_matnr FOR EINA-MATNR MEMORY ID MAT."物料编号
SELECT-OPTIONS:s_lifnr FOR EINA-LIFNR MEMORY ID LIF."供应商编号
SELECT-OPTIONS:s_erdat FOR EINA-ERDAT MEMORY ID erd."创建日期
SELECT-OPTIONS:s_urznr FOR EINA-URZNR MEMORY ID urz."批准号
SELECTION-SCREEN END OF BLOCK block1.
*初始化事件
INITIALIZATION.
t1 = '采购查询'.
*屏幕开始事件
START-OF-SELECTION.
PERFORM getdata.
PERFORM events_build.
PERFORM layout_build.
PERFORM fieldcat_build.
PERFORM alv_display_data.
*&--------------------------------------------------------------------*
*& Form getdata
*&--------------------------------------------------------------------*
FORM getdata.
CLEAR hd_itab.
CLEAR hd_itab[].
IF PR_LOEKZ = ''.
SELECT * FROM EINE INNER JOIN EINA ON EINE~INFNR = EINA~INFNR INTO CORRESPONDING FIELDS OF hd_itab
WHERE EINE~INFNR IN s_infnr AND EINE~EKORG IN s_ekorg AND EINA~MATNR IN s_matnr AND EINA~LIFNR IN s_lifnr AND EINA~LOEKZ <> 'X' AND EINE~ERDAT IN s_erdat AND EINA~URZNR IN s_urznr
ORDER BY EINE~INFNR DESCENDING.
SELECT SINGLE MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF hd_itab WHERE matnr = hd_itab-matnr.
SELECT SINGLE NAME1 FROM LFA1 INTO CORRESPONDING FIELDS OF hd_itab WHERE lifnr = hd_itab-lifnr.
APPEND hd_itab.
CLEAR hd_itab.
ENDSELECT.
ELSE.
SELECT * FROM EINE INNER JOIN EINA ON EINE~INFNR = EINA~INFNR INTO CORRESPONDING FIELDS OF hd_itab
WHERE EINE~INFNR IN s_infnr AND EINE~EKORG IN s_ekorg AND EINA~MATNR IN s_matnr AND EINA~LIFNR IN s_lifnr AND EINE~ERDAT IN s_erdat AND EINA~URZNR IN s_urznr
ORDER BY EINE~INFNR DESCENDING.
SELECT SINGLE MAKTX FROM MAKT INTO CORRESPONDING FIELDS OF hd_itab WHERE matnr = hd_itab-matnr.
SELECT SINGLE NAME1 FROM LFA1 INTO CORRESPONDING FIELDS OF hd_itab WHERE lifnr = hd_itab-lifnr.
APPEND hd_itab.
CLEAR hd_itab.
ENDSELECT.
ENDIF.
LOOP AT hd_itab.
IF hd_itab-loekz = 'X'.
hd_itab-color = 'C610'.
hd_itab-iicon = ICON_INCOMPLETE. "ICON圖標信息
ELSE.
hd_itab-iicon = ICON_CHECKED. "ICON圖標信息
ENDIF.
hd_itab-dwjj = hd_itab-netpr / hd_itab-peinh. "净价/价格单位
MODIFY hd_itab."更新
CLEAR hd_itab."CLEAR HEADER LINE
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------------*
*& FORM LAYOUT BUILD
*&---------------------------------------------------------------------------*
FORM layout_build.
i_layout-ZEBRA = 'X'. "ALV表格按斑马线条纹显示
"i_layout-NO_VLINE = 'X'. "ALV表格顯示時無堅向線
i_layout-COLWIDTH_OPTIMIZE = 'X'. "将ALV字段宽度设置为最优化
* i_layout-detail_initial_lines = 'X'.
* i_layout-detail_titlebar = '详细内容'.
* i_layout-box_fieldname = 'LINE'.
i_layout-INFO_FIELDNAME = 'COLOR'. "設置顏色FIELD
i_layout-NO_COLHEAD = ''.
w_repid = SY-REPID.
ENDFORM.
*&---------------------------------------------------------------------------*
*& FORM FIELDCAT BUILD
*&---------------------------------------------------------------------------*
FORM fieldcat_build.
REFRESH i_fieldcat_alv.
CLEAR i_fieldcat.
DATA column TYPE I VALUE 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'INFNR'.
i_fieldcat-SELTEXT_S = '采购信息记录'.
i_fieldcat-SELTEXT_M = '采购信息记录'.
i_fieldcat-SELTEXT_L = '采购信息记录'.
"i_fieldcat-reptext_ddic = '采购信息记录号'.
i_fieldcat-LZERO = 'X'. "字义字段前导以"0"的形式显示
i_fieldcat-KEY = 'X'.
i_fieldcat-HOTSPOT = 'X'."设置字段是否有热点(热点字段显示有下划线)
i_fieldcat-EMPHASIZE = 'C300'."设置字段颜色
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'LIFNR'.
i_fieldcat-SELTEXT_S = '供应商号码'.
i_fieldcat-SELTEXT_M = '供应商号码'.
i_fieldcat-SELTEXT_L = '供应商号码'.
"i_fieldcat-reptext_ddic = '供应商号码'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
i_fieldcat-HOTSPOT = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'NAME1'.
i_fieldcat-SELTEXT_S = '供应商名称'.
i_fieldcat-SELTEXT_M = '供应商名称'.
i_fieldcat-SELTEXT_L = '供应商名称'.
"i_fieldcat-reptext_ddic = '供应商名称'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'MATNR'.
i_fieldcat-SELTEXT_S = '物料编号'.
i_fieldcat-SELTEXT_M = '物料编号'.
i_fieldcat-SELTEXT_L = '物料编号'.
"i_fieldcat-reptext_ddic = '物料编号'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'MAKTX'.
i_fieldcat-SELTEXT_S = '物料名称'.
i_fieldcat-SELTEXT_M = '物料名称'.
i_fieldcat-SELTEXT_L = '物料名称'.
"i_fieldcat-reptext_ddic = '物料名称'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'NETPR'.
i_fieldcat-SELTEXT_S = '净价'.
i_fieldcat-SELTEXT_M = '净价'.
i_fieldcat-SELTEXT_L = '净价'.
"i_fieldcat-reptext_ddic = '净价'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'PEINH'.
i_fieldcat-SELTEXT_S = '价格单位'.
i_fieldcat-SELTEXT_M = '价格单位'.
i_fieldcat-SELTEXT_L = '价格单位'.
"i_fieldcat-reptext_ddic = '价格单位'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'DWJJ'.
i_fieldcat-SELTEXT_S = '单位净价'.
i_fieldcat-SELTEXT_M = '单位净价'.
i_fieldcat-SELTEXT_L = '单位净价'.
"i_fieldcat-reptext_ddic = '单位净价'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'BPRME'.
i_fieldcat-SELTEXT_S = '计量单位'.
i_fieldcat-SELTEXT_M = '计量单位'.
i_fieldcat-SELTEXT_L = '计量单位'.
"i_fieldcat-reptext_ddic = '计量单位'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'EKORG'.
i_fieldcat-SELTEXT_S = '采购组织'.
i_fieldcat-SELTEXT_M = '采购组织'.
i_fieldcat-SELTEXT_L = '采购组织'.
"i_fieldcat-reptext_ddic = '采购组织'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'APLFZ'.
i_fieldcat-SELTEXT_S = '计划交货时间'.
i_fieldcat-SELTEXT_M = '计划交货时间'.
i_fieldcat-SELTEXT_L = '计划交货时间'.
"i_fieldcat-reptext_ddic = '计划交货时间'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
i_fieldcat-Emphasize = 'C211'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'ERDAT'.
i_fieldcat-SELTEXT_S = '创建日期'.
i_fieldcat-SELTEXT_M = '创建日期'.
i_fieldcat-SELTEXT_L = '创建日期'.
"i_fieldcat-reptext_ddic = '创建日期'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'LOEKZ'.
i_fieldcat-SELTEXT_S = '删除标志'.
i_fieldcat-SELTEXT_M = '删除标志'.
i_fieldcat-SELTEXT_L = '删除标志'.
"i_fieldcat-reptext_ddic = '删除标志'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'URZNR'.
i_fieldcat-SELTEXT_S = '批准标记'.
i_fieldcat-SELTEXT_M = '批准标记'.
i_fieldcat-SELTEXT_L = '批准标记'.
"i_fieldcat-reptext_ddic = '批准标记'.
i_fieldcat-LZERO = 'X'.
i_fieldcat-KEY = 'X'.
i_fieldcat-Emphasize = 'C211'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
column = column + 1.
i_fieldcat-COL_POS = column.
i_fieldcat-FIELDNAME = 'IICON'.
* i_fieldcat-SELTEXT_S = '图标'.
* i_fieldcat-SELTEXT_M = 'ICON'.
i_fieldcat-SELTEXT_L = 'ICON'.
i_fieldcat-HOTSPOT = 'X'.
i_fieldcat-ICON = 'X'.
"i_fieldcat-reptext_ddic = '批准标记'.
"i_fieldcat-LZERO = 'X'.
"i_fieldcat-KEY = 'X'.
"i_fieldcat-Emphasize = 'C211'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.
ENDFORM.
*&---------------------------------------------------------------------------*
*& FORM ALV DISPLAY DATA
*&---------------------------------------------------------------------------*
FORM alv_display_data.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = w_repid
I_GRID_TITLE = '采购信息记录汇总查询'
IS_LAYOUT = i_layout
IT_FIELDCAT = i_fieldcat_alv[]
IT_EVENTS = i_events[]
"I_SAVE = 'A'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND' "USER_COMMAND EVENT
TABLES
T_OUTTAB = hd_itab[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.
FORM user_command USING i_ucomm TYPE SY-UCOMM i_selfield TYPE SLIS_SELFIELD.
CASE i_ucomm.
WHEN '&IC1'. "对于热点链接,所对应的动作码为"&IC1"
IF i_selfield-FIELDNAME EQ 'INFNR'. "判断用户当前单击的是哪列
PERFORM call_tran USING i_selfield. "调用自定义事务
ENDIF.
ENDCASE.
ENDFORM.
FORM call_tran USING i_selfield TYPE SLIS_SELFIELD.
"SET SCREEN 0. "返回主屏幕
READ TABLE hd_itab INDEX i_selfield-tabindex. "i_selfield-tabindex 当击行索引,从内表中提取数据
IF SY-SUBRC = 0.
SET PARAMETER ID 'MAT' FIELD hd_itab-MATNR. "MAT指参数ID
SET PARAMETER ID 'LIF' FIELD hd_itab-LIFNR.
SET PARAMETER ID 'EKO' FIELD hd_itab-EKORG.
SET PARAMETER ID 'INF' FIELD hd_itab-INFNR.
CALL TRANSACTION 'ME13'."AND SKIP FIRST SCREEN "调用其它事务 ME13是我们要调用的事务
ENDIF.
ENDFORM.
FORM ALV_TOP_OF_PAGE. "ALV表头信息
CLEAR:i_list_comments.
w_list_comments-typ = 'H'.
w_list_comments-key = ''.
w_list_comments-info = '采购信息记录查询报表'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
DATA:date_temp(30) TYPE C.
WRITE: SY-DATUM TO date_temp MM/DD/YYYY.
CONCATENATE '日期:' date_temp INTO date_temp.
CONCATENATE date_temp '. IT部' INTO date_temp.
w_list_comments-typ = 'S'.
w_list_comments-key = ''.
w_list_comments-info = date_temp.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' "输出注释
EXPORTING
IT_LIST_COMMENTARY = i_list_comments
I_LOGO = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID = 'X'
* I_ALV_FORM =
.
ENDFORM.
FORM ALV_END_OF_LIST.
CLEAR: i_list_comments.
* w_list_comments-typ = 'S'.
* w_list_comments-info = 'Create By IT DEPARTMENT'.
* APPEND w_list_comments TO i_list_comments.
* CLEAR w_list_comments.
*
* CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
* EXPORTING
* IT_LIST_COMMENTARY = i_list_comments
** I_LOGO = 'ENJOYSAP_LOGO'
* I_END_OF_LIST_GRID = 'X'
** I_ALV_FORM =
* .
CLEAR:i_list_comments.
w_list_comments-typ = 'S'.
w_list_comments-info = '确认:________采购申请人:___________________'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
w_list_comments-typ = 'S'.
w_list_comments-info = 'Create By Information Department'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
DATA:data_temp(30) TYPE C.
CONCATENATE '打印者:' SY-UNAME INTO data_temp.
w_list_comments-typ = 'S'.
w_list_comments-info = data_temp.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = i_list_comments
I_LOGO = 'ENJOYSAP_LOGO'
I_END_OF_LIST_GRID = 'X'
* I_ALV_FORM =
.
ENDFORM.
FORM events_build.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET' "输出一个内表类型是SLIS_T_EVENT,行项为SLIS_ALV_EVENT,包含两个字段,一个是事件名称,另一个是处理事件的FORM名称
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = i_events
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE i_events WITH KEY NAME = 'TOP_OF_PAGE' INTO w_events.
IF SY-SUBRC = 0.
MOVE 'ALV_TOP_OF_PAGE' TO w_events-form.
MODIFY i_events FROM w_events INDEX SY-TABIX.
ENDIF.
READ TABLE i_events INTO w_events WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
w_events-name = 'USER_COMMAND'.
MODIFY i_events FROM w_events INDEX SY-TABIX.
ENDIF.
READ TABLE i_events WITH KEY NAME = 'END_OF_LIST' INTO w_events.
IF SY-SUBRC = 0.
MOVE 'ALV_END_OF_LIST' TO w_events-form.
MODIFY i_events FROM w_events INDEX SY-TABIX.
ENDIF.
ENDFORM.
一个极好的ALV例子相关推荐
- 一个简单的规则引擎例子
本例使用的规则引擎包是RulesEngine,关于RulesEngine的介绍,请自行补充,这里只是一个极简单使用场景. 例子大体就是用户有一些优惠券,系统会根据用户订单情况,筛选可以使用的优惠券供用 ...
- c语言log_Morn:一个极简的C语言日志
Morn:一个C语言的基础工具和基础算法库github.com Morn的日志是一个极简的,几乎没有学习成本的日志.它可以实现: 多种输出,包括动态文件.控制台.和用户自定义输出. 日志分级,选择性 ...
- 动手开发一个有用的 ABAP ALV 工具 - 查看指定用户的 ABAP 传输请求试读版
本专栏计划的文章数在 150 篇左右,到 2022年10月6日为止,目前已经更新了 56 篇,专栏完成度为 37.3% 零基础 ABAP 学习教程系列文章的目录 1. ABAP 标准培训教程 BC40 ...
- CherryPy: 一个极简主义Python Web框架
目录 1 前言 2 SWGI(Web Server Gateway Interface) 3 特色与优势 4 Hello, World! 5 不同URL调用不同函数 6 带有参数的URL 7 处理表单 ...
- 计算机网络项目失败案例,一个做网站失败的“成功”例子 -电脑资料
不要去学习别人成功的经验,要不然你怎么死的都不知道,要多学习别人失败的经验--阿里巴巴CEO 马云, 这是阿里巴巴CEO马云先生在<赢在中国>中说的话,我觉得网络之父马云的话很适于现在作网 ...
- 用python中函数输出杨辉三角_用Python输出一个杨辉三角的例子
这篇文章主要介绍了用Python和erlang输出一个杨辉三角的例子,同时还提供了一个erlang版杨辉三角,需要的朋友可以参考下 关于杨辉三角是什么东西,右转维基百科:杨辉三角 稍微看一下直观一点的 ...
- python自带gui_一个极简易上手的 Python GUI 库
原标题:一个极简易上手的 Python GUI 库 很多同学学了 Python 之后都想开发带界面的程序,也就是 GUI 应用.一般用的比较多的 GUI 库是 Tkinter(Python 自带)和 ...
- 用VuePress来搭建一个极简的静态网站
VuePress学习 全局安装前我们需要Git和node这两个软件,关于怎么安装可以我之前hexo的视频教程 假如这两个都没有安装好,那么下面就不需要看了哈,栈友们 全局安装 首先我们先全局安装一下 ...
- php+mssql 分页,一个PHP+MSSQL分页的例子
一个PHP+MSSQL分页的例子 更新时间:2006年10月09日 00:00:00 作者: require "config.php"; dl("extensions ...
最新文章
- 对javascript闭包的理解
- 《程序员修炼之道》备忘清单
- vue中引入第三方字体图标库iconfont,及iconfont引入彩色图标
- 面试必问:Spring循环依赖的三种方式
- Java工作笔记-Spring Boot + Jdbc + dm7Driver访问数据库(Spring Boot连接达梦数据库)
- 官方晒中兴AXON 30 Pro真机亮屏谍照:第二代屏下摄像头技术提升明显
- VS如何定制自己的模板信息
- wdcp v2.5.15 php版本,linux服务器/虚拟主机管理系统wdcp v2.5.6版本发布
- 全国所有省份、城市的JSON
- 盘点开发人员都应该了解的7种JavaScript设计模式
- linux pam 解锁_Linux多次登录失败用户被锁定使用Pam_Tally2解锁
- 【盘点】2014年跨境进口型电商十大模式
- ES6-promise详解
- 计算机组装安装主板的依靠什么初步定位,电脑维修高级全科班
- 电脑录制的音频文件如何转换为MP3格式
- 固网服务器win7系统驱动,固网HU-4608驱动
- Source Insight 代码自动排版
- 程序员去互联网企业还是去当教师,薪资和压力你怎么选?
- 实验二——网络嗅探与欺骗.
- 认识涤生大数据的几个月,彻底改变了我