Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV Documentation with programs

Former Member
0 Likes
878

Hi Foks,

I am new to ALV. Could you please suggess me how can I use it and get me some basic documentation please.

thanks in advance.

make sure update points

sekhar

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
720

HI,

Find the code samples from basic to interactive reports here....

ALV ALL IN ONE

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 REPORT</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

*-- callling a transaction code by passing the initial screen value.

&----


*& Form USER_COMMAND

&----


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.

when '&IC1'.

clear l_refbn.

read table it_outtab index l_index.

if sy-subrc eq 0.

l_refbn = it_outtab-refbn.

if not l_refbn is initial.

set parameter id 'BES' field l_refbn.

call transaction 'ME23' and skip first screen.

endif.

else.

message e999 with text-014.

endif.

endcase.

endif.

<b>ALV WITH CHECK BOXES</b>

REPORT ZTESTPRG .

************************************************************************

  • TABLES AND DATA DECLARATION.

************************************************************************

*TABLES: mara,makt.",marc.

data syrepid like sy-repid.

data sydatum(10). " LIKE sy-datum.

data sypagno(3) type n.

  • WHEN USING MORE THAN ONE TABLE IN ALV WE NEEED TO DECLARE THE TYPE

  • GROUP (TYPE-POOLS--------->SLIS)

type-pools : slis.

************************************************************************

  • INTERNAL TABLE DECLARATION.

************************************************************************

  • INTERNAL TABLE TO HOLD THE VALUES FROM THE MARA TABLE

data: begin of t_mara occurs 0,

matnr like mara-matnr,

meins like mara-meins,

mtart like mara-mtart,

matkl like mara-matkl,

end of t_mara.

  • INTERNAL TABLE TO HOLD THE CONTENTS FROM THE EKKO TABLE

data : begin of t_marc occurs 0,

matnr like mara-matnr,

werks like marc-werks,

minbe like marc-minbe.

data: end of t_marc.

  • INTERNAL TABLE TO HOLD THE VALUES FROM MAKT TABLE.

data : begin of t_makt occurs 0,

matnr like mara-matnr,

maktx like makt-maktx,

spras like makt-spras,

end of t_makt.

  • INTERNAL TABLE WHICH ACTUALLY MERGES ALL THE OTHER INTERNAL TABLES.

data: begin of itab1 occurs 0,

chkbox(1) type c,

matnr like mara-matnr,

meins like mara-meins,

maktx like makt-maktx,

spras like makt-spras,

werks like marc-werks,

minbe like marc-minbe,

end of itab1.

  • THE FOLLOWING DECLARATION IS USED FOR DEFINING THE FIELDCAT

  • AND THE LAYOUT FOR THE ALV.

  • HERE AS slis_t_fieldcat_alv IS A INTERNAL TABLE WITHOUT A HEADER LINE

  • WE EXPLICITELY DEFINE AN INTERNAL TABLE OF THE SAME STRUCTURE AS THAT

  • OF slis_t_fieldcat_alv BUT WITH A HEADER LINE IN THE DEFINITION.

  • THIS IS DONE TO MAKE THE CODE SIMPLER.

  • OTHERWISE WE MAY HAVE TO DEFINE THE STRUCTURE AS IN THE NORMAL SAP

  • PROGRAMS.

  • IN THE FIELDCATALOG TABLE WE ACTUALLY PASS THE FIELDS FROM ONE OR

  • MORE TABLES AND CREATE A STRUCTURE

  • IN THE LAYOUT STRUCTURE WE BASICALLY DEFINE THE FORMATTING OPTIONS

  • LIKE DISPLAY IN THE ZEBRA PATTERN ,THE HOTSPOT OPTIONS ETC.

data: fieldcatalog type slis_t_fieldcat_alv with header line,

fieldlayout type slis_layout_alv.

  • DECLARING THE EVENTTABLE INTERNL TABLE FOR USING EVENTS LIKE

  • TOP-OF-PAGE ETC.

data : eventstab type slis_t_event with header line.

  • DECLARING AN INTERNAL TABLE TO HOLD THE DATA FOR THE TOP-OF-PAGE

data : heading type slis_t_listheader with header line.

data : heading1 type slis_t_listheader with header line.

data : heading2 type slis_t_listheader with header line.

data : heading3 type slis_t_listheader with header line.

data : heading4 type slis_t_listheader with header line.

data : heading5 type slis_t_listheader with header line.

data : heading6 type slis_t_listheader with header line.

data : heading7 type slis_t_listheader with header line.

data : heading8 type slis_t_listheader with header line.

  • STRUCTURE TO PASS THE COLOR ATTRIBUTES FOR DISPLAY.

data : colorstruct type slis_coltypes.

************************************************************************

  • INITIALIZATION. *

************************************************************************

initialization.

syrepid = sy-repid.

sypagno = sy-pagno.

clear fieldcatalog.

************************************************************************

  • START-OF-SELECTION. *

************************************************************************

start-of-selection.

  • SUBROUTINE TO POPULATE THE COLORSTRUCT

perform fill_colorstruct using colorstruct.

  • SUBROUTINE TO POPULATE THE FIELDS OF THE FIELD CATALOGUE

perform populate_fieldcatalog.

  • SUBROUTINE TO SELECT DATA FROM VARIOUS TABLES AND POPULATE IT IN THE

  • INTERNAL TABLE.

perform selectdata_and_sort.

  • SUBROUTINE TO POPULATE THE LAYOUT STRUCTURE.

perform populate_layout using fieldlayout.

  • SUBROUTINE TO CALL THE FUNCTION MERGE TO ENSURE PROPER DISPLAY.

perform merge_fieldcatalog.

  • SUBROUTINE TO POPULATE THE EVENTSTAB.

perform fill_eventstab tables eventstab.

  • SUBROUTINE TO POPULATE THE HEADING TABLES.

perform fill_headingtable tables heading using 'HEADING'.

perform fill_headingtable tables heading1 using 'HEADING1'.

perform fill_headingtable tables heading2 using 'HEADING2'.

perform fill_headingtable tables heading3 using 'HEADING3'.

perform fill_headingtable tables heading4 using 'HEADING4'.

perform fill_headingtable tables heading5 using 'HEADING5'.

perform fill_headingtable tables heading6 using 'HEADING6'.

perform fill_headingtable tables heading7 using 'HEADING7'.

perform fill_headingtable tables heading8 using 'HEADING8'.

  • SUBROUTINE TO DISPLAY THE LIST.

perform display_alv_list.

************************************************************************

  • FORMS

************************************************************************

  • IN THIS SUBROUTINE WE POPULATE THE FIELDCATALOG TABLE WITH THE NAMES

  • OF THE TABLE,FIELDNAME,WHETHER IT IS KEY FIELD OR NOT,HEADING AND

  • COLUMN JUSTIFICATION.

form populate_fieldcatalog.

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MATNR' 'X' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MEINS' ' '.

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MAKTX' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MTART' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MATKL' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'SPRAS' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'WERKS' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MINBE' ' ' .

endform. " POPULATE_FIELDCATALOG

----


  • FORM FILL_FIELDS_OF_FIELDCATALOG *

----


  • ........ *

----


  • --> FIELDCATALOG *

  • --> P_TABNAME *

  • --> P_FIELDNAME *

  • --> P_KEY *

  • --> P_KEY *

----


form fill_fields_of_fieldcatalog tables fieldcatalog

structure fieldcatalog

using p_tabname

p_fieldname

p_key.

  • p_no_out.

fieldcatalog-tabname = p_tabname.

fieldcatalog-fieldname = p_fieldname.

fieldcatalog-key = p_key.

fieldcatalog-emphasize = '1234'.

*fieldcatalog-no_out = p_no_out.

append fieldcatalog.

endform. " FILL_FIELDSOFFIELDCATALOG

----


  • FORM POPULATE_LAYOUT *

----


  • ........ *

----


  • --> FIELDLAYOUT *

----


form populate_layout using fieldlayout type slis_layout_alv.

fieldlayout-f2code = '&ETA' .

fieldlayout-zebra = 'X'.

  • FOR THE WINDOW TITLE.

fieldlayout-window_titlebar = 'ALV with Events'.

fieldlayout-colwidth_optimize = 'X'.

fieldlayout-no_vline = ' '.

*fieldlayout-no_input = 'X'.

fieldlayout-confirmation_prompt = ''.

fieldlayout-key_hotspot = 'X'.

  • This removes the column headings if the flag is set to 'X'

fieldlayout-no_colhead = ' '.

*fieldlayout-hotspot_fieldname = 'MAKTX'.

fieldlayout-detail_popup = 'X'.

  • fieldlayout-coltab_fieldname = 'X'.

fieldlayout-box_fieldname = 'CHKBOX'.

fieldlayout-edit_mode = 'X'.

endform. " POPULATE_LAYOUT

----


  • FORM SELECTDATA_AND_SORT *

----


  • ........ *

----


form selectdata_and_sort.

select matnr meins mtart matkl from mara

into corresponding fields of t_mara

up to 500 rows .

select matnr maktx spras from makt

into corresponding fields of t_makt

where matnr = t_mara-matnr and

spras = sy-langu.

select matnr werks minbe from marc

into corresponding fields of t_marc

where matnr = t_mara-matnr.

append t_marc.

endselect.

append t_makt.

endselect.

append t_mara.

endselect.

perform populate_itab1.

sort itab1 by matnr.

endform. " SELECTDATA_AND_SORT

----


  • FORM MERGE_FIELDCATALOG *

----


  • ........ *

----


form merge_fieldcatalog.

call function 'REUSE_ALV_FIELDCATALOG_MERGE'

exporting

i_program_name = syrepid

i_internal_tabname = 'ITAB1'

  • i_structure_name = 'COLORSTRUCT'

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = syrepid

changing

ct_fieldcat = fieldcatalog[]

exceptions

inconsistent_interface = 1

program_error = 2

others = 3.

endform. " MERGE_FIELDCATALOG

  • IN THIS FUNCTION THE MINIMUM PARAMETERS THAT WE NEED TO PASS IS AS

  • FOLLOWS:-

  • i_callback_program --> CALLING PROGRAM NAME

  • i_structure_name --> STRUCTURE NAME.

  • is_layout --> LAYOUT NAME.

  • it_fieldcat ---> BODY OF THE FIELD CATALOGUE INTERNAL TABLE

form display_alv_list.

call function 'REUSE_ALV_LIST_DISPLAY'

exporting

  • I_INTERFACE_CHECK = ' '

i_callback_program = syrepid

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

i_structure_name = 'ITAB1'

is_layout = fieldlayout

it_fieldcat = fieldcatalog[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • THE FOLLOWING PARAMETER IS SET AS 'A' INORDER TO DISPLAY THE STANDARD

  • TOOL BAR

i_save = 'A'

  • IS_VARIANT = ' '

it_events = eventstab[]

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • 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.

endform. " DISPLAY_ALV_LIST

&----


*& Form POPULATE_ITAB1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form populate_itab1.

loop at t_mara.

loop at t_makt where matnr = t_mara-matnr.

loop at t_marc where matnr = t_mara-matnr.

move-corresponding t_mara to itab1.

move-corresponding t_makt to itab1.

move-corresponding t_marc to itab1.

append itab1.

endloop.

endloop.

endloop.

endform. " POPULATE_ITAB1

&----


*& Form FILL_EVENTSTAB

&----


  • text

----


  • -->P_EVENTSTAB text *

----


form fill_eventstab tables p_eventstab structure eventstab.

  • WHEN THE FOLLOWING FUNCTION IS CALLED THE SYSTEM POPULATES THE

  • INTERNAL TABLE EVENTSTAB WITH A LIST OF EVENTS NAME.

  • AS SHOWN BELOW WHEN USING I_LIST_TYPE = 0 THE FUNCTION RETURNS 14

  • EVENTS NAME.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = p_eventstab[]

exceptions

list_type_wrong = 1

others = 2.

  • BY CALLING THE ABOVE FUNCTION WE FIRST POPULATE THE EVENTSTAB WITH

  • THE PREDEFINED EVENTS AND THEN WE MOVE THE FORM NAME AS SHOWN BELOW.

  • WE ASSIGN A FORM NAME TO THE EVENT AS REQUIRED BY THE USER.

  • FORM NAME CAN BE ANYTHING.THE PERFORM STATEMENT FOR THIS FORM

  • IS DYNAMICALY CALLED.

read table p_eventstab with key name = slis_ev_top_of_page.

if sy-subrc = 0 .

move 'TOP_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_top_of_coverpage.

if sy-subrc = 0 .

move 'TOP_OF_COVERPAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_coverpage .

if sy-subrc = 0 .

move 'END_OF_COVERPAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_foreign_top_of_page.

if sy-subrc = 0 .

move 'FOREIGN_TOP_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_foreign_end_of_page.

if sy-subrc = 0 .

move 'FOREIGN_END_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_list_modify.

if sy-subrc = 0 .

move 'LIST_MODIFY' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_top_of_list.

if sy-subrc = 0 .

move 'TOP_OF_LIST' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_page.

if sy-subrc = 0 .

move 'END_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_list .

if sy-subrc = 0 .

move 'END_OF_LIST' to p_eventstab-form.

append p_eventstab.

endif.

endform. " FILL_EVENTSTAB

&----


*& Form FILL_HEADINGTABLE

&----


  • text

----


  • -->P_HEADING text *

----


form fill_headingtable tables p_heading structure heading

using tablename.

case tablename.

when 'HEADING'.

p_heading-typ = 'H'.

concatenate

' REPORT NAME:-' syrepid

' ABB Industry Pte Ltd' into p_heading-info.

append p_heading.

write sy-datum using edit mask '__/__/____' to sydatum.

concatenate

' DATE:-' sydatum ' USER: ' sy-uname 'PAGE NO:' sypagno

into p_heading-info.

append p_heading.

when 'HEADING1'.

p_heading-typ = 'H'.

p_heading-info = 'TOP-OF-COVER-PAGE'.

append p_heading.

when 'HEADING2'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-COVER-PAGE'.

append p_heading.

when 'HEADING3'.

p_heading-typ = 'H'.

p_heading-info = 'FOREIGN-TOP-OF-PAGE'.

append p_heading.

when 'HEADING4'.

p_heading-typ = 'H'.

p_heading-info = 'FOREIGN-END-OF-PAGE'.

append p_heading.

  • WHEN 'HEADING5'.

  • P_HEADING-TYP = 'H'.

  • P_HEADING-INFO = 'LIST-MODIFY'.

  • APPEND P_HEADING.

when 'HEADING6'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-PAGE'.

append p_heading.

when 'HEADING7'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-LIST'.

append p_heading.

when 'HEADING8'.

p_heading-typ = 'H'.

p_heading-info = 'TOP-OF-LIST'.

append p_heading.

endcase.

endform. " FILL_HEADINGTABLE

----


  • FORM TOP_OF_PAGE *

----


  • ........ *

----


form top_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading[]

exceptions

others = 1.

endform.

&----


*& Form FILL_COLORSTRUCT

&----


  • text

----


  • -->P_COLORSTRUCT text *

----


form fill_colorstruct using p_colorstruct type slis_coltypes .

p_colorstruct-heacolfir-col = 6.

p_colorstruct-heacolfir-int = 1.

p_colorstruct-heacolfir-inv = 1.

endform. " FILL_COLORSTRUCT

----


  • FORM TOP_OF_COVERPAGE *

----


  • ........ *

----


form top_of_coverpage.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading1[]

exceptions

others = 1.

endform.

----


  • FORM END_OF_COVERPAGE *

----


  • ........ *

----


form end_of_coverpage.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading2[]

exceptions

others = 1.

endform.

----


  • FORM FOREIGN_TOP_OF_PAGE *

----


  • ........ *

----


form foreign_top_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading3[]

exceptions

others = 1.

endform.

----


  • FORM FOREIGN_END_OF_PAGE *

----


  • ........ *

----


form foreign_end_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading4[]

exceptions

others = 1.

endform.

----


  • FORM LIST_MODIFY *

----


  • ........ *

----


*FORM LIST_MODIFY.

  • CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  • EXPORTING

  • IT_LIST_COMMENTARY = HEADING5[]

  • EXCEPTIONS

  • OTHERS = 1.

*ENDFORM.

----


  • FORM END_OF_PAGE *

----


  • ........ *

----


form end_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading6[]

exceptions

others = 1.

endform.

----


  • FORM END_OF_LIST *

----


  • ........ *

----


form end_of_list.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading7[]

exceptions

others = 1.

endform.

----


  • FORM TOP_OF_LIST *

----


  • ........ *

----


form top_of_list.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading8[]

exceptions

others = 1.

endform.

*--- End of Program

<b>ALV SUBTOTALS</b>

REPORT ZYFI_REPT007

NO STANDARD PAGE HEADING

LINE-SIZE 300

LINE-COUNT 50

MESSAGE-ID ZYFI.

************************************

----


  • MODIFICATION LOG (latest change first): *

----


  • Date Author Incident No Request No *

  • Description *

----


************************************************************************

************************************************************************

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

<b>ALV WITH F4 HELP ON OUTPUT</b>

&----


*& Report ZALV1_14797

*&

&----


*&

*&

&----


REPORT ZALV1_14797.

TYPE-POOLS: SLIS.

DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

L_LAYOUT TYPE SLIS_LAYOUT_ALV,

X_EVENTS TYPE SLIS_ALV_EVENT,

IT_EVENTS TYPE SLIS_T_EVENT.

DATA: BEGIN OF ITAB OCCURS 0,

VBELN(10) type c ,

POSNR LIKE VBAP-POSNR,

CHK(1),

color(4),

END OF ITAB.

SELECT VBELN

POSNR

FROM VBAP

UP TO 20 ROWS

INTO TABLE ITAB.

X_FIELDCAT-FIELDNAME = 'CHK'.

X_FIELDCAT-TABNAME = 'ITAB'.

X_FIELDCAT-COL_POS = 1.

X_FIELDCAT-INPUT = 'X'.

X_FIELDCAT-EDIT = 'X'.

X_FIELDCAT-CHECKBOX = 'X'.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'VBELN'.

X_FIELDCAT-SELTEXT_L = 'VBELN'.

*X_FIELDCAT-HOTSPOT = 'X'.

x_fieldcat-edit = 'X'.

X_FIELDCAT-TABNAME = 'ITAB'.

x_fieldcat-ref_fieldname = 'VBELN'.

x_fieldcat-ref_tabname = 'VBAK'.

X_FIELDCAT-COL_POS = 2.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'POSNR'.

X_FIELDCAT-SELTEXT_L = 'POSNR'.

X_FIELDCAT-TABNAME = 'ITAB'.

X_FIELDCAT-COL_POS = 3.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.

L_LAYOUT-info_fieldname = 'COLOR'.

*L_LAYOUT-ZEBRA = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IS_LAYOUT = L_LAYOUT

I_CALLBACK_PF_STATUS_SET = 'STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IT_FIELDCAT = IT_FIELDCAT

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.

&----


*& Form STATUS

&----


  • text

----


  • -->P_EXTAB text

----


FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

*- Pf status

SET PF-STATUS 'STATUS'.

ENDFORM. " STATUS

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

DATA: GD_REPID LIKE SY-REPID, "Exists

REF_GRID TYPE REF TO CL_GUI_ALV_GRID.

IF REF_GRID IS INITIAL.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

IMPORTING

E_GRID = REF_GRID.

ENDIF.

IF NOT REF_GRID IS INITIAL.

CALL METHOD REF_GRID->CHECK_CHANGED_DATA .

ENDIF.

loop at itab where chk = 'X'.

itab-color = 'C300'.

modify itab index sy-tabix transporting color.

endloop.

RS_SELFIELD-refresh = 'X'.endform.

<b>ALV HIERARCHICAL</b>

REPORT ZS_REPT_SD_REPORT_47

MESSAGE-ID ZSD

NO STANDARD PAGE HEADING

LINE-COUNT 65(2)

LINE-SIZE 127.

************************************************************************

  • Progname : ZS_REPT_SD_REPORT_47 *

  • Description : Service MRA Report *

----


  • LOGICAL DB : VERSION OF : *

----


  • DESCRIPTION : Service MRA Report *

----


  • AUTHOR : DRN Kishore *

  • DATE : 03/10/2005 *

----


  • MODIFICATION LOG (latest change first): *

  • Date Incident Request Author *

  • #30445 DRN Kishore *

  • Description: *

----


TYPE-POOLS: SLIS.

TABLES : VBRK, " Billing: Header Data

VBRP, " Billing: Item Data

KONV, " Conditions (Transaction Data)

KNA1, " General Data in Customer Master

TVKO, " Organizational Unit: Sales Organizations

TVTW, " Organizational Unit: Distribution Channels

TSPA, " Organizational Unit: Sales Divisions

MARA, " General Material Data

TVFK, " Billing: Document Types

TVAU. " Sales Documents: Order Reasons

&----


&

*& INTERNAL TABLES. *

&----


&

  • Internal table To hold the VBRK Billing data

DATA : BEGIN OF IT_VBRK OCCURS 0,

VBELN LIKE VBRK-VBELN, " Billing document

KUNAG LIKE VBRK-KUNAG, " Sold-to

FKDAT LIKE VBRK-FKDAT, " Bill Date

FKART LIKE VBRK-FKART, " Bill doc type

KNUMV LIKE VBRK-KNUMV, " doc cond number

  • field credit applied(TBD)

WAERK LIKE VBRK-WAERK, " SD document currency

END OF IT_VBRK.

  • Internal table To hold the VBRK Billing:Item data

DATA : BEGIN OF IT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN, " Billing document

POSNR LIKE VBRP-POSNR, " Billing item

FKIMG LIKE VBRP-FKIMG, " Blled quantity

MATNR LIKE VBRP-MATNR, " Material number

AUGRU_AUFT LIKE VBRP-AUGRU_AUFT, " Order reason

NETWR LIKE VBRP-NETWR, " Net val in

END OF IT_VBRP.

  • Internal table To hold distinct doc condition no's and their

  • condition values

DATA : BEGIN OF IT_KONV OCCURS 0,

KNUMV LIKE KONV-KNUMV, " # of document condition

KPOSN LIKE KONV-KPOSN, " Condition item number

KWERT LIKE KONV-KWERT, " Condition value

END OF IT_KONV.

  • Internal table To hold distinct doc condition no's

DATA : BEGIN OF IT_KNUMV OCCURS 0,

KNUMV LIKE KONV-KNUMV, " # of document condition

END OF IT_KNUMV.

  • Final internal table for list display

DATA : BEGIN OF IT_FINAL OCCURS 0,

CUST_NO LIKE VBRK-KUNAG,

BILL_DOC LIKE VBRK-VBELN,

BILL_DATE LIKE VBRK-FKDAT,

BILL_TYPE LIKE VBRK-FKART,

MODEL LIKE VBRP-MATNR,

SHP_COST LIKE KONV-KWERT,

FLD_CR LIKE VBRP-NETWR, " vbrp-augru_auft = 'DU'

MRA_CODE LIKE VBRP-AUGRU_AUFT,

MRA_AMOUNT LIKE VBRP-NETWR,

INVOICE_AMT LIKE VBRP-NETWR,

CURRENCY LIKE VBRK-WAERK,

END OF IT_FINAL.

*--Internal table to store Document header details for display

DATA : BEGIN OF IT_HEAD OCCURS 0,

EXP,

CUST_NO LIKE VBRK-KUNAG, " Customer Number

BILL_DOC LIKE VBRK-VBELN, " Document number

BILL_DATE LIKE VBRK-FKDAT, " Billing date

BILL_TYPE LIKE VBRK-FKART, " Billing type

END OF IT_HEAD.

*--Internal table to store Document item details for display

DATA : BEGIN OF IT_ITEM OCCURS 0,

BILL_DOC LIKE VBRK-VBELN, " Document number

MODEL LIKE VBRP-MATNR, " Material Number

SHP_COST LIKE KONV-KWERT, " Doc Condition value

FLD_CR LIKE VBRP-NETWR, " IF VBRP-AUGRU_AUFT='DU'

MRA_CODE LIKE VBRP-AUGRU_AUFT, " MRA Code

MRA_AMOUNT LIKE VBRP-NETWR, " IF VBRK-FKART = 'RE'

INVOICE_AMT LIKE VBRP-NETWR, " Invoice Amount

CURRENCY LIKE VBRK-WAERK, " Currency

END OF IT_ITEM.

*--To store the second level data : Billing document, amount

DATA : BEGIN OF IT_DETAILS OCCURS 0,

CUST_NO LIKE VBRK-KUNAG, " Customer Number

BILL_DOC LIKE VBRK-VBELN, " Document number

QUANTITY TYPE I,"VBRP-FKIMG, " Qty

AMOUNT LIKE VBRP-NETWR, " Amount

END OF IT_DETAILS.

*---Structures for ALV List Display

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

LS_LAYOUT TYPE SLIS_LAYOUT_ALV,

LS_VARIANT TYPE DISVARIANT,

LS_EVENT TYPE SLIS_ALV_EVENT,

LS_KEYINFO TYPE SLIS_KEYINFO_ALV,

LS_SORTINFO TYPE SLIS_SORTINFO_ALV.

*---Internal Tables for ALV List Display

DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

IT_EVENTS TYPE SLIS_T_EVENT,

IT_SORTINFO TYPE SLIS_T_SORTINFO_ALV.

DATA : V_REPID LIKE SY-REPID.

DATA : V_TOTAL_SALES_QTY TYPE I, " Total Sales Quantity

V_TOTAL_SALES_AMT LIKE VBRP-NETWR, " Total Sales Amount

V_TOTAL_RTRNS_QTY TYPE I, " Total Returns Qty

V_TOTAL_RTRNS_AMT LIKE VBRP-NETWR, " Total Returns Amt

V_TOTAL_FLDCR_QTY TYPE I, " Total Fld Cr Qty

V_TOTAL_FLDCR_AMT LIKE VBRP-NETWR, " Total Fld Cr Amount

V_CURRENCY LIKE VBRK-WAERK. " Currency Key

&----


&

*& SELECTION-SCREEN. *

&----


&

SELECTION-SCREEN BEGIN OF BLOCK SEL1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_VKORG FOR VBRK-VKORG " Sales Organization

OBLIGATORY,

S_VTWEG FOR VBRK-VTWEG " Distribution Channel

OBLIGATORY,

S_SPART FOR VBRK-SPART " Division

OBLIGATORY,

S_KUNAG FOR VBRK-KUNAG, " Sold-to-party

S_MATNR FOR VBRP-MATNR, " Material

S_FKDAT FOR VBRK-FKDAT " Billing Date

OBLIGATORY,

S_FKART FOR VBRK-FKART, " Billing Type

S_AUGRU FOR VBRP-AUGRU_AUFT. " MRA Code

SELECTION-SCREEN ULINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS:RB_DTL RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 4(35) TEXT-002 . " Detail Report

SELECTION-SCREEN END OF LINE.

*- Product class summary by customer

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS:RB_SUM RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 4(35) TEXT-003. " Summary

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK SEL1.

&----


&

*& At Selection Screen Event *

&----


&

AT SELECTION-SCREEN.

*---Validate selection-screen. Check for inputs

PERFORM VALIDATE.

&----


&

*& TOP-OF-PAGE *

&----


&

TOP-OF-PAGE.

*---Display the standard top of page if summary is selected

PERFORM TOP_OF_PAGE_REPORT.

TOP-OF-PAGE DURING LINE-SELECTION.

*---Display the standard top of page if summary is selected

PERFORM TOP_OF_PAGE_REPORT.

PERFORM DISPLAY_COLUMN_HEADERS.

&----


&

*& START-OF-SELECTION. *

&----


&

START-OF-SELECTION.

*---Get the required data from tables

PERFORM GET_DATA.

&----


&

*& END-OF-SELECTION. *

&----


&

END-OF-SELECTION.

*---Display report

PERFORM DISPLAY_DATA.

&----


&

*& AT LINE SELECTION *

&----


&

AT LINE-SELECTION.

*--Display details for the quantity or the amount selected.

PERFORM DISPLAY_DETAIL.

&----


*& Form VALIDATE *

&----


  • Validate Billing date in the selection-screen *

----


FORM VALIDATE.

*- To Check Sales Organization

SELECT VKORG UP TO 1 ROWS

FROM TVKO

INTO TVKO-VKORG

WHERE VKORG IN S_VKORG.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E001.

ENDIF.

*- To Check Distribution Channel

SELECT VTWEG UP TO 1 ROWS

FROM TVTW

INTO TVTW-VTWEG

WHERE VTWEG IN S_VTWEG.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E002.

ENDIF.

*- To Check Division

SELECT SPART UP TO 1 ROWS

FROM TSPA

INTO TSPA-SPART

WHERE SPART IN S_SPART.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E003.

ENDIF.

*- To Check Shipt-to

SELECT KUNNR UP TO 1 ROWS

FROM KNA1

INTO KNA1-KUNNR

WHERE KUNNR IN S_KUNAG.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E030.

ENDIF.

*- To Check Model Number

SELECT MATNR UP TO 1 ROWS

FROM MARA

INTO MARA-MATNR

WHERE MATNR IN S_MATNR.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E047.

ENDIF.

*- To Check Billing Date

SELECT FKDAT UP TO 1 ROWS

FROM VBRK

INTO VBRK-FKDAT

WHERE FKDAT IN S_FKDAT.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E048.

ENDIF.

*- To Check Billing Type

SELECT FKART UP TO 1 ROWS

FROM TVFK

INTO TVFK-FKART

WHERE FKART IN S_FKART.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E004.

ENDIF.

*- To Check MRA Code

SELECT AUGRU UP TO 1 ROWS

FROM TVAU

INTO TVAU-AUGRU

WHERE AUGRU IN S_AUGRU.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E049.

ENDIF.

ENDFORM. " VALIDATE

&----


*& Form GET_DATA *

&----


  • Get the required data from tables *

----


FORM GET_DATA.

*--Get Billing data from VBRK and VBRP

PERFORM GET_BILLING_DATA.

*--Get Shipping Costs from KONV based on the Document Condition Number

PERFORM GET_SHIPPING_COSTS.

ENDFORM. " GET_DATA

&----


*& Form GET_BILLING_DATA *

&----


  • Get Billing data from VBRK and VBRP *

----


FORM GET_BILLING_DATA.

*---Get data Billing Document header details from VBRK

  • based on the selection criteria

SELECT VBELN " Billing Document

KUNAG " Customer

FKDAT " Billing Date

FKART " Billing Type

KNUMV " Document Condition Number

WAERK " Currency

INTO TABLE IT_VBRK

FROM VBRK

WHERE VKORG IN S_VKORG " Sales Organisation

AND VTWEG IN S_VTWEG " Distribution Channel

AND SPART IN S_SPART " Division

AND KUNAG IN S_KUNAG " Customer

AND FKDAT IN S_FKDAT " Billing Date

AND FKART IN S_FKART " Billing Type

AND VBTYP NE 'N' " Cancelled Ducuments

AND FKSTO NE 'X'. " Cancellation Indicator

SORT IT_VBRK BY VBELN.

*---Get data Billing Document item details from VBRP for all selected

  • from VBRP and other criteria entered in the selection criteria

IF NOT IT_VBRK[] IS INITIAL.

SELECT VBELN " Billing Document

POSNR " Item Number

FKIMG " Billed Quantity

MATNR " Material Number

AUGRU_AUFT " MRA Code

NETWR " Invoice Amount

FROM VBRP

INTO TABLE IT_VBRP

FOR ALL ENTRIES IN IT_VBRK

WHERE VBELN = IT_VBRK-VBELN " Document Number

AND MATNR IN S_MATNR " Material Number

AND AUGRU_AUFT IN S_AUGRU. " MRA Code

ENDIF.

ENDFORM. " GET_BILLING_DATA

&----


*& Form GET_SHIPPING_COSTS *

&----


*& Get Shipping Costs from KONV based on the Document Condition Number *

----


FORM GET_SHIPPING_COSTS.

*--Get all the selected Document condition numbers into internal table

IF NOT IT_VBRK[] IS INITIAL.

LOOP AT IT_VBRK.

IT_KNUMV-KNUMV = IT_VBRK-KNUMV.

APPEND IT_KNUMV.

ENDLOOP.

*---Get the Condition values for the Cundition numbers

IF NOT IT_KNUMV[] IS INITIAL.

SORT IT_KNUMV BY KNUMV.

DELETE ADJACENT DUPLICATES FROM IT_KNUMV COMPARING KNUMV.

SELECT KNUMV

KPOSN

KWERT

INTO TABLE IT_KONV

FROM KONV

FOR ALL ENTRIES IN IT_KNUMV

WHERE KNUMV = IT_KNUMV-KNUMV

AND KSCHL = 'ZFRT'.

ENDIF.

ENDIF.

ENDFORM. " GET_SHIPPING_COSTS

&----


*& Form DISPLAY_DATA *

&----


  • Display report *

----


FORM DISPLAY_DATA.

*--If data is selected, display the report

IF NOT IT_VBRK[] IS INITIAL AND

NOT IT_VBRP[] IS INITIAL.

V_REPID = SY-REPID.

*--If Detail report option is selected in the selection-screen

IF RB_DTL = 'X'.

*--Populate the header and item details in IT_HEAD and IT_ITEM

PERFORM POPULATE_HEAD_ITEM.

*--Build field catalog ie, display position, length, etc..of each column

PERFORM BUILD_FIELD_CATALOG.

*--Prepare the key fields info of the head and item tables

PERFORM PREPARE_KEYINFO.

*--Add events like top-of-page to events list

PERFORM PREPARE_EVENT_LIST

TABLES IT_EVENTS.

*--Prepare the layout of the report

PERFORM PREPARE_LAYOUT.

*--Prepare the sort info and subtotals condition info

PERFORM PREPARE_SORTINFO.

*--Display the report using ALV

PERFORM DISPLAY_ALV_REPORT.

*--If Summary Option is selected in the selections-screen

ELSE.

*--Display the summary report

PERFORM DISPLAY_SUMMARY.

ENDIF.

ELSE.

MESSAGE I999 WITH TEXT-004.

  • No Data Available for the Given Selection Criteria

ENDIF.

ENDFORM. " DISPLAY_DATA

&----


*& Form POPULATE_HEAD_ITEM *

&----


  • Populate the header and item details in IT_HEAD and IT_ITEM *

----


FORM POPULATE_HEAD_ITEM.

  • V_TABIX = SY-TABIX.

*--For each of the document header

LOOP AT IT_VBRK.

*--Get the item details and append to IT_ITEM Internal tble

LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN.

IT_ITEM-BILL_DOC = IT_VBRP-VBELN.

IT_ITEM-CURRENCY = IT_VBRK-WAERK.

*--Get the condition value for the condition type

READ TABLE IT_KONV WITH KEY KNUMV = IT_VBRK-KNUMV

KPOSN = IT_VBRP-POSNR.

IF SY-SUBRC = 0.

IT_ITEM-SHP_COST = IT_KONV-KWERT.

ENDIF.

IT_ITEM-MODEL = IT_VBRP-MATNR.

IT_ITEM-MRA_CODE = IT_VBRP-AUGRU_AUFT.

*--If MRA Code is 'DU', display amount as field Credit

IF IT_VBRP-AUGRU_AUFT = 'DU'.

IT_ITEM-FLD_CR = IT_VBRP-NETWR.

ENDIF.

*--If billing type is 'RE', display amount as MRA Amount

IF IT_VBRK-FKART = 'RE'.

IT_ITEM-MRA_AMOUNT = IT_VBRP-NETWR.

ENDIF.

IT_ITEM-INVOICE_AMT = IT_VBRP-NETWR.

APPEND IT_ITEM.

CLEAR IT_ITEM.

ENDLOOP.

*--Append Header details to IT_HEAD Internal table

IF SY-SUBRC EQ 0.

IT_HEAD-CUST_NO = IT_VBRK-KUNAG.

IT_HEAD-BILL_DOC = IT_VBRK-VBELN.

IT_HEAD-BILL_DATE = IT_VBRK-FKDAT.

IT_HEAD-BILL_TYPE = IT_VBRK-FKART.

APPEND IT_HEAD.

CLEAR IT_HEAD.

ENDIF.

ENDLOOP.

ENDFORM. " POPULATE_HEAD_ITEM

&----


*& Form BUILD_FIELD_CATALOG *

&----


  • Build field catalog ie, display position, length, etc..of each column*

----


FORM BUILD_FIELD_CATALOG.

*--Append Field Catalog of Header Level Data for Display

PERFORM APPEND_FIELDCAT

USING 1 'CUST_NO' 'IT_HEAD' 'Customer Number' 15 ' ' 'X'.

PERFORM APPEND_FIELDCAT

USING 2 'BILL_DOC' 'IT_HEAD' 'Billing Document' 16 ' ' ' '.

PERFORM APPEND_FIELDCAT

USING 3 'BILL_DATE' 'IT_HEAD' 'Billing Date' 12 ' ' ' '.

PERFORM APPEND_FIELDCAT

USING 4 'BILL_TYPE' 'IT_HEAD' 'Billing Type' 12 ' ' ' '.

*--Append Field Catalog of Item Level Data for Display

PERFORM APPEND_FIELDCAT

USING 1 'MODEL' 'IT_ITEM' 'Model Number' 18 ' ' ' '.

PERFORM APPEND_FIELDCAT

USING 2 'SHP_COST' 'IT_ITEM' 'Shipping Cost' 18 IT_FINAL-CURRENCY 'X'.

PERFORM APPEND_FIELDCAT

USING 3 'FLD_CR' 'IT_ITEM' 'Field Credits' 21 IT_FINAL-CURRENCY 'X'.

PERFORM APPEND_FIELDCAT

USING 4 'MRA_CODE' 'IT_ITEM' 'MRA Code' 8 ' ' ' '.

PERFORM APPEND_FIELDCAT

USING 5 'MRA_AMOUNT' 'IT_ITEM' '$ Amount of MRA' 21

IT_FINAL-CURRENCY 'X'.

PERFORM APPEND_FIELDCAT

USING 6 'INVOICE_AMT' 'IT_ITEM' '$ Amount of Invoice' 21

IT_FINAL-CURRENCY 'X'.

*--Add Hotspot to Billing Document Number

LOOP AT IT_FIELDCAT INTO LS_FIELDCAT

WHERE FIELDNAME = 'BILL_DOC'.

LS_FIELDCAT-HOTSPOT = 'X'.

MODIFY IT_FIELDCAT FROM LS_FIELDCAT.

ENDLOOP.

ENDFORM. " BUILD_FIELD_CATALOG

&----


*& Form APPEND_FIELDCAT *

&----


  • Append Field Catalog to IT_FIELDCAT Internal Table *

----


FORM APPEND_FIELDCAT USING POS FIELDNAME TABNAME

TEXT LEN CURRENCY DOSUM.

LS_FIELDCAT-COL_POS = POS. " Position

LS_FIELDCAT-FIELDNAME = FIELDNAME. " Field Name in the internal table

LS_FIELDCAT-TABNAME = TABNAME. " Internal Table name

LS_FIELDCAT-SELTEXT_M = TEXT. " Column display text

LS_FIELDCAT-SELTEXT_L = TEXT. " Column display text

LS_FIELDCAT-OUTPUTLEN = LEN. " Display length of the column

LS_FIELDCAT-DO_SUM = DOSUM. " Set summation flag

LS_FIELDCAT-CURRENCY = CURRENCY. " Currency

APPEND LS_FIELDCAT TO IT_FIELDCAT.

CLEAR LS_FIELDCAT.

ENDFORM. " APPEND_FIELDCAT

&----


*& Form PREPARE_KEYINFO *

&----


  • Prepare the key fields info of the head and item tables *

----


FORM PREPARE_KEYINFO.

*--Key Fields Joining the Header and Item tables is Billing Document

LS_keyinfo-header01 = 'BILL_DOC'.

LS_keyinfo-item01 = 'BILL_DOC'.

ENDFORM. " PREPARE_KEYINFO

&----


*& Form PREPARE_EVENT_LIST *

&----


  • Add events like top-of-page to events list *

----


FORM PREPARE_EVENT_LIST TABLES IT_EVENTS TYPE SLIS_T_EVENT.

*--Add Top-OF-Page event to be triggered before the list is displayed

CLEAR LS_EVENT.

LS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

LS_EVENT-FORM = 'TOP_OF_PAGE_REPORT'.

APPEND LS_EVENT TO IT_EVENTS.

ENDFORM. " PREPARE_EVENT_LIST

&----


*& Form PREPARE_LAYOUT *

&----


  • Prepare the layout of the report *

----


FORM PREPARE_LAYOUT.

LS_LAYOUT-expand_fieldname = 'EXP'. " Field for Exp/Col Icon

LS_LAYOUT-no_uline_hs = 'X'. " No Horizontal lines

LS_LAYOUT-subtotals_text = TEXT-015. " Text for Sub-totals

LS_LAYOUT-totals_text = TEXT-016. " Text for totals

LS_LAYOUT-no_subtotals = ' '. " Display Subtotals

ENDFORM. " PREPARE_LAYOUT

&----


*& Form PREPARE_SORTINFO *

&----


  • Prepare the sort info and subtotals condition info *

----


FORM PREPARE_SORTINFO.

*--Sort the output on Customer number and Billing Document Number and

  • display subtotals of amounts for each customer

LS_SORTINFO-SPOS = 1. " Sort Position

LS_SORTINFO-UP = 'X'. " Sort Sequence is Ascending

LS_SORTINFO-TABNAME = 'IT_HEAD'. " Table name

LS_SORTINFO-FIELDNAME = 'CUST_NO'. " field name in the table

*--Subtotals of numeric fields for each customer.

LS_SORTINFO-SUBTOT = 'X'. " Subtotals on this field

APPEND LS_SORTINFO TO IT_SORTINFO.

CLEAR LS_SORTINFO.

LS_SORTINFO-SPOS = 2. " Sort position

LS_SORTINFO-UP = 'X'. " Sort order is ascending

LS_SORTINFO-TABNAME = 'IT_HEAD'. " Table name

LS_SORTINFO-FIELDNAME = 'BILL_DOC'. " Field Name

APPEND LS_SORTINFO TO IT_SORTINFO.

CLEAR LS_SORTINFO.

ENDFORM. " PREPARE_SORTINFO

&----


*& Form DISPLAY_ALV_REPORT *

&----


  • Display the report using ALV *

----


FORM DISPLAY_ALV_REPORT.

  • SET PF-STATUS 'STATUS'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = LS_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = IT_SORTINFO

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

IT_EVENTS = IT_EVENTS

  • IT_EVENT_EXIT =

I_TABNAME_HEADER = 'IT_HEAD'

I_TABNAME_ITEM = 'IT_ITEM'

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

IS_KEYINFO = LS_KEYINFO

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB_HEADER = IT_HEAD

T_OUTTAB_ITEM = IT_ITEM

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE E999 WITH TEXT-013. " Error When Displaying Report

ENDIF.

ENDFORM. " DISPLAY_ALV_REPORT

&----


*& Form TOP_OF_PAGE_REPORT *

&----


  • Display the standard top of page if summary is selected *

----


FORM TOP_OF_PAGE_REPORT.

*--Function module to display top of page

CALL FUNCTION 'Z_REPORT_HEADER'

EXPORTING

DL_TITLE = SY-TITLE

DL_REPID = V_REPID.

ENDFORM. " TOP_OF_PAGE_REPORT

&----


*& Form DISPLAY_COLUMN_HEADERS *

&----


  • Display the Column headers *

----


FORM DISPLAY_COLUMN_HEADERS.

*--Set color to I Header

PERFORM FORMAT_COLOR USING 5 'X'.

WRITE SY-ULINE(76).

WRITE : /1 SY-VLINE,

2(15) 'Customer Number' CENTERED,

17 SY-VLINE,

18(16) 'Billing Document' CENTERED,

34 SY-VLINE,

35(20) TEXT-008 CENTERED, " Quantity

55 SY-VLINE,

56(20) TEXT-009 CENTERED, " Amount

76 SY-VLINE.

WRITE SY-ULINE(76).

ENDFORM. " DISPLAY_COLUMN_HEADERS

&----


*& Form DISPLAY_SUMMARY *

&----


  • Display the summary report *

----


FORM DISPLAY_SUMMARY.

CLEAR : V_TOTAL_SALES_QTY,

V_TOTAL_SALES_AMT,

V_TOTAL_RTRNS_QTY,

V_TOTAL_RTRNS_AMT,

V_TOTAL_FLDCR_QTY,

V_TOTAL_FLDCR_AMT.

*--For each item record

LOOP AT IT_VBRP.

*--Check if the item record has a corresponding header record. If yes,

  • add the sums. Else, proceed to next record

READ TABLE IT_VBRK WITH KEY VBELN = IT_VBRP-VBELN.

IF SY-SUBRC = 0.

*--Increment Total Sales Quantity by 1 for each line item

V_TOTAL_SALES_QTY = V_TOTAL_SALES_QTY + IT_VBRP-FKIMG.

*--Add the Amount to Total Sales Amount

V_TOTAL_SALES_AMT = V_TOTAL_SALES_AMT + IT_VBRP-NETWR.

*--If Billing type is 'RE', add to Returns

IF IT_VBRK-FKART = 'RE'.

*--Increment Returns Quantity by 1

V_TOTAL_RTRNS_QTY = V_TOTAL_RTRNS_QTY + IT_VBRP-FKIMG.

*--Add Amount to Total Returns Amount

V_TOTAL_RTRNS_AMT = V_TOTAL_RTRNS_AMT + IT_VBRP-NETWR.

ENDIF.

*--If order Reason is 'DU' add to Field Credits

IF IT_VBRP-AUGRU_AUFT = 'DU'.

*--Increment Field Credit Quantity by 1

V_TOTAL_FLDCR_QTY = V_TOTAL_FLDCR_QTY + IT_VBRP-FKIMG.

*--Add Amouint to Total Field Credits Amount

V_TOTAL_FLDCR_AMT = V_TOTAL_FLDCR_AMT + IT_VBRP-NETWR.

ENDIF.

ENDIF.

ENDLOOP.

READ TABLE IT_VBRK INDEX 1.

V_CURRENCY = IT_VBRK-WAERK.

-Display Summary report

WRITE SY-ULINE(127).

*--Set color to I Header

PERFORM FORMAT_COLOR USING 5 'X'.

WRITE : /1 SY-VLINE,

2(41) TEXT-005 CENTERED, " Total Sales ( Net Sales )

43 SY-VLINE,

44(41) TEXT-006 CENTERED, " Total Returns

85 SY-VLINE,

86(41) TEXT-007 CENTERED, " Total Field Credits

127 SY-VLINE.

WRITE SY-ULINE(127).

*--Set color to II Header

PERFORM FORMAT_COLOR USING 1 'X'.

WRITE : /1 SY-VLINE,

2(20) TEXT-008 RIGHT-JUSTIFIED, " Quantity

22 SY-VLINE,

23(20) TEXT-009 RIGHT-JUSTIFIED, " Amount

43 SY-VLINE,

44(20) TEXT-008 RIGHT-JUSTIFIED, " Quantity

64 SY-VLINE,

65(20) TEXT-009 RIGHT-JUSTIFIED, " Amount

85 SY-VLINE,

86(20) TEXT-008 RIGHT-JUSTIFIED, " Quantity

106 SY-VLINE,

107(20) TEXT-009 RIGHT-JUSTIFIED, " Amount

127 SY-VLINE.

WRITE SY-ULINE(127).

*--Set color to detail

PERFORM FORMAT_COLOR USING 2 ' '.

WRITE : /1 SY-VLINE,

2(20) V_TOTAL_SALES_QTY RIGHT-JUSTIFIED HOTSPOT ON,

22 SY-VLINE,

23 V_TOTAL_SALES_AMT CURRENCY V_CURRENCY HOTSPOT ON,

43 SY-VLINE,

44(20) V_TOTAL_RTRNS_QTY RIGHT-JUSTIFIED HOTSPOT ON,

64 SY-VLINE,

65 V_TOTAL_RTRNS_AMT CURRENCY V_CURRENCY HOTSPOT ON,

85 SY-VLINE,

86(20) V_TOTAL_FLDCR_QTY RIGHT-JUSTIFIED HOTSPOT ON,

106 SY-VLINE,

107 V_TOTAL_FLDCR_AMT CURRENCY V_CURRENCY HOTSPOT ON,

127 SY-VLINE.

HIDE V_TOTAL_SALES_QTY.

HIDE V_TOTAL_SALES_AMT.

HIDE V_TOTAL_RTRNS_QTY.

HIDE V_TOTAL_RTRNS_AMT.

HIDE V_TOTAL_FLDCR_QTY.

HIDE V_TOTAL_FLDCR_AMT.

WRITE SY-ULINE(127).

ENDFORM. " DISPLAY_SUMMARY

&----


*& Form FORMAT_COLOR

&----


  • Format Color

----


FORM FORMAT_COLOR USING COLOR

INTENSITY.

IF INTENSITY EQ 'X'.

FORMAT INTENSIFIED ON COLOR = COLOR.

ELSE.

FORMAT INTENSIFIED OFF COLOR = COLOR.

ENDIF.

ENDFORM. " FORMAT_COLOR

&----


*& Form USER_COMMAND

&----


  • Call back user command

----


FORM USER_COMMAND USING P_UCOMM LIKE SY-UCOMM

P_LINE TYPE SLIS_SELFIELD.

DATA : LV_VBELN TYPE VBRK-VBELN.

*--If Billing document Is clicked

IF P_LINE-TABNAME = 'IT_HEAD' AND P_LINE-FIELDNAME = 'BILL_DOC'.

*--Move the Selected Billing Document Number to a variable

LV_VBELN = P_LINE-VALUE.

*--Set Parameter ID 'VF' with teh Selected Billing Document Number

SET PARAMETER ID 'VF' FIELD LV_VBELN.

*--Call Transaction VF03 to Display the Billing Document

CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.

ELSE.

*--If anything other than Billing Document is Clicked,

  • Display an error message

MESSAGE S999 WITH TEXT-010. "Please select a Billing Document

ENDIF..

ENDFORM. " USER_COMMAND

&----


*& Form DISPLAY_DETAIL

&----


  • Display details for the quantity or the amount select

----


FORM DISPLAY_DETAIL.

DATA : LV_FIELD(20). " To store the field name selected

DATA : LV_VBELN TYPE VBRK-VBELN.

*--If user clicks on some record in the first screen of summary report

IF SY-LSIND = '1'.

*--Get the field that the user clicked on

GET CURSOR FIELD LV_FIELD.

*--IF User Clicks on Total Sales Amount or Quantity

IF LV_FIELD = 'V_TOTAL_SALES_QTY' OR

LV_FIELD = 'V_TOTAL_SALES_AMT'.

*--Display Total Sales Details

PERFORM GET_TOTAL_SALES_DETAILS.

*--If User Clicks on Total Returns Quantity or Amount

ELSEIF LV_FIELD = 'V_TOTAL_RTRNS_QTY' OR

LV_FIELD = 'V_TOTAL_RTRNS_AMT'.

*--Display Total Returns Details

PERFORM GET_TOTAL_RETURNS_DETAILS.

*--If User Clicks on Total Returns Quantity or Amount

ELSEIF LV_FIELD = 'V_TOTAL_FLDCR_QTY' OR

LV_FIELD = 'V_TOTAL_FLDCR_AMT'.

*--Display Total Field Credits Details

PERFORM GET_TOTAL_FLDCR_DETAILS.

ENDIF.

IF NOT IT_DETAILS[] IS INITIAL.

PERFORM DISPLAY_DETAIL_REPORT.

ENDIF.

ELSEIF SY-LSIND = '2'.

GET CURSOR FIELD LV_FIELD.

IF LV_FIELD = 'IT_DETAILS-BILL_DOC'.

IF NOT IT_DETAILS-BILL_DOC IS INITIAL.

*--Move the Selected Billing Document Number to a variable

LV_VBELN = IT_DETAILS-BILL_DOC.

*--Set Parameter ID 'VF' with teh Selected Billing Document Number

SET PARAMETER ID 'VF' FIELD LV_VBELN.

*--Call Transaction VF03 to Display the Billing Document

CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.

ENDIF.

ELSE.

*--If anything other than Billing Document is Clicked,

  • Display an error message

MESSAGE S999 WITH TEXT-010. " Please select a Billing Document.

ENDIF..

ENDIF.

ENDFORM. " DISPLAY_DETAIL

&----


*& Form GET_TOTAL_SALES_DETAILS

&----


  • IF User Clicks on Total Sales Amount or Quantity

----


FORM GET_TOTAL_SALES_DETAILS.

  • Internal table To hold Net Value of Billing Document

DATA : BEGIN OF LT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN, " Billing document

POSNR LIKE VBRP-POSNR, " Billing item

FKIMG LIKE VBRP-FKIMG, " Billed Quantity

NETWR LIKE VBRP-NETWR, " Net val in

END OF LT_VBRP.

CLEAR : IT_DETAILS, IT_DETAILS[].

LOOP AT IT_VBRK.

CLEAR : LT_VBRP,LT_VBRP[].

LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN.

LT_VBRP-VBELN = IT_VBRP-VBELN.

LT_VBRP-POSNR = IT_VBRP-POSNR.

LT_VBRP-FKIMG = IT_VBRP-FKIMG.

LT_VBRP-NETWR = IT_VBRP-NETWR.

APPEND LT_VBRP.

CLEAR LT_VBRP.

ENDLOOP.

SORT LT_VBRP BY VBELN.

LOOP AT LT_VBRP.

AT NEW VBELN.

IT_DETAILS-CUST_NO = IT_VBRK-KUNAG.

IT_DETAILS-BILL_DOC = LT_VBRP-VBELN.

CLEAR : IT_DETAILS-QUANTITY,

IT_DETAILS-AMOUNT.

ENDAT.

IT_DETAILS-QUANTITY = IT_DETAILS-QUANTITY + LT_VBRP-FKIMG.

IT_DETAILS-AMOUNT = IT_DETAILS-AMOUNT + LT_VBRP-NETWR.

AT END OF VBELN.

APPEND IT_DETAILS.

CLEAR IT_DETAILS.

ENDAT.

ENDLOOP.

ENDLOOP.

ENDFORM. " GET_TOTAL_SALES_DETAILS

&----


*& Form GET_TOTAL_RETURNS_DETAILS

&----


  • IF User Clicks on Total Returns Amount or Quantity

----


FORM GET_TOTAL_RETURNS_DETAILS.

DATA : BEGIN OF LT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN, " Billing document

POSNR LIKE VBRP-POSNR, " Billing item

FKIMG LIKE VBRP-FKIMG, " Billed Quantity

NETWR LIKE VBRP-NETWR, " Net val in

END OF LT_VBRP.

CLEAR : IT_DETAILS, IT_DETAILS[].

SORT IT_VBRP BY VBELN.

LOOP AT IT_VBRK WHERE FKART = 'RE'.

CLEAR : LT_VBRP,LT_VBRP[].

LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN.

LT_VBRP-VBELN = IT_VBRP-VBELN.

LT_VBRP-POSNR = IT_VBRP-POSNR.

LT_VBRP-FKIMG = IT_VBRP-FKIMG.

LT_VBRP-NETWR = IT_VBRP-NETWR.

APPEND LT_VBRP.

CLEAR LT_VBRP.

ENDLOOP.

SORT LT_VBRP BY VBELN.

LOOP AT LT_VBRP.

AT NEW VBELN.

IT_DETAILS-CUST_NO = IT_VBRK-KUNAG.

IT_DETAILS-BILL_DOC = LT_VBRP-VBELN.

CLEAR : IT_DETAILS-QUANTITY,

IT_DETAILS-AMOUNT.

ENDAT.

IT_DETAILS-QUANTITY = IT_DETAILS-QUANTITY + LT_VBRP-FKIMG.

IT_DETAILS-AMOUNT = IT_DETAILS-AMOUNT + LT_VBRP-NETWR.

AT END OF VBELN.

APPEND IT_DETAILS.

CLEAR IT_DETAILS.

ENDAT.

ENDLOOP.

ENDLOOP.

ENDFORM. " GET_TOTAL_RETURNS_DETAILS

&----


*& Form GET_TOTAL_FLDCR_DETAILS

&----


  • IF User Clicks on Total Tield Credits Amount or Quantity

----


FORM GET_TOTAL_FLDCR_DETAILS.

DATA : BEGIN OF LT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN, " Billing document

POSNR LIKE VBRP-POSNR, " Billing item

FKIMG LIKE VBRP-FKIMG, " Billed Quantity

NETWR LIKE VBRP-NETWR, " Net val in

END OF LT_VBRP.

CLEAR : IT_DETAILS, IT_DETAILS[].

SORT IT_VBRP BY VBELN.

LOOP AT IT_VBRK.

CLEAR : LT_VBRP,LT_VBRP[].

LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN AND

AUGRU_AUFT = 'DU'.

LT_VBRP-VBELN = IT_VBRP-VBELN.

LT_VBRP-POSNR = IT_VBRP-POSNR.

LT_VBRP-FKIMG = IT_VBRP-FKIMG.

LT_VBRP-NETWR = IT_VBRP-NETWR.

APPEND LT_VBRP.

CLEAR LT_VBRP.

ENDLOOP.

SORT LT_VBRP BY VBELN.

LOOP AT LT_VBRP.

AT NEW VBELN.

IT_DETAILS-CUST_NO = IT_VBRK-KUNAG.

IT_DETAILS-BILL_DOC = LT_VBRP-VBELN.

CLEAR : IT_DETAILS-QUANTITY,

IT_DETAILS-AMOUNT.

ENDAT.

IT_DETAILS-QUANTITY = IT_DETAILS-QUANTITY + LT_VBRP-FKIMG.

IT_DETAILS-AMOUNT = IT_DETAILS-AMOUNT + LT_VBRP-NETWR.

AT END OF VBELN.

APPEND IT_DETAILS.

CLEAR IT_DETAILS.

ENDAT.

ENDLOOP.

ENDLOOP.

ENDFORM. " GET_TOTAL_FLDCR_DETAILS

&----


*& Form DISPLAY_DETAIL_REPORT.

&----


  • Display details for the quantity or the amount select

----


FORM DISPLAY_DETAIL_REPORT..

DATA : LV_TOTAL_AMOUNT_CUST LIKE VBRP-NETWR,

LV_TOTAL_QTY_CUST TYPE I,

LV_TOTAL_AMOUNT LIKE VBRP-NETWR,

LV_TOTAL_QTY TYPE I,

INTENSITY.

SORT IT_DETAILS BY CUST_NO BILL_DOC.

LOOP AT IT_DETAILS.

IF INTENSITY = ' '.

INTENSITY = 'X'.

ELSE.

INTENSITY = ' '.

ENDIF.

PERFORM FORMAT_COLOR USING 2 INTENSITY.

WRITE : /1 SY-VLINE.

AT NEW CUST_NO.

WRITE : 2(15) IT_DETAILS-CUST_NO.

ENDAT.

WRITE : 17 SY-VLINE,

18(16) IT_DETAILS-BILL_DOC HOTSPOT,

34 SY-VLINE,

35(20) IT_DETAILS-QUANTITY RIGHT-JUSTIFIED,

55 SY-VLINE,

56(20) IT_DETAILS-AMOUNT CURRENCY V_CURRENCY,

76 SY-VLINE.

LV_TOTAL_AMOUNT_CUST = LV_TOTAL_AMOUNT_CUST +

IT_DETAILS-AMOUNT.

LV_TOTAL_QTY_CUST = LV_TOTAL_QTY_CUST +

IT_DETAILS-QUANTITY.

LV_TOTAL_AMOUNT = LV_TOTAL_AMOUNT +

IT_DETAILS-AMOUNT.

LV_TOTAL_QTY = LV_TOTAL_QTY +

IT_DETAILS-QUANTITY.

HIDE IT_DETAILS-BILL_DOC.

AT END OF CUST_NO.

PERFORM FORMAT_COLOR USING 3 ' '.

WRITE : /1 SY-VLINE,

2 TEXT-015, " Net Total

34 SY-VLINE,

35(20) LV_TOTAL_QTY_CUST RIGHT-JUSTIFIED,

55 SY-VLINE,

56(20) LV_TOTAL_AMOUNT_CUST CURRENCY V_CURRENCY,

76 SY-VLINE.

CLEAR : LV_TOTAL_QTY_CUST, LV_TOTAL_AMOUNT_CUST.

CLEAR INTENSITY.

WRITE SY-ULINE(76).

ENDAT.

ENDLOOP.

PERFORM FORMAT_COLOR USING 3 'X'.

WRITE : /1 SY-VLINE,

2 TEXT-014, " Total

34 SY-VLINE,

35(20) LV_TOTAL_QTY RIGHT-JUSTIFIED,

55 SY-VLINE,

56(20) LV_TOTAL_AMOUNT CURRENCY V_CURRENCY,

76 SY-VLINE.

WRITE SY-ULINE(76).

ENDFORM. " DISPLAY_DETAIL_REPORT.

Thanks

Mahesh

5 REPLIES 5
Read only

Former Member
0 Likes
720

Hi chandra,

1. This is a very simple program with simple alv of just one table.

2. Just copy paste to get a taste of it.

3.

report abc.

*----


TYPE-POOLS : slis.

DATA : alvfc TYPE slis_t_fieldcat_alv.

DATA : alvfcwa TYPE slis_fieldcat_alv.

*----


data : begin of itab occurs 0.

include structure usr02.

data : end of itab.

*----


START-OF-SELECTION.

select * from usr02

into table itab.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_internal_tabname = 'ITAB'

i_inclname = sy-repid

CHANGING

ct_fieldcat = alvfc

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

*----


IMPORTANT

LOOP AT ALVFC INTO ALVFCWA.

IF ALVFCWA-FIELDNAME = 'USTYP'.

ALVFCWA-NO_CONVEXT = 'X'.

MODIFY ALVFC FROM ALVFCWA.

ENDIF.

ENDLOOP.

*----


Display

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

it_fieldcat = alvfc

TABLES

t_outtab = itab

EXCEPTIONS

program_error = 1

OTHERS = 2.

regards,

amit m.

Read only

Former Member
0 Likes
720

Hi,

Some important facts about ALV :

1. What is ALV ?

ALV stands for ABAP List Viewer.

The “ALV Classic” is a collective term for several function modules in function group SALV

The ALV Classic is a tool for the standardized output of

1 . Simple lists

2. Hierarchical/consecutive lists with two hierarchy levels

2. Why ALV ?

Until the introduction of the ABAP List Viewer (ALV), different report tools were used in the R/3 System.

Every report tool had its own function and application areas.

The ABAP List Viewer standardizes and simplifies the usage of lists in the R/3 System

Logic for presentation of data is removed from the selection of data.

Layout of the report is changeable without making a new selection or re-writing the code.

Standard Tool Functions have been enhanced with Component Specific Functions.

A standardized data interface and a standardized list layout is available for all lists.

3. Programming Steps :

Declare data areas.

Declare an internal table to store selected data.

Select data into the internal table.

Build the layout.

Build field catalogue.

Build sort catalogue.

Build event catalogue.

Start viewer.

Process call back events.

These are the facts about ALV which I have tried to highlight.

You can go through the following link for the details :

http://esnips.com/doc/ad20dca9-6182-4903-8d8f-96a66dc8590c/ALV.pdf

GO THROUGH THESE LINKS WHICH CONTAIN GOOD ALV DOCUMENTS

http://www.sapfriends.com/HelpSAP/ABAP%20List%20Viewer%20Classic%20(ALV).pdf

http://www.sap-hefte.de/download/dateien/1025/087_leseprobe.pdf

Reward if ti helps..

regards,

Omkar.

Read only

Former Member
0 Likes
721

HI,

Find the code samples from basic to interactive reports here....

ALV ALL IN ONE

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 REPORT</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

*-- callling a transaction code by passing the initial screen value.

&----


*& Form USER_COMMAND

&----


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.

when '&IC1'.

clear l_refbn.

read table it_outtab index l_index.

if sy-subrc eq 0.

l_refbn = it_outtab-refbn.

if not l_refbn is initial.

set parameter id 'BES' field l_refbn.

call transaction 'ME23' and skip first screen.

endif.

else.

message e999 with text-014.

endif.

endcase.

endif.

<b>ALV WITH CHECK BOXES</b>

REPORT ZTESTPRG .

************************************************************************

  • TABLES AND DATA DECLARATION.

************************************************************************

*TABLES: mara,makt.",marc.

data syrepid like sy-repid.

data sydatum(10). " LIKE sy-datum.

data sypagno(3) type n.

  • WHEN USING MORE THAN ONE TABLE IN ALV WE NEEED TO DECLARE THE TYPE

  • GROUP (TYPE-POOLS--------->SLIS)

type-pools : slis.

************************************************************************

  • INTERNAL TABLE DECLARATION.

************************************************************************

  • INTERNAL TABLE TO HOLD THE VALUES FROM THE MARA TABLE

data: begin of t_mara occurs 0,

matnr like mara-matnr,

meins like mara-meins,

mtart like mara-mtart,

matkl like mara-matkl,

end of t_mara.

  • INTERNAL TABLE TO HOLD THE CONTENTS FROM THE EKKO TABLE

data : begin of t_marc occurs 0,

matnr like mara-matnr,

werks like marc-werks,

minbe like marc-minbe.

data: end of t_marc.

  • INTERNAL TABLE TO HOLD THE VALUES FROM MAKT TABLE.

data : begin of t_makt occurs 0,

matnr like mara-matnr,

maktx like makt-maktx,

spras like makt-spras,

end of t_makt.

  • INTERNAL TABLE WHICH ACTUALLY MERGES ALL THE OTHER INTERNAL TABLES.

data: begin of itab1 occurs 0,

chkbox(1) type c,

matnr like mara-matnr,

meins like mara-meins,

maktx like makt-maktx,

spras like makt-spras,

werks like marc-werks,

minbe like marc-minbe,

end of itab1.

  • THE FOLLOWING DECLARATION IS USED FOR DEFINING THE FIELDCAT

  • AND THE LAYOUT FOR THE ALV.

  • HERE AS slis_t_fieldcat_alv IS A INTERNAL TABLE WITHOUT A HEADER LINE

  • WE EXPLICITELY DEFINE AN INTERNAL TABLE OF THE SAME STRUCTURE AS THAT

  • OF slis_t_fieldcat_alv BUT WITH A HEADER LINE IN THE DEFINITION.

  • THIS IS DONE TO MAKE THE CODE SIMPLER.

  • OTHERWISE WE MAY HAVE TO DEFINE THE STRUCTURE AS IN THE NORMAL SAP

  • PROGRAMS.

  • IN THE FIELDCATALOG TABLE WE ACTUALLY PASS THE FIELDS FROM ONE OR

  • MORE TABLES AND CREATE A STRUCTURE

  • IN THE LAYOUT STRUCTURE WE BASICALLY DEFINE THE FORMATTING OPTIONS

  • LIKE DISPLAY IN THE ZEBRA PATTERN ,THE HOTSPOT OPTIONS ETC.

data: fieldcatalog type slis_t_fieldcat_alv with header line,

fieldlayout type slis_layout_alv.

  • DECLARING THE EVENTTABLE INTERNL TABLE FOR USING EVENTS LIKE

  • TOP-OF-PAGE ETC.

data : eventstab type slis_t_event with header line.

  • DECLARING AN INTERNAL TABLE TO HOLD THE DATA FOR THE TOP-OF-PAGE

data : heading type slis_t_listheader with header line.

data : heading1 type slis_t_listheader with header line.

data : heading2 type slis_t_listheader with header line.

data : heading3 type slis_t_listheader with header line.

data : heading4 type slis_t_listheader with header line.

data : heading5 type slis_t_listheader with header line.

data : heading6 type slis_t_listheader with header line.

data : heading7 type slis_t_listheader with header line.

data : heading8 type slis_t_listheader with header line.

  • STRUCTURE TO PASS THE COLOR ATTRIBUTES FOR DISPLAY.

data : colorstruct type slis_coltypes.

************************************************************************

  • INITIALIZATION. *

************************************************************************

initialization.

syrepid = sy-repid.

sypagno = sy-pagno.

clear fieldcatalog.

************************************************************************

  • START-OF-SELECTION. *

************************************************************************

start-of-selection.

  • SUBROUTINE TO POPULATE THE COLORSTRUCT

perform fill_colorstruct using colorstruct.

  • SUBROUTINE TO POPULATE THE FIELDS OF THE FIELD CATALOGUE

perform populate_fieldcatalog.

  • SUBROUTINE TO SELECT DATA FROM VARIOUS TABLES AND POPULATE IT IN THE

  • INTERNAL TABLE.

perform selectdata_and_sort.

  • SUBROUTINE TO POPULATE THE LAYOUT STRUCTURE.

perform populate_layout using fieldlayout.

  • SUBROUTINE TO CALL THE FUNCTION MERGE TO ENSURE PROPER DISPLAY.

perform merge_fieldcatalog.

  • SUBROUTINE TO POPULATE THE EVENTSTAB.

perform fill_eventstab tables eventstab.

  • SUBROUTINE TO POPULATE THE HEADING TABLES.

perform fill_headingtable tables heading using 'HEADING'.

perform fill_headingtable tables heading1 using 'HEADING1'.

perform fill_headingtable tables heading2 using 'HEADING2'.

perform fill_headingtable tables heading3 using 'HEADING3'.

perform fill_headingtable tables heading4 using 'HEADING4'.

perform fill_headingtable tables heading5 using 'HEADING5'.

perform fill_headingtable tables heading6 using 'HEADING6'.

perform fill_headingtable tables heading7 using 'HEADING7'.

perform fill_headingtable tables heading8 using 'HEADING8'.

  • SUBROUTINE TO DISPLAY THE LIST.

perform display_alv_list.

************************************************************************

  • FORMS

************************************************************************

  • IN THIS SUBROUTINE WE POPULATE THE FIELDCATALOG TABLE WITH THE NAMES

  • OF THE TABLE,FIELDNAME,WHETHER IT IS KEY FIELD OR NOT,HEADING AND

  • COLUMN JUSTIFICATION.

form populate_fieldcatalog.

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MATNR' 'X' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MEINS' ' '.

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MAKTX' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MTART' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MATKL' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'SPRAS' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'WERKS' ' ' .

perform fill_fields_of_fieldcatalog tables fieldcatalog

using 'ITAB1' 'MINBE' ' ' .

endform. " POPULATE_FIELDCATALOG

----


  • FORM FILL_FIELDS_OF_FIELDCATALOG *

----


  • ........ *

----


  • --> FIELDCATALOG *

  • --> P_TABNAME *

  • --> P_FIELDNAME *

  • --> P_KEY *

  • --> P_KEY *

----


form fill_fields_of_fieldcatalog tables fieldcatalog

structure fieldcatalog

using p_tabname

p_fieldname

p_key.

  • p_no_out.

fieldcatalog-tabname = p_tabname.

fieldcatalog-fieldname = p_fieldname.

fieldcatalog-key = p_key.

fieldcatalog-emphasize = '1234'.

*fieldcatalog-no_out = p_no_out.

append fieldcatalog.

endform. " FILL_FIELDSOFFIELDCATALOG

----


  • FORM POPULATE_LAYOUT *

----


  • ........ *

----


  • --> FIELDLAYOUT *

----


form populate_layout using fieldlayout type slis_layout_alv.

fieldlayout-f2code = '&ETA' .

fieldlayout-zebra = 'X'.

  • FOR THE WINDOW TITLE.

fieldlayout-window_titlebar = 'ALV with Events'.

fieldlayout-colwidth_optimize = 'X'.

fieldlayout-no_vline = ' '.

*fieldlayout-no_input = 'X'.

fieldlayout-confirmation_prompt = ''.

fieldlayout-key_hotspot = 'X'.

  • This removes the column headings if the flag is set to 'X'

fieldlayout-no_colhead = ' '.

*fieldlayout-hotspot_fieldname = 'MAKTX'.

fieldlayout-detail_popup = 'X'.

  • fieldlayout-coltab_fieldname = 'X'.

fieldlayout-box_fieldname = 'CHKBOX'.

fieldlayout-edit_mode = 'X'.

endform. " POPULATE_LAYOUT

----


  • FORM SELECTDATA_AND_SORT *

----


  • ........ *

----


form selectdata_and_sort.

select matnr meins mtart matkl from mara

into corresponding fields of t_mara

up to 500 rows .

select matnr maktx spras from makt

into corresponding fields of t_makt

where matnr = t_mara-matnr and

spras = sy-langu.

select matnr werks minbe from marc

into corresponding fields of t_marc

where matnr = t_mara-matnr.

append t_marc.

endselect.

append t_makt.

endselect.

append t_mara.

endselect.

perform populate_itab1.

sort itab1 by matnr.

endform. " SELECTDATA_AND_SORT

----


  • FORM MERGE_FIELDCATALOG *

----


  • ........ *

----


form merge_fieldcatalog.

call function 'REUSE_ALV_FIELDCATALOG_MERGE'

exporting

i_program_name = syrepid

i_internal_tabname = 'ITAB1'

  • i_structure_name = 'COLORSTRUCT'

  • I_CLIENT_NEVER_DISPLAY = 'X'

i_inclname = syrepid

changing

ct_fieldcat = fieldcatalog[]

exceptions

inconsistent_interface = 1

program_error = 2

others = 3.

endform. " MERGE_FIELDCATALOG

  • IN THIS FUNCTION THE MINIMUM PARAMETERS THAT WE NEED TO PASS IS AS

  • FOLLOWS:-

  • i_callback_program --> CALLING PROGRAM NAME

  • i_structure_name --> STRUCTURE NAME.

  • is_layout --> LAYOUT NAME.

  • it_fieldcat ---> BODY OF THE FIELD CATALOGUE INTERNAL TABLE

form display_alv_list.

call function 'REUSE_ALV_LIST_DISPLAY'

exporting

  • I_INTERFACE_CHECK = ' '

i_callback_program = syrepid

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

i_structure_name = 'ITAB1'

is_layout = fieldlayout

it_fieldcat = fieldcatalog[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • THE FOLLOWING PARAMETER IS SET AS 'A' INORDER TO DISPLAY THE STANDARD

  • TOOL BAR

i_save = 'A'

  • IS_VARIANT = ' '

it_events = eventstab[]

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • 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.

endform. " DISPLAY_ALV_LIST

&----


*& Form POPULATE_ITAB1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form populate_itab1.

loop at t_mara.

loop at t_makt where matnr = t_mara-matnr.

loop at t_marc where matnr = t_mara-matnr.

move-corresponding t_mara to itab1.

move-corresponding t_makt to itab1.

move-corresponding t_marc to itab1.

append itab1.

endloop.

endloop.

endloop.

endform. " POPULATE_ITAB1

&----


*& Form FILL_EVENTSTAB

&----


  • text

----


  • -->P_EVENTSTAB text *

----


form fill_eventstab tables p_eventstab structure eventstab.

  • WHEN THE FOLLOWING FUNCTION IS CALLED THE SYSTEM POPULATES THE

  • INTERNAL TABLE EVENTSTAB WITH A LIST OF EVENTS NAME.

  • AS SHOWN BELOW WHEN USING I_LIST_TYPE = 0 THE FUNCTION RETURNS 14

  • EVENTS NAME.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = p_eventstab[]

exceptions

list_type_wrong = 1

others = 2.

  • BY CALLING THE ABOVE FUNCTION WE FIRST POPULATE THE EVENTSTAB WITH

  • THE PREDEFINED EVENTS AND THEN WE MOVE THE FORM NAME AS SHOWN BELOW.

  • WE ASSIGN A FORM NAME TO THE EVENT AS REQUIRED BY THE USER.

  • FORM NAME CAN BE ANYTHING.THE PERFORM STATEMENT FOR THIS FORM

  • IS DYNAMICALY CALLED.

read table p_eventstab with key name = slis_ev_top_of_page.

if sy-subrc = 0 .

move 'TOP_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_top_of_coverpage.

if sy-subrc = 0 .

move 'TOP_OF_COVERPAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_coverpage .

if sy-subrc = 0 .

move 'END_OF_COVERPAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_foreign_top_of_page.

if sy-subrc = 0 .

move 'FOREIGN_TOP_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_foreign_end_of_page.

if sy-subrc = 0 .

move 'FOREIGN_END_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_list_modify.

if sy-subrc = 0 .

move 'LIST_MODIFY' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_top_of_list.

if sy-subrc = 0 .

move 'TOP_OF_LIST' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_page.

if sy-subrc = 0 .

move 'END_OF_PAGE' to p_eventstab-form.

append p_eventstab.

endif.

read table p_eventstab with key name = slis_ev_end_of_list .

if sy-subrc = 0 .

move 'END_OF_LIST' to p_eventstab-form.

append p_eventstab.

endif.

endform. " FILL_EVENTSTAB

&----


*& Form FILL_HEADINGTABLE

&----


  • text

----


  • -->P_HEADING text *

----


form fill_headingtable tables p_heading structure heading

using tablename.

case tablename.

when 'HEADING'.

p_heading-typ = 'H'.

concatenate

' REPORT NAME:-' syrepid

' ABB Industry Pte Ltd' into p_heading-info.

append p_heading.

write sy-datum using edit mask '__/__/____' to sydatum.

concatenate

' DATE:-' sydatum ' USER: ' sy-uname 'PAGE NO:' sypagno

into p_heading-info.

append p_heading.

when 'HEADING1'.

p_heading-typ = 'H'.

p_heading-info = 'TOP-OF-COVER-PAGE'.

append p_heading.

when 'HEADING2'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-COVER-PAGE'.

append p_heading.

when 'HEADING3'.

p_heading-typ = 'H'.

p_heading-info = 'FOREIGN-TOP-OF-PAGE'.

append p_heading.

when 'HEADING4'.

p_heading-typ = 'H'.

p_heading-info = 'FOREIGN-END-OF-PAGE'.

append p_heading.

  • WHEN 'HEADING5'.

  • P_HEADING-TYP = 'H'.

  • P_HEADING-INFO = 'LIST-MODIFY'.

  • APPEND P_HEADING.

when 'HEADING6'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-PAGE'.

append p_heading.

when 'HEADING7'.

p_heading-typ = 'H'.

p_heading-info = 'END-OF-LIST'.

append p_heading.

when 'HEADING8'.

p_heading-typ = 'H'.

p_heading-info = 'TOP-OF-LIST'.

append p_heading.

endcase.

endform. " FILL_HEADINGTABLE

----


  • FORM TOP_OF_PAGE *

----


  • ........ *

----


form top_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading[]

exceptions

others = 1.

endform.

&----


*& Form FILL_COLORSTRUCT

&----


  • text

----


  • -->P_COLORSTRUCT text *

----


form fill_colorstruct using p_colorstruct type slis_coltypes .

p_colorstruct-heacolfir-col = 6.

p_colorstruct-heacolfir-int = 1.

p_colorstruct-heacolfir-inv = 1.

endform. " FILL_COLORSTRUCT

----


  • FORM TOP_OF_COVERPAGE *

----


  • ........ *

----


form top_of_coverpage.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading1[]

exceptions

others = 1.

endform.

----


  • FORM END_OF_COVERPAGE *

----


  • ........ *

----


form end_of_coverpage.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading2[]

exceptions

others = 1.

endform.

----


  • FORM FOREIGN_TOP_OF_PAGE *

----


  • ........ *

----


form foreign_top_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading3[]

exceptions

others = 1.

endform.

----


  • FORM FOREIGN_END_OF_PAGE *

----


  • ........ *

----


form foreign_end_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading4[]

exceptions

others = 1.

endform.

----


  • FORM LIST_MODIFY *

----


  • ........ *

----


*FORM LIST_MODIFY.

  • CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  • EXPORTING

  • IT_LIST_COMMENTARY = HEADING5[]

  • EXCEPTIONS

  • OTHERS = 1.

*ENDFORM.

----


  • FORM END_OF_PAGE *

----


  • ........ *

----


form end_of_page.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading6[]

exceptions

others = 1.

endform.

----


  • FORM END_OF_LIST *

----


  • ........ *

----


form end_of_list.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading7[]

exceptions

others = 1.

endform.

----


  • FORM TOP_OF_LIST *

----


  • ........ *

----


form top_of_list.

call function 'REUSE_ALV_COMMENTARY_WRITE'

exporting

it_list_commentary = heading8[]

exceptions

others = 1.

endform.

*--- End of Program

<b>ALV SUBTOTALS</b>

REPORT ZYFI_REPT007

NO STANDARD PAGE HEADING

LINE-SIZE 300

LINE-COUNT 50

MESSAGE-ID ZYFI.

************************************

----


  • MODIFICATION LOG (latest change first): *

----


  • Date Author Incident No Request No *

  • Description *

----


************************************************************************

************************************************************************

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

<b>ALV WITH F4 HELP ON OUTPUT</b>

&----


*& Report ZALV1_14797

*&

&----


*&

*&

&----


REPORT ZALV1_14797.

TYPE-POOLS: SLIS.

DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

L_LAYOUT TYPE SLIS_LAYOUT_ALV,

X_EVENTS TYPE SLIS_ALV_EVENT,

IT_EVENTS TYPE SLIS_T_EVENT.

DATA: BEGIN OF ITAB OCCURS 0,

VBELN(10) type c ,

POSNR LIKE VBAP-POSNR,

CHK(1),

color(4),

END OF ITAB.

SELECT VBELN

POSNR

FROM VBAP

UP TO 20 ROWS

INTO TABLE ITAB.

X_FIELDCAT-FIELDNAME = 'CHK'.

X_FIELDCAT-TABNAME = 'ITAB'.

X_FIELDCAT-COL_POS = 1.

X_FIELDCAT-INPUT = 'X'.

X_FIELDCAT-EDIT = 'X'.

X_FIELDCAT-CHECKBOX = 'X'.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'VBELN'.

X_FIELDCAT-SELTEXT_L = 'VBELN'.

*X_FIELDCAT-HOTSPOT = 'X'.

x_fieldcat-edit = 'X'.

X_FIELDCAT-TABNAME = 'ITAB'.

x_fieldcat-ref_fieldname = 'VBELN'.

x_fieldcat-ref_tabname = 'VBAK'.

X_FIELDCAT-COL_POS = 2.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'POSNR'.

X_FIELDCAT-SELTEXT_L = 'POSNR'.

X_FIELDCAT-TABNAME = 'ITAB'.

X_FIELDCAT-COL_POS = 3.

APPEND X_FIELDCAT TO IT_FIELDCAT.

CLEAR X_FIELDCAT.

L_LAYOUT-info_fieldname = 'COLOR'.

*L_LAYOUT-ZEBRA = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IS_LAYOUT = L_LAYOUT

I_CALLBACK_PF_STATUS_SET = 'STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IT_FIELDCAT = IT_FIELDCAT

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.

&----


*& Form STATUS

&----


  • text

----


  • -->P_EXTAB text

----


FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

*- Pf status

SET PF-STATUS 'STATUS'.

ENDFORM. " STATUS

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

DATA: GD_REPID LIKE SY-REPID, "Exists

REF_GRID TYPE REF TO CL_GUI_ALV_GRID.

IF REF_GRID IS INITIAL.

CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

IMPORTING

E_GRID = REF_GRID.

ENDIF.

IF NOT REF_GRID IS INITIAL.

CALL METHOD REF_GRID->CHECK_CHANGED_DATA .

ENDIF.

loop at itab where chk = 'X'.

itab-color = 'C300'.

modify itab index sy-tabix transporting color.

endloop.

RS_SELFIELD-refresh = 'X'.endform.

<b>ALV HIERARCHICAL</b>

REPORT ZS_REPT_SD_REPORT_47

MESSAGE-ID ZSD

NO STANDARD PAGE HEADING

LINE-COUNT 65(2)

LINE-SIZE 127.

************************************************************************

  • Progname : ZS_REPT_SD_REPORT_47 *

  • Description : Service MRA Report *

----


  • LOGICAL DB : VERSION OF : *

----


  • DESCRIPTION : Service MRA Report *

----


  • AUTHOR : DRN Kishore *

  • DATE : 03/10/2005 *

----


  • MODIFICATION LOG (latest change first): *

  • Date Incident Request Author *

  • #30445 DRN Kishore *

  • Description: *

----


TYPE-POOLS: SLIS.

TABLES : VBRK, " Billing: Header Data

VBRP, " Billing: Item Data

KONV, " Conditions (Transaction Data)

KNA1, " General Data in Customer Master

TVKO, " Organizational Unit: Sales Organizations

TVTW, " Organizational Unit: Distribution Channels

TSPA, " Organizational Unit: Sales Divisions

MARA, " General Material Data

TVFK, " Billing: Document Types

TVAU. " Sales Documents: Order Reasons

&----


&

*& INTERNAL TABLES. *

&----


&

  • Internal table To hold the VBRK Billing data

DATA : BEGIN OF IT_VBRK OCCURS 0,

VBELN LIKE VBRK-VBELN, " Billing document

KUNAG LIKE VBRK-KUNAG, " Sold-to

FKDAT LIKE VBRK-FKDAT, " Bill Date

FKART LIKE VBRK-FKART, " Bill doc type

KNUMV LIKE VBRK-KNUMV, " doc cond number

  • field credit applied(TBD)

WAERK LIKE VBRK-WAERK, " SD document currency

END OF IT_VBRK.

  • Internal table To hold the VBRK Billing:Item data

DATA : BEGIN OF IT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN, " Billing document

POSNR LIKE VBRP-POSNR, " Billing item

FKIMG LIKE VBRP-FKIMG, " Blled quantity

MATNR LIKE VBRP-MATNR, " Material number

AUGRU_AUFT LIKE VBRP-AUGRU_AUFT, " Order reason

NETWR LIKE VBRP-NETWR, " Net val in

END OF IT_VBRP.

  • Internal table To hold distinct doc condition no's and their

  • condition values

DATA : BEGIN OF IT_KONV OCCURS 0,

KNUMV LIKE KONV-KNUMV, " # of document condition

KPOSN LIKE KONV-KPOSN, " Condition item number

KWERT LIKE KONV-KWERT, " Condition value

END OF IT_KONV.

  • Internal table To hold distinct doc condition no's

DATA : BEGIN OF IT_KNUMV OCCURS 0,

KNUMV LIKE KONV-KNUMV, " # of document condition

END OF IT_KNUMV.

  • Final internal table for list display

DATA : BEGIN OF IT_FINAL OCCURS 0,

CUST_NO LIKE VBRK-KUNAG,

BILL_DOC LIKE VBRK-VBELN,

BILL_DATE LIKE VBRK-FKDAT,

BILL_TYPE LIKE VBRK-FKART,

MODEL LIKE VBRP-MATNR,

SHP_COST LIKE KONV-KWERT,

FLD_CR LIKE VBRP-NETWR, " vbrp-augru_auft = 'DU'

MRA_CODE LIKE VBRP-AUGRU_AUFT,

MRA_AMOUNT LIKE VBRP-NETWR,

INVOICE_AMT LIKE VBRP-NETWR,

CURRENCY LIKE VBRK-WAERK,

END OF IT_FINAL.

*--Internal table to store Document header details for display

DATA : BEGIN OF IT_HEAD OCCURS 0,

EXP,

CUST_NO LIKE VBRK-KUNAG, " Customer Number

BILL_DOC LIKE VBRK-VBELN, " Document number

BILL_DATE LIKE VBRK-FKDAT, " Billing date

BILL_TYPE LIKE VBRK-FKART, " Billing type

END OF IT_HEAD.

*--Internal table to store Document item details for display

DATA : BEGIN OF IT_ITEM OCCURS 0,

BILL_DOC LIKE VBRK-VBELN, " Document number

MODEL LIKE VBRP-MATNR, " Material Number

SHP_COST LIKE KONV-KWERT, " Doc Condition value

FLD_CR LIKE VBRP-NETWR, " IF VBRP-AUGRU_AUFT='DU'

MRA_CODE LIKE VBRP-AUGRU_AUFT, " MRA Code

MRA_AMOUNT LIKE VBRP-NETWR, " IF VBRK-FKART = 'RE'

INVOICE_AMT LIKE VBRP-NETWR, " Invoice Amount

CURRENCY LIKE VBRK-WAERK, " Currency

END OF IT_ITEM.

*--To store the second level data : Billing document, amount

DATA : BEGIN OF IT_DETAILS OCCURS 0,

CUST_NO LIKE VBRK-KUNAG, " Customer Number

BILL_DOC LIKE VBRK-VBELN, " Document number

QUANTITY TYPE I,"VBRP-FKIMG, " Qty

AMOUNT LIKE VBRP-NETWR, " Amount

END OF IT_DETAILS.

*---Structures for ALV List Display

DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

LS_LAYOUT TYPE SLIS_LAYOUT_ALV,

LS_VARIANT TYPE DISVARIANT,

LS_EVENT TYPE SLIS_ALV_EVENT,

LS_KEYINFO TYPE SLIS_KEYINFO_ALV,

LS_SORTINFO TYPE SLIS_SORTINFO_ALV.

*---Internal Tables for ALV List Display

DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

IT_EVENTS TYPE SLIS_T_EVENT,

IT_SORTINFO TYPE SLIS_T_SORTINFO_ALV.

DATA : V_REPID LIKE SY-REPID.

DATA : V_TOTAL_SALES_QTY TYPE I, " Total Sales Quantity

V_TOTAL_SALES_AMT LIKE VBRP-NETWR, " Total Sales Amount

V_TOTAL_RTRNS_QTY TYPE I, " Total Returns Qty

V_TOTAL_RTRNS_AMT LIKE VBRP-NETWR, " Total Returns Amt

V_TOTAL_FLDCR_QTY TYPE I, " Total Fld Cr Qty

V_TOTAL_FLDCR_AMT LIKE VBRP-NETWR, " Total Fld Cr Amount

V_CURRENCY LIKE VBRK-WAERK. " Currency Key

&----


&

*& SELECTION-SCREEN. *

&----


&

SELECTION-SCREEN BEGIN OF BLOCK SEL1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_VKORG FOR VBRK-VKORG " Sales Organization

OBLIGATORY,

S_VTWEG FOR VBRK-VTWEG " Distribution Channel

OBLIGATORY,

S_SPART FOR VBRK-SPART " Division

OBLIGATORY,

S_KUNAG FOR VBRK-KUNAG, " Sold-to-party

S_MATNR FOR VBRP-MATNR, " Material

S_FKDAT FOR VBRK-FKDAT " Billing Date

OBLIGATORY,

S_FKART FOR VBRK-FKART, " Billing Type

S_AUGRU FOR VBRP-AUGRU_AUFT. " MRA Code

SELECTION-SCREEN ULINE.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS:RB_DTL RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 4(35) TEXT-002 . " Detail Report

SELECTION-SCREEN END OF LINE.

*- Product class summary by customer

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS:RB_SUM RADIOBUTTON GROUP G1.

SELECTION-SCREEN COMMENT 4(35) TEXT-003. " Summary

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK SEL1.

&----


&

*& At Selection Screen Event *

&----


&

AT SELECTION-SCREEN.

*---Validate selection-screen. Check for inputs

PERFORM VALIDATE.

&----


&

*& TOP-OF-PAGE *

&----


&

TOP-OF-PAGE.

*---Display the standard top of page if summary is selected

PERFORM TOP_OF_PAGE_REPORT.

TOP-OF-PAGE DURING LINE-SELECTION.

*---Display the standard top of page if summary is selected

PERFORM TOP_OF_PAGE_REPORT.

PERFORM DISPLAY_COLUMN_HEADERS.

&----


&

*& START-OF-SELECTION. *

&----


&

START-OF-SELECTION.

*---Get the required data from tables

PERFORM GET_DATA.

&----


&

*& END-OF-SELECTION. *

&----


&

END-OF-SELECTION.

*---Display report

PERFORM DISPLAY_DATA.

&----


&

*& AT LINE SELECTION *

&----


&

AT LINE-SELECTION.

*--Display details for the quantity or the amount selected.

PERFORM DISPLAY_DETAIL.

&----


*& Form VALIDATE *

&----


  • Validate Billing date in the selection-screen *

----


FORM VALIDATE.

*- To Check Sales Organization

SELECT VKORG UP TO 1 ROWS

FROM TVKO

INTO TVKO-VKORG

WHERE VKORG IN S_VKORG.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E001.

ENDIF.

*- To Check Distribution Channel

SELECT VTWEG UP TO 1 ROWS

FROM TVTW

INTO TVTW-VTWEG

WHERE VTWEG IN S_VTWEG.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E002.

ENDIF.

*- To Check Division

SELECT SPART UP TO 1 ROWS

FROM TSPA

INTO TSPA-SPART

WHERE SPART IN S_SPART.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E003.

ENDIF.

*- To Check Shipt-to

SELECT KUNNR UP TO 1 ROWS

FROM KNA1

INTO KNA1-KUNNR

WHERE KUNNR IN S_KUNAG.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E030.

ENDIF.

*- To Check Model Number

SELECT MATNR UP TO 1 ROWS

FROM MARA

INTO MARA-MATNR

WHERE MATNR IN S_MATNR.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E047.

ENDIF.

*- To Check Billing Date

SELECT FKDAT UP TO 1 ROWS

FROM VBRK

INTO VBRK-FKDAT

WHERE FKDAT IN S_FKDAT.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E048.

ENDIF.

*- To Check Billing Type

SELECT FKART UP TO 1 ROWS

FROM TVFK

INTO TVFK-FKART

WHERE FKART IN S_FKART.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E004.

ENDIF.

*- To Check MRA Code

SELECT AUGRU UP TO 1 ROWS

FROM TVAU

INTO TVAU-AUGRU

WHERE AUGRU IN S_AUGRU.

ENDSELECT.

IF SY-SUBRC NE 0.

MESSAGE E049.

ENDIF.

ENDFORM. " VALIDATE

&----


*& Form GET_DATA *

&----


  • Get the required data from tables *

----


FORM GET_DATA.

*--Get Billing data from VBRK and VBRP

PERFORM GET_BILLING_DATA.

*--Get Shipping Costs from KONV based on the Document Condition Number

PERFORM GET_SHIPPING_COSTS.

ENDFORM. " GET_DATA

&----


*& Form GET_BILLING_DATA *

&----


  • Get Billing data from VBRK and VBRP *

----


FORM GET_BILLING_DATA.

*---Get data Billing Document header details from VBRK

  • based on the selection criteria

SELECT VBELN " Billing Document

KUNAG " Customer

FKDAT " Billing Date

FKART " Billing Type

KNUMV " Document Condition Number

WAERK " Currency

INTO TABLE IT_VBRK

FROM VBRK

WHERE VKORG IN S_VKORG " Sales Organisation

AND VTWEG IN S_VTWEG " Distribution Channel

AND SPART IN S_SPART " Division

AND KUNAG IN S_KUNAG " Customer

AND FKDAT IN S_FKDAT " Billing Date

AND FKART IN S_FKART " Billing Type

AND VBTYP NE 'N' " Cancelled Ducuments

AND FKSTO NE 'X'. " Cancellation Indicator

SORT IT_VBRK BY VBELN.

*---Get data Billing Document item details from VBRP for all selected

  • from VBRP and other criteria entered in the selection criteria

IF NOT IT_VBRK[] IS INITIAL.

SELECT VBELN " Billing Document

POSNR " Item Number

FKIMG " Billed Quantity

MATNR " Material Number

AUGRU_AUFT " MRA Code

NETWR " Invoice Amount

FROM VBRP

INTO TABLE IT_VBRP

FOR ALL ENTRIES IN IT_VBRK

WHERE VBELN = IT_VBRK-VBELN " Document Number

AND MATNR IN S_MATNR " Material Number

AND AUGRU_AUFT IN S_AUGRU. " MRA Code

ENDIF.

ENDFORM. " GET_BILLING_DATA

&----


*& Form GET_SHIPPING_COSTS *

&----


*& Get Shipping Costs from KONV based on the Document Condition Number *

----


FORM GET_SHIPPING_COSTS.

*--Get all the selected Document condition numbers into internal table

IF NOT IT_VBRK[] IS INITIAL.

LOOP AT IT_VBRK.

IT_KNUMV-KNUMV = IT_VBRK-KNUMV.

APPEND IT_KNUMV.

ENDLOOP.

*---Get the Condition values for the Cundition numbers

IF NOT IT_KNUMV[] IS INITIAL.

SORT IT_KNUMV BY KNUMV.

DELETE ADJACENT DUPLICATES FROM IT_KNUMV COMPARING KNUMV.

SELECT KNUMV

KPOSN

KWERT

INTO TABLE IT_KONV

FROM KONV

FOR ALL ENTRIES IN IT_KNUMV

WHERE KNUMV = IT_KNUMV-KNUMV

AND KSCHL = 'ZFRT'.

ENDIF.

ENDIF.

ENDFORM. " GET_SHIPPING_COSTS

&----


*& Form DISPLAY_DATA *

&----


  • Display report *

----


FORM DISPLAY_DATA.

*--If data is selected, display the report

IF NOT IT_VBRK[] IS INITIAL AND

NOT IT_VBRP[] IS INITIAL.

V_REPID = SY-REPID.

*--If Detail report option is selected in the selection-screen

IF RB_DTL = 'X'.

*--Populate the header and item details in IT_HEAD and IT_ITEM

PERFORM POPULATE_HEAD_ITEM.

*--Build field catalog ie, display position, length, etc..of each column

PERFORM BUILD_FIELD_CATALOG.

*--Prepare the key fields info of the head and item tables

PERFORM PREPARE_KEYINFO.

*--Add events like top-of-page to events list

PERFORM PREPARE_EVENT_LIST

TABLES IT_EVENTS.

*--Prepare the layout of the report

PERFORM PREPARE_LAYOUT.

*--Prepare the sort info and subtotals condition info

PERFORM PREPARE_SORTINFO.

*--Display the report using ALV

PERFORM DISPLAY_ALV_REPORT.

*--If Summary Option is selected in the selections-screen

ELSE.

*--Display the summary report

PERFORM DISPLAY_SUMMARY.

ENDIF.

ELSE.

MESSAGE I999 WITH TEXT-004.

  • No Data Available for the Given Selection Criteria

ENDIF.

ENDFORM. " DISPLAY_DATA

&----


*& Form POPULATE_HEAD_ITEM *

&----


  • Populate the header and item details in IT_HEAD and IT_ITEM *

----


FORM POPULATE_HEAD_ITEM.

  • V_TABIX = SY-TABIX.

*--For each of the document header

LOOP AT IT_VBRK.

*--Get the item details and append to IT_ITEM Internal tble

LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN.

IT_ITEM-BILL_DOC = IT_VBRP-VBELN.

IT_ITEM-CURRENCY = IT_VBRK-WAERK.

*--Get the condition value for the condition type

READ TABLE IT_KONV WITH KEY KNUMV = IT_VBRK-KNUMV

KPOSN = IT_VBRP-POSNR.

IF SY-SUBRC = 0.

IT_ITEM-SHP_COST = IT_KONV-KWERT.

ENDIF.

IT_ITEM-MODEL = IT_VBRP-MATNR.

IT_ITEM-MRA_CODE = IT_VBRP-AUGRU_AUFT.

*--If MRA Code is 'DU', display amount as field Credit

IF IT_VBRP-AUGRU_AUFT = 'DU'.

IT_ITEM-FLD_CR = IT_VBRP-NETWR.

ENDIF.

*--If billing type is 'RE', display amount as MRA Amount

IF IT_VBRK-FKART = 'RE'.

IT_ITEM-MRA_AMOUNT = IT_VBRP-NETWR.

ENDIF.

IT_ITEM-INVOICE_AMT = IT_VBRP-NETWR.

APPEND IT_ITEM.

CLEAR IT_ITEM.

ENDLOOP.

*--Append Header details to IT_HEAD Internal table

IF SY-SUBRC EQ 0.

IT_HEAD-CUST_NO = IT_VBRK-KUNAG.

IT_HEAD-BILL_DOC = IT_VBRK-VBELN.

IT_HEAD-BILL_DATE = IT_VBRK-FKDAT.

IT_HEAD-BILL_TYPE = IT_VBRK-FKART.

APPEND IT_HEAD.

CLEAR IT_HEAD.

ENDIF.

ENDLOOP.

ENDFORM. " POPULATE_HEAD_ITEM

&----


*& Form BUILD_FIELD_CATALOG *

&----


  • Build field catalog ie, display position, length, etc..of each column*

----


FORM BUILD_FIELD_CATALOG.

*--Append Field Catalog of Header Level Data for Display

PERFORM APPEND_FIELDCAT

USING 1 'CUST_NO' 'IT_HEAD' 'Customer Number' 15 ' ' 'X'.

PERFORM APPEND_FIELDCAT

USING 2 'BILL_DOC' 'IT_HEAD' 'Billing Document' 16 ' ' ' '.

PERFORM APPEND_FIELDCAT

USING 3 'BILL_DATE' 'IT_HEAD' 'Billing Date' 12 ' ' ' '.

PERFORM APPEND_FIELDCAT

USING 4 'BILL_TYPE' 'IT_HEAD' 'Billing Type' 12 ' ' ' '.

*--Append Field Catalog of Item Level Data for Display

PERFORM APPEND_FIELDCAT

USING 1 'MODEL' 'IT_ITEM' 'Model Number' 18 ' ' ' '.

PERFORM APPEND_FIELDCAT

USING 2 'SHP_COST' 'IT_ITEM' 'Shipping Cost' 18 IT_FINAL-CURRENCY 'X'.

PERFORM APPEND_FIELDCAT

USING 3 'FLD_CR' 'IT_ITEM' 'Field Credits' 21 IT_FINAL-CURRENCY 'X'.

PERFORM APPEND_FIELDCAT

USING 4 'MRA_CODE' 'IT_ITEM' 'MRA Code' 8 ' ' ' '.

PERFORM APPEND_FIELDCAT

USING 5 'MRA_AMOUNT' 'IT_ITEM' '$ Amount of MRA' 21

IT_FINAL-CURRENCY 'X'.

PERFORM APPEND_FIELDCAT

USING 6 'INVOICE_AMT' 'IT_ITEM' '$ Amount of Invoice' 21

IT_FINAL-CURRENCY 'X'.

*--Add Hotspot to Billing Document Number

LOOP AT IT_FIELDCAT INTO LS_FIELDCAT

WHERE FIELDNAME = 'BILL_DOC'.

LS_FIELDCAT-HOTSPOT = 'X'.

MODIFY IT_FIELDCAT FROM LS_FIELDCAT.

ENDLOOP.

ENDFORM. " BUILD_FIELD_CATALOG

&----


*& Form APPEND_FIELDCAT *

&----


  • Append Field Catalog to IT_FIELDCAT Internal Table *

----


FORM APPEND_FIELDCAT USING POS FIELDNAME TABNAME

TEXT LEN CURRENCY DOSUM.

LS_FIELDCAT-COL_POS = POS. " Position

LS_FIELDCAT-FIELDNAME = FIELDNAME. " Field Name in the internal table

LS_FIELDCAT-TABNAME = TABNAME. " Internal Table name

LS_FIELDCAT-SELTEXT_M = TEXT. " Column display text

LS_FIELDCAT-SELTEXT_L = TEXT. " Column display text

LS_FIELDCAT-OUTPUTLEN = LEN. " Display length of the column

LS_FIELDCAT-DO_SUM = DOSUM. " Set summation flag

LS_FIELDCAT-CURRENCY = CURRENCY. " Currency

APPEND LS_FIELDCAT TO IT_FIELDCAT.

CLEAR LS_FIELDCAT.

ENDFORM. " APPEND_FIELDCAT

&----


*& Form PREPARE_KEYINFO *

&----


  • Prepare the key fields info of the head and item tables *

----


FORM PREPARE_KEYINFO.

*--Key Fields Joining the Header and Item tables is Billing Document

LS_keyinfo-header01 = 'BILL_DOC'.

LS_keyinfo-item01 = 'BILL_DOC'.

ENDFORM. " PREPARE_KEYINFO

&----


*& Form PREPARE_EVENT_LIST *

&----


  • Add events like top-of-page to events list *

----


FORM PREPARE_EVENT_LIST TABLES IT_EVENTS TYPE SLIS_T_EVENT.

*--Add Top-OF-Page event to be triggered before the list is displayed

CLEAR LS_EVENT.

LS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

LS_EVENT-FORM = 'TOP_OF_PAGE_REPORT'.

APPEND LS_EVENT TO IT_EVENTS.

ENDFORM. " PREPARE_EVENT_LIST

&----


*& Form PREPARE_LAYOUT *

&----


  • Prepare the layout of the report *

----


FORM PREPARE_LAYOUT.

LS_LAYOUT-expand_fieldname = 'EXP'. " Field for Exp/Col Icon

LS_LAYOUT-no_uline_hs = 'X'. " No Horizontal lines

LS_LAYOUT-subtotals_text = TEXT-015. " Text for Sub-totals

LS_LAYOUT-totals_text = TEXT-016. " Text for totals

LS_LAYOUT-no_subtotals = ' '. " Display Subtotals

ENDFORM. " PREPARE_LAYOUT

&----


*& Form PREPARE_SORTINFO *

&----


  • Prepare the sort info and subtotals condition info *

----


FORM PREPARE_SORTINFO.

*--Sort the output on Customer number and Billing Document Number and

  • display subtotals of amounts for each customer

LS_SORTINFO-SPOS = 1. " Sort Position

LS_SORTINFO-UP = 'X'. " Sort Sequence is Ascending

LS_SORTINFO-TABNAME = 'IT_HEAD'. " Table name

LS_SORTINFO-FIELDNAME = 'CUST_NO'. " field name in the table

*--Subtotals of numeric fields for each customer.

LS_SORTINFO-SUBTOT = 'X'. " Subtotals on this field

APPEND LS_SORTINFO TO IT_SORTINFO.

CLEAR LS_SORTINFO.

LS_SORTINFO-SPOS = 2. " Sort position

LS_SORTINFO-UP = 'X'. " Sort order is ascending

LS_SORTINFO-TABNAME = 'IT_HEAD'. " Table name

LS_SORTINFO-FIELDNAME = 'BILL_DOC'. " Field Name

APPEND LS_SORTINFO TO IT_SORTINFO.

CLEAR LS_SORTINFO.

ENDFORM. " PREPARE_SORTINFO

&----


*& Form DISPLAY_ALV_REPORT *

&----


  • Display the report using ALV *

----


FORM DISPLAY_ALV_REPORT.

  • SET PF-STATUS 'STATUS'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = LS_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = IT_SORTINFO

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

IT_EVENTS = IT_EVENTS

  • IT_EVENT_EXIT =

I_TABNAME_HEADER = 'IT_HEAD'

I_TABNAME_ITEM = 'IT_ITEM'

  • I_STRUCTURE_NAME_HEADER =

  • I_STRUCTURE_NAME_ITEM =

IS_KEYINFO = LS_KEYINFO

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB_HEADER = IT_HEAD

T_OUTTAB_ITEM = IT_ITEM

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE E999 WITH TEXT-013. " Error When Displaying Report

ENDIF.

ENDFORM. " DISPLAY_ALV_REPORT

&----


*& Form TOP_OF_PAGE_REPORT *

&----


  • Display the standard top of page if summary is selected *

----


FORM TOP_OF_PAGE_REPORT.

*--Function module to display top of page

CALL FUNCTION 'Z_REPORT_HEADER'

EXPORTING

DL_TITLE = SY-TITLE

DL_REPID = V_REPID.

ENDFORM. " TOP_OF_PAGE_REPORT

&----


*& Form DISPLAY_COLUMN_HEADERS *

&----


  • Display the Column headers *

----


FORM DISPLAY_COLUMN_HEADERS.

*--Set color to I Header

PERFORM FORMAT_COLOR USING 5 'X'.

WRITE SY-ULINE(76).

WRITE : /1 SY-VLINE,

2(15) 'Customer Number' CENTERED,

17 SY-VLINE,

18(16) 'Billing Document' CENTERED,

34 SY-VLINE,

35(20) TEXT-008 CENTERED, " Quantity

55 SY-VLINE,

56(20) TEXT-009 CENTERED, " Amount

76 SY-VLINE.

WRITE SY-ULINE(76).

ENDFORM. " DISPLAY_COLUMN_HEADERS

&----


*& Form DISPLAY_SUMMARY *

&----


  • Display the summary report *

----


FORM DISPLAY_SUMMARY.

CLEAR : V_TOTAL_SALES_QTY,

V_TOTAL_SALES_AMT,

V_TOTAL_RTRNS_QTY,

V_TOTAL_RTRNS_AMT,

V_TOTAL_FLDCR_QTY,

V_TOTAL_FLDCR_AMT.

*--For each item record

LOOP AT IT_VBRP.

*--Check if the item record has a corresponding header record. If yes,

  • add the sums. Else, proceed to next record

READ TABLE IT_VBRK WITH KEY VBELN = IT_VBRP-VBELN.

IF SY-SUBRC = 0.

*--Increment Total Sales Quantity by 1 for each line item

V_TOTAL_SALES_QTY = V_TOTAL_SALES_QTY + IT_VBRP-FKIMG.

*--Add the Amount to Total Sales Amount

V_TOTAL_SALES_AMT = V_TOTAL_SALES_AMT + IT_VBRP-NETWR.

*--If Billing type is 'RE', add to Returns

IF IT_VBRK-FKART = 'RE'.

*--Increment Returns Quantity by 1

V_TOTAL_RTRNS_QTY = V_TOTAL_RTRNS_QTY + IT_VBRP-FKIMG.

*--Add Amount to Total Returns Amount

V_TOTAL_RTRNS_AMT = V_TOTAL_RTRNS_AMT + IT_VBRP-NETWR.

ENDIF.

*--If order Reason is 'DU' add to Field Credits

IF IT_VBRP-AUGRU_AUFT = 'DU'.

*--Increment Field Credit Quantity by 1

V_TOTAL_FLDCR_QTY = V_TOTAL_FLDCR_QTY + IT_VBRP-FKIMG.

*--Add Amouint to Total Field Credits Amount

V_TOTAL_FLDCR_AMT = V_TOTAL_FLDCR_AMT + IT_VBRP-NETWR.

ENDIF.

ENDIF.

ENDLOOP.

READ TABLE IT_VBRK INDEX 1.

V_CURRENCY = IT_VBRK-WAERK.

-Display Summary report

WRITE SY-ULINE(127).

*--Set color to I Header

PERFORM FORMAT_COLOR USING 5 'X'.

WRITE : /1 SY-VLINE,

2(41) TEXT-005 CENTERED, " Total Sales ( Net Sales )

43 SY-VLINE,

44(41) TEXT-006 CENTERED, " Total Returns

85 SY-VLINE,

86(41) TEXT-007 CENTERED, " Total Field Credits

127 SY-VLINE.

WRITE SY-ULINE(127).

*--Set color to II Header

PERFORM FORMAT_COLOR USING 1 'X'.

WRITE : /1 SY-VLINE,

2(20) TEXT-008 RIGHT-JUSTIFIED, " Quantity

22 SY-VLINE,

23(20) TEXT-009 RIGHT-JUSTIFIED, " Amount

43 SY-VLINE,

44(20) TEXT-008 RIGHT-JUSTIFIED, " Quantity

64 SY-VLINE,

65(20) TEXT-009 RIGHT-JUSTIFIED, " Amount

85 SY-VLINE,

86(20) TEXT-008 RIGHT-JUSTIFIED, " Quantity

106 SY-VLINE,

107(20) TEXT-009 RIGHT-JUSTIFIED, " Amount

127 SY-VLINE.

WRITE SY-ULINE(127).

*--Set color to detail

PERFORM FORMAT_COLOR USING 2 ' '.

WRITE : /1 SY-VLINE,

2(20) V_TOTAL_SALES_QTY RIGHT-JUSTIFIED HOTSPOT ON,

22 SY-VLINE,

23 V_TOTAL_SALES_AMT CURRENCY V_CURRENCY HOTSPOT ON,

43 SY-VLINE,

44(20) V_TOTAL_RTRNS_QTY RIGHT-JUSTIFIED HOTSPOT ON,

64 SY-VLINE,

65 V_TOTAL_RTRNS_AMT CURRENCY V_CURRENCY HOTSPOT ON,

85 SY-VLINE,

86(20) V_TOTAL_FLDCR_QTY RIGHT-JUSTIFIED HOTSPOT ON,

106 SY-VLINE,

107 V_TOTAL_FLDCR_AMT CURRENCY V_CURRENCY HOTSPOT ON,

127 SY-VLINE.

HIDE V_TOTAL_SALES_QTY.

HIDE V_TOTAL_SALES_AMT.

HIDE V_TOTAL_RTRNS_QTY.

HIDE V_TOTAL_RTRNS_AMT.

HIDE V_TOTAL_FLDCR_QTY.

HIDE V_TOTAL_FLDCR_AMT.

WRITE SY-ULINE(127).

ENDFORM. " DISPLAY_SUMMARY

&----


*& Form FORMAT_COLOR

&----


  • Format Color

----


FORM FORMAT_COLOR USING COLOR

INTENSITY.

IF INTENSITY EQ 'X'.

FORMAT INTENSIFIED ON COLOR = COLOR.

ELSE.

FORMAT INTENSIFIED OFF COLOR = COLOR.

ENDIF.

ENDFORM. " FORMAT_COLOR

&----


*& Form USER_COMMAND

&----


  • Call back user command

----


FORM USER_COMMAND USING P_UCOMM LIKE SY-UCOMM

P_LINE TYPE SLIS_SELFIELD.

DATA : LV_VBELN TYPE VBRK-VBELN.

*--If Billing document Is clicked

IF P_LINE-TABNAME = 'IT_HEAD' AND P_LINE-FIELDNAME = 'BILL_DOC'.

*--Move the Selected Billing Document Number to a variable

LV_VBELN = P_LINE-VALUE.

*--Set Parameter ID 'VF' with teh Selected Billing Document Number

SET PARAMETER ID 'VF' FIELD LV_VBELN.

*--Call Transaction VF03 to Display the Billing Document

CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.

ELSE.

*--If anything other than Billing Document is Clicked,

  • Display an error message

MESSAGE S999 WITH TEXT-010. "Please select a Billing Document

ENDIF..

ENDFORM. " USER_COMMAND

&----


*& Form DISPLAY_DETAIL

&----


  • Display details for the quantity or the amount select

----


FORM DISPLAY_DETAIL.

DATA : LV_FIELD(20). " To store the field name selected

DATA : LV_VBELN TYPE VBRK-VBELN.

*--If user clicks on some record in the first screen of summary report

IF SY-LSIND = '1'.

*--Get the field that the user clicked on

GET CURSOR FIELD LV_FIELD.

*--IF User Clicks on Total Sales Amount or Quantity

IF LV_FIELD = 'V_TOTAL_SALES_QTY' OR

LV_FIELD = 'V_TOTAL_SALES_AMT'.

*--Display Total Sales Details

PERFORM GET_TOTAL_SALES_DETAILS.

*--If User Clicks on Total Returns Quantity or Amount

ELSEIF LV_FIELD = 'V_TOTAL_RTRNS_QTY' OR

LV_FIELD = 'V_TOTAL_RTRNS_AMT'.

*--Display Total Returns Details

PERFORM GET_TOTAL_RETURNS_DETAILS.

*--If User Clicks on Total Returns Quantity or Amount

ELSEIF LV_FIELD = 'V_TOTAL_FLDCR_QTY' OR

LV_FIELD = 'V_TOTAL_FLDCR_AMT'.

*--Display Total Field Credits Details

PERFORM GET_TOTAL_FLDCR_DETAILS.

ENDIF.

IF NOT IT_DETAILS[] IS INITIAL.

PERFORM DISPLAY_DETAIL_REPORT.

ENDIF.

ELSEIF SY-LSIND = '2'.

GET CURSOR FIELD LV_FIELD.

IF LV_FIELD = 'IT_DETAILS-BILL_DOC'.

IF NOT IT_DETAILS-BILL_DOC IS INITIAL.

*--Move the Selected Billing Document Number to a variable

LV_VBELN = IT_DETAILS-BILL_DOC.

*--Set Parameter ID 'VF' with teh Selected Billing Document Number

SET PARAMETER ID 'VF' FIELD LV_VBELN.

*--Call Transaction VF03 to Display the Billing Document

CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.

ENDIF.

ELSE.

*--If anything other than Billing Document is Clicked,

  • Display an error message

MESSAGE S999 WITH TEXT-010. " Please select a Billing Document.

ENDIF..

ENDIF.

ENDFORM. " DISPLAY_DETAIL

&----


*& Form GET_TOTAL_SALES_DETAILS

&----


  • IF User Clicks on Total Sales Amount or Quantity

----


FORM GET_TOTAL_SALES_DETAILS.

  • Internal table To hold Net Value of Billing Document

DATA : BEGIN OF LT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN, " Billing document

POSNR LIKE VBRP-POSNR, " Billing item

FKIMG LIKE VBRP-FKIMG, " Billed Quantity

NETWR LIKE VBRP-NETWR, " Net val in

END OF LT_VBRP.

CLEAR : IT_DETAILS, IT_DETAILS[].

LOOP AT IT_VBRK.

CLEAR : LT_VBRP,LT_VBRP[].

LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN.

LT_VBRP-VBELN = IT_VBRP-VBELN.

LT_VBRP-POSNR = IT_VBRP-POSNR.

LT_VBRP-FKIMG = IT_VBRP-FKIMG.

LT_VBRP-NETWR = IT_VBRP-NETWR.

APPEND LT_VBRP.

CLEAR LT_VBRP.

ENDLOOP.

SORT LT_VBRP BY VBELN.

LOOP AT LT_VBRP.

AT NEW VBELN.

IT_DETAILS-CUST_NO = IT_VBRK-KUNAG.

IT_DETAILS-BILL_DOC = LT_VBRP-VBELN.

CLEAR : IT_DETAILS-QUANTITY,

IT_DETAILS-AMOUNT.

ENDAT.

IT_DETAILS-QUANTITY = IT_DETAILS-QUANTITY + LT_VBRP-FKIMG.

IT_DETAILS-AMOUNT = IT_DETAILS-AMOUNT + LT_VBRP-NETWR.

AT END OF VBELN.

APPEND IT_DETAILS.

CLEAR IT_DETAILS.

ENDAT.

ENDLOOP.

ENDLOOP.

ENDFORM. " GET_TOTAL_SALES_DETAILS

&----


*& Form GET_TOTAL_RETURNS_DETAILS

&----


  • IF User Clicks on Total Returns Amount or Quantity

----


FORM GET_TOTAL_RETURNS_DETAILS.

DATA : BEGIN OF LT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN, " Billing document

POSNR LIKE VBRP-POSNR, " Billing item

FKIMG LIKE VBRP-FKIMG, " Billed Quantity

NETWR LIKE VBRP-NETWR, " Net val in

END OF LT_VBRP.

CLEAR : IT_DETAILS, IT_DETAILS[].

SORT IT_VBRP BY VBELN.

LOOP AT IT_VBRK WHERE FKART = 'RE'.

CLEAR : LT_VBRP,LT_VBRP[].

LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN.

LT_VBRP-VBELN = IT_VBRP-VBELN.

LT_VBRP-POSNR = IT_VBRP-POSNR.

LT_VBRP-FKIMG = IT_VBRP-FKIMG.

LT_VBRP-NETWR = IT_VBRP-NETWR.

APPEND LT_VBRP.

CLEAR LT_VBRP.

ENDLOOP.

SORT LT_VBRP BY VBELN.

LOOP AT LT_VBRP.

AT NEW VBELN.

IT_DETAILS-CUST_NO = IT_VBRK-KUNAG.

IT_DETAILS-BILL_DOC = LT_VBRP-VBELN.

CLEAR : IT_DETAILS-QUANTITY,

IT_DETAILS-AMOUNT.

ENDAT.

IT_DETAILS-QUANTITY = IT_DETAILS-QUANTITY + LT_VBRP-FKIMG.

IT_DETAILS-AMOUNT = IT_DETAILS-AMOUNT + LT_VBRP-NETWR.

AT END OF VBELN.

APPEND IT_DETAILS.

CLEAR IT_DETAILS.

ENDAT.

ENDLOOP.

ENDLOOP.

ENDFORM. " GET_TOTAL_RETURNS_DETAILS

&----


*& Form GET_TOTAL_FLDCR_DETAILS

&----


  • IF User Clicks on Total Tield Credits Amount or Quantity

----


FORM GET_TOTAL_FLDCR_DETAILS.

DATA : BEGIN OF LT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN, " Billing document

POSNR LIKE VBRP-POSNR, " Billing item

FKIMG LIKE VBRP-FKIMG, " Billed Quantity

NETWR LIKE VBRP-NETWR, " Net val in

END OF LT_VBRP.

CLEAR : IT_DETAILS, IT_DETAILS[].

SORT IT_VBRP BY VBELN.

LOOP AT IT_VBRK.

CLEAR : LT_VBRP,LT_VBRP[].

LOOP AT IT_VBRP WHERE VBELN = IT_VBRK-VBELN AND

AUGRU_AUFT = 'DU'.

LT_VBRP-VBELN = IT_VBRP-VBELN.

LT_VBRP-POSNR = IT_VBRP-POSNR.

LT_VBRP-FKIMG = IT_VBRP-FKIMG.

LT_VBRP-NETWR = IT_VBRP-NETWR.

APPEND LT_VBRP.

CLEAR LT_VBRP.

ENDLOOP.

SORT LT_VBRP BY VBELN.

LOOP AT LT_VBRP.

AT NEW VBELN.

IT_DETAILS-CUST_NO = IT_VBRK-KUNAG.

IT_DETAILS-BILL_DOC = LT_VBRP-VBELN.

CLEAR : IT_DETAILS-QUANTITY,

IT_DETAILS-AMOUNT.

ENDAT.

IT_DETAILS-QUANTITY = IT_DETAILS-QUANTITY + LT_VBRP-FKIMG.

IT_DETAILS-AMOUNT = IT_DETAILS-AMOUNT + LT_VBRP-NETWR.

AT END OF VBELN.

APPEND IT_DETAILS.

CLEAR IT_DETAILS.

ENDAT.

ENDLOOP.

ENDLOOP.

ENDFORM. " GET_TOTAL_FLDCR_DETAILS

&----


*& Form DISPLAY_DETAIL_REPORT.

&----


  • Display details for the quantity or the amount select

----


FORM DISPLAY_DETAIL_REPORT..

DATA : LV_TOTAL_AMOUNT_CUST LIKE VBRP-NETWR,

LV_TOTAL_QTY_CUST TYPE I,

LV_TOTAL_AMOUNT LIKE VBRP-NETWR,

LV_TOTAL_QTY TYPE I,

INTENSITY.

SORT IT_DETAILS BY CUST_NO BILL_DOC.

LOOP AT IT_DETAILS.

IF INTENSITY = ' '.

INTENSITY = 'X'.

ELSE.

INTENSITY = ' '.

ENDIF.

PERFORM FORMAT_COLOR USING 2 INTENSITY.

WRITE : /1 SY-VLINE.

AT NEW CUST_NO.

WRITE : 2(15) IT_DETAILS-CUST_NO.

ENDAT.

WRITE : 17 SY-VLINE,

18(16) IT_DETAILS-BILL_DOC HOTSPOT,

34 SY-VLINE,

35(20) IT_DETAILS-QUANTITY RIGHT-JUSTIFIED,

55 SY-VLINE,

56(20) IT_DETAILS-AMOUNT CURRENCY V_CURRENCY,

76 SY-VLINE.

LV_TOTAL_AMOUNT_CUST = LV_TOTAL_AMOUNT_CUST +

IT_DETAILS-AMOUNT.

LV_TOTAL_QTY_CUST = LV_TOTAL_QTY_CUST +

IT_DETAILS-QUANTITY.

LV_TOTAL_AMOUNT = LV_TOTAL_AMOUNT +

IT_DETAILS-AMOUNT.

LV_TOTAL_QTY = LV_TOTAL_QTY +

IT_DETAILS-QUANTITY.

HIDE IT_DETAILS-BILL_DOC.

AT END OF CUST_NO.

PERFORM FORMAT_COLOR USING 3 ' '.

WRITE : /1 SY-VLINE,

2 TEXT-015, " Net Total

34 SY-VLINE,

35(20) LV_TOTAL_QTY_CUST RIGHT-JUSTIFIED,

55 SY-VLINE,

56(20) LV_TOTAL_AMOUNT_CUST CURRENCY V_CURRENCY,

76 SY-VLINE.

CLEAR : LV_TOTAL_QTY_CUST, LV_TOTAL_AMOUNT_CUST.

CLEAR INTENSITY.

WRITE SY-ULINE(76).

ENDAT.

ENDLOOP.

PERFORM FORMAT_COLOR USING 3 'X'.

WRITE : /1 SY-VLINE,

2 TEXT-014, " Total

34 SY-VLINE,

35(20) LV_TOTAL_QTY RIGHT-JUSTIFIED,

55 SY-VLINE,

56(20) LV_TOTAL_AMOUNT CURRENCY V_CURRENCY,

76 SY-VLINE.

WRITE SY-ULINE(76).

ENDFORM. " DISPLAY_DETAIL_REPORT.

Thanks

Mahesh

Read only

marcelo_ramos1
SAP Mentor
SAP Mentor
0 Likes
720

Hi,

If you are new in ALV, you can try learn about NEW ALV.

Look this articles:

<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/acdefb13-0701-0010-f1a2-8eeefa7d3780">Utilizing The New ALV Object Model</a>

<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b0f03986-046c-2910-a5aa-e5364e96ea2c">ALV Object Model - Hierarchical Sequential List - The Basics</a>

<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/cda3992d-0e01-0010-90b2-c4e1f899ac01">ALV Object Model - Simple 2D Table - Event Handling</a>

<a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/eac1fa0b-0e01-0010-0990-8530de4908a6">ALV Object Model - Simple 2D Table - The Basics</a>

Regards.

Marcelo Ramos

Read only

Former Member
0 Likes
720

SAP has some sample programs which are easy to follow. Look for programs starts with BCALV* and you will find a lot.

Also check out the following link for sample codes:

http://www.sapdevelopment.co.uk/reporting/alvhome.htm

<i>Please reward points for helpful answer.</i>