一个很有意思漂亮的ABAP程序-采购信息记录查询报表
2014-09-11 09:53
579 查看
*&---------------------------------------------------------------------*
*& 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
相关文章推荐
- RMI实现一个学生成绩或教师信息查询的程序
- SQL 数据库 学习 026 查询-09 聚合函数 --- 多行记录返回至一个值,通常用于统计分组的信息
- 用Java Swing程序实现的一个中药信息查询程序
- 为ABAP程序拷贝一个标准SAP报表执行菜单
- 一个根据.BOM文件自动创建Excel BOM的程序---记录在此,以便查询
- 偶尔做成的一个可以查询,删除,更改记录的程序。
- C# 一个简单分词程序的思路和代码(四) 键树 查询记录
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- 一个记录程序运行时间表的控件
- 一个用xml存储日志信息的程序
- 一个简单的域名注册情况查询程序
- 一个小小的文本行信息管理程序
- JAVA一个查询sqlserver网页程序,大家或许会体会一些东西
- 查询一个表中相同的记录
- 推荐一个.net下学习水晶报表的好程序兼ms sql server的好助手
- 一个简单的域名注册情况查询程序
- ABAP报表程序编写规范
- 用ASP.NET写一个发送ICQ信息的程序
- 用ASP.NET写一个发送ICQ信息的程序
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,有兴趣的朋友可以去下载!