*&---------------------------------------------------------------------*
*& Report Z_XYX003
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_xyx003 .
TYPE-POOLS :slis .
TABLES : lfa1 ,ekpo ,eine ,eina .
INCLUDE <list> .
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 . "getdata
*&---------------------------------------------------------------------------*
*& 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 . "layout_build
*&---------------------------------------------------------------------------*
*& 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 . "fieldcat_build
*&---------------------------------------------------------------------------*
*& 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 . "alv_display_data
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_UCOMM text
* -->I_SELFIELD text
*----------------------------------------------------------------------*
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 . "user_command
*&---------------------------------------------------------------------*
*& Form call_tran
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_SELFIELD text
*----------------------------------------------------------------------*
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 . "call_tran
*&---------------------------------------------------------------------*
*& Form ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
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 . "ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form ALV_END_OF_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
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 . "ALV_END_OF_LIST
*&---------------------------------------------------------------------*
*& Form events_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
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 . "events_build
*& Report Z_XYX003
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_xyx003 .
TYPE-POOLS :slis .
TABLES : lfa1 ,ekpo ,eine ,eina .
INCLUDE <list> .
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 . "getdata
*&---------------------------------------------------------------------------*
*& 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 . "layout_build
*&---------------------------------------------------------------------------*
*& 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 . "fieldcat_build
*&---------------------------------------------------------------------------*
*& 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 . "alv_display_data
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_UCOMM text
* -->I_SELFIELD text
*----------------------------------------------------------------------*
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 . "user_command
*&---------------------------------------------------------------------*
*& Form call_tran
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_SELFIELD text
*----------------------------------------------------------------------*
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 . "call_tran
*&---------------------------------------------------------------------*
*& Form ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
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 . "ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form ALV_END_OF_LIST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
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 . "ALV_END_OF_LIST
*&---------------------------------------------------------------------*
*& Form events_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
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 . "events_build