2007 Aug 15 3:32 PM
hi
can anyone explain a report in alv by using tables more than 2.....
i've generated a report in alv by using only one table
plz help me
HI,
Here is a list of report code for ur reference.
<b> ALV All in ONe</b>
REPORT ZMK_ALLINONE_ALV .
&----
*& Program for displaying data using function modules : *
*& REUSE_ALV_LIST_DISPLAY *
*& REUSE_ALV_POPUP_TO_SELECT *
*& REUSE_ALV_GRID_DISPLAY *
*& *
&----
TABLES VBAK.
DATA it_vbak LIKE VBAK OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN uline.
PARAMETERS: ALV1 RADIOBUTTON GROUP ALV, "REUSE_ALV_LIST_DISPLAY
ALV2 RADIOBUTTON GROUP ALV, "REUSE_ALV_POPUP_TO_SELECT
ALV3 RADIOBUTTON GROUP ALV, "REUSE_ALV_GRID_DISPLAY
ALV4 RADIOBUTTON GROUP ALV. " NORMAL DISPLAY
SELECTION-SCREEN uline.
SELECT * FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE it_vbak
UP TO 10 ROWS.
IF ALV1 = 'X'.
PERFORM ALV_FUNC1.
ELSEIF ALV2 = 'X'.
PERFORM ALV_FUNC2.
ELSEIF ALV3 = 'X'.
PERFORM ALV_FUNC3.
ELSEIF ALV4 = 'X'.
PERFORM NORM.
ENDIF.
&----
*& Form ALV_FUNC1
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC1 .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'VBAK'
TABLES
T_OUTTAB = it_vbak
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_FUNC1
&----
*& Form ALV_FUNC2
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC2 .
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'SALES ORDER INFO'
I_ZEBRA = 'X'
I_TABNAME = 1
I_STRUCTURE_NAME = 'vbak'
TABLES
T_OUTTAB = it_vbak
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_FUNC2
&----
*& Form ALV_FUNC3
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC3 .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'vbak'
I_GRID_TITLE = 'SALES ORDER INFO'
TABLES
T_OUTTAB = it_vbak
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_FUNC3
&----
*& Form NORM
&----
text
----
--> p1 text
<-- p2 text
----
FORM NORM .
format intensified.
skip 1.
WRITE: /'SALES DOC.',
' Created on ',
' Time',
' Created by',
' Valid from ',
' Sold-to party'.
format intensified off.
skip 2.
LOOP AT it_vbak.
write: / it_vbak-vbeln,' ',
it_vbak-erdat,' ',
it_vbak-erzet,' ',
it_vbak-ERNAM,' ',
it_vbak-ANGDT,' ',
it_vbak-KUNNR.
endloop.
ENDFORM. " NORM
REPORT ZMK_SHIPMENT_ALV
no standard page heading
line-size 105
line-count 50(5)
message-id zz.
**********************************
TABLES *
**********************************
tables : vttk, "Shipment Header
vttp, " Shipment Item
lips. " Delivary Item
**********************************
***TYPE-POOLS *
**********************************
type-pools : slis.
**********************************
*WORK AREAS *
**********************************
Work area for field catalog table
data : wa_fldcat type slis_fieldcat_alv.
Work area for Events table
data : wa_events type slis_alv_event.
Work area for layout.
data : wa_layout type slis_layout_alv.
***********************************
*INTERNAL TABLES *
***********************************
Shimpment Details
data : begin of itab occurs 0,
tknum like vttk-tknum,
shtyp like vttk-shtyp,
tpnum like vttp-tpnum,
vbeln like vttp-vbeln,
end of itab.
data : begin of itab1 occurs 0,
vbeln like lips-vbeln,
posnr like lips-posnr,
matnr like lips-matnr,
lfimg like lips-lfimg,
meins like lips-meins,
end of itab1.
For field catalog table
data : it_fldcats type slis_t_fieldcat_alv.
For Events table
data : it_event type slis_t_event.
For layout.
data : it_layout type slis_layout_alv.
For field catalog table
data : it_fldcats1 type slis_t_fieldcat_alv.
For Events table
data : it_event1 type slis_t_event.
data : v_repid like sy-repid.
*Data Declaration
******************
data: v_index type sy-index,
v_vbeln like lips-vbeln.
*SELECT-OPTIONS
****************
selection-screen begin of block b with frame title text-001.
select-options : s_tknum for vttk-tknum .
selection-screen end of block b.
*INITIALIZATION
****************
initialization.
v_repid = sy-repid.
*START-OF-SELCTION
********************
start-of-selection.
perform populate-data.
sort itab by tknum.
top-of-page.
write : 'Shipment wise Delivary Report'.
end-of-selection.
perform build-fieldcatalog.
perform modify-fieldcatalog.
perform build-events.
perform modify-events.
perform set-layout.
perform set-pfstatus.
perform list-display.
&----
*& Form populate-data
Retrives the Shipment data depending on the selection criteria *
&----
FORM populate-data.
select vttk~tknum
vttk~shtyp
vttp~tpnum
vttp~vbeln
into table itab
from vttk
join vttp
on vttptknum = vttktknum
where vttk~tknum in s_tknum.
if sy-subrc <> 0.
message e999 with 'NO DATA FOUND'.
exit.
endif.
ENDFORM. " populate-data
&----
*& Form build-fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
form build-fieldcatalog.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = v_repid
i_internal_tabname = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = it_fldcats
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
.
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. " BUILD-FIELDCATALOG
&----
*& Form build-events
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_event
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.
ENDFORM. " build-events
&----
*& Form set-layout
&----
text
----
--> p1 text
<-- p2 text
----
FORM set-layout.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-no_colhead = space.
wa_layout-no_vline = space.
ENDFORM. " set-layout
&----
*& Form list-display
&----
text
----
--> p1 text
<-- p2 text
----
FORM list-display.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = 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. " list-display
&----
*& Form modify-fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-fieldcatalog.
loop at it_fldcats into wa_fldcat.
case wa_fldcat-fieldname.
when 'TKNUM'.
wa_fldcat-seltext_l = 'Ship No.'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'SHTYP'.
wa_fldcat-seltext_l = 'Ship Type'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'TPNUM'.
wa_fldcat-seltext_l = 'Item No.'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'VBELN'.
wa_fldcat-seltext_l = 'Delivary No.'.
wa_fldcat-hotspot = 'X'.
wa_fldcat-emphasize = 'C311'.
wa_fldcat-col_pos = 4.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcats from wa_fldcat.
endloop.
ENDFORM. " modify-fieldcatalog
&----
*& Form modify-events
&----
text
----
--> p1 text
<-- p2 text
----
form modify-events.
read table it_event with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'HEADER-OF-REPORT'.
modify it_event from wa_events index sy-tabix.
clear wa_events.
endif.
read table it_event with key name =
slis_ev_end_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'FOOTER-OF-REPORT'.
modify it_event from wa_events index sy-tabix.
clear wa_events.
endif.
endform. " modify-events
&----
*& Form HEADER-OF-REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM HEADER-OF-REPORT.
write : 'Shipment Wise Delivary Report'.
ENDFORM. " HEADER-OF-REPORT
&----
*& Form FOOTER-OF-REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM FOOTER-OF-REPORT.
write : 'End of Report'.
ENDFORM. " FOOTER-OF-REPORT
&----
*& Form USER_COMMAND
&----
User command for Calling Transaction VT03N, Execute and Refresh
----
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
V_INDEX = P_SELFIELD-TABINDEX. " holds the selected table index
CASE p_ucomm.
WHEN '&IC1'.
IF p_selfield-fieldname eq 'VBELN'.
perform secondary_list.
ENDIF.
ENDCASE.
ENDFORM. " USER_COMMAND
&----
*& Form secondary_list
&----
text
----
--> p1 text
<-- p2 text
----
FORM secondary_list.
perform get_data1.
perform build-fieldcatalog1.
perform modify-fieldcatalog1.
perform build-events1.
perform modify-events1.
perform set-layout.
perform set-pfstatus.
perform list-display1.
ENDFORM. " secondary_list
&----
*& Form build-fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-fieldcatalog1.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = v_repid
i_internal_tabname = 'ITAB1'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = it_fldcats1
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
.
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. " build-fieldcatalog1
&----
*& Form modify-fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-fieldcatalog1.
loop at it_fldcats into wa_fldcat.
case wa_fldcat-fieldname.
when 'VBELN'.
wa_fldcat-seltext_l = 'Delivary No.'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'POSNR'.
wa_fldcat-seltext_l = 'Item No'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'MATNR'.
wa_fldcat-seltext_l = 'Material'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'LFIMG'.
wa_fldcat-seltext_l = 'Quantity'.
wa_fldcat-col_pos = 4.
wa_fldcat-ddictxt = 'L'.
when 'MEINS'.
wa_fldcat-seltext_l = 'Unit of Measure'.
wa_fldcat-col_pos = 5.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcats from wa_fldcat.
endloop.
ENDFORM. " modify-fieldcatalog1
&----
*& Form build-events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-events1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_event1
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.
ENDFORM. " build-events1
&----
*& Form modify-events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-events1.
read table it_event1 with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'HEADER_OF_REPORT_2'.
modify it_event1 from wa_events index sy-tabix.
clear wa_events.
endif.
ENDFORM. " modify-events1
&----
*& Form list-display1
&----
text
----
--> p1 text
<-- p2 text
----
FORM list-display1.
*CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab1
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.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab1
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. " list-display1
&----
*& Form get_data1
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data1.
READ TABLE itab INDEX V_INDEX.
v_vbeln = itab-vbeln.
select vbeln
posnr
matnr
lfimg
meins
from lips
into table itab1
where vbeln eq v_vbeln.
ENDFORM. " get_data1
&----
*& Form header_of_report_2
&----
text
----
--> p1 text
<-- p2 text
----
FORM header_of_report_2.
write: 'Delivary item list'.
ENDFORM. " header_of_report_2
REPORT ZMK_PO_ALV .
*******************
TABLES *
*******************
tables : ekko,
ekpo.
********************
TYPES
********************
type-pools: slis.
********************
INTERNAL TABLES
********************
data: begin of itab occurs 0,
EBELN like ekko-ebeln, "Purchasing Document Number
BUKRS like ekko-bukrs, "Company Code
BSTYP like ekko-bstyp, "Purchasing document category
STATU like ekko-statu, "Status of purchasing document
AEDAT like ekko-aedat, "Date on which the record was created
LIFNR like ekko-lifnr, "Vendor's account number
end of itab.
data: begin of itab1 occurs 0,
EBELN like ekpo-ebeln,
EBELP like ekpo-ebelp,
MATNR like ekpo-matnr,
MATKL like ekpo-matkl,
MENGE like ekpo-menge,
end of itab1.
data: begin of itab2 occurs 0,
LIFNR like lfa1-lifnr,
NAME1 like lfa1-name1,
ADRNR like lfa1-adrnr,
ORT01 like lfa1-ort01,
ORT02 like lfa1-ort02,
PFACH like lfa1-pfach,
end of itab2.
**************************************
ALV Specific Tables and Structures
**************************************
data : v_repid like sy-repid,
v_index like sy-index,
v_eblen like ekko-ebeln,
v_lifnr like ekko-lifnr.
**************************************
ALV Specific Tables and Structures
**************************************
Work area for field catalog table
data : wa_fldcat type slis_fieldcat_alv.
data: wa_events type slis_alv_event.
data: wa_layout type slis_layout_alv.
data: it_fldcat type slis_t_fieldcat_alv.
data: it_events type slis_t_event.
data: it_fldcat1 type slis_t_fieldcat_alv.
data: it_events1 type slis_t_event.
data: it_fldcat2 type slis_t_fieldcat_alv.
data: it_events2 type slis_t_event.
*************************************
Selection Screen
***************************************
selection-screen begin of block b with frame title text-001.
select-options : s_ebeln for ekko-ebeln .
selection-screen end of block b.
**************************************
Start of Selection
*****************************************
initialization.
v_repid = sy-repid.
**************************************
Start of Selection
*****************************************
start-of-selection.
perform get_data.
**************************************
End of Selection
*****************************************
end-of-selection.
perform build_fldcatalog.
perform modify_fldcatalog.
perform build_events.
perform modify_events.
perform build_layout.
perform list_display.
&----
*& Form get_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data.
select
EBELN
BUKRS
BSTYP
STATU
AEDAT
LIFNR
from ekko
into table itab
where ebeln in s_ebeln.
ENDFORM. " get_data
&----
*& Form build_fldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_fldcatalog.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = it_fldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
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. " build_fldcatalog
&----
*& Form build_events
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_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.
ENDFORM. " build_events
&----
*& Form modify_events
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_events.
read table it_events with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc eq 0.
wa_events-form = 'HEADER-OF-REPORT'.
modify it_events from wa_events index sy-tabix.
endif.
ENDFORM. " modify_events
&----
*& Form build_layout
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_layout.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-no_colhead = space.
wa_layout-no_vline = space.
.
ENDFORM. " build_layout
&----
*& Form list_display
&----
text
----
--> p1 text
<-- p2 text
----
FORM list_display.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_events
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 30
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = 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. " list_display
&----
*& Form modify_fldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_fldcatalog.
loop at it_fldcat into wa_fldcat.
case wa_fldcat-fieldname.
when 'EBELN'.
wa_fldcat-seltext_l = 'Purchase Order'.
wa_fldcat-emphasize = 'C811'.
wa_fldcat-hotspot = 'X'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'BUKRS'.
wa_fldcat-seltext_l = 'Company Code'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'BSTYP'.
wa_fldcat-seltext_l = 'PO Category'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'STATU'.
wa_fldcat-seltext_l = 'PO Status'.
wa_fldcat-col_pos = 4.
wa_fldcat-tech ='X'.
wa_fldcat-ddictxt = 'L'.
when 'AEDAT'.
wa_fldcat-seltext_l = 'Date Created'.
wa_fldcat-col_pos = 5.
wa_fldcat-ddictxt = 'L'.
when 'LIFNR'.
wa_fldcat-seltext_l = 'Vendor'.
wa_fldcat-hotspot = 'X'.
wa_fldcat-emphasize = 'C511'.
wa_fldcat-col_pos = 6.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcat from wa_fldcat.
ENDLOOP.
ENDFORM. " modify_fldcatalog
&----
*& Form header-of-page
&----
text
----
--> p1 text
<-- p2 text
----
FORM header-of-report.
skip 2.
write : /20 'Purchase Order List Report'.
skip 2.
ENDFORM. " header-of-report
&----
*& Form USER_COMMAND
&----
User command for Calling Transaction VT03N, Execute and Refresh
----
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
V_INDEX = P_SELFIELD-TABINDEX. " holds the selected table index
CASE p_ucomm.
WHEN '&IC1'.
IF p_selfield-fieldname eq 'EBELN'.
perform display_po_item.
ENDIF.
IF p_selfield-fieldname eq 'LIFNR'.
perform display_vendor_info.
endif.
ENDCASE.
ENDFORM. " USER_COMMAND
&----
*& Form secondary_list
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_po_item.
read table itab index v_index.
v_eblen = itab-ebeln.
perform get_item_data.
ENDFORM. " secondary_list
&----
*& Form display_vendor_info
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_vendor_info.
read table itab index v_index.
v_lifnr = itab-lifnr.
perform get_vendor_info.
ENDFORM. " display_vendor_info
&----
*& Form get_item_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_item_data.
clear itab1.
refresh itab1.
select EBELN
EBELP
MATNR
MATKL
MENGE
from ekpo
into table itab1
where ebeln eq v_eblen.
if sy-subrc eq 0.
perform build_catalog1.
perform modify_catalog1.
perform build_events1.
perform modify_events1.
perform list_display1.
endif.
ENDFORM. " get_item_data
&----
*& Form build_catalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_catalog1.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'ITAB1'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = it_fldcat1
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
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. " build_catalog1
&----
*& Form modify_catalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_catalog1.
ENDFORM. " modify_catalog1
&----
*& Form build_events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_events1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_events1
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.
ENDFORM. " build_events1
&----
*& Form modify_events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_events1.
read table it_events1 with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc eq 0.
wa_events-form = 'HEADER-OF-REPORT1'.
modify it_events1 from wa_events index sy-tabix.
endif.
ENDFORM. " modify_events1
&----
*& Form list_display1
&----
text
----
--> p1 text
<-- p2 text
----
FORM list_display1.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcat1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_events1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab1
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. " list_display1
&----
*& Form header-of-report1
&----
text
----
--> p1 text
<-- p2 text
----
FORM header-of-report1.
skip 2.
write : 'ITEM WISE DEATILS OF A PURCHASE ORDER' centered.
skip 3.
ENDFORM. " header-of-report1
&----
*& Form get_vendor_info
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_vendor_info.
select LIFNR
NAME1
ADRNR
ORT01
ORT02
PFACH
from lfa1
into table itab2
where lifnr eq v_lifnr.
if sy-subrc eq 0.
perform build_catalog2.
perform modify_catalog2.
perform build_events2.
perform modify_events2.
perform list_display2.
endif.
ENDFORM. " get_item_data
&----
*& Form build_catalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_catalog2.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'ITAB2'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = it_fldcat2
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
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. " build_catalog1
&----
*& Form modify_catalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_catalog2.
ENDFORM. " modify_catalog1
&----
*& Form build_events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_events2.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_events2
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.
ENDFORM. " build_events1
&----
*& Form modify_events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_events2.
read table it_events2 with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc eq 0.
wa_events-form = 'HEADER-OF-REPORT2'.
modify it_events2 from wa_events index sy-tabix.
endif.
ENDFORM. " modify_events1
&----
*& Form list_display1
&----
text
----
--> p1 text
<-- p2 text
----
FORM list_display2.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcat2
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_events2
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab2
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. " list_display1
&----
*& Form header-of-report1
&----
text
----
--> p1 text
<-- p2 text
----
FORM header-of-report2.
skip 2.
write : 'VENDOR DETAILS' centered.
skip 3.
ENDFORM. " header-of-report1
<b>ALV INTERACTIVE</b>
REPORT ZMK_SHIPMENT_ALV
no standard page heading
line-size 105
line-count 50(5)
message-id zz.
**********************************
TABLES *
**********************************
tables : vttk, "Shipment Header
vttp, " Shipment Item
lips. " Delivary Item
**********************************
***TYPE-POOLS *
**********************************
type-pools : slis.
**********************************
*WORK AREAS *
**********************************
Work area for field catalog table
data : wa_fldcat type slis_fieldcat_alv.
Work area for Events table
data : wa_events type slis_alv_event.
Work area for layout.
data : wa_layout type slis_layout_alv.
***********************************
*INTERNAL TABLES *
***********************************
Shimpment Details
data : begin of itab occurs 0,
tknum like vttk-tknum,
shtyp like vttk-shtyp,
tpnum like vttp-tpnum,
vbeln like vttp-vbeln,
end of itab.
data : begin of itab1 occurs 0,
vbeln like lips-vbeln,
posnr like lips-posnr,
matnr like lips-matnr,
lfimg like lips-lfimg,
meins like lips-meins,
end of itab1.
For field catalog table
data : it_fldcats type slis_t_fieldcat_alv.
For Events table
data : it_event type slis_t_event.
For layout.
data : it_layout type slis_layout_alv.
For field catalog table
data : it_fldcats1 type slis_t_fieldcat_alv.
For Events table
data : it_event1 type slis_t_event.
data : v_repid like sy-repid.
*Data Declaration
******************
data: v_index type sy-index,
v_vbeln like lips-vbeln.
*SELECT-OPTIONS
****************
selection-screen begin of block b with frame title text-001.
select-options : s_tknum for vttk-tknum .
selection-screen end of block b.
*INITIALIZATION
****************
initialization.
v_repid = sy-repid.
*START-OF-SELCTION
********************
start-of-selection.
perform populate-data.
sort itab by tknum.
top-of-page.
write : 'Shipment wise Delivary Report'.
end-of-selection.
perform build-fieldcatalog.
perform modify-fieldcatalog.
perform build-events.
perform modify-events.
perform set-layout.
perform set-pfstatus.
perform list-display.
&----
*& Form populate-data
Retrives the Shipment data depending on the selection criteria *
&----
FORM populate-data.
select vttk~tknum
vttk~shtyp
vttp~tpnum
vttp~vbeln
into table itab
from vttk
join vttp
on vttptknum = vttktknum
where vttk~tknum in s_tknum.
if sy-subrc <> 0.
message e999 with 'NO DATA FOUND'.
exit.
endif.
ENDFORM. " populate-data
&----
*& Form build-fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
form build-fieldcatalog.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = v_repid
i_internal_tabname = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = it_fldcats
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
.
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. " BUILD-FIELDCATALOG
&----
*& Form build-events
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_event
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.
ENDFORM. " build-events
&----
*& Form set-layout
&----
text
----
--> p1 text
<-- p2 text
----
FORM set-layout.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-no_colhead = space.
wa_layout-no_vline = space.
ENDFORM. " set-layout
&----
*& Form list-display
&----
text
----
--> p1 text
<-- p2 text
----
FORM list-display.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = 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. " list-display
&----
*& Form modify-fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-fieldcatalog.
loop at it_fldcats into wa_fldcat.
case wa_fldcat-fieldname.
when 'TKNUM'.
wa_fldcat-seltext_l = 'Ship No.'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'SHTYP'.
wa_fldcat-seltext_l = 'Ship Type'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'TPNUM'.
wa_fldcat-seltext_l = 'Item No.'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'VBELN'.
wa_fldcat-seltext_l = 'Delivary No.'.
wa_fldcat-hotspot = 'X'.
wa_fldcat-col_pos = 4.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcats from wa_fldcat.
endloop.
ENDFORM. " modify-fieldcatalog
&----
*& Form modify-events
&----
text
----
--> p1 text
<-- p2 text
----
form modify-events.
read table it_event with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'HEADER-OF-REPORT'.
modify it_event from wa_events index sy-tabix.
clear wa_events.
endif.
read table it_event with key name =
slis_ev_end_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'FOOTER-OF-REPORT'.
modify it_event from wa_events index sy-tabix.
clear wa_events.
endif.
endform. " modify-events
&----
*& Form HEADER-OF-REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM HEADER-OF-REPORT.
write : 'Shipment Wise Delivary Report'.
ENDFORM. " HEADER-OF-REPORT
&----
*& Form FOOTER-OF-REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM FOOTER-OF-REPORT.
write : 'End of Report'.
ENDFORM. " FOOTER-OF-REPORT
&----
*& Form USER_COMMAND
&----
User command for Calling Transaction VT03N, Execute and Refresh
----
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
V_INDEX = P_SELFIELD-TABINDEX. " holds the selected table index
CASE p_ucomm.
WHEN '&IC1'.
IF p_selfield-fieldname eq 'VBELN'.
perform secondary_list.
ENDIF.
ENDCASE.
ENDFORM. " USER_COMMAND
&----
*& Form secondary_list
&----
text
----
--> p1 text
<-- p2 text
----
FORM secondary_list.
perform get_data1.
perform build-fieldcatalog1.
perform modify-fieldcatalog1.
perform build-events1.
perform modify-events1.
perform set-layout.
perform set-pfstatus.
perform list-display1.
ENDFORM. " secondary_list
&----
*& Form build-fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-fieldcatalog1.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = v_repid
i_internal_tabname = 'ITAB1'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = it_fldcats1
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
.
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. " build-fieldcatalog1
&----
*& Form modify-fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-fieldcatalog1.
loop at it_fldcats into wa_fldcat.
case wa_fldcat-fieldname.
when 'VBELN'.
wa_fldcat-seltext_l = 'Delivary No.'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'POSNR'.
wa_fldcat-seltext_l = 'Item No'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'MATNR'.
wa_fldcat-seltext_l = 'Material'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'LFIMG'.
wa_fldcat-seltext_l = 'Quantity'.
wa_fldcat-col_pos = 4.
wa_fldcat-ddictxt = 'L'.
when 'MEINS'.
wa_fldcat-seltext_l = 'Unit of Measure'.
wa_fldcat-col_pos = 5.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcats from wa_fldcat.
endloop.
ENDFORM. " modify-fieldcatalog1
&----
*& Form build-events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-events1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_event1
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.
ENDFORM. " build-events1
&----
*& Form modify-events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-events1.
read table it_event1 with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'HEADER_OF_REPORT_2'.
modify it_event1 from wa_events index sy-tabix.
clear wa_events.
endif.
ENDFORM. " modify-events1
&----
*& Form list-display1
&----
text
----
--> p1 text
<-- p2 text
----
FORM list-display1.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab1
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. " list-display1
&----
*& Form get_data1
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data1.
READ TABLE itab INDEX V_INDEX.
v_vbeln = itab-vbeln.
select vbeln
posnr
matnr
lfimg
meins
from lips
into table itab1
where vbeln eq v_vbeln.
ENDFORM. " get_data1
&----
*& Form header_of_report_2
&----
text
----
--> p1 text
<-- p2 text
----
FORM header_of_report_2.
write: 'Delivary item list'.
ENDFORM. " header_of_report_2
<b>ALV SUBTOTALS</b>
REPORT ZYFI_REPT007
NO STANDARD PAGE HEADING
LINE-SIZE 300
LINE-COUNT 50
MESSAGE-ID ZYFI.
*----
-
*
************************************
************************************
************************************
************************************
TABLES : COOI, " Commitments
Management: Line Items
LFA1,
" Vendor master (general section)
VBEP,
RKPLN.
************************************
************************************
TABLE TYPES AND INTERNAL
TABLES
*
************************************
************************************
DATA : BEGIN OF TYP_COOI ,
OBJNR LIKE COOI-OBJNR,
SAKTO LIKE COOI-SAKTO,
MEGBTR LIKE COOI-MEGBTR,
MEINH LIKE COOI-MEINH,
WKGBTR LIKE COOI-WKGBTR,
REFBN LIKE COOI-REFBN,
RFPOS LIKE COOI-RFPOS,
SGTXT LIKE COOI-SGTXT,
BUDAT LIKE COOI-BUDAT,
LIFNR LIKE COOI-LIFNR,
END OF TYP_COOI.
DATA : BEGIN OF TYP_LFA1 ,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF TYP_LFA1.
DATA : BEGIN OF IT_OUTTAB OCCURS 0,
OBJNR LIKE COOI-OBJNR,
SAKTO LIKE COOI-SAKTO,
MEGBTR LIKE COOI-MEGBTR,
MEINH LIKE COOI-MEINH,
WKGBTR LIKE COOI-WKGBTR,
REFBN LIKE COOI-REFBN,
RFPOS LIKE COOI-RFPOS,
SGTXT LIKE COOI-SGTXT,
BUDAT LIKE COOI-BUDAT,
LIFNR LIKE COOI-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF IT_OUTTAB.
DATA : IT_COOI LIKE TYP_COOI OCCURS
0 WITH HEADER LINE,
IT_LFA1 LIKE TYP_LFA1 OCCURS
0 WITH HEADER LINE.
*-- ALV Declarations
TYPE-POOLS SLIS.
DATA: IT_EVENTS TYPE
SLIS_T_EVENT,
GS_EVENT TYPE
SLIS_ALV_EVENT,
wa_fldcat type
slis_fieldcat_alv.
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_PRINT TYPE SLIS_PRINT_ALV.
DATA: IT_FLDCAT TYPE
SLIS_T_FIELDCAT_ALV.
DATA: IT_SORT TYPE
SLIS_T_SORTINFO_ALV.
DATA: V_REPID LIKE SY-REPID.
************************************
************************************
SELECTION
SCREEN
*
************************************
************************************
SELECTION-SCREEN BEGIN OF BLOCK B1
WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_KOKRS FOR
COOI-KOKRS NO-EXTENSION NO
INTERVALS,
" Controlling Area
S_BUKRS FOR
COOI-BUKRS NO-EXTENSION NO
INTERVALS,
" Company code
S_GJAHR FOR
COOI-GJAHR NO-EXTENSION NO
INTERVALS,
" Fiscal Year
S_OBJNR FOR
RKPLN-AUFNR MATCHCODE OBJECT ORDE,
" Internal order
S_SAKTO FOR
COOI-SAKTO MATCHCODE OBJECT KART,
" Cost Element
S_BUDAT FOR
COOI-BUDAT, " Debit Date
S_LIFNR FOR
COOI-LIFNR. " Vendor
SELECTION-SCREEN END OF BLOCK B1.
************************************
************************************
S T A R T O F S E L E C
T I O N *
************************************
************************************
START-OF-SELECTION.
*-- Read data
PERFORM GET_DATA.
************************************
************************************
E N D O F S E L E C T I
O N *
************************************
************************************
END-OF-SELECTION.
*-- Process the data and prepare the
output data
PERFORM CALCULATE_FINAL_INFO.
*--Display Report output
PERFORM DISPLAY_REPORT.
*----
-
*
FORM CALCULATE_FINAL_INFO
*
*----
-
*
Process the data and prepare
final internal table *
*----
-
*
FORM CALCULATE_FINAL_INFO.
DATA : L_OBJNR LIKE COOI-OBJNR.
SORT IT_LFA1 BY LIFNR.
DELETE ADJACENT DUPLICATES FROM
IT_LFA1 COMPARING LIFNR.
LOOP AT IT_COOI.
L_OBJNR = IT_COOI-OBJNR+2(20).
SHIFT L_OBJNR LEFT DELETING
LEADING '0'.
IF L_OBJNR IN S_OBJNR.
READ TABLE IT_LFA1 WITH KEY
LIFNR = IT_COOI-LIFNR.
IF SY-SUBRC EQ 0.
IT_OUTTAB-NAME1 =
IT_LFA1-NAME1.
ENDIF.
MOVE-CORRESPONDING IT_COOI TO
IT_OUTTAB.
CLEAR IT_OUTTAB-OBJNR.
IT_OUTTAB-OBJNR = L_OBJNR.
APPEND IT_OUTTAB.
CLEAR IT_OUTTAB.
CLEAR IT_LFA1.
CLEAR L_OBJNR.
ENDIF.
ENDLOOP.
ENDFORM.
*&----
-
*
*& Form GET_DATA
*&----
-
*
Fetch the Data from the table
COOI and LFA1
*----
-
*
FORM GET_DATA.
SELECT OBJNR
SAKTO
MEGBTR
MEINH
WKGBTR
REFBN
RFPOS
SGTXT
BUDAT
LIFNR
FROM COOI
INTO TABLE IT_COOI
WHERE BUDAT IN S_BUDAT
AND LIFNR IN S_LIFNR
AND KOKRS IN S_KOKRS
AND BUKRS IN S_BUKRS
AND GJAHR IN S_GJAHR
AND SAKTO IN S_SAKTO.
IF SY-SUBRC EQ 0 .
Get the Vendor name from LFA1
SELECT LIFNR
NAME1
FROM LFA1
INTO TABLE IT_LFA1
FOR ALL ENTRIES IN
IT_COOI
WHERE LIFNR EQ
IT_COOI-LIFNR.
ELSE.
MESSAGE I999 WITH TEXT-013.
ENDIF.
ENDFORM.
" GET_DATA
*&----
-
*
*& Form DISPLAY_REPORT
*&----
-
*
Display the output
*----
-
*
FORM DISPLAY_REPORT.
PERFORM BUILD_CATALOG.
PERFORM FRM_PREPARE_EVENT_LIST
TABLES IT_EVENTS.
IF NOT IT_OUTTAB[] IS INITIAL.
CALL FUNCTION
'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
= V_REPID
I_CALLBACK_USER_COMMAND =
'USER_COMMAND'
IT_FIELDCAT
= IT_FLDCAT
IT_SORT
= IT_SORT
IT_EVENTS
= IT_EVENTS
TABLES
T_OUTTAB
= IT_OUTTAB
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS
= 2.
ELSE.
MESSAGE I999 WITH TEXT-013.
ENDIF.
ENDFORM.
" DISPLAY_REPORT
*&----
-
*
*& Form BUILD_CATALOG
*&----
-
*
Build the Field catalog for
the ALV Report
*----
-
*
FORM BUILD_CATALOG.
DATA: V_INDEX LIKE SY-TABIX.
V_REPID = SY-REPID.
DATA: LS_SORT TYPE
SLIS_SORTINFO_ALV.
CALL FUNCTION
'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME =
V_REPID
I_INTERNAL_TABNAME =
'IT_OUTTAB'
I_INCLNAME =
V_REPID
CHANGING
CT_FIELDCAT =
IT_FLDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE =
1
PROGRAM_ERROR =
2
OTHERS =
3.
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 IT_FLDCAT WITH KEY
FIELDNAME = 'WKGBTR'
TABNAME =
'IT_OUTTAB' INTO WA_FLDCAT.
IF SY-SUBRC EQ 0.
WA_FLDCAT-DO_SUM = 'X'.
MODIFY IT_FLDCAT FROM WA_FLDCAT
INDEX SY-TABIX.
ENDIF.
READ TABLE IT_FLDCAT WITH KEY
FIELDNAME = 'OBJNR'
TABNAME
= 'IT_OUTTAB' INTO WA_FLDCAT.
IF SY-SUBRC EQ 0.
WA_FLDCAT-SELTEXT_L = 'Order'.
WA_FLDCAT-COL_POS = 1.
WA_FLDCAT-DDICTXT = 'L'.
MODIFY IT_FLDCAT FROM WA_FLDCAT
INDEX SY-TABIX.
ENDIF.
LS_SORT-FIELDNAME = 'OBJNR'.
LS_SORT-SPOS = 1.
LS_SORT-UP = 'X'.
LS_SORT-SUBTOT = 'X'.
APPEND LS_SORT TO IT_SORT.
ENDFORM.
" BUILD_CATALOG
*&----
-
*
*& Form FRM_PREPARE_EVENT_LIST
*&----
-
*
Build the Events
*----
-
*
FORM FRM_PREPARE_EVENT_LIST TABLES
IT_EVENTS TYPE SLIS_T_EVENT.
CLEAR GS_EVENT.
GS_EVENT-NAME =
SLIS_EV_TOP_OF_PAGE.
GS_EVENT-FORM =
'TOP_OF_PAGE_REPORT'.
APPEND GS_EVENT TO IT_EVENTS.
ENDFORM.
" FRM_PREPARE_EVENT_LIST
************************************
************************************
TOP OF PAGE
************************************
************************************
FORM TOP_OF_PAGE_REPORT.
CALL FUNCTION 'Z_YREPORT_HEADER'
EXPORTING
DL_TITLE = SY-TITLE
DL_REPID = SY-CPROG
DL_LINSZ = SY-LINSZ
EXCEPTIONS
OTHERS = 1.
ENDFORM.
" FRM_TOP_OF_PAGE_REPORT
*&----
-
*
*& Form USER_COMMAND
*&----
-
*
Drill Down Functionality to Call
the Transaction ME23
*----
-
*
FORM USER_COMMAND USING P_UCOMM
LIKE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD.
DATA : L_INDEX LIKE SY-INDEX,
L_REFBN LIKE COOI-REFBN.
L_INDEX = P_SELFIELD-TABINDEX.
" holds the selected table index
CLEAR L_REFBN.
CASE P_UCOMM.
*-- On Double Click
WHEN '&IC1'.
CLEAR L_REFBN.
*-- Read the Current Line
READ TABLE IT_OUTTAB INDEX
L_INDEX.
IF SY-SUBRC EQ 0.
L_REFBN = IT_OUTTAB-REFBN.
IF NOT L_REFBN IS INITIAL.
*-- Set the BES Paramater Id to the
Current line Purchase Order Number
SET PARAMETER ID 'BES'
FIELD L_REFBN.
*-- Call the Transaction Purchase
Order Display with the above PO
Number
CALL TRANSACTION 'ME23'
AND SKIP FIRST SCREEN.
ENDIF.
ELSE.
MESSAGE E999 WITH TEXT-014.
ENDIF.
ENDCASE.
ENDFORM.
" USER_COMMAND
Thanks,
Mahesh
2007 Aug 15 3:40 PM
Check the simple ALV Program :
REPORT ZTEST3 line-size 400.
TABLES: EKKO, LFA1, MAKT, EKET, EKPO, cdhdr.
*Data Declaration
*----
TYPES: BEGIN OF FINAL,
ebeln type ekko-ebeln,
BEDAT type ekko-bedat,
lifnr type ekko-lifnr,
ernam type ekko-ernam,
name1 type lfa1-name1,
matnr type ekpo-matnr,
eindt type eket-eindt,
MAKTX type MAKT-MAKTX,
MBLNR type MSEG-MBLNR,
eldat type eket-eldat,
end of FINAL.
DATA: ITAB TYPE STANDARD TABLE OF FINAL INITIAL SIZE 10 WITH HEADER LINE.
all ALV declarations
*----
type-pools: slis. "ALV Declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv with header line,
G_REPID TYPE SY-REPID,
GS_PRINT TYPE SLIS_PRINT_ALV,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
GT_EVENTS TYPE SLIS_T_EVENT,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
COL_POS TYPE I.
*----
-----------------SELECTION SCREEN----------------------
selection-screen begin of block b1 with frame title text-001.
select-options podate for EKKO-bedat.
selection-screen end of block b1.
*----
*................... GET DATA..................
SELECT EKKO~EBELN
EKKO~BEDAT
EKKO~LIFNR
EKKO~ERNAM
LFA1~NAME1
MAKT~MATNR
EKET~EINDT
MAKT~MAKTX
MSEG~MBLNR
eket~eldat
INTO CORRESPONDING FIELDS OF ITAB
FROM
( EKKO INNER JOIN LFA1
ON EKKO~LIFNR = LFA1~LIFNR
INNER JOIN MSEG
ON EKKO~EBELN = MSEG~EBELN
INNER JOIN MKPF
ON MSEG~MBLNR = MKPF~MBLNR
INNER JOIN EKPO
ON EKKO~EBELN = EKPO~EBELN
INNER JOIN MAKT
ON EKPO~MATNR = MAKT~MATNR
INNER JOIN EKET
ON EKKO~EBELN = EKET~EBELN
)
WHERE EKKO~BEDAT IN PODATE .
APPEND ITAB. CLEAR ITAB.
ENDSELECT.
*
*LOOP AT ITAB.
at first.
write: / 'VENDOR NO' color 6 INVERSE,' VENDOR NAME' COLOR 6
*INVERSE,48'MATERIAL NO' COLOR 6 INVERSE,67'MATERIAL DESCRIPTION' COLOR 6 INVERSE,108'PO.NUMBER' COLOR 6 INVERSE,119'DATE' COLOR 6 INVERSE,129'CREATED BY' COLOR 6 INVERSE,143'G R NO' COLOR 6 INVERSE, 154'GR DATE' COLOR 6 INVERSE,
*167'DELIVERY DATE PROMISED' COLOR 6 INVERSE.
ULINE.
endat.
*
*
*WRITE:/ ITAB-LIFNR,ITAB-NAME1,ITAB-MATNR,ITAB-MAKTX,ITAB-EBELN,ITAB-BEDAT,ITAB-ERNAM,ITAB-MBLNR, ITAB-ELDAT, ITAB-EINDT, itab-udate.
*
*ENDLOOP.
*
*
CDHDROBJECTCLAS AND CDHDRTCODE EQ 'ME28'.
*LOOP AT ITAB.
*
*
*SELECT * FROM CDHDR WHERE OBJECTid = ITAB-EBELN AND .
*
*ITAB-UDATE = CDHDR-UDATE.
*APPEND ITAB. CLEAR ITAB.
*ENDSELECT.
*ENDLOOP.
*
**----
fieldcatalog-fieldname = 'ebeln'.
fieldcatalog-seltext_m = 'po Number'.
fieldcatalog-col_pos = 0.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'bedat'.
fieldcatalog-seltext_m = 'po date'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'lifnr'.
fieldcatalog-seltext_m = 'vendor no'.
fieldcatalog-col_pos = 2.
fieldcatalog-outputlen = 15.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'ernam'.
fieldcatalog-seltext_m = 'created by'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'name1'.
fieldcatalog-seltext_m = 'vendor name'.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = 15.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'matnr'.
fieldcatalog-seltext_m = 'material number'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'eindt'.
fieldcatalog-seltext_m = 'date promised'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'maktx'.
fieldcatalog-seltext_m = 'material desc'.
fieldcatalog-col_pos = 7.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'mblnr'.
fieldcatalog-seltext_m = 'GR no'.
fieldcatalog-col_pos = 8.
fieldcatalog-outputlen = 15.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'eldat'.
fieldcatalog-seltext_m = 'gr date'.
fieldcatalog-col_pos = 9.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
*----
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = g_repid
it_fieldcat = fieldcatalog[]
is_layout = GS_layout
is_variant = z_template
tables
t_outtab = itab
exceptions
program_error = 1
others = 2.
*----
Thanks
Seshu
2007 Aug 15 3:51 PM
HI,
Here is a list of report code for ur reference.
<b> ALV All in ONe</b>
REPORT ZMK_ALLINONE_ALV .
&----
*& Program for displaying data using function modules : *
*& REUSE_ALV_LIST_DISPLAY *
*& REUSE_ALV_POPUP_TO_SELECT *
*& REUSE_ALV_GRID_DISPLAY *
*& *
&----
TABLES VBAK.
DATA it_vbak LIKE VBAK OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN uline.
PARAMETERS: ALV1 RADIOBUTTON GROUP ALV, "REUSE_ALV_LIST_DISPLAY
ALV2 RADIOBUTTON GROUP ALV, "REUSE_ALV_POPUP_TO_SELECT
ALV3 RADIOBUTTON GROUP ALV, "REUSE_ALV_GRID_DISPLAY
ALV4 RADIOBUTTON GROUP ALV. " NORMAL DISPLAY
SELECTION-SCREEN uline.
SELECT * FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE it_vbak
UP TO 10 ROWS.
IF ALV1 = 'X'.
PERFORM ALV_FUNC1.
ELSEIF ALV2 = 'X'.
PERFORM ALV_FUNC2.
ELSEIF ALV3 = 'X'.
PERFORM ALV_FUNC3.
ELSEIF ALV4 = 'X'.
PERFORM NORM.
ENDIF.
&----
*& Form ALV_FUNC1
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC1 .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'VBAK'
TABLES
T_OUTTAB = it_vbak
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_FUNC1
&----
*& Form ALV_FUNC2
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC2 .
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'SALES ORDER INFO'
I_ZEBRA = 'X'
I_TABNAME = 1
I_STRUCTURE_NAME = 'vbak'
TABLES
T_OUTTAB = it_vbak
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_FUNC2
&----
*& Form ALV_FUNC3
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC3 .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'vbak'
I_GRID_TITLE = 'SALES ORDER INFO'
TABLES
T_OUTTAB = it_vbak
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_FUNC3
&----
*& Form NORM
&----
text
----
--> p1 text
<-- p2 text
----
FORM NORM .
format intensified.
skip 1.
WRITE: /'SALES DOC.',
' Created on ',
' Time',
' Created by',
' Valid from ',
' Sold-to party'.
format intensified off.
skip 2.
LOOP AT it_vbak.
write: / it_vbak-vbeln,' ',
it_vbak-erdat,' ',
it_vbak-erzet,' ',
it_vbak-ERNAM,' ',
it_vbak-ANGDT,' ',
it_vbak-KUNNR.
endloop.
ENDFORM. " NORM
REPORT ZMK_SHIPMENT_ALV
no standard page heading
line-size 105
line-count 50(5)
message-id zz.
**********************************
TABLES *
**********************************
tables : vttk, "Shipment Header
vttp, " Shipment Item
lips. " Delivary Item
**********************************
***TYPE-POOLS *
**********************************
type-pools : slis.
**********************************
*WORK AREAS *
**********************************
Work area for field catalog table
data : wa_fldcat type slis_fieldcat_alv.
Work area for Events table
data : wa_events type slis_alv_event.
Work area for layout.
data : wa_layout type slis_layout_alv.
***********************************
*INTERNAL TABLES *
***********************************
Shimpment Details
data : begin of itab occurs 0,
tknum like vttk-tknum,
shtyp like vttk-shtyp,
tpnum like vttp-tpnum,
vbeln like vttp-vbeln,
end of itab.
data : begin of itab1 occurs 0,
vbeln like lips-vbeln,
posnr like lips-posnr,
matnr like lips-matnr,
lfimg like lips-lfimg,
meins like lips-meins,
end of itab1.
For field catalog table
data : it_fldcats type slis_t_fieldcat_alv.
For Events table
data : it_event type slis_t_event.
For layout.
data : it_layout type slis_layout_alv.
For field catalog table
data : it_fldcats1 type slis_t_fieldcat_alv.
For Events table
data : it_event1 type slis_t_event.
data : v_repid like sy-repid.
*Data Declaration
******************
data: v_index type sy-index,
v_vbeln like lips-vbeln.
*SELECT-OPTIONS
****************
selection-screen begin of block b with frame title text-001.
select-options : s_tknum for vttk-tknum .
selection-screen end of block b.
*INITIALIZATION
****************
initialization.
v_repid = sy-repid.
*START-OF-SELCTION
********************
start-of-selection.
perform populate-data.
sort itab by tknum.
top-of-page.
write : 'Shipment wise Delivary Report'.
end-of-selection.
perform build-fieldcatalog.
perform modify-fieldcatalog.
perform build-events.
perform modify-events.
perform set-layout.
perform set-pfstatus.
perform list-display.
&----
*& Form populate-data
Retrives the Shipment data depending on the selection criteria *
&----
FORM populate-data.
select vttk~tknum
vttk~shtyp
vttp~tpnum
vttp~vbeln
into table itab
from vttk
join vttp
on vttptknum = vttktknum
where vttk~tknum in s_tknum.
if sy-subrc <> 0.
message e999 with 'NO DATA FOUND'.
exit.
endif.
ENDFORM. " populate-data
&----
*& Form build-fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
form build-fieldcatalog.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = v_repid
i_internal_tabname = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = it_fldcats
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
.
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. " BUILD-FIELDCATALOG
&----
*& Form build-events
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_event
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.
ENDFORM. " build-events
&----
*& Form set-layout
&----
text
----
--> p1 text
<-- p2 text
----
FORM set-layout.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-no_colhead = space.
wa_layout-no_vline = space.
ENDFORM. " set-layout
&----
*& Form list-display
&----
text
----
--> p1 text
<-- p2 text
----
FORM list-display.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = 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. " list-display
&----
*& Form modify-fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-fieldcatalog.
loop at it_fldcats into wa_fldcat.
case wa_fldcat-fieldname.
when 'TKNUM'.
wa_fldcat-seltext_l = 'Ship No.'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'SHTYP'.
wa_fldcat-seltext_l = 'Ship Type'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'TPNUM'.
wa_fldcat-seltext_l = 'Item No.'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'VBELN'.
wa_fldcat-seltext_l = 'Delivary No.'.
wa_fldcat-hotspot = 'X'.
wa_fldcat-emphasize = 'C311'.
wa_fldcat-col_pos = 4.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcats from wa_fldcat.
endloop.
ENDFORM. " modify-fieldcatalog
&----
*& Form modify-events
&----
text
----
--> p1 text
<-- p2 text
----
form modify-events.
read table it_event with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'HEADER-OF-REPORT'.
modify it_event from wa_events index sy-tabix.
clear wa_events.
endif.
read table it_event with key name =
slis_ev_end_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'FOOTER-OF-REPORT'.
modify it_event from wa_events index sy-tabix.
clear wa_events.
endif.
endform. " modify-events
&----
*& Form HEADER-OF-REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM HEADER-OF-REPORT.
write : 'Shipment Wise Delivary Report'.
ENDFORM. " HEADER-OF-REPORT
&----
*& Form FOOTER-OF-REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM FOOTER-OF-REPORT.
write : 'End of Report'.
ENDFORM. " FOOTER-OF-REPORT
&----
*& Form USER_COMMAND
&----
User command for Calling Transaction VT03N, Execute and Refresh
----
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
V_INDEX = P_SELFIELD-TABINDEX. " holds the selected table index
CASE p_ucomm.
WHEN '&IC1'.
IF p_selfield-fieldname eq 'VBELN'.
perform secondary_list.
ENDIF.
ENDCASE.
ENDFORM. " USER_COMMAND
&----
*& Form secondary_list
&----
text
----
--> p1 text
<-- p2 text
----
FORM secondary_list.
perform get_data1.
perform build-fieldcatalog1.
perform modify-fieldcatalog1.
perform build-events1.
perform modify-events1.
perform set-layout.
perform set-pfstatus.
perform list-display1.
ENDFORM. " secondary_list
&----
*& Form build-fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-fieldcatalog1.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = v_repid
i_internal_tabname = 'ITAB1'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = it_fldcats1
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
.
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. " build-fieldcatalog1
&----
*& Form modify-fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-fieldcatalog1.
loop at it_fldcats into wa_fldcat.
case wa_fldcat-fieldname.
when 'VBELN'.
wa_fldcat-seltext_l = 'Delivary No.'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'POSNR'.
wa_fldcat-seltext_l = 'Item No'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'MATNR'.
wa_fldcat-seltext_l = 'Material'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'LFIMG'.
wa_fldcat-seltext_l = 'Quantity'.
wa_fldcat-col_pos = 4.
wa_fldcat-ddictxt = 'L'.
when 'MEINS'.
wa_fldcat-seltext_l = 'Unit of Measure'.
wa_fldcat-col_pos = 5.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcats from wa_fldcat.
endloop.
ENDFORM. " modify-fieldcatalog1
&----
*& Form build-events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-events1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_event1
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.
ENDFORM. " build-events1
&----
*& Form modify-events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-events1.
read table it_event1 with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'HEADER_OF_REPORT_2'.
modify it_event1 from wa_events index sy-tabix.
clear wa_events.
endif.
ENDFORM. " modify-events1
&----
*& Form list-display1
&----
text
----
--> p1 text
<-- p2 text
----
FORM list-display1.
*CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab1
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.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IT_ALV_GRAPHICS =
IT_ADD_FIELDCAT =
IT_HYPERLINK =
I_HTML_HEIGHT_TOP =
I_HTML_HEIGHT_END =
IT_EXCEPT_QINFO =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab1
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. " list-display1
&----
*& Form get_data1
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data1.
READ TABLE itab INDEX V_INDEX.
v_vbeln = itab-vbeln.
select vbeln
posnr
matnr
lfimg
meins
from lips
into table itab1
where vbeln eq v_vbeln.
ENDFORM. " get_data1
&----
*& Form header_of_report_2
&----
text
----
--> p1 text
<-- p2 text
----
FORM header_of_report_2.
write: 'Delivary item list'.
ENDFORM. " header_of_report_2
REPORT ZMK_PO_ALV .
*******************
TABLES *
*******************
tables : ekko,
ekpo.
********************
TYPES
********************
type-pools: slis.
********************
INTERNAL TABLES
********************
data: begin of itab occurs 0,
EBELN like ekko-ebeln, "Purchasing Document Number
BUKRS like ekko-bukrs, "Company Code
BSTYP like ekko-bstyp, "Purchasing document category
STATU like ekko-statu, "Status of purchasing document
AEDAT like ekko-aedat, "Date on which the record was created
LIFNR like ekko-lifnr, "Vendor's account number
end of itab.
data: begin of itab1 occurs 0,
EBELN like ekpo-ebeln,
EBELP like ekpo-ebelp,
MATNR like ekpo-matnr,
MATKL like ekpo-matkl,
MENGE like ekpo-menge,
end of itab1.
data: begin of itab2 occurs 0,
LIFNR like lfa1-lifnr,
NAME1 like lfa1-name1,
ADRNR like lfa1-adrnr,
ORT01 like lfa1-ort01,
ORT02 like lfa1-ort02,
PFACH like lfa1-pfach,
end of itab2.
**************************************
ALV Specific Tables and Structures
**************************************
data : v_repid like sy-repid,
v_index like sy-index,
v_eblen like ekko-ebeln,
v_lifnr like ekko-lifnr.
**************************************
ALV Specific Tables and Structures
**************************************
Work area for field catalog table
data : wa_fldcat type slis_fieldcat_alv.
data: wa_events type slis_alv_event.
data: wa_layout type slis_layout_alv.
data: it_fldcat type slis_t_fieldcat_alv.
data: it_events type slis_t_event.
data: it_fldcat1 type slis_t_fieldcat_alv.
data: it_events1 type slis_t_event.
data: it_fldcat2 type slis_t_fieldcat_alv.
data: it_events2 type slis_t_event.
*************************************
Selection Screen
***************************************
selection-screen begin of block b with frame title text-001.
select-options : s_ebeln for ekko-ebeln .
selection-screen end of block b.
**************************************
Start of Selection
*****************************************
initialization.
v_repid = sy-repid.
**************************************
Start of Selection
*****************************************
start-of-selection.
perform get_data.
**************************************
End of Selection
*****************************************
end-of-selection.
perform build_fldcatalog.
perform modify_fldcatalog.
perform build_events.
perform modify_events.
perform build_layout.
perform list_display.
&----
*& Form get_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data.
select
EBELN
BUKRS
BSTYP
STATU
AEDAT
LIFNR
from ekko
into table itab
where ebeln in s_ebeln.
ENDFORM. " get_data
&----
*& Form build_fldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_fldcatalog.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = it_fldcat
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
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. " build_fldcatalog
&----
*& Form build_events
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_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.
ENDFORM. " build_events
&----
*& Form modify_events
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_events.
read table it_events with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc eq 0.
wa_events-form = 'HEADER-OF-REPORT'.
modify it_events from wa_events index sy-tabix.
endif.
ENDFORM. " modify_events
&----
*& Form build_layout
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_layout.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-no_colhead = space.
wa_layout-no_vline = space.
.
ENDFORM. " build_layout
&----
*& Form list_display
&----
text
----
--> p1 text
<-- p2 text
----
FORM list_display.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_events
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 30
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = 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. " list_display
&----
*& Form modify_fldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_fldcatalog.
loop at it_fldcat into wa_fldcat.
case wa_fldcat-fieldname.
when 'EBELN'.
wa_fldcat-seltext_l = 'Purchase Order'.
wa_fldcat-emphasize = 'C811'.
wa_fldcat-hotspot = 'X'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'BUKRS'.
wa_fldcat-seltext_l = 'Company Code'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'BSTYP'.
wa_fldcat-seltext_l = 'PO Category'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'STATU'.
wa_fldcat-seltext_l = 'PO Status'.
wa_fldcat-col_pos = 4.
wa_fldcat-tech ='X'.
wa_fldcat-ddictxt = 'L'.
when 'AEDAT'.
wa_fldcat-seltext_l = 'Date Created'.
wa_fldcat-col_pos = 5.
wa_fldcat-ddictxt = 'L'.
when 'LIFNR'.
wa_fldcat-seltext_l = 'Vendor'.
wa_fldcat-hotspot = 'X'.
wa_fldcat-emphasize = 'C511'.
wa_fldcat-col_pos = 6.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcat from wa_fldcat.
ENDLOOP.
ENDFORM. " modify_fldcatalog
&----
*& Form header-of-page
&----
text
----
--> p1 text
<-- p2 text
----
FORM header-of-report.
skip 2.
write : /20 'Purchase Order List Report'.
skip 2.
ENDFORM. " header-of-report
&----
*& Form USER_COMMAND
&----
User command for Calling Transaction VT03N, Execute and Refresh
----
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
V_INDEX = P_SELFIELD-TABINDEX. " holds the selected table index
CASE p_ucomm.
WHEN '&IC1'.
IF p_selfield-fieldname eq 'EBELN'.
perform display_po_item.
ENDIF.
IF p_selfield-fieldname eq 'LIFNR'.
perform display_vendor_info.
endif.
ENDCASE.
ENDFORM. " USER_COMMAND
&----
*& Form secondary_list
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_po_item.
read table itab index v_index.
v_eblen = itab-ebeln.
perform get_item_data.
ENDFORM. " secondary_list
&----
*& Form display_vendor_info
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_vendor_info.
read table itab index v_index.
v_lifnr = itab-lifnr.
perform get_vendor_info.
ENDFORM. " display_vendor_info
&----
*& Form get_item_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_item_data.
clear itab1.
refresh itab1.
select EBELN
EBELP
MATNR
MATKL
MENGE
from ekpo
into table itab1
where ebeln eq v_eblen.
if sy-subrc eq 0.
perform build_catalog1.
perform modify_catalog1.
perform build_events1.
perform modify_events1.
perform list_display1.
endif.
ENDFORM. " get_item_data
&----
*& Form build_catalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_catalog1.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'ITAB1'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = it_fldcat1
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
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. " build_catalog1
&----
*& Form modify_catalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_catalog1.
ENDFORM. " modify_catalog1
&----
*& Form build_events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_events1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_events1
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.
ENDFORM. " build_events1
&----
*& Form modify_events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_events1.
read table it_events1 with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc eq 0.
wa_events-form = 'HEADER-OF-REPORT1'.
modify it_events1 from wa_events index sy-tabix.
endif.
ENDFORM. " modify_events1
&----
*& Form list_display1
&----
text
----
--> p1 text
<-- p2 text
----
FORM list_display1.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcat1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_events1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab1
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. " list_display1
&----
*& Form header-of-report1
&----
text
----
--> p1 text
<-- p2 text
----
FORM header-of-report1.
skip 2.
write : 'ITEM WISE DEATILS OF A PURCHASE ORDER' centered.
skip 3.
ENDFORM. " header-of-report1
&----
*& Form get_vendor_info
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_vendor_info.
select LIFNR
NAME1
ADRNR
ORT01
ORT02
PFACH
from lfa1
into table itab2
where lifnr eq v_lifnr.
if sy-subrc eq 0.
perform build_catalog2.
perform modify_catalog2.
perform build_events2.
perform modify_events2.
perform list_display2.
endif.
ENDFORM. " get_item_data
&----
*& Form build_catalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_catalog2.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = v_repid
I_INTERNAL_TABNAME = 'ITAB2'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = it_fldcat2
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
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. " build_catalog1
&----
*& Form modify_catalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_catalog2.
ENDFORM. " modify_catalog1
&----
*& Form build_events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_events2.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_events2
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.
ENDFORM. " build_events1
&----
*& Form modify_events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_events2.
read table it_events2 with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc eq 0.
wa_events-form = 'HEADER-OF-REPORT2'.
modify it_events2 from wa_events index sy-tabix.
endif.
ENDFORM. " modify_events1
&----
*& Form list_display1
&----
text
----
--> p1 text
<-- p2 text
----
FORM list_display2.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcat2
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_events2
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab2
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. " list_display1
&----
*& Form header-of-report1
&----
text
----
--> p1 text
<-- p2 text
----
FORM header-of-report2.
skip 2.
write : 'VENDOR DETAILS' centered.
skip 3.
ENDFORM. " header-of-report1
<b>ALV INTERACTIVE</b>
REPORT ZMK_SHIPMENT_ALV
no standard page heading
line-size 105
line-count 50(5)
message-id zz.
**********************************
TABLES *
**********************************
tables : vttk, "Shipment Header
vttp, " Shipment Item
lips. " Delivary Item
**********************************
***TYPE-POOLS *
**********************************
type-pools : slis.
**********************************
*WORK AREAS *
**********************************
Work area for field catalog table
data : wa_fldcat type slis_fieldcat_alv.
Work area for Events table
data : wa_events type slis_alv_event.
Work area for layout.
data : wa_layout type slis_layout_alv.
***********************************
*INTERNAL TABLES *
***********************************
Shimpment Details
data : begin of itab occurs 0,
tknum like vttk-tknum,
shtyp like vttk-shtyp,
tpnum like vttp-tpnum,
vbeln like vttp-vbeln,
end of itab.
data : begin of itab1 occurs 0,
vbeln like lips-vbeln,
posnr like lips-posnr,
matnr like lips-matnr,
lfimg like lips-lfimg,
meins like lips-meins,
end of itab1.
For field catalog table
data : it_fldcats type slis_t_fieldcat_alv.
For Events table
data : it_event type slis_t_event.
For layout.
data : it_layout type slis_layout_alv.
For field catalog table
data : it_fldcats1 type slis_t_fieldcat_alv.
For Events table
data : it_event1 type slis_t_event.
data : v_repid like sy-repid.
*Data Declaration
******************
data: v_index type sy-index,
v_vbeln like lips-vbeln.
*SELECT-OPTIONS
****************
selection-screen begin of block b with frame title text-001.
select-options : s_tknum for vttk-tknum .
selection-screen end of block b.
*INITIALIZATION
****************
initialization.
v_repid = sy-repid.
*START-OF-SELCTION
********************
start-of-selection.
perform populate-data.
sort itab by tknum.
top-of-page.
write : 'Shipment wise Delivary Report'.
end-of-selection.
perform build-fieldcatalog.
perform modify-fieldcatalog.
perform build-events.
perform modify-events.
perform set-layout.
perform set-pfstatus.
perform list-display.
&----
*& Form populate-data
Retrives the Shipment data depending on the selection criteria *
&----
FORM populate-data.
select vttk~tknum
vttk~shtyp
vttp~tpnum
vttp~vbeln
into table itab
from vttk
join vttp
on vttptknum = vttktknum
where vttk~tknum in s_tknum.
if sy-subrc <> 0.
message e999 with 'NO DATA FOUND'.
exit.
endif.
ENDFORM. " populate-data
&----
*& Form build-fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
form build-fieldcatalog.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = v_repid
i_internal_tabname = 'ITAB'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = it_fldcats
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
.
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. " BUILD-FIELDCATALOG
&----
*& Form build-events
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_event
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.
ENDFORM. " build-events
&----
*& Form set-layout
&----
text
----
--> p1 text
<-- p2 text
----
FORM set-layout.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'.
wa_layout-no_colhead = space.
wa_layout-no_vline = space.
ENDFORM. " set-layout
&----
*& Form list-display
&----
text
----
--> p1 text
<-- p2 text
----
FORM list-display.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = 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. " list-display
&----
*& Form modify-fieldcatalog
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-fieldcatalog.
loop at it_fldcats into wa_fldcat.
case wa_fldcat-fieldname.
when 'TKNUM'.
wa_fldcat-seltext_l = 'Ship No.'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'SHTYP'.
wa_fldcat-seltext_l = 'Ship Type'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'TPNUM'.
wa_fldcat-seltext_l = 'Item No.'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'VBELN'.
wa_fldcat-seltext_l = 'Delivary No.'.
wa_fldcat-hotspot = 'X'.
wa_fldcat-col_pos = 4.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcats from wa_fldcat.
endloop.
ENDFORM. " modify-fieldcatalog
&----
*& Form modify-events
&----
text
----
--> p1 text
<-- p2 text
----
form modify-events.
read table it_event with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'HEADER-OF-REPORT'.
modify it_event from wa_events index sy-tabix.
clear wa_events.
endif.
read table it_event with key name =
slis_ev_end_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'FOOTER-OF-REPORT'.
modify it_event from wa_events index sy-tabix.
clear wa_events.
endif.
endform. " modify-events
&----
*& Form HEADER-OF-REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM HEADER-OF-REPORT.
write : 'Shipment Wise Delivary Report'.
ENDFORM. " HEADER-OF-REPORT
&----
*& Form FOOTER-OF-REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM FOOTER-OF-REPORT.
write : 'End of Report'.
ENDFORM. " FOOTER-OF-REPORT
&----
*& Form USER_COMMAND
&----
User command for Calling Transaction VT03N, Execute and Refresh
----
FORM user_command USING p_ucomm LIKE sy-ucomm
p_selfield TYPE slis_selfield.
V_INDEX = P_SELFIELD-TABINDEX. " holds the selected table index
CASE p_ucomm.
WHEN '&IC1'.
IF p_selfield-fieldname eq 'VBELN'.
perform secondary_list.
ENDIF.
ENDCASE.
ENDFORM. " USER_COMMAND
&----
*& Form secondary_list
&----
text
----
--> p1 text
<-- p2 text
----
FORM secondary_list.
perform get_data1.
perform build-fieldcatalog1.
perform modify-fieldcatalog1.
perform build-events1.
perform modify-events1.
perform set-layout.
perform set-pfstatus.
perform list-display1.
ENDFORM. " secondary_list
&----
*& Form build-fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-fieldcatalog1.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = v_repid
i_internal_tabname = 'ITAB1'
I_STRUCTURE_NAME =
I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = v_repid
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
changing
ct_fieldcat = it_fldcats1
exceptions
inconsistent_interface = 1
program_error = 2
others = 3
.
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. " build-fieldcatalog1
&----
*& Form modify-fieldcatalog1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-fieldcatalog1.
loop at it_fldcats into wa_fldcat.
case wa_fldcat-fieldname.
when 'VBELN'.
wa_fldcat-seltext_l = 'Delivary No.'.
wa_fldcat-col_pos = 1.
wa_fldcat-ddictxt = 'L'.
when 'POSNR'.
wa_fldcat-seltext_l = 'Item No'.
wa_fldcat-col_pos = 2.
wa_fldcat-ddictxt = 'L'.
when 'MATNR'.
wa_fldcat-seltext_l = 'Material'.
wa_fldcat-col_pos = 3.
wa_fldcat-ddictxt = 'L'.
when 'LFIMG'.
wa_fldcat-seltext_l = 'Quantity'.
wa_fldcat-col_pos = 4.
wa_fldcat-ddictxt = 'L'.
when 'MEINS'.
wa_fldcat-seltext_l = 'Unit of Measure'.
wa_fldcat-col_pos = 5.
wa_fldcat-ddictxt = 'L'.
endcase.
modify it_fldcats from wa_fldcat.
endloop.
ENDFORM. " modify-fieldcatalog1
&----
*& Form build-events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM build-events1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_event1
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.
ENDFORM. " build-events1
&----
*& Form modify-events1
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify-events1.
read table it_event1 with key name =
slis_ev_top_of_page into wa_events.
if sy-subrc = 0.
wa_events-form = 'HEADER_OF_REPORT_2'.
modify it_event1 from wa_events index sy-tabix.
clear wa_events.
endif.
ENDFORM. " modify-events1
&----
*& Form list-display1
&----
text
----
--> p1 text
<-- p2 text
----
FORM list-display1.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME =
IS_LAYOUT = wa_layout
IT_FIELDCAT = it_fldcats1
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = it_event1
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = itab1
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. " list-display1
&----
*& Form get_data1
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data1.
READ TABLE itab INDEX V_INDEX.
v_vbeln = itab-vbeln.
select vbeln
posnr
matnr
lfimg
meins
from lips
into table itab1
where vbeln eq v_vbeln.
ENDFORM. " get_data1
&----
*& Form header_of_report_2
&----
text
----
--> p1 text
<-- p2 text
----
FORM header_of_report_2.
write: 'Delivary item list'.
ENDFORM. " header_of_report_2
<b>ALV SUBTOTALS</b>
REPORT ZYFI_REPT007
NO STANDARD PAGE HEADING
LINE-SIZE 300
LINE-COUNT 50
MESSAGE-ID ZYFI.
*----
-
*
************************************
************************************
************************************
************************************
TABLES : COOI, " Commitments
Management: Line Items
LFA1,
" Vendor master (general section)
VBEP,
RKPLN.
************************************
************************************
TABLE TYPES AND INTERNAL
TABLES
*
************************************
************************************
DATA : BEGIN OF TYP_COOI ,
OBJNR LIKE COOI-OBJNR,
SAKTO LIKE COOI-SAKTO,
MEGBTR LIKE COOI-MEGBTR,
MEINH LIKE COOI-MEINH,
WKGBTR LIKE COOI-WKGBTR,
REFBN LIKE COOI-REFBN,
RFPOS LIKE COOI-RFPOS,
SGTXT LIKE COOI-SGTXT,
BUDAT LIKE COOI-BUDAT,
LIFNR LIKE COOI-LIFNR,
END OF TYP_COOI.
DATA : BEGIN OF TYP_LFA1 ,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF TYP_LFA1.
DATA : BEGIN OF IT_OUTTAB OCCURS 0,
OBJNR LIKE COOI-OBJNR,
SAKTO LIKE COOI-SAKTO,
MEGBTR LIKE COOI-MEGBTR,
MEINH LIKE COOI-MEINH,
WKGBTR LIKE COOI-WKGBTR,
REFBN LIKE COOI-REFBN,
RFPOS LIKE COOI-RFPOS,
SGTXT LIKE COOI-SGTXT,
BUDAT LIKE COOI-BUDAT,
LIFNR LIKE COOI-LIFNR,
NAME1 LIKE LFA1-NAME1,
END OF IT_OUTTAB.
DATA : IT_COOI LIKE TYP_COOI OCCURS
0 WITH HEADER LINE,
IT_LFA1 LIKE TYP_LFA1 OCCURS
0 WITH HEADER LINE.
*-- ALV Declarations
TYPE-POOLS SLIS.
DATA: IT_EVENTS TYPE
SLIS_T_EVENT,
GS_EVENT TYPE
SLIS_ALV_EVENT,
wa_fldcat type
slis_fieldcat_alv.
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_PRINT TYPE SLIS_PRINT_ALV.
DATA: IT_FLDCAT TYPE
SLIS_T_FIELDCAT_ALV.
DATA: IT_SORT TYPE
SLIS_T_SORTINFO_ALV.
DATA: V_REPID LIKE SY-REPID.
************************************
************************************
SELECTION
SCREEN
*
************************************
************************************
SELECTION-SCREEN BEGIN OF BLOCK B1
WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_KOKRS FOR
COOI-KOKRS NO-EXTENSION NO
INTERVALS,
" Controlling Area
S_BUKRS FOR
COOI-BUKRS NO-EXTENSION NO
INTERVALS,
" Company code
S_GJAHR FOR
COOI-GJAHR NO-EXTENSION NO
INTERVALS,
" Fiscal Year
S_OBJNR FOR
RKPLN-AUFNR MATCHCODE OBJECT ORDE,
" Internal order
S_SAKTO FOR
COOI-SAKTO MATCHCODE OBJECT KART,
" Cost Element
S_BUDAT FOR
COOI-BUDAT, " Debit Date
S_LIFNR FOR
COOI-LIFNR. " Vendor
SELECTION-SCREEN END OF BLOCK B1.
************************************
************************************
S T A R T O F S E L E C
T I O N *
************************************
************************************
START-OF-SELECTION.
*-- Read data
PERFORM GET_DATA.
************************************
************************************
E N D O F S E L E C T I
O N *
************************************
************************************
END-OF-SELECTION.
*-- Process the data and prepare the
output data
PERFORM CALCULATE_FINAL_INFO.
*--Display Report output
PERFORM DISPLAY_REPORT.
*----
-
*
FORM CALCULATE_FINAL_INFO
*
*----
-
*
Process the data and prepare
final internal table *
*----
-
*
FORM CALCULATE_FINAL_INFO.
DATA : L_OBJNR LIKE COOI-OBJNR.
SORT IT_LFA1 BY LIFNR.
DELETE ADJACENT DUPLICATES FROM
IT_LFA1 COMPARING LIFNR.
LOOP AT IT_COOI.
L_OBJNR = IT_COOI-OBJNR+2(20).
SHIFT L_OBJNR LEFT DELETING
LEADING '0'.
IF L_OBJNR IN S_OBJNR.
READ TABLE IT_LFA1 WITH KEY
LIFNR = IT_COOI-LIFNR.
IF SY-SUBRC EQ 0.
IT_OUTTAB-NAME1 =
IT_LFA1-NAME1.
ENDIF.
MOVE-CORRESPONDING IT_COOI TO
IT_OUTTAB.
CLEAR IT_OUTTAB-OBJNR.
IT_OUTTAB-OBJNR = L_OBJNR.
APPEND IT_OUTTAB.
CLEAR IT_OUTTAB.
CLEAR IT_LFA1.
CLEAR L_OBJNR.
ENDIF.
ENDLOOP.
ENDFORM.
*&----
-
*
*& Form GET_DATA
*&----
-
*
Fetch the Data from the table
COOI and LFA1
*----
-
*
FORM GET_DATA.
SELECT OBJNR
SAKTO
MEGBTR
MEINH
WKGBTR
REFBN
RFPOS
SGTXT
BUDAT
LIFNR
FROM COOI
INTO TABLE IT_COOI
WHERE BUDAT IN S_BUDAT
AND LIFNR IN S_LIFNR
AND KOKRS IN S_KOKRS
AND BUKRS IN S_BUKRS
AND GJAHR IN S_GJAHR
AND SAKTO IN S_SAKTO.
IF SY-SUBRC EQ 0 .
Get the Vendor name from LFA1
SELECT LIFNR
NAME1
FROM LFA1
INTO TABLE IT_LFA1
FOR ALL ENTRIES IN
IT_COOI
WHERE LIFNR EQ
IT_COOI-LIFNR.
ELSE.
MESSAGE I999 WITH TEXT-013.
ENDIF.
ENDFORM.
" GET_DATA
*&----
-
*
*& Form DISPLAY_REPORT
*&----
-
*
Display the output
*----
-
*
FORM DISPLAY_REPORT.
PERFORM BUILD_CATALOG.
PERFORM FRM_PREPARE_EVENT_LIST
TABLES IT_EVENTS.
IF NOT IT_OUTTAB[] IS INITIAL.
CALL FUNCTION
'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
= V_REPID
I_CALLBACK_USER_COMMAND =
'USER_COMMAND'
IT_FIELDCAT
= IT_FLDCAT
IT_SORT
= IT_SORT
IT_EVENTS
= IT_EVENTS
TABLES
T_OUTTAB
= IT_OUTTAB
EXCEPTIONS
PROGRAM_ERROR
= 1
OTHERS
= 2.
ELSE.
MESSAGE I999 WITH TEXT-013.
ENDIF.
ENDFORM.
" DISPLAY_REPORT
*&----
-
*
*& Form BUILD_CATALOG
*&----
-
*
Build the Field catalog for
the ALV Report
*----
-
*
FORM BUILD_CATALOG.
DATA: V_INDEX LIKE SY-TABIX.
V_REPID = SY-REPID.
DATA: LS_SORT TYPE
SLIS_SORTINFO_ALV.
CALL FUNCTION
'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME =
V_REPID
I_INTERNAL_TABNAME =
'IT_OUTTAB'
I_INCLNAME =
V_REPID
CHANGING
CT_FIELDCAT =
IT_FLDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE =
1
PROGRAM_ERROR =
2
OTHERS =
3.
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 IT_FLDCAT WITH KEY
FIELDNAME = 'WKGBTR'
TABNAME =
'IT_OUTTAB' INTO WA_FLDCAT.
IF SY-SUBRC EQ 0.
WA_FLDCAT-DO_SUM = 'X'.
MODIFY IT_FLDCAT FROM WA_FLDCAT
INDEX SY-TABIX.
ENDIF.
READ TABLE IT_FLDCAT WITH KEY
FIELDNAME = 'OBJNR'
TABNAME
= 'IT_OUTTAB' INTO WA_FLDCAT.
IF SY-SUBRC EQ 0.
WA_FLDCAT-SELTEXT_L = 'Order'.
WA_FLDCAT-COL_POS = 1.
WA_FLDCAT-DDICTXT = 'L'.
MODIFY IT_FLDCAT FROM WA_FLDCAT
INDEX SY-TABIX.
ENDIF.
LS_SORT-FIELDNAME = 'OBJNR'.
LS_SORT-SPOS = 1.
LS_SORT-UP = 'X'.
LS_SORT-SUBTOT = 'X'.
APPEND LS_SORT TO IT_SORT.
ENDFORM.
" BUILD_CATALOG
*&----
-
*
*& Form FRM_PREPARE_EVENT_LIST
*&----
-
*
Build the Events
*----
-
*
FORM FRM_PREPARE_EVENT_LIST TABLES
IT_EVENTS TYPE SLIS_T_EVENT.
CLEAR GS_EVENT.
GS_EVENT-NAME =
SLIS_EV_TOP_OF_PAGE.
GS_EVENT-FORM =
'TOP_OF_PAGE_REPORT'.
APPEND GS_EVENT TO IT_EVENTS.
ENDFORM.
" FRM_PREPARE_EVENT_LIST
************************************
************************************
TOP OF PAGE
************************************
************************************
FORM TOP_OF_PAGE_REPORT.
CALL FUNCTION 'Z_YREPORT_HEADER'
EXPORTING
DL_TITLE = SY-TITLE
DL_REPID = SY-CPROG
DL_LINSZ = SY-LINSZ
EXCEPTIONS
OTHERS = 1.
ENDFORM.
" FRM_TOP_OF_PAGE_REPORT
*&----
-
*
*& Form USER_COMMAND
*&----
-
*
Drill Down Functionality to Call
the Transaction ME23
*----
-
*
FORM USER_COMMAND USING P_UCOMM
LIKE SY-UCOMM
P_SELFIELD TYPE SLIS_SELFIELD.
DATA : L_INDEX LIKE SY-INDEX,
L_REFBN LIKE COOI-REFBN.
L_INDEX = P_SELFIELD-TABINDEX.
" holds the selected table index
CLEAR L_REFBN.
CASE P_UCOMM.
*-- On Double Click
WHEN '&IC1'.
CLEAR L_REFBN.
*-- Read the Current Line
READ TABLE IT_OUTTAB INDEX
L_INDEX.
IF SY-SUBRC EQ 0.
L_REFBN = IT_OUTTAB-REFBN.
IF NOT L_REFBN IS INITIAL.
*-- Set the BES Paramater Id to the
Current line Purchase Order Number
SET PARAMETER ID 'BES'
FIELD L_REFBN.
*-- Call the Transaction Purchase
Order Display with the above PO
Number
CALL TRANSACTION 'ME23'
AND SKIP FIRST SCREEN.
ENDIF.
ELSE.
MESSAGE E999 WITH TEXT-014.
ENDIF.
ENDCASE.
ENDFORM.
" USER_COMMAND
Thanks,
Mahesh
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |