Sub heading in ALV report
Hi All,
is there any way for subheading in ALV report.
For Example: staff worker
L1 L2 R1 R2 R3 R4 w1 w2 w3 w4 w5 w6
thks
shailesh
hi,
try this REUSE_ALV_HIERSEQ_LIST_DISPLAY
hope this will help u...
Regards
Shishir Deshmukh
Similar Messages
-
Hi Experts,
I want to dispaly a P/L acount in ALV report format as given below , the items will diplay should be in Excel format as:
1.Current Month and YTD should be under in current Year Column it and again in next column Current
month and YTD should be under Last Year Column.
Current Year Last Year
ITEM No Current Month YTD Current Month YTD
Please reply me ASAP.
Thanksexample:
REPORT ZHIERSEQ_ALV.
TYPE-POOLS: slis. " ALV Global types
CONSTANTS :
c_x VALUE 'X',
c_gt_vbap TYPE slis_tabname VALUE 'GT_VBAP',
c_gt_vbak TYPE slis_tabname VALUE 'GT_VBAK'.
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED
PARAMETERS p_max(02) TYPE n DEFAULT '10' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_2 FOR FIELD p_expand. "#EC NEEDED
PARAMETERS p_expand AS CHECKBOX DEFAULT c_x.
SELECTION-SCREEN END OF LINE.
TYPES :
1st Table
BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln, " Sales document
kunnr TYPE vbak-kunnr, " Sold-to party
netwr TYPE vbak-netwr, " Net Value of the Sales Order
erdat TYPE vbak-erdat, " Creation date
waerk TYPE vbak-waerk, " SD document currency
expand TYPE xfeld,
END OF ty_vbak,
2nd Table
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln, " Sales document
posnr TYPE vbap-posnr, " Sales document
matnr TYPE vbap-matnr, " Material number
arktx TYPE vbap-arktx, " Material description
netwr TYPE vbap-netwr, " Net Value of the Sales Order
waerk TYPE vbap-waerk, " SD document currency
END OF ty_vbap.
DATA :
1st Table
gt_vbak TYPE TABLE OF ty_vbak,
2nd Table
gt_vbap TYPE TABLE OF ty_vbap.
INITIALIZATION.
v_1 = 'Maximum of records to read'.
v_2 = 'With ''EXPAND'' field'.
START-OF-SELECTION.
Read Sales Document: Header Data
SELECT vbeln kunnr netwr waerk erdat
FROM vbak
UP TO p_max ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_vbak.
IF gt_vbak[] IS NOT INITIAL.
Read Sales Document: Item Data
SELECT vbeln posnr matnr arktx netwr waerk
FROM vbap
INTO CORRESPONDING FIELDS OF TABLE gt_vbap
FOR ALL ENTRIES IN gt_vbak
WHERE vbeln = gt_vbak-vbeln.
ENDIF.
END-OF-SELECTION.
PERFORM f_display.
Form F_DISPLAY
FORM f_display.
Macro definition
DEFINE m_fieldcat.
ls_fieldcat-tabname = &1.
ls_fieldcat-fieldname = &2.
ls_fieldcat-ref_tabname = &3.
ls_fieldcat-cfieldname = &4. " Field with currency unit
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
DEFINE m_sort.
ls_sort-tabname = &1.
ls_sort-fieldname = &2.
ls_sort-up = c_x.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA:
ls_layout TYPE slis_layout_alv,
ls_keyinfo TYPE slis_keyinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
lt_sort TYPE slis_t_sortinfo_alv," Sort table
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv." Field catalog
ls_layout-group_change_edit = c_x.
ls_layout-colwidth_optimize = c_x.
ls_layout-zebra = c_x.
ls_layout-detail_popup = c_x.
ls_layout-get_selinfos = c_x.
IF p_expand = c_x.
ls_layout-expand_fieldname = 'EXPAND'.
ENDIF.
Build field catalog and sort table
m_fieldcat c_gt_vbak 'VBELN' 'VBAK' ''.
m_fieldcat c_gt_vbak 'KUNNR' 'VBAK' ''.
m_fieldcat c_gt_vbak 'NETWR' 'VBAK' 'WAERK'.
m_fieldcat c_gt_vbak 'WAERK' 'VBAK' ''.
m_fieldcat c_gt_vbak 'ERDAT' 'VBAK' ''.
m_fieldcat c_gt_vbap 'POSNR' 'VBAP' ''.
m_fieldcat c_gt_vbap 'MATNR' 'VBAP' ''.
m_fieldcat c_gt_vbap 'ARKTX' 'VBAP' ''.
m_fieldcat c_gt_vbap 'NETWR' 'VBAP' 'WAERK'.
m_fieldcat c_gt_vbap 'WAERK' 'VBAP' ''.
m_sort c_gt_vbak 'KUNNR'.
m_sort c_gt_vbap 'NETWR'.
ls_keyinfo-header01 = 'VBELN'.
ls_keyinfo-item01 = 'VBELN'.
ls_keyinfo-item02 = 'POSNR'.
Dipslay Hierarchical list
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = 'USER_COMMAND'
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_sort = lt_sort
i_tabname_header = c_gt_vbak
i_tabname_item = c_gt_vbap
is_keyinfo = ls_keyinfo
i_save = 'A'
TABLES
t_outtab_header = gt_vbak
t_outtab_item = gt_vbap
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. " F_LIST_DISPLAY
Form USER_COMMAND *
FORM user_command USING i_ucomm TYPE sy-ucomm
is_selfield TYPE slis_selfield. "#EC CALLED
DATA ls_vbak TYPE ty_vbak.
CASE i_ucomm.
WHEN '&IC1'. " Pick
CASE is_selfield-tabname.
WHEN c_gt_vbap.
WHEN c_gt_vbak.
READ TABLE gt_vbak INDEX is_selfield-tabindex INTO ls_vbak.
IF sy-subrc EQ 0.
Sales order number
SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.
Display Sales Order
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDCASE.
ENDFORM. " USER_COMMAND -
hi,
I have a report on ALV with sub totals for some fields, it is working fine but my requirement is whether i can get only the sub totals of that report.
regards,
PrabhuHI
refer this code.
REPORT ZALV.
TYPE-POOLS: SLIS.
DATA: G_REPID LIKE SY-REPID,
GS_PRINT TYPE SLIS_PRINT_ALV,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
GT_EVENTS TYPE SLIS_T_EVENT,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
FIELDCAT_LN LIKE LINE OF GT_FIELDCAT,
COL_POS TYPE I.
DATA: BEGIN OF ITAB,
FIELD1(5) TYPE C,
FIELD2(5) TYPE C,
FIELD3(5) TYPE P DECIMALS 2,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0.
INCLUDE STRUCTURE ITAB.
DATA: END OF ITAB1.
DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.
INCLUDE STRUCTURE ITAB.
DATA: END OF ITAB_FIELDCAT.
Print Parameters
PARAMETERS:
P_PRINT AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE
P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO
P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE
P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE
P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO
P_RESERV TYPE I. "NO OF FOOTER LINE
INITIALIZATION.
G_REPID = SY-REPID.
PERFORM PRINT_BUILD USING GS_PRINT. "Print PARAMETERS
START-OF-SELECTION.
TEST DATA
MOVE 'TEST1' TO ITAB1-FIELD1.
MOVE 'TEST1' TO ITAB1-FIELD2.
MOVE '10.00' TO ITAB1-FIELD3.
APPEND ITAB1.
MOVE 'TEST2' TO ITAB1-FIELD1.
MOVE 'TEST2' TO ITAB1-FIELD2.
MOVE '20.00' TO ITAB1-FIELD3.
APPEND ITAB1.
DO 50 TIMES.
APPEND ITAB1.
ENDDO.
END-OF-SELECTION.
PERFORM BUILD.
PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.
PERFORM COMMENT_BUILD CHANGING GT_LIST_TOP_OF_PAGE.
PERFORM CALL_ALV.
FORM BUILD.
DATA FIELD CATALOG
Explain Field Description to ALV
DATA: FIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.
CLEAR FIELDCAT_IN.
FIELDCAT_LN-FIELDNAME = 'FIELD1'.
FIELDCAT_LN-TABNAME = 'ITAB1'.
*FIELDCAT_LN-NO_OUT = 'X'. "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT
FIELDCAT_LN-KEY = ' '. "SUBTOTAL KEY
FIELDCAT_LN-NO_OUT = ' '.
FIELDCAT_LN-SELTEXT_L = 'HEAD1'.
APPEND FIELDCAT_LN TO GT_FIELDCAT.
CLEAR FIELDCAT_IN.
FIELDCAT_LN-FIELDNAME = 'FIELD2'.
FIELDCAT_LN-TABNAME = 'ITAB1'.
FIELDCAT_LN-NO_OUT = 'X'.
FIELDCAT_LN-SELTEXT_L = 'HEAD2'.
APPEND FIELDCAT_LN TO GT_FIELDCAT.
CLEAR FIELDCAT_IN.
FIELDCAT_LN-FIELDNAME = 'FIELD3'.
FIELDCAT_LN-TABNAME = 'ITAB1'.
FIELDCAT_LN-REF_FIELDNAME = 'MENGE'. "<- REF FIELD IN THE DICTIONNARY
FIELDCAT_LN-REF_TABNAME = 'MSEG'. "<- REF TABLE IN THE DICTIONNARY
FIELDCAT_LN-NO_OUT = ' '.
FIELDCAT_LN-DO_SUM = 'X'. "SUM UPON DISPLAY
APPEND FIELDCAT_LN TO GT_FIELDCAT.
DATA SORTING AND SUBTOTAL
DATA: GS_SORT TYPE SLIS_SORTINFO_ALV.
CLEAR GS_SORT.
GS_SORT-FIELDNAME = 'FIELD1'.
GS_SORT-SPOS = 1.
GS_SORT-UP = 'X'.
GS_SORT-SUBTOT = 'X'.
APPEND GS_SORT TO GT_SORT.
CLEAR GS_SORT.
GS_SORT-FIELDNAME = 'FIELD2'.
GS_SORT-SPOS = 2.
GS_SORT-UP = 'X'.
*GS_SORT-SUBTOT = 'X'.
APPEND GS_SORT TO GT_SORT.
ENDFORM.
FORM CALL_ALV.
ABAP List Viewer
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME = 'ITAB1'
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = GT_SORT[]
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = GT_EVENTS[]
IT_EVENT_EXIT =
IS_PRINT = GS_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.
ENDFORM.
HEADER FORM
FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.
CONSTANTS:
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
*GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = LT_EVENTS.
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
define END_OF_PAGE event
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
ENDFORM.
FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: GS_LINE TYPE SLIS_LISTHEADER.
CLEAR GS_LINE.
GS_LINE-TYP = 'H'.
GS_LINE-INFO = 'HEADER 1'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
CLEAR GS_LINE.
GS_LINE-TYP = 'S'.
GS_LINE-KEY = 'STATUS 1'.
GS_LINE-INFO = 'INFO 1'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
GS_LINE-KEY = 'STATUS 2'.
GS_LINE-INFO = 'INFO 2'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
CLEAR GS_LINE.
GS_LINE-TYP = 'A'.
GS_LINE-INFO = 'ACTION'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
ENDFORM.
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
WRITE: SY-DATUM, 'Page No', SY-PAGNO LEFT-JUSTIFIED.
ENDFORM.
FORM END_OF_PAGE.
WRITE at (sy-linsz) sy-pagno CENTERED.
ENDFORM.
PRINT SETTINGS
FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV.
LS_PRINT-PRINT = P_PRINT. "PRINT IMMEDIATE
LS_PRINT-NO_PRINT_SELINFOS = P_NOSINF. "NO SELECTION INFO
LS_PRINT-NO_COVERPAGE = P_NOCOVE. "NO COVER PAGE
LS_PRINT-NO_NEW_PAGE = P_NONEWP.
LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO
LS_PRINT-RESERVE_LINES = P_RESERV.
ENDFORM.
*END OF ZALV PROGRAM
Reward all helpfull answers.
Regards.
Jay -
Two column header in ALV Report
Hi Experts,
Can I have 2 headers in ALV report kind of one header and one sub header below that.
like i have to display a report having the same information for 3 systems so in header I can have the system name and below that
usual headers.
Thanks
Yogesh Guptait is is not possible using the ALV GRID function, ALV OO.
it is possible with ALV List function. you might loose some functionalities layout etc.
check this sample..
cehck this image..
http://img100.imageshack.us/img100/3846/output6ef.th.gif
REPORT ZTEST_ALV message-id zz .
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 LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
MALE type i,
female type i,
END OF ITAB.
SELECT VBELN
POSNR
FROM VBAP
UP TO 20 ROWS
INTO TABLE ITAB.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
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 = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'MALE'.
X_FIELDCAT-SELTEXT_L = 'MALE'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'FEMALE'.
X_FIELDCAT-SELTEXT_L = 'FEMALE'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
x_events-NAME = SLIS_EV_TOP_OF_PAGE.
x_events-FORM = 'TOP_OF_PAGE'.
APPEND x_events TO iT_EVENTS.
CLEAR x_events .
L_LAYOUT-NO_COLHEAD = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = L_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
it_events = it_events
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM TOP_OF_PAGE.
*-To display the headers for main list
FORMAT COLOR COL_HEADING.
WRITE: / SY-ULINE(103).
WRITE: / SY-VLINE,
(8) ' ' ,
SY-VLINE,
(8) ' ' ,
SY-VLINE,
(19) '***'(015) centered,
sy-vline.
WRITE: / SY-VLINE,
(8) 'VBELN'(013) ,
SY-VLINE,
(8) 'POSNR'(014) ,
SY-VLINE,
(8) 'MALE'(016) ,
sy-vline,
(8) 'FMALE'(017) ,
sy-vline.
FORMAT COLOR OFF.
ENDFORM. -
Change Column Heading in ALV Report
Hi,
I have developed a ALV Report, showing correct output.
Problem is that Column Heading is not showing correct...means it is showing as per field name. But We want to change as per our understand. i.e. One column heading is like Unrestricted Stock but we want Unrestricted Stock...(BILF is an indicator)..
We have write in the code..
FORM build_fieldcat10.
CLEAR fieldcat_ln.
ADD 1 TO col_pos.
fieldcat_ln-ref_tabname = 'MARD'.
fieldcat_ln-fieldname = 'LABST'.
fieldcat_ln-seltext_m = 'BILF Unrest.Stock'.
fieldcat_ln-key = space.
fieldcat_ln-do_sum = space.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-no_out = space.
fieldcat_ln-qfieldname = space.
fieldcat_ln-hotspot = space.
APPEND fieldcat_ln TO fieldcat.
ENDFORM. " BUILD_FIELDCAT1
But after change the selection text...not showing correct text..How can i change Column heading???
Please help me..Thanks a lot dear..
My problem resolved by using SCRTEXT_L. -
Sub total in ALV report.
hello everyone,
i am developing one ALV report and one problem is there.
i want Material Group wise total on 1.Quantity 2. Asssessable value 3. Basic duty 4. Edu cess.
Problem is all total are correct but when material group is different it repeat same total again. how to do total different material group wise?
i am using this code...............
*& Report ZHP_EXCISE_INVOICE
REPORT zhp_excise_invoice NO STANDARD PAGE HEADING LINE-SIZE 150 MESSAGE-ID 00.
TYPE-POOLS: slis.
TABLES: j_1iexchdr,vbrk,vbrp,t001w,t023t,konv.
DATA: BEGIN OF ithp_j_1iexchdr OCCURS 0,
docyr LIKE j_1iexchdr-docyr, "Year
bukrs LIKE j_1iexchdr-bukrs, "Company Code
werks LIKE j_1iexchdr-werks, "PLANT
exdat LIKE j_1iexchdr-exdat, "Excise Document Date
rdoc LIKE j_1iexchdr-rdoc, "Reference Document 1
preprn LIKE j_1iexchdr-preprn, "Preprinted Serial Number
kunag LIKE j_1iexchdr-kunag, "Sold-to party
kunwe LIKE j_1iexchdr-kunwe, "Ship-to party
exbed LIKE j_1iexchdr-exbed, "Basic Excise Duty
ecs LIKE j_1iexchdr-ecs, "Edu Cess amount
status LIKE j_1iexchdr-status, "Excise Document Status
censtat LIKE j_1iexchdr-censtat, "CENVAT Utilization status
exccd LIKE j_1iexchdr-exccd, "ECC Number
trntyp LIKE j_1iexchdr-trntyp, "Excise Transaction Type
vbeln LIKE vbrk-vbeln, "Billing Document
kzwi2 LIKE vbrp-kzwi2, "Assessable value
fkimg LIKE vbrp-fkimg, "Actual billed quantity
matkl LIKE vbrp-matkl, "Material group
netwr LIKE vbrp-netwr, "Net value
name1 LIKE t001w-name1, "Plant Name
wgbez LIKE t023t-wgbez, "Material Group Desc.
serial_no TYPE i,
subtot1 TYPE vbrp-fkimg,
price_per TYPE konv-kbetr,
cash_disc TYPE konv-kwert,
vol_disc TYPE konv-kwert,
***_value TYPE konv-kbetr,
***_value1 TYPE konv-kbetr,
BASIC_DUTY1 TYPE konv-kwert,
EDU_CESS1 TYPE konv-kwert,
END OF ithp_j_1iexchdr.
DATA : x TYPE i VALUE 0,
y TYPE i VALUE 0.
DATA: t_fillcat TYPE slis_t_fieldcat_alv,
w_fillcat TYPE slis_fieldcat_alv,
layout TYPE slis_layout_alv,
repid LIKE sy-repid.
TYPES: BEGIN OF ty_itab,
price_per TYPE konv-kbetr,
basic_prc TYPE konv-kbetr,
cash_disc TYPE konv-kwert,
vol_disc TYPE konv-kwert,
***_value TYPE konv-kbetr,
END OF ty_itab.
DATA:it_itab TYPE ty_itab OCCURS 0 WITH HEADER LINE,
wa_itab TYPE ty_itab.
TYPES: BEGIN OF ty_konv,
kschl TYPE konv-kschl,
kbetr TYPE konv-kbetr,
kwert TYPE konv-kwert,
mwsk1 TYPE konv-mwsk1,
knumv TYPE konv-knumv,
kposn TYPE konv-kposn,
END OF ty_konv.
DATA: it_konv TYPE ty_konv OCCURS 0 WITH HEADER LINE,
wa_konv TYPE ty_konv .
TYPES: BEGIN OF ty_vbrk,
fkdat TYPE vbrk-fkdat,
fkart TYPE vbrk-fkart,
knumv TYPE vbrk-knumv,
vbeln TYPE vbrk-vbeln,
vbtyp TYPE vbrk-vbtyp,
bukrs TYPE vbrk-bukrs,
kunrg TYPE vbrk-kunrg,
END OF ty_vbrk.
DATA: it_vbrk TYPE ty_vbrk OCCURS 0 WITH HEADER LINE,
wa_vbrk TYPE ty_vbrk .
TYPES : BEGIN OF ty_vbrp,
werks TYPE vbrp-werks,
spart TYPE vbrp-spart,
vkbur TYPE vbrp-vkbur,
matkl TYPE vbrp-matkl,
vbeln TYPE vbrp-vbeln,
posnr TYPE vbrp-posnr,
vgbel TYPE vbrp-vgbel,
matnr TYPE vbrp-matnr,
brgew TYPE vbrp-brgew,
fkimg TYPE vbrp-fkimg,
vrkme TYPE vbrp-vrkme,
netwr TYPE vbrp-netwr,
arktx TYPE vbrp-arktx,
aubel TYPE vbrp-aubel,
kzwi1 TYPE vbrp-kzwi1,
kzwi2 TYPE vbrp-kzwi2,
kzwi4 TYPE vbrp-kzwi4,
kzwi5 TYPE vbrp-kzwi5,
kzwi6 TYPE vbrp-kzwi6,
END OF ty_vbrp.
DATA: it_vbrp TYPE ty_vbrp OCCURS 0 WITH HEADER LINE,
wa_vbrp TYPE ty_vbrp.
DATA: events TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader.
top_of_page type slis_formname value 'TOP_OF_PAGE'.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_bukrs FOR j_1iexchdr-bukrs.
SELECT-OPTIONS: p_exgrp FOR j_1iexchdr-exgrp.
SELECT-OPTIONS: p_werks FOR j_1iexchdr-werks.
SELECT-OPTIONS: p_matkl FOR vbrp-matkl.
SELECT-OPTIONS: p_trntyp FOR j_1iexchdr-trntyp DEFAULT 'DLFC' NO INTERVALS.
SELECT-OPTIONS: p_status FOR j_1iexchdr-status DEFAULT 'C' NO INTERVALS.
SELECT-OPTIONS: p_cnstat FOR j_1iexchdr-censtat DEFAULT 'P' NO INTERVALS.
SELECT-OPTIONS: p_exdat FOR j_1iexchdr-exdat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
repid = sy-repid.
AT SELECTION-SCREEN ON p_bukrs.
SELECT SINGLE * FROM j_1iexchdr WHERE bukrs IN p_bukrs.
IF sy-subrc <> 0.
MESSAGE e001 WITH 'No Table Entries Found'.
EXIT.
ENDIF.
AT SELECTION-SCREEN ON p_werks.
SELECT SINGLE * FROM j_1iexchdr WHERE werks IN p_werks.
IF sy-subrc <> 0.
MESSAGE e001 WITH 'No Table Entries Found'.
EXIT.
ENDIF.
AT SELECTION-SCREEN ON p_matkl.
SELECT SINGLE * FROM vbrp WHERE matkl IN p_matkl.
IF sy-subrc <> 0.
MESSAGE e001 WITH 'No Table Entries Found'.
EXIT.
ENDIF.
AT SELECTION-SCREEN ON p_exdat.
SELECT SINGLE * FROM j_1iexchdr WHERE exdat IN p_exdat.
IF sy-subrc <> 0.
MESSAGE e001 WITH 'No Table Entries Found'.
EXIT.
ENDIF.
START-OF-SELECTION.
PERFORM select.
PERFORM fillcat.
PERFORM display.
END-OF-SELECTION.
*& Form SELECT
text
--> p1 text
<-- p2 text
FORM select .
SELECT DOCYR
BUKRS
WERKS
EXDAT
RDOC
PREPRN
KUNAG
KUNWE
EXBED
ECS
STATUS
CENSTAT
INTO CORRESPONDING FIELDS OF TABLE ITHP_J_1IEXCHDR
FROM J_1IEXCHDR
WHERE BUKRS IN P_BUKRS AND
EXGRP IN P_EXGRP AND
WERKS IN P_WERKS AND
EXDAT IN P_EXDAT.
SELECT VBELN
NETWR
INTO CORRESPONDING FIELDS OF TABLE ITHP_VBRK
FROM VBRK
FOR ALL ENTRIES IN ITHP_J_1IEXCHDR
WHERE VBELN EQ ITHP_J_1IEXCHDR-RDOC AND
BUKRS EQ ITHP_J_1IEXCHDR-BUKRS AND
KUNAG EQ ITHP_J_1IEXCHDR-KUNAG.
SORT ITHP_J_1IEXCHDR BY DOCYR BUKRS WERKS EXDAT RDOC.
SORT ITHP_VBRK BY VBELN.
SELECT a~docyr
a~bukrs
a~werks
a~exdat
a~rdoc
a~preprn
a~kunag
a~kunwe
a~exbed
a~ecs
a~status
a~censtat
a~exccd
a~trntyp
c~netwr
c~kzwi2
c~fkimg
c~matkl
d~name1
e~wgbez
INTO CORRESPONDING FIELDS OF TABLE ithp_j_1iexchdr
FROM j_1iexchdr AS a INNER JOIN vbrk AS b ON ardoc = bvbeln
INNER JOIN vbrp AS c ON bvbeln = cvbeln
INNER JOIN t001w AS d ON awerks = dwerks
INNER JOIN t023t AS e ON cmatkl = ematkl
WHERE a~bukrs IN p_bukrs AND
a~exgrp IN p_exgrp AND
a~werks IN p_werks AND
c~matkl IN p_matkl AND
a~trntyp IN p_trntyp AND
a~status IN p_status AND
a~censtat IN p_cnstat AND
a~exdat IN p_exdat.
SORT ithp_j_1iexchdr BY docyr bukrs werks exdat rdoc matkl.
ENDFORM. " SELECT
*& Form FILLCAT
text
--> p1 text
<-- p2 text
FORM fillcat .
DATA: subtot TYPE vbrp-fkimg.
DATA: BASIC_DUTY TYPE konv-kwert.
DATA: EDU_CESS TYPE konv-kwert.
REFRESH it_vbrk.
REFRESH it_konv.
REFRESH it_vbrp.
LOOP AT ithp_j_1iexchdr.
SELECT fkdat fkart knumv vbeln vbtyp bukrs kunrg
FROM vbrk INTO TABLE it_vbrk
WHERE vbeln EQ ithp_j_1iexchdr-rdoc.
SELECT kschl kbetr kwert mwsk1 knumv kposn FROM konv
INTO TABLE it_konv FOR ALL ENTRIES IN it_vbrk
WHERE knumv EQ it_vbrk-knumv.
SELECT werks spart vkbur matkl vbeln posnr
vgbel matnr brgew fkimg vrkme netwr
arktx aubel kzwi1 kzwi2 kzwi4 kzwi5
kzwi6 FROM vbrp INTO TABLE it_vbrp FOR ALL
ENTRIES IN it_vbrk
WHERE vbeln EQ it_vbrk-vbeln.
SORT it_vbrk BY vbeln knumv.
SORT it_konv BY KSCHL knumv.
SORT it_vbrp BY vbeln.
LOOP AT it_konv.
IF it_konv-kschl = 'ZASS'.
LOOP AT it_konv.
IF it_konv-kschl = 'ZPR0'.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
ithp_j_1iexchdr-***_value1 = ithp_j_1iexchdr-***_value1 - ithp_j_1iexchdr-***_value.
MODIFY ithp_j_1iexchdr.
ENDIF.
IF it_konv-kschl = 'ZASS'.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
MODIFY ithp_j_1iexchdr.
ENDIF.
ENDLOOP.
EXIT.
ENDIF.
IF it_konv-kschl = 'PR00'.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
MODIFY ithp_j_1iexchdr.
ENDIF.
IF it_konv-kschl = 'ZPR0'.
LOOP AT it_konv.
IF it_konv-kschl = 'ZASS'.
EXIT.
ENDIF.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
ithp_j_1iexchdr-***_value1 = ithp_j_1iexchdr-***_value1 - ithp_j_1iexchdr-***_value.
MODIFY ithp_j_1iexchdr.
ENDIF.
IF it_konv-kschl = 'ZPR0'.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
MODIFY ithp_j_1iexchdr.
ENDIF.
ENDLOOP.
EXIT.
ENDIF.
IF it_konv-kschl = 'JEXP'.
BASIC_DUTY = it_konv-kwert.
ADD BASIC_DUTY TO ithp_j_1iexchdr-BASIC_DUTY1.
MODIFY ithp_j_1iexchdr.
ENDIF.
IF it_konv-kschl = 'JECS'.
EDU_CESS = it_konv-kwert.
ADD EDU_CESS TO ithp_j_1iexchdr-EDU_CESS1.
MODIFY ithp_j_1iexchdr.
ENDIF.
ENDLOOP.
ENDLOOP.
LOOP AT ithp_j_1iexchdr.
AT NEW rdoc.
SUM.
subtot = ithp_j_1iexchdr-fkimg.
ENDAT.
ithp_j_1iexchdr-subtot1 = subtot.
MODIFY ithp_j_1iexchdr.
AT NEW MATKL.
ENDAT.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM ithp_j_1iexchdr.
LOOP AT ithp_j_1iexchdr.
x = x + 1.
ithp_j_1iexchdr-serial_no = x.
MODIFY ithp_j_1iexchdr.
ENDLOOP.
repid = sy-repid.
DATA: col_pos TYPE i VALUE 0.
col_pos = col_pos + 1.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'SERIAL_NO'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Serial No'.
w_fillcat-seltext_m = 'Serial No'.
w_fillcat-seltext_l = 'Serial No'.
w_fillcat-outputlen = 8.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'DOCYR'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Year'.
w_fillcat-seltext_m = 'Year'.
w_fillcat-seltext_l = 'Year'.
w_fillcat-outputlen = 5.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'WERKS'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Plant'.
w_fillcat-seltext_m = 'Plant'.
w_fillcat-seltext_l = 'Plant'.
w_fillcat-outputlen = 5.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'EXDAT'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Doc. Date'.
w_fillcat-seltext_m = 'Doc. Date'.
w_fillcat-seltext_l = 'Doc. Date'.
w_fillcat-outputlen = 10.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'RDOC'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Ref. Document'.
w_fillcat-seltext_m = 'Ref. Document'.
w_fillcat-seltext_l = 'Ref. Document'.
w_fillcat-outputlen = 11.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'PREPRN'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Invoice No'.
w_fillcat-seltext_m = 'Invoice No'.
w_fillcat-seltext_l = 'Invoice No'.
w_fillcat-outputlen = 11.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'SUBTOT1'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-do_sum = 'X'.
w_fillcat-seltext_s = 'Quantity'.
w_fillcat-seltext_m = 'Quantity'.
w_fillcat-seltext_l = 'Quantity'.
w_fillcat-outputlen = 13.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = '***_VALUE1'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-do_sum = 'X'.
w_fillcat-seltext_s = 'Assessable value'.
w_fillcat-seltext_m = 'Assessable value'.
w_fillcat-seltext_l = 'Assessable value'.
w_fillcat-outputlen = 15.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'BASIC_DUTY1'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-do_sum = 'X'.
w_fillcat-seltext_s = 'Basic Duty'.
w_fillcat-seltext_m = 'Basic Duty'.
w_fillcat-seltext_l = 'Basic Duty'.
w_fillcat-outputlen = 13.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'EDU_CESS1'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-do_sum = 'X'.
w_fillcat-seltext_s = 'Edu Cess'.
w_fillcat-seltext_m = 'Edu Cess'.
w_fillcat-seltext_l = 'Edu Cess'.
w_fillcat-outputlen = 13.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'KUNAG'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Sold-to pt'.
w_fillcat-seltext_m = 'Sold-to pt'.
w_fillcat-seltext_l = 'Sold-to pt'.
w_fillcat-outputlen = 10.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'KUNWE'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Ship-to pt'.
w_fillcat-seltext_m = 'Ship-to pt'.
w_fillcat-seltext_l = 'Ship-to pt'.
w_fillcat-outputlen = 10.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'STATUS'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Doc. Status'.
w_fillcat-seltext_m = 'Doc. Status'.
w_fillcat-seltext_l = 'Doc. Status'.
w_fillcat-outputlen = 8.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'CENSTAT'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Cenvet status'.
w_fillcat-seltext_m = 'Cenvet status'.
w_fillcat-seltext_l = 'Cenvet status'.
w_fillcat-outputlen = 8.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'MATKL'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Mat. Grp'.
w_fillcat-seltext_m = 'Mat. Grp'.
w_fillcat-seltext_l = 'Mat. Grp'.
w_fillcat-outputlen = 9.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'WGBEZ'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Mat. Grp Desc.'.
w_fillcat-seltext_m = 'Mat. Grp Desc.'.
w_fillcat-seltext_l = 'Mat. Grp Desc.'.
w_fillcat-outputlen = 20.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
ENDFORM. " FILLCAT
*& Form DISPLAY
text
--> p1 text
<-- p2 text
FORM display .
DATA : lv_grid_title TYPE lvc_title.
DATA: date1(10) TYPE c.
DATA: tperiod(500) TYPE c,
tperiod1(40) TYPE c,
tperiod2(30) TYPE c,
temp(25) TYPE c,
temp1(35) TYPE c,
temp2(25) TYPE c,
temp3(25) TYPE c,
temp4(60) TYPE c,
temp5(100) TYPE c.
CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)
INTO date1 SEPARATED BY '/'.
CONCATENATE p_exdat-low6(2) p_exdat-low4(2) p_exdat-low+0(4)
INTO temp1 SEPARATED BY '/'.
CONCATENATE p_exdat-high6(2) p_exdat-high4(2) p_exdat-high+0(4)
INTO temp2 SEPARATED BY '/'.
CONCATENATE 'DUTY DEBIT STMT:'
temp1 'TO' temp2
INTO tperiod
SEPARATED BY space.
IF ithp_j_1iexchdr-werks = '1000'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1101'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1102'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1103'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1104'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1201'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1202'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1203'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1204'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1205'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1261'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1301'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1901'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '2000'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '2101'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '3000'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '3101'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSE.
CONCATENATE tperiod ' ' INTO lv_grid_title
SEPARATED BY space.
ENDIF.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 100
text = 'Generating Report ... '.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = 'REPID'
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
i_grid_title = lv_grid_title
I_GRID_SETTINGS =
is_layout = layout
it_fieldcat = t_fillcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'X'
i_save = 'X'
IS_VARIANT =
IT_EVENTS = events[]
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
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = ithp_j_1iexchdr
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. " DISPLAY
Thanks in Advance.....Hi himanshu,
here i am sending some solution.
just create a internal table and wa for IT_SORT in grid display(just like for field cat).
Then u have to populate the internal table by fields for which u want subtotals.
just follow this code.
data: i_sort type SLIS_T_SORTINFO_ALV,
wa_sort type SLIS_SORTINFO_ALV.
wa_sort-fieldname = 'quantity'.
wa_sort-up = 'X'.
wa_sort-subtotal = 'X'.
append wa_sort to i_sort.
Do the same thing for all fields.
mention the internal table name in Grid display.
I think this some what useful to u,
Bye. -
Heading in ALV report is showing up blank
Hello Friends
First of all thanks to you all for giving so much of help. I appreciate it.
I would appreciate if some could please let me know, why my code is not printing the header in my ALV report. It shows up as blank. I have written the Form 'TOP-OF-PAGE'.
Thanks a lot in advance
RamThis coding will give u the solution ....
this is an interactive ALV ...
*& Report ZMR001_MATERIAL_STOCK_VALUE
REPORT zmr001_material_stock_value.
MODULE MMxxxxxxxx. *
Objective :.......................................... *
Program : Updates Tables ( ) Downloads data ( ) *
Outputs List ( ) *
Technical Spec No ............... *
Date Created 07/12/2006 *
Author Jayakumar.T.... *
Location April Business / Banglore *
LDB ..... *
External Dependencies *
Amendment History *
Who Change ID Reason *
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ *
XXXXXXXXX AADDMMYYYY Where XXXX = Developers Name................. *
AA- Developers Initial ................................ *
Includes *
*INCLUDE : *
Tables *
*TABLES : *
TABLES : mchb , mara , mbew , tvkos , t001w.
Types Begin with TY_ *
*TYPES : *
TYPES : BEGIN OF ty_mchb,
matnr LIKE mchb-matnr,
charg LIKE mchb-charg,
clabs LIKE mchb-clabs,
werks LIKE mchb-werks,
spart LIKE mara-spart,
maktx LIKE makt-maktx,
value LIKE mchb-clabs,
total LIKE mchb-clabs,
END OF ty_mchb.
TYPE-POOLS: slis.
CONSTANTS:
c_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA gt_list_top_of_page TYPE slis_t_listheader.
Constants Begin with C_ *
*CONSTANTS: *
Data Begin with W_ *
*DATA : *
Infotypes ( HR Module Specific) *
*INFOTYPES : *
Internal tables Begin with IT_ *
*DATA : *
DATA : it_mchb TYPE TABLE OF ty_mchb,
wa_mchb TYPE ty_mchb ,
it_final TYPE TABLE OF ty_mchb,
wa_final TYPE ty_mchb,
it_temp TYPE TABLE OF ty_mchb,
wa_temp TYPE ty_mchb,
it_temp1 TYPE TABLE OF ty_mchb,
wa_temp1 TYPE ty_mchb
DATA: it_listheader TYPE slis_t_listheader.
Field Symbols Begin with FS_ *
*FIELD-SYMBOLS: *
Insert *
*INSERT : *
Select Options Begin with SO_ *
*SELECT-OPTIONS : *
Parameters Begin with PR_ *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
PARAMETERS : pr_vkorg LIKE tvko-vkorg OBLIGATORY .
SELECT-OPTIONS : so_werks FOR mchb-werks.
SELECT-OPTIONS : so_spart FOR mara-spart.
SELECTION-SCREEN END OF BLOCK b1.
Initialisation *
*INITIALISATION :
DATA: wa_variant LIKE disvariant , "Variant
wa_fieldcat TYPE slis_fieldcat_alv ,
it_fieldcat TYPE slis_t_fieldcat_alv ,
it_fieldcat1 TYPE slis_t_fieldcat_alv ,
wa_layout TYPE slis_layout_alv ,
wa_print TYPE slis_print_alv ,
it_sort TYPE slis_t_sortinfo_alv ,
it_sp_group TYPE slis_t_sp_group_alv ,
it_events TYPE slis_t_event ,
it_list_top_of_page TYPE slis_t_listheader,
w_title1 TYPE lvc_title,
w_datum LIKE sy-datum.
DATA slis_ev_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA w_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'. " for top of page
DATA it_event TYPE slis_t_event.
INITIALIZATION.
PERFORM eventtab_build USING it_event[].
*set pf-status '002'.
At selection-screen *
AT SELECTION-SCREEN.
SELECT SINGLE * FROM tvkos WHERE vkorg = pr_vkorg AND spart IN so_spart.
IF sy-subrc NE 0 .
MESSAGE text-008 TYPE 'E'.
ENDIF.
SELECT SINGLE * FROM t001w WHERE vkorg = pr_vkorg AND werks IN so_werks.
IF sy-subrc NE 0 .
MESSAGE text-009 TYPE 'E'.
ENDIF.
S T A R T O F S E L E C T I O N *
START-OF-SELECTION.
SELECT mc~matnr charg clabs werks spart maktx
INTO CORRESPONDING
FIELDS OF TABLE it_mchb FROM mchb AS mc
INNER JOIN mara AS ma
ON mamatnr = mcmatnr
INNER JOIN makt AS mt
ON mamatnr = mtmatnr
WHERE werks IN so_werks AND
spart IN so_spart
AND spras = 'EN'
it_temp[] = it_mchb[].
SORT it_temp BY matnr.
DELETE ADJACENT DUPLICATES FROM it_temp COMPARING matnr.
LOOP AT it_temp INTO wa_temp.
it_temp1[] = it_mchb[].
DELETE it_temp1 WHERE matnr NE wa_temp-matnr.
LOOP AT it_temp1 INTO wa_temp1.
SUM.
EXIT.
ENDLOOP.
wa_final-matnr = wa_temp1-matnr.
wa_final-charg = wa_temp1-charg.
wa_final-maktx = wa_temp1-maktx.
wa_final-clabs = wa_temp1-clabs.
wa_final-werks = wa_temp1-werks.
wa_final-spart = wa_temp1-spart.
APPEND wa_final TO it_final.
ENDLOOP.
SORT it_mchb BY matnr.
LOOP AT it_mchb INTO wa_mchb.
ON CHANGE OF wa_mchb-matnr.
IF wa_final-matnr IS NOT INITIAL.
SELECT SINGLE * FROM mbew WHERE matnr = wa_final-matnr
AND bwkey = wa_final-werks.
IF mbew-vprsv = 'V'.
wa_final-value = mbew-verpr.
ELSEIF mbew-vprsv = 'S'.
wa_final-value = mbew-stprs.
ENDIF.
wa_final-total = wa_final-value * wa_final-clabs.
APPEND wa_final TO it_final.
CLEAR wa_final.
ENDIF.
ENDON.
wa_final-clabs = wa_mchb-clabs + wa_final-clabs .
wa_final-matnr = wa_mchb-matnr.
wa_final-werks = wa_mchb-werks.
wa_final-charg = wa_mchb-charg.
wa_final-maktx = wa_mchb-maktx.
ENDLOOP.
IF it_final IS INITIAL.
MESSAGE text-010 TYPE 'I'.
ELSE.
PERFORM fieldcat.
PERFORM display_data.
ENDIF.
LOOP AT it_mchb INTO wa_mchb.
WRITE : / , wa_mchb-matnr , wa_mchb-charg , wa_mchb-maktx , wa_mchb-clabs , wa_mchb-werks , wa_mchb-spart .
ENDLOOP.
WRITE : / , 'Jaya'.
LOOP AT it_final INTO wa_final.
WRITE : / , wa_final-matnr , wa_final-charg , wa_final-maktx , wa_final-clabs , wa_final-werks , wa_final-spart .
ENDLOOP.
*GET XX.
*END-OF-SELECTION.
E N D O F S E L E C T I O N *
At line selection *
*AT LINE-SELECTION.
User Command Processing *
*AT USER-COMMAND.
Top Of Page *
*TOP-OF-PAGE.
End Of Page *
*END-OF-PAGE.
FORM eventtab_build USING rt_events TYPE slis_t_event.
*"Registration of events to happen during list display
DATA: ls_event TYPE slis_alv_event.
to get the events
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = rt_events.
READ TABLE rt_events INTO ls_event WITH KEY name = slis_ev_top_of_page
IF sy-subrc = 0.
ls_event-form = slis_ev_top_of_page.
MODIFY rt_events FROM ls_event TRANSPORTING form WHERE
name = ls_event-form.
ENDIF.
READ TABLE rt_events INTO ls_event WITH KEY name = 'USER_COMMAND'.
IF sy-subrc EQ 0.
ls_event-form = 'USER_COMMAND'.
MODIFY rt_events FROM ls_event TRANSPORTING form WHERE name = ls_event-name.
ENDIF.
ENDFORM. "eventtab_build
*& Form fieldcat
FORM fieldcat .
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = text-002 .
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-seltext_m = text-003 .
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CLABS'.
wa_fieldcat-seltext_m = text-004 .
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VALUE'.
wa_fieldcat-seltext_m = text-006 .
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'TOTAL'.
wa_fieldcat-seltext_m = text-007 .
APPEND wa_fieldcat TO it_fieldcat.
ENDFORM. "fieldcat
*& Form display_data
FORM display_data .
PERFORM comment_build USING gt_list_top_of_page[].
wa_layout-info_fieldname = 'LINE_COLOR'. " Line Color
wa_print-no_coverpage = 'X'.
wa_print-no_print_listinfos = 'X'. " Remove the default first page.
to get thr grid display
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_background_id = 'ALV_BACKGROUND'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_callback_user_command = 'USER_COMMAND'
is_layout = wa_layout
it_fieldcat = it_fieldcat
i_default = 'X'
i_save = 'A'
it_events = it_event[]
is_print = wa_print
TABLES
t_outtab = it_final
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. " eventtab_build
*& Form comment_build
FORM comment_build USING lt_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
CLEAR ls_line.
ls_line-typ = 'H'.
to get the company text
DATA w_name(50) TYPE c.
ls_line-info = text-005 .
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-info = ''.
APPEND ls_line TO lt_top_of_page.
ENDFORM. "comment_build
*& Form top_of_page
to print at top of page
FORM top_of_page.
to pass the comment bulid for the top of page into the alv
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM. "top_of_page
*& Form USER_COMMAND
text
-->R_UCOMM text
-->RS_SELFIELDtext
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
MESSAGE 'jj' TYPE 'I'.
READ TABLE it_final INTO wa_final INDEX rs_selfield-tabindex.
PERFORM build_fieldcatlog.
PERFORM event_call USING it_event[].
PERFORM POPULATE_EVENT_EKPO.
PERFORM data_retrieval.
PERFORM build_listheader USING it_listheader.
PERFORM DISPLAY_ALV.
ENDCASE.
ENDFORM. "user_command
*& Form BUILD_FIELDCATLOG
text
FORM build_fieldcatlog.
clear it_fieldcat1[].
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-seltext_m = text-002 .
APPEND wa_fieldcat TO it_fieldcat1.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-seltext_m = text-003 .
APPEND wa_fieldcat TO it_fieldcat1.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CHARG'.
wa_fieldcat-seltext_m = text-003 .
APPEND wa_fieldcat TO it_fieldcat1.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CLABS'.
wa_fieldcat-seltext_m = text-004 .
APPEND wa_fieldcat TO it_fieldcat1.
ENDFORM. "BUILD_FIELDCATLOG
*& Form EVENT_CALL
text
-->RT_EVENTS text
FORM event_call USING rt_events TYPE slis_t_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = rt_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. "event_call
*& Form DATA_RETRIEVAL
text
FORM data_retrieval.
it_temp[] = it_mchb[].
DELETE it_temp WHERE matnr NE wa_final-matnr.
ENDFORM. "DATA_RETRIEVAL
*& Form BUILD_LISTHEADER
text
-->I_LISTHEADEtext
FORM build_listheader USING i_listheader TYPE slis_t_listheader.
DATA: hline1 TYPE slis_listheader.
hline1-typ = 'H'.
hline1-info = 'CHECKING PGM'.
ENDFORM. "BUILD_LISTHEADER
FORM DISPLAY_ALV.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = sy-REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = TITLE_EKPO
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = It_FIELDCAT1[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT =
I_SAVE = 'A'
IS_VARIANT =
IT_EVENTS = it_EVENTS[]
TABLES
T_OUTTAB = IT_temp[]
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. -
Two line column heading in ALV Report
Hi Experts,
My requirement is that I have to create an ALV report with columns having two lines of headings. Like a main heading called Consultants under which 5 to 10 columns of departments(Dept Num, Num of Ppl , Manager etc. ) and then Contractors(Name, Address Etc ) underwhich there would be 5 to 10 departments. Right now my report has the depts of...
How can i do that . If u would suggest by CL_SALV_TABLE then it would be great.
Thanks a lot !
Saui don't think you can do it using cl_gui_alv_grid or cl_salv_table.
-
Hi,
Is there any way of putting double headers to an ALV report?.
Example:
JANUARY
WEEK1 WEEK2 WEEK3 WEEK4
Rgds,
JoseHi Jose,
ALV Header
http://abap4.tripod.com/download/alvstub.txt
http://www.sapdevelopment.co.uk/reporting/alv/alvgrid_endlist.htm
If using OOPs approach Refer Sample code:
data: o_html TYPE REF TO cl_dd_document.
CLASS lcl_event_receiver IMPLEMENTATION.
*-- Top of Page
METHOD handle_print_top_of_page.
ENDMETHOD. "handle_print_top_of_page
METHOD handle_top_of_page.
ENDMETHOD. "handle_top_of_page
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
DATA: lws_text TYPE sdydo_text_element.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
*-- Object for HTML top container
CREATE OBJECT o_html
EXPORTING style = 'ALV_GRID'
background_color = 35.
*-- Top of Page
CALL METHOD o_alvgrid->list_processing_events
EXPORTING
i_event_name = 'TOP_OF_PAGE'
i_dyndoc_id = o_html.
*-- Total Record Text
CALL METHOD o_html->add_text
EXPORTING
text = text-012
sap_emphasis = text-015.
CALL METHOD o_html->add_gap
EXPORTING
width = 8.
**-- Total record Value
lws_text = cnt_total.
CALL METHOD o_html->add_text
EXPORTING
text = lws_text
sap_emphasis = text-015.
CLEAR lws_text.
CALL METHOD o_html->new_line
EXPORTING
repeat = 1.
Reward Points if this Helps.
Manish -
Hi All,
I want to print a report in the following manner:
DATE:
CLASS GROUP :
MATNR CLASS ADSIZE
123 c col1
124 c col2
156 c col2
DATE:
CLASS GROUP :
MATNR CLASS ADSIZE
125 a col3
128 a col4
150 a col5
How do i do it...I am planning to do it with REUSE_ALV_LIST _DISPLAY...but i dont know how to print the header..plz help<b>Note : In the below i am passing my purchase order Ebeln with internal table to the Form header so that all purchase order are passed to Header by this way you can also pass it .</b>
<b>Add Title(heading) to ALV Grid</b>
In order to insert a report heading in to the ALV grid you need to perform the following steps:
1. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include 'top-of-page' FORM
2. Create 'top-of-page' FORM
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
Form top-of-page.
*ALV Header declarations
data: t_header type slis_t_listheader,
wa_header type slis_listheader,
t_line like wa_header-info,
ld_lines type i,
ld_linesc(10) type c.
* Title
wa_header-typ = 'H'.
wa_header-info = EKKO-ebeln.
append wa_header to t_header.
clear wa_header.
endform.
reward points if it is usefull .....
Girish -
Hi ,
I developing one ALV report , in that i required main column with some sub columns..
so how i develop this ?
e.g.
GIN
QTY
MVT
UMOhi look at this ...
https://www.sdn.sap.com/irj/scn/wiki?path=/display/snippets/subtotals%252bin%252bhirarchial%252breport
https://www.sdn.sap.com/irj/scn/wiki?path=/display/snippets/display%252bsimple%252bhirarchial%252blist%252bwith%252bclass%252b%252bcl_salv_hierseq_table
or else..
look at BCALV_TREE_SIMPLE_DEMO program -
Getting Main Heading and Under that sub heading In ALV-Display
Hi All,
I have a requirement to get ALV display with Main Headings and Under each Main heading there are Sub headings.
The Output is somewhat like shown below
Costing view | MEQ1 View
VER. ID | Desc. VER. ID | Desc.
If some one had already done such coding please help.
Its Urgent.
Thanks In Advance,
ShyamYou can use FM 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.
Have a look at below report.
REPORT z_alv_hierseq_list.
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED
PARAMETERS p_max(02) TYPE n DEFAULT '10' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
CONSTANTS :
c_x VALUE 'X'.
TYPES :
1st Table
BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln, " Sales document
kunnr TYPE vbak-kunnr, " Sold-to party
netwr TYPE vbak-netwr, " Net Value of the Sales Order
waerk TYPE vbak-waerk, " SD document currency
END OF ty_vbak,
2nd Table
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln, " Sales document
posnr TYPE vbap-posnr, " Sales document
matnr TYPE vbap-matnr, " Material number
netwr TYPE vbap-netwr, " Net Value of the Sales Order
waerk TYPE vbap-waerk, " SD document currency
END OF ty_vbap.
DATA :
1st Table
gt_vbak TYPE TABLE OF ty_vbak,
2nd Table
gt_vbap TYPE TABLE OF ty_vbap.
INITIALIZATION.
v_1 = 'Maximum of records to read'.
START-OF-SELECTION.
Read Sales Document: Header Data
SELECT vbeln kunnr netwr waerk
FROM vbak
UP TO p_max ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_vbak.
IF NOT gt_vbak[] IS INITIAL.
Read Sales Document: Item Data
SELECT vbeln posnr matnr netwr waerk
FROM vbap
INTO CORRESPONDING FIELDS OF TABLE gt_vbap
FOR ALL ENTRIES IN gt_vbak
WHERE vbeln = gt_vbak-vbeln.
ENDIF.
PERFORM f_display.
Form F_DISPLAY
FORM f_display.
TYPE-POOLS: slis. " ALV Global types
Macro definition
DEFINE m_fieldcat.
ls_fieldcat-tabname = &1.
ls_fieldcat-fieldname = &2.
ls_fieldcat-ref_tabname = &3.
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
DEFINE m_sort.
ls_sort-tabname = &1.
ls_sort-fieldname = &2.
ls_sort-up = c_x.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA:
ls_layout TYPE slis_layout_alv,
ls_keyinfo TYPE slis_keyinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
lt_sort TYPE slis_t_sortinfo_alv," Sort table
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv." Field catalog
ls_layout-group_change_edit = c_x.
ls_layout-colwidth_optimize = c_x.
ls_layout-zebra = c_x.
ls_layout-detail_popup = c_x.
ls_layout-get_selinfos = c_x.
Build field catalog and sort table
m_fieldcat 'GT_VBAK' 'VBELN' 'VBAK'.
m_fieldcat 'GT_VBAK' 'KUNNR' 'VBAK'.
m_fieldcat 'GT_VBAK' 'NETWR' 'VBAK'.
m_fieldcat 'GT_VBAK' 'ERDAT' 'VBAK'.
m_fieldcat 'GT_VBAK' 'WAERK' 'VBAK'.
m_fieldcat 'GT_VBAP' 'POSNR' 'VBAP'.
m_fieldcat 'GT_VBAP' 'MATNR' 'VBAP'.
m_fieldcat 'GT_VBAP' 'NETWR' 'VBAP'.
m_fieldcat 'GT_VBAP' 'WAERK' 'VBAP'.
m_sort 'GT_VBAK' 'KUNNR'.
m_sort 'GT_VBAP' 'NETWR'.
ls_keyinfo-header01 = 'VBELN'.
ls_keyinfo-item01 = 'VBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = 'USER_COMMAND'
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_sort = lt_sort
i_tabname_header = 'GT_VBAK'
i_tabname_item = 'GT_VBAP'
is_keyinfo = ls_keyinfo
TABLES
t_outtab_header = gt_vbak
t_outtab_item = gt_vbap
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. " F_LIST_DISPLAY
FORM USER_COMMAND *
FORM user_command USING i_ucomm TYPE sy-ucomm
is_selfield TYPE slis_selfield. "#EC CALLED
DATA ls_vbak TYPE ty_vbak.
CASE i_ucomm.
WHEN '&IC1'. " Pick
CASE is_selfield-tabname.
WHEN 'GT_VBAP'.
WHEN 'GT_VBAK'.
READ TABLE gt_vbak INDEX is_selfield-tabindex INTO ls_vbak.
IF sy-subrc EQ 0.
Sales order number
SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.
Display Sales Order
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDCASE.
ENDFORM. " USER_COMMAND
END OF PROGRAM Z_ALV_HIERSEQ_LIST ***********************
Best Regards,
Vibha
*Please mark all the helpful answers -
How To Add Two Heading in ALV Report
Hello Guys,
Currently I am Working on a report Contain 45 Column. Each 45 Column have there own heading like Days Target,Days Achieve..like this.
Our Requirement is That
1.Upper side of the First 10 Column one more heading required like Production Details .
2. From 11 to 20 One More Heading Called Furnace Oil. like that only.
I ask users That is not possible in ALV but they are adhere to that requirement.
Can it's is possible in ALV Grid To have a two Heading Column.
Thanks in Advance.
Regards
Swati NamdevHi swati,
Normally the specified requirment is not possible with the ALV...
But you can try with the tricky way... where you need to use the Hierarchical ALV.
Here you need to specify the two fields in the header table for the specified headings, and you need to declare these two fields in the item table also.
But in this case you will have one blank line on the report output(for the header data).
Regards,
Satya. -
Need to generate Header, item ALV report
Hi All,
I need to create an ALV something with like the following format as given bewlo:
Comapny Code - <Description> Date From: __/__/__ To __/__/__
Contract Sold-to Ship-to
Kindly Help.
-Ramesh K S ChakradharRamesh,
FORM fill_list_header is for header in below code.
REPORT zvendor_detail LINE-SIZE 255 LINE-COUNT 65.
** Vendor payment details
** Amit Gujargoud - 2008/07/16
** modification history
** by date description
TABLES: bsik, bsak, bsis, bsas, bseg, ekpo, lfa1.
TYPE-POOLS : slis. "TYPE POOL SLIS
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-010,
SKIP.
SELECT-OPTIONS: s_lifnr FOR bsik-lifnr,
s_bukrs FOR bsik-bukrs,
s_budat FOR bsik-budat.
PARAMETERS: p_grdat LIKE bsik-augdt.
SELECTION-SCREEN: SKIP,
END OF BLOCK blk1.
DATA: BEGIN OF i_docs OCCURS 0,
lifnr LIKE bseg-lifnr,
hkont LIKE bseg-hkont,
dmbtr LIKE bsis-dmbtr,
kostl LIKE bseg-kostl,
sgtxt LIKE bseg-sgtxt,
bukrs LIKE bseg-bukrs,
belnr LIKE bseg-belnr,
buzei LIKE bseg-buzei,
blart LIKE bkpf-blart,
shkzg LIKE bseg-shkzg,
budat LIKE bkpf-budat,
augbl LIKE bseg-augbl,
gjahr LIKE bseg-gjahr,
name1 LIKE lfa1-name1,
flag TYPE c,
docsum TYPE p DECIMALS 0,
END OF i_docs.
DATA: i_revs LIKE i_docs OCCURS 100 WITH HEADER LINE,
lifnr LIKE i_docs-lifnr,
bukrs LIKE i_docs-bukrs,
belnr LIKE i_docs-belnr,
blart LIKE i_docs-blart,
hkont LIKE i_docs-hkont,
dmbtr LIKE i_docs-dmbtr,
kostl LIKE i_docs-kostl,
sgtxt LIKE i_docs-sgtxt,
budat LIKE i_docs-budat,
total LIKE i_docs-dmbtr,
gjahr LIKE i_docs-gjahr,
w_ebeln LIKE ekpo-ebeln,
w_ebelp LIKE ekpo-ebelp,
w_zuonr LIKE bseg-zuonr,
toggle TYPE i VALUE 1.
DATA: v_grir_acct LIKE bsis-hkont,
v_coa LIKE t001-ktopl.
*--------------------------ALV Declearation-----------------------------
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat,
it_top_of_page TYPE slis_t_listheader,
ls_layout TYPE slis_layout_alv,
gt_events TYPE slis_t_event.
START-OF-SELECTION.
CASE sy-mandt.
WHEN '500'.
v_coa = 'MACK'.
WHEN '600'.
v_coa = 'COA1'.
ENDCASE.
PERFORM data_selection."amit
PERFORM calculation.
"PERFORM interactive.
*********************************GET ALV DATA
PERFORM alv_get_data.
*********************************ALV GRID DATA
PERFORM alv_grid.
PERFORM top_of_page.
*& Form data_selection
* text
FORM data_selection.
SELECT konts FROM t030 INTO v_grir_acct
WHERE ktopl = v_coa
AND ktosl = 'WRX'.
ENDSELECT.
SELECT hkont dmbtr kostl sgtxt bukrs belnr
buzei blart shkzg budat augbl gjahr
FROM bsis
INTO CORRESPONDING FIELDS OF TABLE i_docs
* WHERE hkont = '211200' "goods received w/o invoice
WHERE hkont = v_grir_acct
AND bukrs IN s_bukrs
AND budat IN s_budat.
* AND blart = 'WE'.
SELECT hkont dmbtr kostl sgtxt bukrs belnr
buzei blart shkzg budat augbl gjahr
FROM bsas
APPENDING CORRESPONDING FIELDS OF TABLE i_docs
* WHERE hkont = '211200' "goods received w/o invoice
WHERE hkont = v_grir_acct
AND bukrs IN s_bukrs
AND budat IN s_budat
* AND blart = 'WE'
AND augdt GE p_grdat.
LOOP AT i_docs.
SELECT SINGLE lifnr ebeln ebelp FROM bseg
INTO (i_docs-lifnr, w_ebeln, w_ebelp)
WHERE bukrs = i_docs-bukrs
AND belnr = i_docs-belnr
AND lifnr NE ''.
" AND buzei = i_docs-buzei."commented by amit
IF i_docs-lifnr IN s_lifnr.
IF NOT w_ebeln IS INITIAL AND i_docs-sgtxt IS INITIAL.
SELECT SINGLE txz01 FROM ekpo INTO i_docs-sgtxt
WHERE ebeln = w_ebeln
AND ebelp = w_ebelp.
ENDIF.
MODIFY i_docs.
ELSE.
DELETE i_docs.
ENDIF.
ENDLOOP.
SELECT lifnr hkont dmbtr kostl sgtxt bukrs belnr
buzei blart shkzg budat augbl gjahr
FROM bsik
APPENDING TABLE i_docs
WHERE lifnr IN s_lifnr
AND bukrs IN s_bukrs
AND budat IN s_budat
* AND blart IN ('KR', 'RE').
AND blart IN ('KR', 'RE', 'KN', 'RN').
*see if there are reversal documents
SELECT lifnr hkont dmbtr kostl sgtxt bukrs belnr
buzei blart shkzg budat augbl gjahr
FROM bsik
APPENDING TABLE i_revs
WHERE lifnr IN s_lifnr
AND bukrs IN s_bukrs
AND blart IN ('KA').
SELECT lifnr hkont dmbtr kostl sgtxt bukrs belnr
buzei blart shkzg budat augbl gjahr
FROM bsak
APPENDING TABLE i_docs
WHERE lifnr IN s_lifnr
AND bukrs IN s_bukrs
AND budat IN s_budat
* AND blart IN ('KR', 'RE').
AND blart IN ('KR', 'RE', 'KN', 'RN').
* check for reversal
SELECT lifnr hkont dmbtr kostl sgtxt bukrs belnr
buzei blart shkzg budat augbl gjahr
FROM bsak
APPENDING TABLE i_revs
WHERE lifnr IN s_lifnr
AND bukrs IN s_bukrs
AND blart IN ('KA').
SORT: i_docs BY lifnr bukrs budat hkont,
i_revs BY lifnr bukrs augbl.
ENDFORM. "data_selection
*& Form calculation
* text
FORM calculation.
LOOP AT i_docs.
i_docs-docsum = 1.
MODIFY i_docs TRANSPORTING docsum.
toggle = toggle * -1.
* on CHANGE OF i_docs-lifnr.
SELECT SINGLE name1 FROM lfa1 INTO i_docs-name1
WHERE lifnr = i_docs-lifnr.
CLEAR total.
MODIFY i_docs TRANSPORTING name1.
* ENDon.
IF i_docs-blart = 'KR' OR i_docs-blart EQ 'KN'.
SELECT SINGLE hkont kostl gjahr FROM bseg
INTO (i_docs-hkont, i_docs-kostl, i_docs-gjahr)
WHERE bukrs = i_docs-bukrs
AND belnr = i_docs-belnr
AND kostl <> ' '.
MODIFY i_docs TRANSPORTING hkont kostl gjahr.
ELSEIF i_docs-blart = 'RE' OR i_docs-blart = 'RN'.
SELECT SINGLE hkont kostl gjahr ebeln ebelp FROM bseg
INTO (i_docs-hkont, i_docs-kostl, i_docs-gjahr,
w_ebeln, w_ebelp)
WHERE bukrs = i_docs-bukrs
AND belnr = i_docs-belnr
AND ebeln <> ' '.
MODIFY i_docs TRANSPORTING hkont kostl gjahr.
IF NOT w_ebeln IS INITIAL
AND i_docs-sgtxt IS INITIAL.
SELECT SINGLE txz01 FROM ekpo INTO i_docs-sgtxt
WHERE ebeln = w_ebeln
AND ebelp = w_ebelp.
MODIFY i_docs TRANSPORTING sgtxt.
ENDIF.
ENDIF.
CASE i_docs-shkzg.
WHEN 'S'.
i_docs-dmbtr = i_docs-dmbtr * -1.
* CONDENSE i_docs-dmbtr.
MODIFY i_docs TRANSPORTING dmbtr.
ENDCASE.
lifnr = i_docs-lifnr.
bukrs = i_docs-bukrs.
belnr = i_docs-belnr.
blart = i_docs-blart.
hkont = i_docs-hkont.
dmbtr = i_docs-dmbtr.
kostl = i_docs-kostl.
sgtxt = i_docs-sgtxt.
budat = i_docs-budat.
gjahr = i_docs-gjahr.
* PERFORM print_document USING lifnr lfa1-name1 bukrs belnr blart
* hkont dmbtr kostl sgtxt budat gjahr.
total = total + dmbtr.
IF i_docs-blart = 'KR' OR i_docs-blart EQ 'KN'.
READ TABLE i_revs WITH KEY lifnr = i_docs-lifnr
bukrs = i_docs-bukrs
belnr = i_docs-augbl
blart = 'KA'.
IF sy-subrc EQ 0.
dmbtr = i_revs-dmbtr * -1.
lifnr = i_revs-lifnr.
bukrs = i_revs-bukrs.
belnr = i_revs-belnr.
blart = i_revs-blart.
hkont = i_revs-hkont.
kostl = i_revs-kostl.
sgtxt = space.
budat = i_revs-budat.
gjahr = i_revs-gjahr.
* PERFORM print_document USING lifnr lfa1-name1 bukrs belnr blart
* hkont dmbtr kostl sgtxt budat gjahr.
total = total + dmbtr.
ENDIF.
ENDIF.
* ON CHANGE OF i_docs-lifnr.
* i_docs-flag = 'X'.
* SUM.
** i_docs-docsum = i_docs-docsum.
* i_docs-dmbtr = i_docs-dmbtr.
* MODIFY i_docs TRANSPORTING dmbtr flag.
* ENDON.
AT END OF lifnr.
i_docs-flag = 'X'.
SUM.
* i_docs-docsum = i_docs-docsum.
i_docs-dmbtr = i_docs-dmbtr.
MODIFY i_docs TRANSPORTING dmbtr flag.
ENDAT.
ENDLOOP.
* SORT i_docs STABLE by lifnr belnr dmbtr DESCENDING.
DELETE ADJACENT DUPLICATES FROM i_docs COMPARING belnr.
" SORT i_docs by lifnr dmbtr ASCENDING.
LOOP AT i_docs.
AT END OF lifnr.
SUM.
i_docs-docsum = i_docs-docsum.
MODIFY i_docs TRANSPORTING docsum.
ENDAT.
* i_docs-docsum = 1.
ENDLOOP.
LOOP AT i_docs WHERE flag NE 'X'.
DELETE i_docs INDEX sy-tabix.
ENDLOOP.
ENDFORM."amit
*FORM interactive.
*AT LINE-SELECTION.
* CHECK belnr NE space.
* SET PARAMETER ID: 'BLN' FIELD i_docs-belnr,
* 'BUK' FIELD i_docs-bukrs,
* 'GJR' FIELD i_docs-gjahr.
* CALL TRANSACTION 'FB03'.
*endform.
* FORM print_document *
*FORM print_document USING lifnr name1 bukrs belnr blart hkont dmbtr
* kostl sgtxt budat gjahr.
** IF toggle GT 0.
** FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
** ELSE.
** FORMAT COLOR COL_NORMAL INTENSIFIED ON.
** ENDIF.
** WRITE:/ lifnr,
** name1,
** bukrs,
** belnr COLOR COL_KEY HOTSPOT,
** blart,
** (6) hkont,
** (14) dmbtr,
** (7) kostl,
** sgtxt,
** budat.
* HIDE: i_docs-belnr, i_docs-lifnr, i_docs-bukrs, i_docs-gjahr.
*ENDFORM.
FORM alv_get_data.
CLEAR it_fieldcat.
***************** Vendor Number
wa_fieldcat-fieldname = 'LIFNR'.
wa_fieldcat-seltext_m = 'Vendor Number'.
wa_fieldcat-just = 'L'.
wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-outputlen = 15.
wa_fieldcat-tabname = 'I_DOCS'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
***************** Vendor Name
* wa_fieldcat-col_pos = '2'. " ALV O/P COL-1
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-seltext_m = 'Vendor Name'.
wa_fieldcat-just = 'L'.
wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-outputlen = 20.
wa_fieldcat-tabname = 'I_DOCS'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*****************Comapany Code
* wa_fieldcat-col_pos = '2'. " ALV O/P COL-1
wa_fieldcat-fieldname = 'BUKRS'.
wa_fieldcat-seltext_m = 'Comapany Code'.
wa_fieldcat-just = 'L'.
wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-outputlen = 20.
wa_fieldcat-tabname = 'I_DOCS'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*********************Doc. Number
* wa_fieldcat-fieldname = 'BELNR'.
* wa_fieldcat-seltext_m = 'Doc. Number'.
* wa_fieldcat-just = 'L'.
* wa_fieldcat-tabname = 'I_DOCS'.
* wa_fieldcat-outputlen = 15.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
********************* Doc. type
* wa_fieldcat-fieldname = 'BLART'.
* wa_fieldcat-seltext_l = 'Doc. type'.
** wa_fieldcat-seltext_l = 'Total number of days'.
* wa_fieldcat-just = 'L'.
* wa_fieldcat-tabname = 'I_DOCS'.
* wa_fieldcat-outputlen = 20.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
********************** GL Code
* wa_fieldcat-fieldname = 'HKONT'.
* wa_fieldcat-seltext_l = 'GL Code'.
* wa_fieldcat-just = 'L'.
* wa_fieldcat-tabname = 'I_DOCS'.
* wa_fieldcat-outputlen = 20.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
*********************Amount
wa_fieldcat-fieldname = 'DMBTR'.
wa_fieldcat-seltext_l = 'Amount'.
wa_fieldcat-just = 'R'.
wa_fieldcat-tabname = 'I_DOCS'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
******************* Cost Center
* wa_fieldcat-fieldname = 'KOSTL'.
* wa_fieldcat-seltext_m = 'Cost Center'.
* wa_fieldcat-just = 'L'.
* wa_fieldcat-no_zero(1) = 'X'.
* wa_fieldcat-outputlen = 15.
* wa_fieldcat-tabname = 'I_DOCS'.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
****************** Text
** wa_fieldcat-col_pos = '2'. " ALV O/P COL-1
* wa_fieldcat-fieldname = 'SGTXT'.
* wa_fieldcat-seltext_m = 'Text'.
* wa_fieldcat-just = 'L'.
* wa_fieldcat-no_zero(1) = 'X'.
* wa_fieldcat-outputlen = 20.
* wa_fieldcat-tabname = 'I_DOCS'.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
*****************Posting Date
* wa_fieldcat-col_pos = '2'. " ALV O/P COL-1
wa_fieldcat-fieldname = 'BUDAT'.
wa_fieldcat-seltext_m = 'Posting Date'.
wa_fieldcat-just = 'L'.
wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-outputlen = 20.
wa_fieldcat-tabname = 'I_DOCS'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
******************** document sum
wa_fieldcat-fieldname = 'DOCSUM'.
wa_fieldcat-seltext_l = 'Total number of documents'.
wa_fieldcat-just = 'L'.
wa_fieldcat-tabname = 'I_DOCS'.
wa_fieldcat-outputlen = 20.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
********************* Average Days
* wa_fieldcat-fieldname = 'DAYBET'.
** wa_fieldcat-seltext_l = 'Days between PR creation to PO'.
* wa_fieldcat-seltext_l = 'Total number of days'.
* wa_fieldcat-just = 'L'.
* wa_fieldcat-tabname = 'IT_FINAL'.
* wa_fieldcat-outputlen = 20.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
********************* Average Days
* wa_fieldcat-fieldname = 'AVERAGE'.
* wa_fieldcat-seltext_l = 'Average days per PO'.
* wa_fieldcat-just = 'L'.
* wa_fieldcat-tabname = 'IT_FINAL'.
* wa_fieldcat-outputlen = 20.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
ENDFORM. "alv_get_data
*& Form alv_grid
* text
FORM alv_grid .
PERFORM fill_list_header USING it_top_of_page[].
PERFORM event-build USING gt_events[].
PERFORM fill_layout USING ls_layout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* i_callback_top_of_page = 'TOP-OF-PAGE'
is_layout = ls_layout
it_fieldcat = it_fieldcat
it_events = gt_events[]
i_save = 'A'
TABLES
t_outtab = i_docs
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_grid
*& Form fill_layout
* text
* -->P_LS_LAYOUT text
FORM fill_layout USING p_ls_layout TYPE slis_layout_alv.
p_ls_layout-zebra = 'X'.
p_ls_layout-cell_merge = 'X'.
ENDFORM. " fill_layout
*& Form fill_list_header
* text
* -->P_IT_TOP_OF_PAGE[] text
FORM fill_list_header USING p_slis_t_listheader TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader,
ls_line_1 TYPE slis_listheader.
DATA : w_date TYPE sy-datum,
w_str TYPE string,
str TYPE string,
str1 TYPE string,
str_low1 TYPE string,
str_high1 TYPE string,
str_low TYPE string,
str_high TYPE string.
w_str = 'Vendor detail Report '.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = w_str.
APPEND ls_line TO it_top_of_page.
CLEAR ls_line.
IF NOT s_lifnr[] IS INITIAL.
LOOP AT s_bukrs.
ls_line-typ = 'S'.
ls_line-key = 'Vendor Number'. "'text-100.
str_low = s_lifnr-low.
str_high = s_lifnr-high.
IF str_high = ' ' .
MOVE str_low TO str.
ELSE.
CONCATENATE str_low str_high INTO str SEPARATED BY ' To '.
ENDIF.
ENDLOOP.
ls_line-typ = 'S'.
ls_line-key = 'Vendor Number'.
ls_line-info = str.
APPEND ls_line TO it_top_of_page.
CLEAR ls_line.
ENDIF.
IF NOT s_bukrs[] IS INITIAL.
LOOP AT s_bukrs.
ls_line-typ = 'S'.
ls_line-key = 'Company Code'. "'text-100.
str_low = s_bukrs-low.
str_high = s_bukrs-high.
* move s_budat-low to str_low.
* move s_budat-high to str_high.
IF str_high = ' ' .
MOVE str_low TO str.
ELSE.
CONCATENATE str_low str_high INTO str SEPARATED BY ' To '.
ENDIF.
ENDLOOP.
ENDIF.
ls_line-typ = 'S'.
ls_line-key = 'Company Code'.
ls_line-info = str.
APPEND ls_line TO it_top_of_page.
CLEAR ls_line.
IF NOT s_budat[] IS INITIAL.
LOOP AT s_budat.
ls_line-typ = 'S'.
ls_line-key = 'Posting DATE'. "'text-100.
***********date calculation
CONCATENATE s_budat-low+6(2) '.' s_budat-low+4(2) '.' s_budat-low+0(4) INTO str_low.
CONCATENATE s_budat-high+6(2) '.' s_budat-high+4(2) '.' s_budat-high+0(4) INTO str_high.
IF str_high = '' OR str_high = '00.00.0000'.
MOVE str_low TO str.
ELSE.
CONCATENATE str_low str_high INTO str SEPARATED BY ' To '.
ENDIF.
ENDLOOP.
ls_line-typ = 'S'.
ls_line-key = 'Posting DATE'.
ls_line-info = str.
APPEND ls_line TO it_top_of_page.
CLEAR ls_line.
ENDIF.
ENDFORM. " fill_list_header
*& Form event-build
* text
* -->P_GT_EVENTS[] text
FORM event-build USING lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
MOVE 'TOP_OF_PAGE' TO ls_event-name.
MOVE 'TOP_OF_PAGE' TO ls_event-form.
APPEND ls_event TO lt_events.
CLEAR ls_event.
ENDFORM. " event-build
*& Form top_of_page
* text
* --> p1 text
* <-- p2 text
FORM top_of_page .
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_top_of_page.
ENDFORM. " top_of_page -
Header prob. in ALV report
Hi All,
Hope you all are doing fine!!!
In the below program am trying to print the top-of-page/header in alv report,,but am unable to do it..
Am working on 4.6c version,,,,,its working fine in ECC 6.0 but i really dont understand why its not working in 4.6c...AM JUST PASTING THE ALV PART...!!!
Pls. do the needful
REPORT yjack LINE-SIZE 132
LINE-COUNT 65
NO STANDARD PAGE HEADING.
DATA: /sie/swe_ag0_rdo TYPE /sie/swe_ag0_rdo,
wa_tvko TYPE tvko,
/sie/swe_ag0_raa TYPE /sie/swe_ag0_raa,
wa_kna1 TYPE kna1,
wa_t001 TYPE t001,
wa_tvkot TYPE tvkot,
/sie/swe_ag0_con TYPE /sie/swe_ag0_con,
/sie/swe_ag0_r02 TYPE /sie/swe_ag0_r02.
TYPES: BEGIN OF ty_itab,
bukrs TYPE /sie/swe_ag0_rdo-bukrs,
vkorg TYPE /sie/swe_ag0_rdo-vkorg,
zclpr TYPE /sie/swe_ag0_rdo-zclpr,
zcdaz TYPE /sie/swe_ag0_rdo-zcdaz,
vbeln TYPE /sie/swe_ag0_rdo-vbeln,
posnr TYPE /sie/swe_ag0_rdo-posnr,
vbtyp TYPE /sie/swe_ag0_rdo-vbtyp,
zidag TYPE /sie/swe_ag0_rdo-zidag,
zimpp TYPE /sie/swe_ag0_rdo-zimpp,
zimco TYPE /sie/swe_ag0_rdo-zimco,
zimmg TYPE /sie/swe_ag0_rdo-zimmg,
fkdat TYPE /sie/swe_ag0_rdo-fkdat,
zstre TYPE /sie/swe_ag0_rdo-zstre,
vtweg TYPE /sie/swe_ag0_rdo-vtweg,
kunrg TYPE /sie/swe_ag0_rdo-kunrg,
END OF ty_itab.
TYPES: BEGIN OF ty_itab2,
bukrs TYPE /sie/swe_ag0_rdo-bukrs,
vkorg TYPE /sie/swe_ag0_rdo-vkorg,
zcdaz TYPE /sie/swe_ag0_rdo-zcdaz,
fkdat TYPE /sie/swe_ag0_rdo-fkdat,
vbeln TYPE /sie/swe_ag0_rdo-vbeln,
zimpp TYPE /sie/swe_ag0_rdo-zimpp,
zimco(5) TYPE p DECIMALS 2,
zimmg(5) TYPE p DECIMALS 2,
resid(6) TYPE p DECIMALS 2,
kunrg TYPE /sie/swe_ag0_rdo-kunrg,
name1 TYPE kna1-name1,
END OF ty_itab2.
type-pools: slis.
types: begin of ty_final,
bukrs type char29,
vkorg type char24,
mese type char17,
gjahr type gjahr,
agent type char45,
vbeln type vbeln,
fkdat type fkdat,
zimpp type /SIE/SWE_AG0_ZIMPP,
zimco type /SIE/SWE_AG0_ZIMCO,
zimmg type /SIE/SWE_AG0_ZIMMG,
resid(5) TYPE p DECIMALS 2,
kunrg type kunrg,
name1 type NAME1_GP,
end of ty_final.
data: it_final type table of ty_final,
wa_final type ty_final,
g_bukrs(29) type c,
g_vkorg(24) type c.
data: it_fieldcat type slis_t_fieldcat_alv,
it_layout type slis_layout_alv,
it_list_top_of_page type slis_t_listheader,
it_events type slis_t_event,
wa_events type slis_alv_event,
it_headings type slis_t_listheader,
wa_headings type slis_listheader.
constants: c_h type c value 'H',
c_s type c value 'S'.
field-symbols: <fs_final> type ty_final.
DATA: it_itab TYPE TABLE OF ty_itab,
it_itab2 TYPE TABLE OF ty_itab2,
wa_itab TYPE ty_itab,
wa_itab2 TYPE ty_itab2.
DATA: wa_app TYPE ty_itab.
DATA: w_var TYPE c VALUE '1',
w_com_mese(9) TYPE c,
w_flag_st TYPE c.
$$ Selection-screen
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK parametri WITH FRAME TITLE text-001.
BEG MOD ESX00596 IMS:100276414 TR:SWIK9A04W7 11.04.2007
*PARAMETERS: p_bukrs LIKE /sie/swe_ag0_rdo-bukrs OBLIGATORY.
*PARAMETERS: p_vkorg LIKE /sie/swe_ag0_rdo-vkorg OBLIGATORY.
PARAMETERS: p_bukrs TYPE /sie/swe_ag0_rdo-bukrs OBLIGATORY.
PARAMETERS: p_vkorg TYPE /sie/swe_ag0_rdo-vkorg OBLIGATORY.
SELECT-OPTIONS: s_zcdaz FOR /sie/swe_ag0_rdo-zcdaz OBLIGATORY
MATCHCODE OBJECT /sie/swe_ag0_zaa.
PARAMETERS: mese(2) TYPE n OBLIGATORY,
anno TYPE /sie/swe_ag0_rdo-gjahr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK parametri.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: c1 AS CHECKBOX.
SELECTION-SCREEN COMMENT 8(31) text-006 FOR FIELD c1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK b1.
DATA: w_cd_a TYPE /sie/swe_ag0_rdo-vtweg,
w_cd_gen TYPE /sie/swe_ag0_rdo-vtweg,
w_cd_di TYPE /sie/swe_ag0_rdo-vtweg,
w_cd_re TYPE /sie/swe_ag0_rdo-vtweg,
w_cd_te TYPE /sie/swe_ag0_rdo-vtweg,
w_cd_ca TYPE /sie/swe_ag0_rdo-vtweg.
INITIALIZATION.
PERFORM selezione_hard_coding.
$$ At selection-screen
AT SELECTION-SCREEN.
PERFORM controlli.
$$ Top-of-page
TOP-OF-PAGE.
PERFORM top_of_page.
$$ Start-of-selection
START-OF-SELECTION.
perform build_events.
PERFORM carica_itab.
PERFORM carica_itab2.
PERFORM stampa.
END-OF-SELECTION.
IF C1 EQ 'X'.
perform fill-fieldcatalog.
perform display_alv.
ENDIF.
*& Form fill-fieldcatalog
text
--> p1 text
<-- p2 text
form fill-fieldcatalog.
data: l_fieldcat TYPE slis_fieldcat_alv.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'BUKRS'.
l_fieldcat-col_pos = 1.
l_fieldcat-seltext_l = 'Company'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'VKORG'.
l_fieldcat-col_pos = 2.
l_fieldcat-seltext_l = 'Comm. Organization'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'MESE'.
l_fieldcat-col_pos = 3.
l_fieldcat-seltext_l = 'Month'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'GJAHR'.
l_fieldcat-col_pos = 4.
l_fieldcat-seltext_l = 'Year'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'AGENT'.
l_fieldcat-col_pos = 5.
l_fieldcat-seltext_l = 'AGENT'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'VBELN'.
l_fieldcat-col_pos = 6.
l_fieldcat-seltext_l = 'Invoice'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'FKDAT'.
l_fieldcat-col_pos = 7.
l_fieldcat-seltext_l = 'Date'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'ZIMPP'.
l_fieldcat-col_pos = 8.
l_fieldcat-seltext_l = 'Taxable'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'ZIMCO'.
l_fieldcat-col_pos = 9.
l_fieldcat-seltext_l = 'Tot.Comm.'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'ZIMMG'.
l_fieldcat-col_pos = 10.
l_fieldcat-seltext_l = 'Settle'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'RESID'.
l_fieldcat-col_pos = 11.
l_fieldcat-seltext_l = 'Accruing'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'KUNRG'.
l_fieldcat-col_pos = 12.
l_fieldcat-seltext_l = 'Cust.Code'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
l_fieldcat-tabname = 'IT_FINAL'.
l_fieldcat-fieldname = 'NAME1'.
l_fieldcat-col_pos = 13.
l_fieldcat-seltext_l = 'Company Name'.
APPEND l_fieldcat TO it_fieldcat.
clear l_fieldcat.
endform. " fill-fieldcatalog
*& Form display_alv
text
--> p1 text
<-- p2 text
form display_alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
I_CALLBACK_TOP_OF_PAGE = 'PRINT_HEADING'
IS_LAYOUT = it_layout
IT_FIELDCAT = it_fieldcat
IT_EVENTS = it_events
TABLES
t_outtab = it_final
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endform. " display_alv
*& Form build_events
text
-->P_IT_EVENTS[] text
form build_events.
clear wa_events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = it_events.
read table it_events into wa_events with key name = 'TOP_OF_PAGE'.
if sy-subrc eq 0.
wa_events-form = 'PRINT_HEADING'.
modify it_events from wa_events transporting form
where name = 'TOP_OF_PAGE'.
endif.
endform. " build_events
form PRINT_HEADING.
clear wa_headings.
wa_headings-typ = 'H'.
wa_headings-info = 'DEMO FOR ALV!!!'.
append wa_headings to it_headings.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_headings.
endform.
Thanks n Regards
JackHi friend,
I think u have to remove below lines in your program because FM 'REUSE_ALV_GRID_DISPLAY' will call directly Form 'PRINT_HEADING' for TOP-OF-PAGE event through table 'it_events' :
Remove lines:
TOP-OF-PAGE.
PERFORM top_of_page.
Also remove the parameter
I_CALLBACK_TOP_OF_PAGE = 'PRINT_HEADING' in FM 'REUSE_ALV_GRID_DISPLAY'
Also put a breakpoint in your program in the line,
START-OF-SELECTION.
perform build_events.
See whether 'form' 'name' gets populated in table 'it_events' or not.
See sample report and compare.
REPORT zawi_assign3 NO STANDARD PAGE HEADING.
TYPE-POOLS: slis.
DATA: BEGIN OF gt_outtab OCCURS 0.
INCLUDE STRUCTURE ekpo.
DATA: END OF gt_outtab,
gs_layout TYPE slis_layout_alv,
g_exit_caused_by_caller,
gs_exit_caused_by_user TYPE slis_exit_by_user,
g_repid LIKE sy-repid.
DATA:
gt_events TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader,
g_status_set TYPE slis_formname VALUE 'PF_STATUS_SET',
g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
g_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
g_top_of_list TYPE slis_formname VALUE 'TOP_OF_LIST',
g_end_of_list TYPE slis_formname VALUE 'END_OF_LIST'.
DATA: gs_variant LIKE disvariant,
g_save.
INITIALIZATION.
g_repid = sy-repid.
PERFORM layout_init USING gs_layout.
PERFORM eventtab_build USING gt_events[].
gs_variant-report = g_repid.
g_save = 'X'.
START-OF-SELECTION.
PERFORM select_data TABLES gt_outtab.
END-OF-SELECTION.
PERFORM comment_build USING gt_list_top_of_page[].
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND'
i_buffer_active = 'X'
i_callback_program = g_repid
i_structure_name = 'ekpo'
is_layout = gs_layout
i_save = g_save
is_variant = gs_variant
it_events = gt_events[]
IMPORTING
e_exit_caused_by_caller = g_exit_caused_by_caller
es_exit_caused_by_user = gs_exit_caused_by_user
TABLES
t_outtab = gt_outtab
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc = 0.
IF g_exit_caused_by_caller = 'X'.
ELSE.
IF gs_exit_caused_by_user-back = 'X'.
ELSE.
IF gs_exit_caused_by_user-exit = 'X'.
ELSE.
IF gs_exit_caused_by_user-cancel = 'X'.
ELSE.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
ENDIF.
FORM select_data TABLES rt_outtab LIKE gt_outtab[].
SELECT * FROM ekpo INTO CORRESPONDING FIELDS
OF TABLE rt_outtab
UP TO 00030 ROWS.
ENDFORM. "SELECT_DATA
FORM layout_init USING rs_layout TYPE slis_layout_alv.
rs_layout-detail_popup = 'X'.
rs_layout-edit = 'X'.
ENDFORM. "LAYOUT_INIT
FORM eventtab_build USING rt_events TYPE slis_t_event.
*"Registration of events to happen during list display
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = rt_events.
READ TABLE rt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE g_top_of_page TO ls_event-form.
APPEND ls_event TO rt_events.
ENDIF.
ENDFORM. "EVENTTAB_BUILD
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = gt_list_top_of_page.
ENDFORM. "TOP_OF_PAGE
FORM comment_build USING lt_top_of_page TYPE
slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = text-100.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Program'.
ls_line-info = sy-repid.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'User'.
ls_line-info = sy-uname.
APPEND ls_line TO lt_top_of_page.
ENDFORM. "COMMENT_BUILD
Might solve your problem.
Thanks.
Edited by: Sap Fan on Feb 20, 2009 9:50 AM
Edited by: Sap Fan on Feb 20, 2009 9:52 AM
Edited by: Sap Fan on Feb 20, 2009 9:54 AM
Maybe you are looking for
-
Hi friends, Whenever we post the initial stock, through 561 movement type for some FI documents G/L view and entry view are not being generated, why? And Only inventory accounts are being updated and FI acconts are not updated, Why?
-
Opening my gmail causes safari to crash, no crash report given?
Hi. I have windows 7 x64 professional and safari 5.0.5 (7533.21.1). Everytime I try to login to my gmail email address, safari crashes and no crash report is given. I have tried loading it in different x32 and x64 bit modes, as administrator, and in
-
I can't open ftp url's in safari
safari can't open ftp:// url's such as ... ftp://www.apcmedia.com:21/salestools/STRH-6D5PA3R0EN.pdf i've tried with and without "use passive ftp mode" in network settings / proxies. i always get ... Safari cant open the page ftp://www.apcmedia.com:
-
Turn off screen updating while a DIAdem script is executing.
Hello, Does anyone know what line or lines I would add to a DIAdem script to prevent the screen from updating as the script runs? I have tried UIAutoRefreshSet and the similar commands I found in the help file, but my screen still flickers and flash
-
Benn watching Netflex on iPad for many months without an issue. Even no problems after the latest upgrade in operating system. Suddently errors out. The only message is stopping Airplay mirror which I have never used. Error message indicates that