ABAP-ALV

REPORT  z_scott_alv_3.

*Define tables
TABLES : eine,lfa1,ekpo,eina.

*for alv
TYPE-POOLS: slis.
DATA:
i_fieldcat_alv TYPE slis_t_fieldcat_alv, "Define the fieldcat
i_layout TYPE slis_layout_alv, "alv format
i_fieldcat TYPE slis_fieldcat_alv, "
i_events TYPE slis_t_event, "alv event
w_events LIKE LINE OF i_events,
i_list_comments TYPE slis_t_listheader, "alv listheader
w_list_comments LIKE LINE OF i_list_comments,
w_repid LIKE sy-repid. " current program


*Define the fields of internal table
*1 . selection screen
DATA:
BEGIN OF hd_itab OCCURS 0,
infnr LIKE eine-infnr, "Number of purchasing info record
ekorg LIKE eine-ekorg, "Purchasing organization
matnr LIKE eina-matnr, "Material number
lifnr LIKE eina-lifnr, "Vendor's account number
erdat LIKE eine-erdat, "Date on which the record was created
loekz LIKE eine-loekz, "delete mark
urznr LIKE eina-urznr, "Certificate number
color(4) TYPE c, "Color number

*2. display screen
aplfz LIKE eine-aplfz, "Planned delivery time in days
netpr LIKE eine-netpr, "Net price in purchasing info record
peinh LIKE eine-peinh, "Price unit
dwjj LIKE eine-netpr, "Net price in purchasing info record
bprme LIKE eine-bprme, "Order price unit (purchasing)
maktx LIKE makt-maktx, "Material description
name1 LIKE lfa1-name1, "name of vendor
END OF hd_itab.


*Define selecltion screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
SELECT-OPTIONS:s_infnr FOR eine-infnr MEMORY ID inf. "information
PARAMETERS:pr_loekz TYPE c AS CHECKBOX DEFAULT ' '. "display record
SELECT-OPTIONS:s_ekorg FOR eine-ekorg MEMORY ID eko. "purchase
SELECT-OPTIONS:s_matnr FOR eina-matnr MEMORY ID mat. "material number
SELECT-OPTIONS:s_lifnr FOR eina-lifnr MEMORY ID lif. "vendor number
SELECT-OPTIONS:s_erdat FOR eine-erdat MEMORY ID s_erdat. "Creation
SELECT-OPTIONS:s_urznr FOR eina-urznr MEMORY ID s_urznr. "approval
SELECTION-SCREEN END OF BLOCK b1.
*Program initialization
INITIALIZATION.
t1 = 'Purchase selection'.

*Select data
START-OF-SELECTION.
PERFORM getdata. "Read data
PERFORM events_build. "alv event
PERFORM layout_build. "define alv format attribute
PERFORM fields_build. "define information of fieldcat
PERFORM display_data.

END-OF-SELECTION.

DATA:
pagenum TYPE i VALUE 1. "report number

END-OF-PAGE.
pagenum = pagenum + 1.


*double click event of row item
AT LINE-SELECTION.


*&--------------------------------------------------------------------*
*& Form getdata
*&--------------------------------------------------------------------*
* Get data and select relevant fields form database table
*---------------------------------------------------------------------*

FORM getdata.
CLEAR hd_itab.
CLEAR hd_itab[].

*hd_itab table
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'. "Mark red when this purchase record has bee
ENDIF.
hd_itab-dwjj = hd_itab-netpr / hd_itab-peinh.
MODIFY hd_itab.
CLEAR hd_itab.
ENDLOOP.

ENDFORM. "getdata
*


*&--------------------------------------------------------------------*
*& Form layout_build
*&--------------------------------------------------------------------*
* Define ALV layout attribute
*---------------------------------------------------------------------*
FORM layout_build .
i_layout-zebra = 'X'.
* i_layout-detail_popup = 'X'.
i_layout-no_vline = ' '.
i_layout-colwidth_optimize = 'X'.
* i_layout-detail_initial_lines = 'X'.
* i_layout-detail_titlebar = 'detail content'.
* i_layout-box_fieldname = 'LINE'.
* i_layout-f2code = '&ETA'.
* i_layout-f2code = '&IC1'.
i_layout-info_fieldname = 'COLOR'. "Color value
i_layout-no_colhead = ' '.
w_repid = sy-repid.
ENDFORM. " layout_build

*&--------------------------------------------------------------------*
*& Form fields_build
*&--------------------------------------------------------------------*
* Set information of row display attributes
*---------------------------------------------------------------------*
FORM fields_build .
REFRESH i_fieldcat_alv.
CLEAR i_fieldcat.
DATA colnum TYPE i VALUE 1.

i_fieldcat-col_pos = colnum.
* "i_fieldcat-tabname = 'hd_itab'.
* i_fieldcat-ref_tabname = 'zorder_purchase'.
* i_fieldcat-outputlen ='14'.
i_fieldcat-fieldname = 'INFNR'.
i_fieldcat-seltext_s = 'prn'.
i_fieldcat-seltext_m = ' pur rec num '.
i_fieldcat-seltext_l = ' purchase record number '.
i_fieldcat-reptext_ddic = ' purchase record number '.
i_fieldcat-lzero = 'X'.
i_fieldcat-key = 'X'.
i_fieldcat-hotspot = 'X'.
* i_fieldcat-emphasize = 'X'.
* i_fieldcat-tech = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
*i_fieldcat-ref_tabname = 'zorder_purchase'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'LIFNR'.
i_fieldcat-seltext_s = 'vendor number'.
i_fieldcat-seltext_m = ' vendor number '.
i_fieldcat-seltext_l = ' vendor number '.
i_fieldcat-reptext_ddic = ' vendor number '.
i_fieldcat-lzero = 'X'.
i_fieldcat-key = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
*i_fieldcat-ref_tabname = 'zorder_purchase'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'NAME1'.
i_fieldcat-seltext_s = ' vendor name'.
i_fieldcat-seltext_m = ' vendor name '.
i_fieldcat-seltext_l = ' vendor name '.
i_fieldcat-reptext_ddic = ' vendor name '.
i_fieldcat-lzero = 'X'.
i_fieldcat-key = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.


colnum = colnum + 1.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'MATNR'.
* i_fieldcat-ref_tabname = 'zorder_purchase'.
i_fieldcat-seltext_s = 'Material number'.
i_fieldcat-seltext_m = ' Material number '.
i_fieldcat-seltext_l = ' Material number '.
i_fieldcat-reptext_ddic = ' Material number '.
i_fieldcat-lzero = 'X'.
* i_fieldcat-key = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
* "i_fieldcat-tabname = 'hd_itab'.
*i_fieldcat-ref_tabname = 'zorder_purchase'.
i_fieldcat-col_pos = colnum.
i_fieldcat-outputlen ='30'.
i_fieldcat-fieldname = 'MAKTX'.
i_fieldcat-seltext_s = ' Material name'.
i_fieldcat-seltext_m = ' Material name '.
i_fieldcat-seltext_l = ' Material name '.
i_fieldcat-reptext_ddic = ' Material name '.
i_fieldcat-lzero = 'X'.
* i_fieldcat-key = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.


colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
* i_fieldcat-outputlen ='30'.
i_fieldcat-fieldname = 'NETPR'.
i_fieldcat-seltext_s = 'net price'.
i_fieldcat-seltext_m = ' net price '.
i_fieldcat-seltext_l = ' net price '.
i_fieldcat-reptext_ddic = ' net price '.
* i_fieldcat-no_sum = 'X'.
* i_fieldcat-icon = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'PEINH'.
i_fieldcat-seltext_s = 'price unit'.
i_fieldcat-seltext_m = ' price unit '.
i_fieldcat-seltext_l = ' price unit '.
i_fieldcat-reptext_ddic = ' price unit '.
* i_fieldcat-no_sum = 'X'.
* i_fieldcat-icon = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'DWJJ'.
i_fieldcat-seltext_s = 'unit net price'.
i_fieldcat-seltext_m = ' unit net price '.
i_fieldcat-seltext_l = ' unit net price '.
i_fieldcat-reptext_ddic = ' unit net price '.
* i_fieldcat-no_sum = 'X'.
* i_fieldcat-icon = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'BPRME'.
i_fieldcat-seltext_s = 'measure'.
i_fieldcat-seltext_m = ' measure '.
i_fieldcat-seltext_l = ' measure '.
i_fieldcat-reptext_ddic = ' measure '.
* i_fieldcat-no_sum = 'X'.
* i_fieldcat-icon = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.


colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'EKORG'.
i_fieldcat-seltext_s = 'purchase organization'.
i_fieldcat-seltext_m = ' purchase organization '.
i_fieldcat-seltext_l = ' purchase organization '.
i_fieldcat-reptext_ddic = ' purchase organization '.
i_fieldcat-emphasize = 'X'.
* i_fieldcat-do_sum = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'APLFZ'.
i_fieldcat-seltext_s = 'plan delivery time'.
i_fieldcat-seltext_m = ' plan delivery time '.
i_fieldcat-seltext_l = ' plan delivery time '.
i_fieldcat-reptext_ddic = ' plan delivery time '.
* i_fieldcat-do_sum = 'X'.
i_fieldcat-emphasize = 'C211'.
* i_fieldcat-do_sum = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'ERDAT'.
i_fieldcat-seltext_s = 'record creation date'.
i_fieldcat-seltext_m = ' record creation date '.
i_fieldcat-seltext_l = ' record creation date '.
i_fieldcat-reptext_ddic = ' record creation date '.
* i_fieldcat-do_sum = 'X'.
i_fieldcat-emphasize = 'C211'.
* i_fieldcat-do_sum = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'LOEKZ'.
i_fieldcat-seltext_s = 'delete mark'.
i_fieldcat-seltext_m = ' delete mark '.
i_fieldcat-seltext_l = ' delete mark '.
i_fieldcat-reptext_ddic = ' delete mark '.
* i_fieldcat-do_sum = 'X'.
i_fieldcat-emphasize = 'C211'.
* i_fieldcat-do_sum = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.

colnum = colnum + 1.
"i_fieldcat-tabname = 'hd_itab'.
i_fieldcat-col_pos = colnum.
i_fieldcat-fieldname = 'URZNR'.
i_fieldcat-seltext_s = 'approval mark'.
i_fieldcat-seltext_m = ' approval mark '.
i_fieldcat-seltext_l = ' approval mark '.
i_fieldcat-reptext_ddic = ' approval mark '.
* i_fieldcat-do_sum = 'X'.
i_fieldcat-emphasize = 'C211'.
* i_fieldcat-do_sum = 'X'.
APPEND i_fieldcat TO i_fieldcat_alv.
CLEAR i_fieldcat.


ENDFORM. " fields_build


*&--------------------------------------------------------------------*
*& Form display_data
*&--------------------------------------------------------------------*
* display content of report
*---------------------------------------------------------------------*
FORM display_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
is_layout = i_layout
it_fieldcat = i_fieldcat_alv[]
it_events = i_events[]
i_grid_title = ' collection table of purchase record'
* changed by scott comment of i_callback_user_command
i_callback_user_command = 'USER_COMMAND'
* i_callback_pf_status_set = 'WHOLE_TOOLBAR'

* i_save = 'A'
TABLES
t_outtab = hd_itab.

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. " display_data
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
FORM user_command USING i_ucomm LIKE sy-ucomm
is_selfield TYPE slis_selfield. "#EC CALLED
CASE i_ucomm.
WHEN '&IC1'. " Pick
READ TABLE hd_itab INDEX is_selfield-tabindex.
IF sy-subrc EQ 0.
SET PARAMETER ID 'INF' FIELD hd_itab-infnr.
SET PARAMETER ID 'MAT' FIELD hd_itab-matnr.
SET PARAMETER ID 'LIF' FIELD hd_itab-lifnr.
SET PARAMETER ID 'EKO' FIELD hd_itab-ekorg.


CALL TRANSACTION 'ME13' AND SKIP FIRST SCREEN.
ENDIF.

ENDCASE.
ENDFORM. " USER_COMMAND

*&--------------------------------------------------------------------*
*& Form whole_toolbar
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->EXTAB text
*---------------------------------------------------------------------*
FORM whole_toolbar USING extab TYPE slis_t_extab. "#EC CALLED
SET PF-STATUS 'WHOLE_TOOLBAR' EXCLUDING extab.
ENDFORM. "whole_toolbar

*&--------------------------------------------------------------------*
*& Form alv_top_of_page
*&--------------------------------------------------------------------*
* Set top-of-page
*---------------------------------------------------------------------*
FORM alv_top_of_page.
CLEAR: i_list_comments.
w_list_comments-typ = 'H'.
w_list_comments-key = ''.
w_list_comments-info = 'selection table of purchase record'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.

DATA: data_temp(16).
WRITE sy-datum TO: data_temp MM/DD/YYYY.
CONCATENATE 'Date:' data_temp INTO data_temp.
CONCATENATE data_temp 'IT department' INTO data_temp.
w_list_comments-typ = 'S'.
w_list_comments-key = ''.
w_list_comments-info = data_temp.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.

*Changed by Scott
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_list_comments
i_logo = 'ENJOYSAP_LOGO' "Title logo.
i_end_of_list_grid = ' '. "
* i_logo = 'ENJOYSAP_LOGO'. " Title logo
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 = 'Created by ITDC'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.


* Changed by Scott
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_list_comments
i_end_of_list_grid = 'X'. "
* i_logo = 'ENJOYSAP_LOGO'. " Title

CLEAR i_list_comments.

w_list_comments-typ = 'S'.
w_list_comments-info = 'Confirm: ______________ person: ___________'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.

w_list_comments-typ = 'S'.
w_list_comments-info = 'Table created by ITDC'.
APPEND w_list_comments TO i_list_comments.
CLEAR w_list_comments.

* CLEAR data_temp.
* CONCATENATE 'Print by :' 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' " Title logo
i_end_of_list_grid = 'X'.
ENDFORM. "alv_end_of_list
*
*&--------------------------------------------------------------------*
*& Form events_build
*&--------------------------------------------------------------------*
* Define ALV event
*---------------------------------------------------------------------*
FORM events_build .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = i_events.

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.
*Changed by Scott w_events-name
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'"slis_ev_end_of_page
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值