FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
Hi,
I want to add Header in my ALV report and i used the function module 'REUSE_ALV_COMMENTARY_WRITE' but its not displaying the header in the Output. I used the Coding as:
data :lt_top_of_page type slis_t_listheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = lt_top_of_page
I_LOGO = 'Test ALV Header'
I_END_OF_LIST_GRID =
I_ALV_FORM =
Any Suggestions would be really helpful.
Manoj
HI Manoj
check below code
FORM TOP_OF_PAGE.
DATA: T_HEADER TYPE SLIS_T_LISTHEADER,
WA_HEADER TYPE SLIS_LISTHEADER,
T_LINE LIKE WA_HEADER-INFO,
LD_LINES(10) TYPE C.
*LD_LINESC(10) TYPE C.
REFRESH T_HEADER.
*Title.
WA_HEADER-TYP = 'H'.
WA_HEADER-KEY = ''.
WA_HEADER-INFO = V_REPID.
APPEND WA_HEADER TO T_HEADER.
CLEAR WA_HEADER.
*Date.
WA_HEADER-TYP = 'S'.
WA_HEADER-KEY = 'Date: '.
CONCATENATE SY-DATUM+6(2) '.'
SY-DATUM+4(2) '.'
SY-DATUM(4) INTO WA_HEADER-INFO. "todays date
APPEND WA_HEADER TO T_HEADER.
CLEAR: WA_HEADER.
DESCRIBE TABLE ITAB LINES LD_LINES.
LD_LINESC = LD_LINES.
CONCATENATE 'Total No. of Records Selected: ' LD_LINES
INTO T_LINE SEPARATED BY SPACE.
WA_HEADER-TYP = 'A'.
WA_HEADER-INFO = T_LINE.
APPEND WA_HEADER TO T_HEADER.
CLEAR: WA_HEADER, T_LINE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_HEADER
I_LOGO =
I_END_OF_LIST_GRID =
I_ALV_FORM =
ENDFORM.
here I have made a form for top of page and then passed this form name into grid display as below.
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
in your case your table IT_LIST_COMMENTARY is empty, so you need to fill it like I have filled in my form.
I hope this will work for you.
Thanks
Lalit Gupta
Similar Messages
-
How to use this function call function 'REUSE_ALV_COMMENTARY_WRITE' in alv
hi all
thanks in advance
how to use this function in alv programming
call function 'REUSE_ALV_COMMENTARY_WRITE'
why use and what purpose use this function plz tell me details
plz guide me
thanksHi
see this exmaple code where i had inserted a LOGO by useing this FM
*& Report ZTEST_ALV_LOGO
REPORT ztest_alv_logo.
TYPE-POOLS : slis.
*ALV Formatting tables /structures
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gt_events TYPE slis_t_event.
DATA: gs_layout TYPE slis_layout_alv.
DATA: gt_page TYPE slis_t_listheader.
DATA: gs_page TYPE slis_listheader.
DATA: v_repid LIKE sy-repid.
*ALV Formatting work area
DATA: w_fieldcat TYPE slis_fieldcat_alv.
DATA: w_events TYPE slis_alv_event.
DATA: gt_bsid TYPE TABLE OF bsid WITH HEADER LINE.
INITIALIZATION.
PERFORM build_events.
PERFORM build_page_header.
START-OF-SELECTION.
*perform build_comment. "top_of_page - in initialization at present
SELECT * FROM bsid INTO TABLE gt_bsid UP TO 10 ROWS.
*perform populate_for_fm using '1' '3' 'BUKRS' '8' 'GT_BSID' 'Whee'.
*USING = Row, Column, Field name, display length, table name, heading
*OR
PERFORM build_fieldcat.
gs_layout-zebra = 'X'.
*top of page event does not work without I_callback_program
v_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_structure_name = 'BSID'
i_background_id = 'ALV_BACKGROUND'
i_grid_title = 'This is the grid title'
I_GRID_SETTINGS =
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
it_events = gt_events[]
TABLES
t_outtab = gt_bsid.
Form..............: populate_for_fm
Description.......: Populates fields for function module used in ALV
FORM populate_for_fm USING p_row
p_col
p_fieldname
p_len
p_table
p_desc.
w_fieldcat-row_pos = p_row. "Row Position
w_fieldcat-col_pos = p_col. "Column Position
w_fieldcat-fieldname = p_fieldname. "Field name
w_fieldcat-outputlen = p_len. "Column Lenth
w_fieldcat-tabname = p_table. "Table name
w_fieldcat-reptext_ddic = p_desc. "Field Description
w_fieldcat-input = '1'.
APPEND w_fieldcat TO gt_fieldcat.
CLEAR w_fieldcat.
ENDFORM. " populate_for_fm
*& Form build_events
FORM build_events.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events.
READ TABLE gt_events
WITH KEY name = slis_ev_user_command
INTO ls_event.
IF sy-subrc = 0.
MOVE slis_ev_user_command TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
READ TABLE gt_events
WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE slis_ev_top_of_page TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
ENDFORM. " build_events
*& Form USER_COMMAND
When user command is called it uses 2 parameters. The itab
passed to the ALV is in whatever order it currently is on screen.
Therefore, you can read table itab index rs_selfield-tabindex to get
all data from the table. You can also check r_ucomm and code
accordingly.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
READ TABLE gt_bsid INDEX rs_selfield-tabindex.
error checking etc.
SET PARAMETER ID 'KUN' FIELD gt_bsid-kunnr.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDFORM. "user_command
*& Form top_of_page
Your own company logo can go here if it has been saved (OAOR)
If the logo is larger than the size of the headings in gt_page,
the window will not show full logo and will have a scroll bar. Thus,
it is a good idea to have a standard ALV header if you are going to
use logos in your top of page.
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_page
i_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "top_of_page
*& Form build_fieldcat
*Many and varied fields are available here. Have a look at documentation
*for FM REUSE_ALV_LIST_DISPLAY and REUSE_ALV_FIELDCATALOG_MERGE
FORM build_fieldcat.
w_fieldcat-fieldname = 'BUDAT'.
w_fieldcat-seltext_m = 'Dte pst'.
w_fieldcat-ddictxt(1) = 'M'.
w_fieldcat-edit = 'x'.
Can change the position of fields if you do not want them in order
of the DDIC or itab
w_fieldcat-row_pos = '1'.
w_fieldcat-col_pos = '10'.
APPEND w_fieldcat TO gt_fieldcat.
CLEAR w_fieldcat.
ENDFORM. " build_fieldcat
*& Form build_page_header
gt_page is used in top of page (ALV subroutine - NOT event)
*H = Header, S = Selection, A = Action
FORM build_page_header.
For Headers, Key is not printed and is irrelevant. Will not cause
a syntax error, but is not used.
gs_page-typ = 'H'.
gs_page-info = 'Header 1'.
APPEND gs_page TO gt_page.
gs_page-typ = 'H'.
gs_page-info = 'Header 2'.
APPEND gs_page TO gt_page.
For Selections, the Key is printed (bold). It can be anything up to 20
bytes. It gets printed in order of code here, not by key value.
gs_page-typ = 'S'.
gs_page-key = 'And the winner is:'.
gs_page-info = 'Selection 1'.
APPEND gs_page TO gt_page.
gs_page-typ = 'S'.
gs_page-key = 'Runner up:'.
gs_page-info = 'Selection 2'.
APPEND gs_page TO gt_page.
For Action, Key is also irrelevant.
gs_page-typ = 'A'.
gs_page-info = 'Action goes here'.
APPEND gs_page TO gt_page.
ENDFORM. " build_page_header -
Pls tell me abut this function REUSE_ALV_COMMENTARY_WRITE
hi all,
pls tell me abut this function REUSE_ALV_COMMENTARY_WRITE.
what is exactly does it.
regards
vikas saini.hi,
it is used to display header and footer in ALV...
TYPE-POOLS : slis.
TABLES : mara,
makt,
marc.
DATA : BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
werks LIKE marc-werks,
END OF itab.
DATA : t_fcat TYPE slis_t_fieldcat_alv,
t_eve TYPE slis_t_event,
st_line TYPE slis_listheader,
t_list_top_page TYPE slis_t_listheader,
t_list_end_page TYPE slis_t_listheader.
DATA : t_mat LIKE mara-matnr.
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : mat FOR mara-matnr.
SELECTION-SCREEN : END OF BLOCK blk1.
INITIALIZATION.
PERFORM build_cat USING t_fcat.
PERFORM build_eve.
START-OF-SELECTION.
PERFORM get_data.
PERFORM build_header USING t_list_top_page[].
PERFORM build_footer USING t_list_end_page[].
PERFORM dis_data.
*& Form buils_cat
* text
* -->TEMP_FCAT text
FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
DATA : wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-seltext_m = 'Material Description'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'Plant'.
* wa_fcat-row_pos = 2.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
ENDFORM. "build_cat
*& Form build_eve
* text
FORM build_eve.
DATA : wa_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = t_eve
* EXCEPTIONS
* LIST_TYPE_WRONG = 1
* OTHERS = 2
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE t_eve INTO wa_eve WITH KEY name = 'END_OF_LIST'.
IF sy-subrc = 0.
wa_eve-form = 'END_OF_PAGE'.
MODIFY t_eve FROM wa_eve INDEX sy-tabix.
ENDIF.
ENDFORM. "build_eve
*& Form get_data
* text
FORM get_data.
SELECT mara~matnr makt~maktx marc~werks INTO CORRESPONDING FIELDS OF TABLE itab
FROM mara INNER JOIN makt ON
mara~matnr = makt~matnr
INNER JOIN marc ON
mara~matnr = marc~matnr
WHERE mara~matnr IN mat.
ENDFORM. "get_data
*& Form dis_data
* text
FORM dis_data.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZALV_PRDS'
i_callback_top_of_page = 'TOP_OF_PAGE'
it_fieldcat = t_fcat
i_save = 'A'
it_events = t_eve
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. "dis_data
*& Form build_header
* text
* -->TEMP_LIST text
* -->TTYPE text
* -->SLIS_T_LISTHEADER text
FORM build_header USING temp_list TYPE slis_t_listheader.
CLEAR st_line.
st_line-typ = 'H'.
st_line-info = 'Material Info'.
APPEND st_line TO temp_list.
CLEAR st_line.
st_line-typ = 'S'.
st_line-info = 'Material Info'.
APPEND st_line TO temp_list.
CLEAR st_line.
st_line-typ = 'A'.
st_line-info = 'Material Info'.
APPEND st_line TO temp_list.
ENDFORM. "build_header
*& Form build_footer
* text
* -->TEMP_LIST text
FORM build_footer USING temp_list TYPE slis_t_listheader.
CLEAR st_line.
st_line-typ = 'H'.
st_line-info = 'Dhwani Shah'.
APPEND st_line TO temp_list.
ENDFORM. "build_header
*& Form top_Of_page
* text
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_list_top_page.
ENDFORM. "top_Of_page
*& Form end_of_page
* text
FORM end_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_list_end_page.
ENDFORM. "end_of_page
<REMOVED BY MODERATOR>
Edited by: Alvaro Tejada Galindo on Feb 25, 2008 5:44 PM -
Hi Experts,
I am using 'REUSE_ALV_COMMENTARY_WRITE' to write top of paGe in ALV display.
But it only display blank space in the header.
Any suggestions?
here is the code:
FORM top_of_page. "#EC CALLED
CLEAR : wa_commentary,
it_commentary,
it_commentary[].
MOVE sy-datum TO lv_date.
WRITE lv_date USING EDIT MASK '__.__.____' TO lv_date1.
CONCATENATE text-006 text-010 lv_date1 INTO lv_header_info SEPARATED BY space.
MOVE co_h TO wa_commentary-typ.
MOVE lv_header_info TO wa_commentary-info.
APPEND wa_commentary TO it_commentary.
SHIFT so_matnr-high LEFT DELETING LEADING '0'.
SHIFT so_matnr-low LEFT DELETING LEADING '0'.
IF so_matnr-high NE space.
CONCATENATE text-011 text-010 so_matnr-low text-016 so_matnr-high INTO lv_header_info SEPARATED BY space.
ELSE.
CONCATENATE text-011 text-010 so_matnr-low INTO lv_header_info SEPARATED BY space.
ENDIF.
MOVE co_s TO wa_commentary-typ.
MOVE lv_header_info TO wa_commentary-info.
APPEND wa_commentary TO it_commentary.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_commentary.
ENDFORM. "top_of_page
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
it_fieldcat = it_fieldcat
i_callback_top_of_page = 'TOP_OF_PAGE'
TABLES
t_outtab = it_sapnodiff
EXCEPTIONS
program_error = 1
OTHERS = 2.
Regards
SarojHi,
This should work. Please try
Thanks!
Sandeep
TYPE-POOLS: SLIS.
DATA : TBL_FCAT TYPE SLIS_FIELDCAT_ALV OCCURS 0 WITH HEADER LINE,
TBL_SORTFIELDS TYPE SLIS_T_SORTINFO_ALV,
G_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: FLD_CAT TYPE SLIS_FIELDCAT_ALV.
DATA: T_EVENTS TYPE SLIS_T_EVENT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
IS_LAYOUT = G_LAYOUT
IT_FIELDCAT = TBL_FCAT[]
TABLES
T_OUTTAB = TABLE_REPORT
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 BUILD_EVENT .
DATA: WA_EVENTS LIKE LINE OF T_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = T_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.
ELSE.
READ TABLE T_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO WA_EVENTS.
IF SY-SUBRC = 0.
WA_EVENTS-FORM = 'TOP_OF_PAGE'.
MODIFY T_EVENTS FROM WA_EVENTS INDEX SY-TABIX TRANSPORTING FORM.
ENDIF.
ENDIF.
ENDFORM. " build_event
FORM TOP_OF_PAGE.
DATA: IT_COMMENTARY TYPE SLIS_T_LISTHEADER,
WA_IT_COMMENTARY TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
DATA : L_BDATE(10) TYPE C,
L_EDATE(10) TYPE C.
WA_IT_COMMENTARY-INFO = SY-TITLE.
WA_IT_COMMENTARY-TYP = 'H'.
APPEND WA_IT_COMMENTARY TO IT_COMMENTARY.
CLEAR: L_BDATE, EDATE.
WRITE SY-DATUM TO L_BDATE MM/DD/YYYY.
WRITE SY-UZEIT TO L_EDATE USING EDIT MASK '__:__:__'.
CONDENSE L_EDATE.
CONCATENATE 'System Date/System time'(026) L_BDATE '/' L_EDATE INTO
WA_IT_COMMENTARY-INFO SEPARATED BY SPACE.
WA_IT_COMMENTARY-TYP = 'S'.
APPEND WA_IT_COMMENTARY TO IT_COMMENTARY.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_COMMENTARY.
Edited by: sandeep reddy on Jun 4, 2010 1:06 AM -
Example of a Simple ALV Report using Function Modules (not OO)
Hi,
I am new to ABAP. Where can I get a proper Example of a Simple ALV Report using Function Modules? I searched the forum but did not find a proper solution. Kindly help.
Smruthi.
Edited by: Smruthi Acharya on Jan 29, 2009 7:13 PMHi,
Use this demo code:-
REPORT z_alv01 MESSAGE-ID zmsg.
* TABLES
TABLES : ekpo.
* TYPE POOLS
TYPE-POOLS : slis.
* TYPE DECLARATION
TYPES : BEGIN OF t_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
menge TYPE ekpo-menge,
END OF t_ekpo.
* PARAMETERS
PARAMETERS : s_var TYPE disvariant-variant.
* DATA DECLARATION
*VARIABLES
DATA : check(1),
rep_id TYPE sy-repid.
*INTERNAL TABLE TYPE OF ZEKPO
DATA : it_ekpo TYPE STANDARD TABLE OF t_ekpo WITH HEADER LINE.
*FIELD CATALOG
DATA : it_field TYPE slis_t_fieldcat_alv,
wa_field TYPE slis_fieldcat_alv.
*SORTING
DATA : it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
*FOR TOP OF THE PAGE
DATA : it_top TYPE slis_t_listheader,
wa_top TYPE slis_listheader.
*FOR END OF THE PAGE
DATA : it_end TYPE slis_t_listheader,
wa_end TYPE slis_listheader.
*TO CAPTURE EVENTS AND HANDLE
DATA : it_event TYPE slis_t_event,
wa_event TYPE slis_alv_event.
*FOR GRID TITLE
DATA : wa_title TYPE lvc_title.
*FOR LAYOUT
DATA : wa_layout TYPE slis_layout_alv.
*FOR EXCLUDING STANDARD BUTTON FROM ALV TOOLBAR
DATA : it_exclude TYPE slis_t_extab,
wa_exclude TYPE slis_extab.
*FOR VARIANT
DATA : wa_variant TYPE disvariant.
* INITIALIZATION
INITIALIZATION.
check = 'X'.
rep_id = sy-repid.
wa_variant-report = sy-repid.
*GET DEFUALT ON THE SELECTION SCREEN FOR DEFAULT DISPLAY
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = wa_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc = 0. " IF DEFAULT VARIANT FOUND
s_var = wa_variant-variant. " PASS THE DEFAULT VARIANT TO THE SELECTION SCREEN FIELD
ENDIF.
* AT-SELECTION SCREEN ON VALUE REQUEST
* TO GET THE F4 HELP FOR VARIANT
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = wa_variant
* I_TABNAME_HEADER =
* I_TABNAME_ITEM =
* IT_DEFAULT_FIELDCAT =
i_save = 'A'
* I_DISPLAY_VIA_GRID = ' '
IMPORTING
* E_EXIT =
es_variant = wa_variant
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
s_var = wa_variant-variant. " PASS THE SELECTED VARIANT TO THE SELECTION SCREEN FIELD
ENDIF.
* AT-SELECTION SCREEN
* TO CHECK THE EXISTENCE FOR VARIANT
AT SELECTION-SCREEN.
wa_variant-variant = s_var.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = wa_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE w001.
ENDIF.
* START OF SELECTION
START-OF-SELECTION.
SELECT ebeln
ebelp
matnr
werks
menge
FROM ekpo
INTO TABLE it_ekpo.
* FIELD CATALOG
wa_field-fieldname = 'EBELN'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 10.
wa_field-seltext_l = 'PO #'.
APPEND wa_field TO it_field.
CLEAR wa_field.
wa_field-fieldname = 'EBELP'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 10.
wa_field-seltext_l = 'Line Item'.
APPEND wa_field TO it_field.
CLEAR wa_field.
wa_field-fieldname = 'MATNR'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 15.
wa_field-seltext_l = 'Material'.
* wa_field-input = check.
* wa_field-edit = check.
APPEND wa_field TO it_field.
CLEAR wa_field.
wa_field-fieldname = 'WERKS'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 6.
wa_field-seltext_l = 'Plant'.
* wa_field-input = check.
* wa_field-edit = check.
APPEND wa_field TO it_field.
CLEAR wa_field.
wa_field-fieldname = 'MENGE'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 10.
wa_field-seltext_l = 'Qty.'.
* wa_field-input = check.
* wa_field-edit = check.
wa_field-do_sum = check.
APPEND wa_field TO it_field.
CLEAR wa_field.
* SORT W.R.T. PURCHASE ORDER NUMBER
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELN'.
wa_sort-tabname = 'IT_EKPO'.
wa_sort-up = check.
wa_sort-subtot = check.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
* FOR GRID TITLE
wa_title = 'Hello'.
* FOR LAYOUT
wa_layout-zebra = check.
* FOR EXCLUDING STANDARD BUTTONS FROM ALV TOOLBAR
wa_exclude-fcode = '&OUP'.
APPEND wa_exclude TO it_exclude.
CLEAR wa_exclude.
wa_exclude-fcode = '&ODN'.
APPEND wa_exclude TO it_exclude.
CLEAR wa_exclude.
wa_exclude-fcode = '&OAD'.
APPEND wa_exclude TO it_exclude.
CLEAR wa_exclude.
* wa_exclude-fcode = '&AVE'.
* APPEND wa_exclude TO it_exclude.
* CLEAR wa_exclude.
wa_exclude-fcode = '&INFO'.
APPEND wa_exclude TO it_exclude.
CLEAR wa_exclude.
* POPULATE ALL EVENTS INTO INTERNAL TABLE
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.
READ TABLE it_event INTO wa_event WITH KEY name = 'END_OF_LIST'.
wa_event-form = 'END'.
MODIFY it_event FROM wa_event INDEX sy-tabix.
CLEAR wa_event.
* DISPLAY RECORDS IN ALV GRID
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = rep_id
* i_callback_pf_status_set = 'PF'
i_callback_user_command = 'COMMAND'
i_callback_top_of_page = 'TOP'
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
i_grid_title = wa_title
* I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = it_field
it_excluding = it_exclude
* IT_SPECIAL_GROUPS =
it_sort = it_sort
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'A'
is_variant = wa_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
* 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 = it_ekpo
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
*& Form top
* TO WRITE THE HEADER
FORM top.
REFRESH it_top.
wa_top-typ = 'S'.
wa_top-key = text-001.
wa_top-info = rep_id.
APPEND wa_top TO it_top.
CLEAR wa_top.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_top
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
ENDFORM. "top
*& Form end
* TO WRITE THE FOOTER
FORM end.
REFRESH it_end.
wa_end-typ = 'S'.
wa_end-key = text-001.
wa_end-info = rep_id.
APPEND wa_end TO it_end.
CLEAR wa_end.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_end
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
ENDFORM. "end
*& Form pf
* FOR PF-STATUS WITH USER DEFINED BUTTONS
* -->RT_EXTAB text
FORM pf USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZTG_PF_ALV'.
ENDFORM. "pf
*& Form command
* TO HANDLE USER ACTIONS AGAINST PF-STATUS
* -->UCOMM text
* -->SELFIELD text
FORM command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield.
DATA : ok_code TYPE sy-ucomm.
ok_code = ucomm.
CASE ok_code.
WHEN 'T_DOWN'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'HELLO'
txt1 = 'USER COMMAND'
txt2 = 'TOTAL DOWN'.
WHEN 'DOWN'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'HELLO'
txt1 = 'USER COMMAND'
txt2 = 'DOWN'.
WHEN 'UP'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'HELLO'
txt1 = 'USER COMMAND'
txt2 = 'UP'.
WHEN 'T_UP'.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'HELLO'
txt1 = 'USER COMMAND'
txt2 = 'TOTAL UP'.
ENDCASE.
ENDFORM. "command
Hope this helps you.
Thanks & Regards,
Tarun Gambhir -
Hi,
I am trying to add header to my ALV grid report using the FM REUSE_ALV_COMMENTARY_WRITE'
It is displaying a blank window.
My code is
*& Report YGTSPRODUCT
*& Author : Krishna Chaitanya Nandimandalam
*& Desc : Display Products by Product Characteristics
REPORT YGTSPRODUCT.
*& Structure declarations
type-pools : slis.
TYPES : BEGIN OF TY_CTSNUMC,
GUID_CTSNUMC TYPE /SAPSLL/CTSNUMC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
GUID_MOBJ TYPE /SAPSLL/CTSNUMC-GUID_MOBJ, "Primary Key as GUID in "RAW" Format
STCTS TYPE /SAPSLL/CTSNUMC-STCTS, "Numbering Scheme for Customs Tariff System
CCNGN TYPE /SAPSLL/CTSNUMC-CCNGN, "Number (Generic/Structured)
CRTSP TYPE /SAPSLL/PRGEN-CRTSP, "UTC Time Stamp When Object Was Added
CHTSP TYPE /SAPSLL/PRGEN-CHTSP, "UTC Time Stamp When Object Was Changed
END OF TY_CTSNUMC.
TEST --CREATING ANOTHER STUCTURE TO GET THE COMMON FIELD FOR GUID_PR
TYPES : BEGIN OF TY_PRCTSC,
GUID_PRCTSC TYPE /SAPSLL/PRCTSC-GUID_PRCTSC, "Primary Key as GUID in "RAW" Format
GUID_PR TYPE /SAPSLL/PRCTSC-GUID_PR, "Primary Key as GUID in "RAW" Format
STCTS TYPE /SAPSLL/PRCTSC-STCTS, "Numbering Scheme for Customs Tariff System
GUID_CTSNUMC TYPE /SAPSLL/PRCTSC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
END OF TY_PRCTSC.
TYPES : BEGIN OF TY_PRGEN,
GUID_PRGEN TYPE /SAPSLL/PRGEN-GUID_PRGEN, "Primary Key as GUID in "RAW" Format
GUID_PR TYPE /SAPSLL/PR-GUID_PR, "Primary Key as GUID in "RAW" Format
ATTR20A TYPE /SAPSLL/PRGEN-ATTR20A, "Substance ID
ATTR05A TYPE /SAPSLL/PRGEN-ATTR05A, "Materail Type
ATTR10A TYPE /SAPSLL/PRGEN-ATTR10A, "Materail Group
ATTR05B TYPE /SAPSLL/PRGEN-ATTR05B, "Sub-Family
END OF TY_PRGEN.
TYPES : BEGIN OF TY_PNTPR,
GUID_PR TYPE /SAPSLL/PR-GUID_PR,
PRVSY TYPE /SAPSLL/PNTPR-PRVSY, "R3 MATERIAL NUMBER
GRVSY TYPE /SAPSLL/PNTPR-GRVSY, "LOGICAL SYSTEM GROUP
END OF TY_PNTPR.
*TYPES : D_PSUI TYPE /SAPSLL/PRODUCT_SELECT_UI_S-QUAL_STA. "PRODUCT STATUS
*TYPES : BEGIN OF D_CORSTA,
GUID_MOBJ TYPE /SAPSLL/CORSTA-GUID_MOBJ,
QUAL_STA TYPE /SAPSLL/CORSTA-QUAL_STA,
CHTSP TYPE /SAPSLL/CORSTA-CHTSP,
END OF D_CORSTA.
>PRODUCT STAUS
*DATA : BEGIN OF T_CORSTA OCCURS 0,
GUID_MOBJ TYPE /SAPSLL/CORSTA-GUID_MOBJ,
QUAL_STA TYPE /SAPSLL/CORSTA-QUAL_STA,
END OF T_CORSTA.
TYPES : BEGIN OF TY_PR,
GUID_PR TYPE /SAPSLL/PR-GUID_PR, "Primary Key as GUID in "RAW" Format
CRTSP TYPE /SAPSLL/PR-CRTSP, "PRODUCT CREATED ON
CHTSP TYPE /SAPSLL/PR-CHTSP, "PRODUCT CHANGED ON
END OF TY_PR.
TYPES : BEGIN OF TY_PRT,
GUID_PR TYPE /SAPSLL/PRT-GUID_PR, "Primary Key as GUID in "RAW" Format
PRTXT TYPE /SAPSLL/PRT-PRTXT, "Materail description
END OF TY_PRT.
TYPES : BEGIN OF TY_FINAL,
*T_PRCTSC
GUID_PRCTSC TYPE /SAPSLL/PRCTSC-GUID_PRCTSC, "Primary Key as GUID in "RAW" Format
GUID_PR TYPE /SAPSLL/PRCTSC-GUID_PR, "Primary Key as GUID in "RAW" Format
STCTS TYPE /SAPSLL/PRCTSC-STCTS, "Numbering Scheme for Customs Tariff System
GUID_CTSNUMC TYPE /SAPSLL/PRCTSC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
*T_CTSNUMC
GUID_CTSNUMC TYPE /SAPSLL/CTSNUMC-GUID_CTSNUMC, "Primary Key as GUID in "RAW" Format
GUID_MOBJ TYPE /SAPSLL/CTSNUMC-GUID_MOBJ, "Primary Key as GUID in "RAW" Format
STCTS TYPE /SAPSLL/CTSNUMC-STCTS, "Numbering Scheme for Customs Tariff System
CCNGN TYPE /SAPSLL/CTSNUMC-CCNGN, "Number (Generic/Structured)
CRTSP TYPE /SAPSLL/PRGEN-CRTSP, "UTC Time Stamp When Object Was Added
CHTSP TYPE /SAPSLL/PRGEN-CHTSP, "UTC Time Stamp When Object Was Changed
*T_PRGEN
GUID_PRGEN TYPE /SAPSLL/PRGEN-GUID_PRGEN, "Primary Key as GUID in "RAW" Format
GUID_PR TYPE /SAPSLL/PR-GUID_PR, "Primary Key as GUID in "RAW" Format
ATTR20A TYPE /SAPSLL/PRGEN-ATTR20A, "Substance ID
ATTR05A TYPE /SAPSLL/PRGEN-ATTR05A, "Materail Type
ATTR10A TYPE /SAPSLL/PRGEN-ATTR10A, "Materail Group
ATTR05B TYPE /SAPSLL/PRGEN-ATTR05B, "Sub-Family
*T_PNTPR
GUID_PR TYPE /SAPSLL/PR-GUID_PR, "Primary Key as GUID in "RAW" Format
PRVSY TYPE /SAPSLL/PNTPR-PRVSY, "R3 MATERIAL NUMBER
GRVSY TYPE /SAPSLL/PNTPR-GRVSY, "LOGICAL SYSTEM GROUP
T_PR
GUID_PR TYPE /SAPSLL/PR-GUID_PR, "Primary Key as GUID in "RAW" Format
CRTSP TYPE /SAPSLL/PR-CRTSP, "PRODUCT CREATED ON
CHTSP TYPE /SAPSLL/PR-CHTSP, "PRODUCT CHANGED ON
*T_PRT
GUID_PR TYPE /SAPSLL/PRT-GUID_PR, "Primary Key as GUID in "RAW" Format
PRTXT TYPE /SAPSLL/PRT-PRTXT, "Materail description
END OF TY_FINAL.
*& INTERNAL TABLE AND WORK AREA DECLARATIONS
DATA :
T_CTSNUMC TYPE STANDARD TABLE OF TY_CTSNUMC INITIAL SIZE 0,
T_PRCTSC TYPE STANDARD TABLE OF TY_PRCTSC INITIAL SIZE 0, "TEST INCLUDED NEW STRUCTURE TO GET GUID_PR
T_PRGEN TYPE STANDARD TABLE OF TY_PRGEN INITIAL SIZE 0,
T_PNTPR TYPE STANDARD TABLE OF TY_PNTPR INITIAL SIZE 0,
T_PR TYPE STANDARD TABLE OF TY_PR INITIAL SIZE 0,
T_PRT TYPE STANDARD TABLE OF TY_PRT INITIAL SIZE 0,
T_CORSTA TYPE STANDARD TABLE OF D_CORSTA INITIAL SIZE 0,
T_FINAL TYPE STANDARD TABLE OF TY_FINAL INITIAL SIZE 0.
DATA :
WA_CTSNUMC TYPE TY_CTSNUMC,
WA_PRCTSC TYPE TY_PRCTSC, "TEST INCLUDED NEW STRUCTURE TO GET GUID_PR
WA_PRGEN TYPE TY_PRGEN,
WA_PNTPR TYPE TY_PNTPR,
WA_PR TYPE TY_PR,
WA_PRT TYPE TY_PRT,
WA_CORSTA TYPE D_CORSTA,
WA_FINAL TYPE TY_FINAL.
*& ALV DATA DECLARATIONS
DATA : lt_fieldcat TYPE slis_t_fieldcat_alv,
lw_fieldcat LIKE LINE OF lt_fieldcat,
lt_fieldcat1 TYPE slis_t_fieldcat_alv,
lw_fieldcat1 LIKE LINE OF lt_fieldcat,
lt_listheader TYPE slis_t_listheader,
lw_listheader LIKE LINE OF lt_listheader, lt_events TYPE slis_t_event,
lw_events LIKE LINE OF lt_events.
*& DATA DECLARATIONS FOR SELECTION SCREEN
DATA : G_STCTS TYPE /SAPSLL/CTSNUMC-STCTS, "NUMBER SCHEME
G_ATTR20A TYPE /SAPSLL/PRGEN-ATTR20A, "SUBSTANCE ID
G_PRVSY TYPE /SAPSLL/PNTPR-PRVSY, "R3 MATERIAL NUMBER
G_GRVSY TYPE /SAPSLL/PNTPR-GRVSY, "LOGICAL SYS GROUP
G_QSTA TYPE /SAPSLL/PRODUCT_SELECT_UI_S-QUAL_STA, "PRODUCT STATUS
G_CORSTA TYPE /SAPSLL/CORSTA-QUAL_STA, "PRODUCT STATUS
G_CRTSP TYPE /SAPSLL/PR-CRTSP, "PRODUCT CREATED ON
G_CHSTP TYPE /SAPSLL/PR-CHTSP. "PRODUCT CHANGED ON
*& SELECTION-SCREEN DECLARATIONS
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_STCTS FOR G_STCTS OBLIGATORY, "NUMBER SCHEME
S_AT20A FOR G_ATTR20A, "SUBSTANCE ID
S_PRVSY FOR G_PRVSY, "R3 MATERIAL NUMBER
S_GRVSY FOR G_GRVSY, "LOGICAL SYS GROUP
S_QSTA FOR G_QSTA, "PRODUCT STATUS
S_CORSTA FOR G_CORSTA, "PRODUCT STATUS
S_CRTSP FOR G_CRTSP, "PRODUCT CREATED ON
S_CHSTP FOR G_CHSTP. "PRODUCT CHANGED ON
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME. " TITLE. " TEXT-002.
PARAMETERS : BOTH RADIOBUTTON GROUP RG1,
EXICLASS RADIOBUTTON GROUP RG1.
SELECTION-SCREEN END OF BLOCK B2.
*& INITIALIZATION
INITIALIZATION .
CLEAR : WA_CTSNUMC,
WA_PRCTSC,
WA_PRGEN,
WA_PNTPR,
WA_PR,
WA_PRT,
WA_FINAL.
REFRESH : T_CTSNUMC,
T_PRCTSC,
T_PRGEN,
T_PNTPR,
T_PR,
T_PRT,
T_FINAL.
*& START OF SELECTION
START-OF-SELECTION.
LW_EVENTS-NAME = 'TOP_OF_PAGE' .
LW_EVENTS-FORM = 'SUB' .
APPEND LW_EVENTS TO LT_EVENTS . PERFORM LIST_HEADER.
IF BOTH EQ 'X'.
PERFORM VALIDATE_NSCHEME.
PERFORM GET_DATA.
PERFORM BUILD_FIELDCAT.
PERFORM LIST_HEADER.
PERFORM f_events CHANGING lt_events.
PERFORM DISP_ALV_DATA.
ENDIF.
*& Form VALIDATE_NSCHEME
*& VALIDATE NUMBER SCHEME
FORM VALIDATE_NSCHEME .
DATA : L_STCTS TYPE /SAPSLL/CTSNUMC-STCTS.
SELECT SINGLE STCTS FROM /SAPSLL/CTSNUMC INTO L_STCTS
WHERE STCTS IN S_STCTS .
IF SY-SUBRC <> 0.
MESSAGE 'Invalid Numbering Scheme for Customs Tariff System'
TYPE 'E'.
ENDIF .
ENDFORM. " VALIDATE_NSCHEME
*& Form GET_DATA
GET DATA INTO FINAL TABLE
FORM GET_DATA .
SELECT GUID_CTSNUMC "Primary Key as GUID in "RAW" Format
GUID_MOBJ "Primary Key of Main Object
STCTS "Numbering Scheme for Customs Tariff System
CCNGN "Number (Generic/Structured)
CRTSP "UTC Time Stamp When Object Was Added
CHTSP "UTC Time Stamp When Object Was Changed
FROM /SAPSLL/CTSNUMC
INTO TABLE T_CTSNUMC
WHERE STCTS IN S_STCTS.
*DELETE ADJACENT DUPLICATES FROM T_CTSNUMC COMPARING GUID_CTSNUMC.
IF T_CTSNUMC IS NOT INITIAL.
GET GUID_PR FOR THE CORRESPONDING GUID_CTSNUMC
SELECT GUID_PRCTSC "Primary Key as GUID in "RAW" Format
GUID_PR "Primary Key as GUID in "RAW" Format
STCTS "Numbering Scheme for Customs Tariff System
GUID_CTSNUMC "Primary Key as GUID in "RAW" Format
FROM /SAPSLL/PRCTSC
INTO TABLE T_PRCTSC
for all entries in t_ctsnumc
WHERE GUID_CTSNUMC EQ T_CTSNUMC-GUID_CTSNUMC.
IF T_PRCTSC IS NOT INITIAL.
GET FIELDS FROM PRGEN BASED ON THE GUID_PR
SELECT GUID_PRGEN "Primary Key as GUID in "RAW" Format
GUID_PR "Primary Key as GUID in "RAW" Format
ATTR20A "SUBSTANCE ID
ATTR05A "Materail Type
ATTR10A "Materail Group
ATTR05B "Sub-Family
FROM /SAPSLL/PRGEN
INTO TABLE T_PRGEN
FOR ALL ENTRIES IN T_PRCTSC
WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
DELETE ADJACENT DUPLICATES FROM T_PRGEN COMPARING GUID_PR.
GET FIELDS FROM PNTPR BASED ON THE GUID_PR
SELECT GUID_PR "Primary Key as GUID in "RAW" Format
PRVSY "R3 MATERIAL NUMBER
GRVSY "LOGICAL SYSTEM GROUP
FROM /SAPSLL/PNTPR
INTO TABLE T_PNTPR
FOR ALL ENTRIES IN T_PRCTSC
WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
*DELETE ADJACENT DUPLICATES FROM T_PRGEN COMPARING GUID_PR.
GET CORSTA-QUAL_STA FOR STATUS CATEGORY BESED ON THE T_CTSNUMC-GUID_MOBJ
*SELECT GUID_MOBJ
QUAL_STA
FROM /SAPSLL/CORSTA
INTO TABLE T_CORSTA
FOR ALL ENTRIES IN T_CTSNUMC
WHERE GUID_MOBJ EQ T_CTSNUMC-GUID_MOBJ.
MISSING FIELD >>>>>>>PRODUCT STATUS
GET CRSTP CHSTP FROM PR BASED ON GUID_PR
SELECT GUID_PR "Primary Key as GUID in "RAW" Format
CRTSP "PRODUCT CREATED ON
CHTSP "PRODUCT CHANGED ON
FROM /SAPSLL/PR
INTO TABLE T_PR
FOR ALL ENTRIES IN T_PRCTSC
WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
*DELETE ADJACENT DUPLICATES FROM T_PR COMPARING GUID_PR.
GET PRTXT FROM PRT BASED ON GUID_PR
SELECT GUID_PR "Primary Key as GUID in "RAW" Format
PRTXT "MATERIAL DESCRIPTION
FROM /SAPSLL/PRT
INTO TABLE T_PRT
FOR ALL ENTRIES IN T_PRCTSC
WHERE GUID_PR EQ T_PRCTSC-GUID_PR.
*DELETE ADJACENT DUPLICATES FROM T_PRT COMPARING GUID_PR.
ENDIF.
ENDIF.
FILLING DATA INTO T_FINAL
REFRESH T_FINAL.
LOOP AT T_PRCTSC INTO WA_PRCTSC.
WA_FINAL-GUID_PRCTSC = WA_PRCTSC-GUID_PRCTSC.
WA_FINAL-GUID_PR = WA_PRCTSC-GUID_PR.
WA_FINAL-STCTS = WA_PRCTSC-STCTS.
WA_FINAL-GUID_CTSNUMC = WA_PRCTSC-GUID_CTSNUMC.
READ TABLE T_CTSNUMC INTO WA_CTSNUMC WITH KEY GUID_CTSNUMC = WA_PRCTSC-GUID_CTSNUMC.
IF SY-SUBRC = 0.
WA_FINAL-GUID_CTSNUMC = WA_CTSNUMC-GUID_CTSNUMC.
WA_FINAL-GUID_MOBJ = WA_CTSNUMC-GUID_MOBJ.
WA_FINAL-STCTS = WA_CTSNUMC-STCTS.
WA_FINAL-CCNGN = WA_CTSNUMC-CCNGN.
WA_FINAL-CRTSP = WA_CTSNUMC-CRTSP.
WA_FINAL-CHTSP = WA_CTSNUMC-CHTSP.
ENDIF.
READ TABLE T_PRGEN INTO WA_PRGEN WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
IF SY-SUBRC = 0.
WA_FINAL-GUID_PRGEN = WA_PRGEN-GUID_PRGEN.
WA_FINAL-GUID_PR = WA_PRGEN-GUID_PR.
WA_FINAL-ATTR20A = WA_PRGEN-ATTR20A.
WA_FINAL-ATTR05A = WA_PRGEN-ATTR05A.
WA_FINAL-ATTR10A = WA_PRGEN-ATTR10A.
WA_FINAL-ATTR05B = WA_PRGEN-ATTR05B.
ENDIF.
READ TABLE T_PNTPR INTO WA_PNTPR WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
IF SY-SUBRC = 0.
WA_FINAL-GUID_PR = WA_PNTPR-GUID_PR.
WA_FINAL-PRVSY = WA_PNTPR-PRVSY.
WA_FINAL-GRVSY = WA_PNTPR-GRVSY.
ENDIF.
READ TABLE T_PR INTO WA_PR WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
IF SY-SUBRC = 0.
WA_FINAL-GUID_PR = WA_PR-GUID_PR.
WA_FINAL-CRTSP = WA_PR-CRTSP.
WA_FINAL-CHTSP = WA_PR-CHTSP.
ENDIF.
READ TABLE T_PRT INTO WA_PRT WITH KEY GUID_PR = WA_PRCTSC-GUID_PR.
IF SY-SUBRC = 0.
WA_FINAL-GUID_PR = WA_PRT-GUID_PR.
WA_FINAL-PRTXT = WA_PRT-PRTXT.
ENDIF.
APPEND WA_FINAL TO T_FINAL.
DELETE ADJACENT DUPLICATES FROM T_FINAL COMPARING ATTR20A.
CLEAR WA_FINAL.
ENDLOOP.
ENDFORM. " GET_D
*& Form BUILD_FIELDCAT
text
--> p1 text
<-- p2 text
FORM BUILD_FIELDCAT .
REFRESH LT_FIELDCAT.
lw_fieldcat-col_pos = 1.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'ATTR20A'.
lw_fieldcat-seltext_m = 'SUBSTANCE ID'.
lw_fieldcat-outputlen = '15'.
lw_fieldcat-FIX_COLUMN = 'X'.
lw_fieldcat-KEY = 'X'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 2.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'PRVSY'.
lw_fieldcat-seltext_m = 'R3 MAT NBR'.
lw_fieldcat-outputlen = '14'.
lw_fieldcat-FIX_COLUMN = 'X'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 3.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'PRTXT'.
lw_fieldcat-seltext_m = 'MAT DESCRIPTION'.
lw_fieldcat-outputlen = '19'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 4.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'GRVSY'.
lw_fieldcat-seltext_m = 'LOGICAL SYS GRP'.
lw_fieldcat-outputlen = '21'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 5.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'QUAL_STA'.
lw_fieldcat-seltext_m = 'PRODUCT STATUS'.
lw_fieldcat-outputlen = 'x'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 6.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'CRTSP'.
lw_fieldcat-seltext_m = 'PRODUCT CREATED ON'.
lw_fieldcat-outputlen = '21'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 7.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'CHTSP'.
lw_fieldcat-seltext_m = 'PRODUCT CHANGED ON'.
lw_fieldcat-outputlen = '21'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 8.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'ATTR05A'.
lw_fieldcat-seltext_m = 'MATERIAL TYPE'.
lw_fieldcat-outputlen = '18'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 9.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'ATTR10A'.
lw_fieldcat-seltext_m = 'MATERIAL GRP'.
lw_fieldcat-outputlen = '18'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 10.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'ATTR05B'.
lw_fieldcat-seltext_m = 'SUB-FAMILY'.
lw_fieldcat-outputlen = '18'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 11.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'CCNGN'.
lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 12.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'CCNGN'.
lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
APPEND lw_fieldcat TO lt_fieldcat.
lw_fieldcat-col_pos = 13.
lw_fieldcat-tabname = 'T_FINAL'.
lw_fieldcat-fieldname = 'CCNGN'.
lw_fieldcat-seltext_m = 'SUBID CLASSIFICATION'.
APPEND lw_fieldcat TO lt_fieldcat.
CLEAR LW_FIELDCAT.
ENDFORM. " BUILD_FIELDCAT
*& Form LIST_HEADER
text
--> p1 text
<-- p2 text
FORM LIST_HEADER .
DATA : LT_LISTHEADER TYPE slis_t_listheader,
LW_LISTHEADER LIKE LINE OF lt_listheader.
LW_LISTHEADER-TYP = 'H'.
LW_LISTHEADER-INFO = 'DISPLAY PRODUCTS BY PRODUCT CHARACTERISTIC'.
APPEND LW_LISTHEADER TO LT_LISTHEADER.
LW_LISTHEADER-TYP = 'S' .
LW_LISTHEADER-KEY = 'TIME' .
LW_LISTHEADER-INFO = SY-UZEIT .
APPEND LW_LISTHEADER TO LT_LISTHEADER.
LW_LISTHEADER-TYP = 'S' .
LW_LISTHEADER-KEY = 'DATE' .
LW_LISTHEADER-INFO = SY-DATUM .
APPEND LW_LISTHEADER TO LT_LISTHEADER.
LW_LISTHEADER-TYP = 'S' .
LW_LISTHEADER-KEY = 'CLIENT' .
LW_LISTHEADER-INFO = SY-MANDT .
APPEND LW_LISTHEADER TO LT_LISTHEADER.
ENDFORM. " LIST_HEADER
*& Form DISP_ALV_DATA
text
--> p1 text
<-- p2 text
FORM DISP_ALV_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'I_REPID'
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE1'
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'GTS Substance- Product Classification Report'.
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = LT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = LT_EVENTS
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = T_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. " DISP_ALV_DATA
FORM SUB.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LT_LISTHEADER.
I_LOGO =*
I_END_OF_LIST_GRID =*
I_ALV_FORM =*
ENDFORM.
Any suggestions and help will be appreciated!
Regards,
KittuHi Ram,
When I had put a Break point on the FM Reuse_alv_grid_display
The parameter IT_EVENTS is not getting populated and it is not calling the FORM SUB.
But LT_EVENTS is holding the data 'TOP_OF_PAGE' and the form name as SUB.
FORM DISP_ALV_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'I_REPID'
I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE1'
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE = 'GTS Substance- Product Classification Report'.
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT = LT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = LT_EVENTS
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = T_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. " DISP_ALV_DATA
FORM SUB.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LT_LISTHEADER.
I_LOGO =
I_END_OF_LIST_GRID =
I_ALV_FORM =
ENDFORM.
Any suggestions will be apprectiated.
Regards,
Kittu -
How do I insert a logo in ALV using Function Modules?
hai !
i want to display the logo on the grid .
can any one suggest me which function i should use?
any help will be appreciated.Hi,
Look at the sample code to display LOGO.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = i_repid
i_callback_user_command = 'USER_COMMAND_PERNR'
it_fieldcat = header
is_layout = gt_layout
i_callback_top_of_page = 'TOP-OF-PAGE1'
i_grid_title = xyz
it_sort = gt_sort[]
i_default = 'X'
i_save = 'U'
is_variant = gt_variant
it_events = gt_events
tables
t_outtab = t_output.
clear t_output.
Form TOP-OF-PAGE1
form top-of-page1.
data: header type slis_t_listheader,
wa type slis_listheader. "infield like wa-info, nline type n.
TITLE AREA
wa-typ = 'S'.
wa-info = text-h04.
append wa to header.
wa-typ = 'S'.
write sy-datum to wa-info mm/dd/yyyy.
concatenate text-h03 wa-info into wa-info separated by space.
append wa to header.
wa-typ = 'S'.
concatenate text-h02 sy-uname into wa-info separated by space.
append wa to header.
wa-typ = 'S'.
concatenate text-h01 sy-repid into wa-info separated by space.
append wa to header.
********" LOGO
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = header
i_logo = 'ENJOYSAP_LOGO'.
*********" LOGO
endform.
Here in TOP-OF-PAGE form it will show you the Prog name,Date, User Name.
Just you need to give the text in it.
You can refer the below link also.
http://www.sapdevelopment.co.uk/reporting/alv/alvgrid.htm
Thanks.
If this helps you reward with points.
Message was edited by: KDeepak -
Partner function update using CRM_PARTNER_MAINTAIN_SINGLE_OW
Hi Experts,
Can some one pls help me with some working code/sample to update a partner function value in CRM Order. I tried the below code but it doesnt seems to be working.
Appreciate your help on this.
call function 'CRM_ORDER_READ'
exporting
it_header_guid = lt_guid
iv_mode = 'C'
importing
et_orderadm_h = it_orderadm_h
et_sales = it_sales
et_orderadm_i = it_orderadm_i
et_orgman = it_orgman
et_shipping = it_shipping
et_partner = it_partner
exceptions
document_not_found = 1
error_occurred = 2
document_locked = 3
no_change_authority = 4
no_display_authority = 5
no_change_allowed = 6
others = 7.
if sy-subrc <> 0.
Implement suitable error handling here
endif.
clear wa_orderadm_h.
read table it_orderadm_h into wa_orderadm_h index 1.
lv_ref_guid = it_orderadm_h-guid.
call function 'CRM_PARTNER_GET_CONTROL_INF_OW'
exporting
iv_ref_guid = wa_orderadm_h-guid
iv_ref_kind = 'A'
importing
es_partner_control = ls_partner_control
exceptions
determination_failed = 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.
move-corresponding ls_partner_control to es_partner_control.
Common fields for both create and change *****
import lv_qplant to lv_werks2 from memory id 'QUOTA_PLANT'.
select single partner_no
from crmm_locmap
into w_partner
where ext_locno = lv_werks2. "wa_quota_so_items_return-werks2.
Partner_com parameter
ls_partner_com-ref_guid = wa_orderadm_h-guid.
ls_partner_com-ref_kind = 'A'.
ls_partner_com-partner_no = w_partner.
ls_partner_com-display_type = 'BP'.
ls_partner_com-no_type = 'BP'.
Find whether create or change is required
read table gt_partner into wa_partner with key partner_fct = '00000035' ref_kind ='A'.
if sy-subrc eq 0.
ls_partner_com-kind_of_entry = 'C'.
ls_partner_com-partner_fct = '00000035'.
ls_ip_fields-fieldname = 'DISPLAY_TYPE'.
append ls_ip_fields to lt_ip_fields.
ls_ip_fields-fieldname = 'KIND_OF_ENTRY'.
append ls_ip_fields to lt_ip_fields.
ls_ip_fields-fieldname = 'NO_TYPE'.
append ls_ip_fields to lt_ip_fields.
ls_ip_fields-fieldname = 'PARTNER_FCT'.
append ls_ip_fields to lt_ip_fields.
ls_ip_fields-fieldname = 'PARTNER_NO'.
append ls_ip_fields to lt_ip_fields.
call function 'CRM_PARTNER_MAINTAIN_SINGLE_OW'
exporting
iv_ref_guid = wa_orderadm_h-guid
iv_ref_kind = 'A'
is_partner_com = ls_partner_com
iv_populate_mode = 'X'
iv_check_partner_only = ' '
is_partner_control = es_partner_control
iv_external_call = 'X'
changing
ct_input_field_names = lt_ip_fields
exceptions
error_occurred = 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.Reply to an old post but still can be helpful to someone in need
*& Report ZUPDATE_TRANSACTION_PF
REPORT zupdate_transaction_pf.
*======================================================================*
* Variable declaration for ALV *
*======================================================================*
TYPE-POOLS: slis. " Type pool required for ALV
TYPES: BEGIN OF gs_output,
extid TYPE ib_extid,
prodid TYPE comt_product_id,
msg_type TYPE bapi_mtype,
message TYPE bapi_msg,
layout TYPE slis_t_specialcol_alv,
END OF gs_output.
DATA: gt_output TYPE TABLE OF gs_output,
gs_output TYPE gs_output,
gt_fieldcat TYPE slis_t_fieldcat_alv,
gt_color_green TYPE slis_t_specialcol_alv,
gt_color_red TYPE slis_t_specialcol_alv,
gt_color_yellow TYPE slis_t_specialcol_alv,
gt_layout TYPE slis_layout_alv,
lt_header_guid TYPE crmt_object_guid_tab,
ls_header_guid TYPE crmt_object_guid,
lt_partner TYPE crmt_partner_external_wrkt,
ls_partner TYPE crmt_partner_external_wrk,
lt_guid TYPE crmt_object_guid_tab,
lt_guid_single TYPE crmt_object_guid_tab,
lt_req_obj TYPE crmt_object_name_tab,
ls_req_obj TYPE crmt_object_name,
lt_partner_update TYPE crmt_partner_comt,
lt_partner_com TYPE crmt_partner_comt,
ls_partner_com TYPE crmt_partner_com,
lt_input_fields TYPE crmt_input_field_names_tab,
ls_input_fields TYPE crmt_input_field_names,
lv_partner_fct TYPE crmt_partner_fct,
lv_partner_no TYPE bu_partner,
lv_trans_no TYPE crmt_object_id_db,
lt_return TYPE STANDARD TABLE OF ddshretval,
ls_return LIKE LINE OF lt_return,
lv_guid TYPE crmt_object_guid.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE block1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (36) forpf.
PARAMETERS: p_pf TYPE comt_partner_fct OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (36) frombp.
PARAMETERS: p_frombp TYPE but000-partner OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (36) tobp.
PARAMETERS: p_tobp TYPE but000-partner OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (36) fortrans.
SELECT-OPTIONS: p_trans FOR lv_trans_no MATCHCODE OBJECT crm_order_object_id.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE block2.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (36) fortest.
PARAMETERS: p_test AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.
INITIALIZATION.
fortrans = 'Transaction Number'.
forpf = 'Partner Function'.
frombp = 'From Business Partner'.
tobp = 'To Business Partner'.
fortest = 'Test Run, Check Only'.
*======================================================================*
* AT SELECTION-SCREEN *
*======================================================================*
AT SELECTION-SCREEN.
FIELD-SYMBOLS:
<sscrfields> TYPE sscrfields.
DATA:
lv_answer TYPE char1,
lt_options TYPE TABLE OF rfc_db_opt,
lt_fields TYPE TABLE OF rfc_db_fld,
lt_func_det TYPE TABLE OF tab512.
CHECK sy-ucomm EQ 'ONLI'.
AT SELECTION-SCREEN ON p_trans.
CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm EQ 'SJOB'.
IF p_trans IS INITIAL.
MESSAGE e398(00) WITH 'Please enter the transaction numbers'.
ENDIF.
AT SELECTION-SCREEN ON p_pf.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pf.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname = 'CRMC_PARTNER_FT'
fieldname = 'PARTNER_FCT'
TABLES
return_tab = lt_return[]
EXCEPTIONS
field_not_found = 1
no_help_for_field = 2
inconsistent_help = 3
no_values_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF lt_return[] IS NOT INITIAL.
READ TABLE lt_return[] INTO ls_return INDEX 1.
p_pf = ls_return-fieldval.
ENDIF.
CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm EQ 'SJOB'.
IF p_pf IS INITIAL.
MESSAGE e398(00) WITH 'Please enter the partner function'.
ENDIF.
AT SELECTION-SCREEN ON p_frombp.
CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm EQ 'SJOB'.
IF p_frombp IS INITIAL.
MESSAGE e398(00) WITH 'Please enter the business partner id to be changed'.
ENDIF.
AT SELECTION-SCREEN ON p_tobp.
CHECK sy-ucomm EQ 'ONLI' OR sy-ucomm EQ 'SJOB'.
IF p_tobp IS INITIAL.
MESSAGE e398(00) WITH 'Please enter the new business partner id'.
ENDIF.
*======================================================================*
* START-OF-SELECTION *
*======================================================================*
START-OF-SELECTION.
PERFORM init_alv_col_color.
PERFORM update_transactions.
END-OF-SELECTION.
PERFORM create_report.
*& Form create_fieldcat
* text
FORM create_fieldcat.
PERFORM add_fld USING: 'EXTID' 'Order ID' '20' 1,
'PRODID' 'Product ID' '20' 2,
'MSG_TYPE' 'MSG Type' '8' 9,
'MESSAGE' 'Message Description' '100' 10.
ENDFORM. "CREATE_FIELDCAT
*& Form add_fld
* text
* -->P_FIELDNAME text
* -->P_SELTEXT_M text
* -->P_OUTPUTLEN text
* -->P_COL_POS text
FORM add_fld USING p_fieldname
p_seltext_m
p_outputlen
p_col_pos.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = p_fieldname.
ls_fieldcat-ref_fieldname = p_fieldname.
ls_fieldcat-seltext_m = p_seltext_m.
ls_fieldcat-outputlen = p_outputlen.
ls_fieldcat-col_pos = p_col_pos.
APPEND ls_fieldcat TO gt_fieldcat.
ENDFORM. "add_fld
*& Form create_report
* text
FORM create_report.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
text = 'Creating output ...'.
* Get the field headers into an internal table
PERFORM create_fieldcat.
gt_layout-coltab_fieldname = 'LAYOUT'.
gt_layout-colwidth_optimize = 'X'.
gt_layout-zebra = ' '.
* Call ABAP/4 Grid Viewer
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_top_of_page = 'TOP-OF-PAGE'
i_callback_program = sy-repid
it_fieldcat = gt_fieldcat[]
is_layout = gt_layout
TABLES
t_outtab = gt_output " it_sort = gt_sort
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. " create_report
*& Form init_alv_col_color
* text
FORM init_alv_col_color.
* Red ALV column
PERFORM add_field_color USING gt_color_red 'MSG_TYPE' '6' '1' '1'.
PERFORM add_field_color USING gt_color_red 'MESSAGE' '6' '1' '1'.
* Green ALV column
PERFORM add_field_color USING gt_color_green 'MSG_TYPE' '5' '1' '1'.
PERFORM add_field_color USING gt_color_green 'MESSAGE' '5' '1' '1'.
* Yellow ALV column
PERFORM add_field_color USING gt_color_yellow 'MSG_TYPE' '3' '1' '1'.
PERFORM add_field_color USING gt_color_yellow 'MESSAGE' '3' '1' '1'.
ENDFORM. "init_alv_col_color
*& Form add_field_color
* text
* -->PT_COLOR text
* -->FIELDNAME text
* -->COL text
* -->INT text
* -->INV text
FORM add_field_color USING pt_color TYPE slis_t_specialcol_alv
fieldname col int inv.
DATA: ls_color TYPE slis_specialcol_alv.
ls_color-fieldname = fieldname.
ls_color-color-col = col.
ls_color-color-int = int.
ls_color-color-inv = inv.
APPEND ls_color TO pt_color.
ENDFORM. "add_field_color
* Form TOP-OF-PAGE *
* ALV Report Header *
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 = 'Data Migration'.
APPEND wa_header TO t_header.
CLEAR wa_header.
* Date
wa_header-typ = 'S'.
wa_header-key = 'Date: '.
CONCATENATE sy-datum+6(2) '.'
sy-datum+4(2) '.'
sy-datum(4) INTO wa_header-info. "todays date
APPEND wa_header TO t_header.
CLEAR: wa_header.
* Time
wa_header-typ = 'S'.
wa_header-key = 'Time: '.
CONCATENATE sy-uzeit(2) ':'
sy-uzeit+2(2) ':'
sy-uzeit+4(2) INTO wa_header-info. "time
APPEND wa_header TO t_header.
CLEAR: wa_header.
* File Path
wa_header-typ = 'S'.
wa_header-key = 'File Path: '.
wa_header-info = ''.
APPEND wa_header TO t_header.
CLEAR: wa_header.
* Test Mode
wa_header-typ = 'S'.
wa_header-key = 'Test Mode: '.
IF p_test = 'X'.
wa_header-info = 'Yes'.
ENDIF.
APPEND wa_header TO t_header.
CLEAR: wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
ENDFORM. "top-of-page
*& Form UPDATE_TRANSACTIONS
* text
* --> p1 text
* <-- p2 text
FORM update_transactions .
SELECT guid INTO TABLE lt_header_guid FROM crmd_orderadm_h WHERE object_id IN p_trans.
IF sy-subrc EQ 0.
LOOP AT lt_header_guid INTO ls_header_guid.
CLEAR: lt_guid, lt_req_obj, lt_partner, lt_input_fields.
ls_req_obj = 'PARTNER'.
APPEND ls_req_obj TO lt_req_obj.
APPEND ls_header_guid TO lt_guid.
CALL FUNCTION 'CRM_ORDER_READ'
EXPORTING
it_header_guid = lt_guid
it_requested_objects = lt_req_obj
IMPORTING
et_partner = lt_partner
EXCEPTIONS
document_not_found = 1
error_occurred = 2
document_locked = 3
no_change_authority = 4
no_display_authority = 5
no_change_allowed = 6
OTHERS = 7.
lv_partner_fct = p_pf.
lv_partner_no = p_frombp.
SHIFT p_frombp LEFT DELETING LEADING '0'.
READ TABLE lt_partner INTO ls_partner WITH KEY partner_fct = p_pf partner_no = p_frombp.
IF sy-subrc EQ 0.
LOOP AT lt_partner INTO ls_partner WHERE partner_fct = p_pf AND partner_no = p_frombp.
lv_partner_no = p_tobp.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_partner_no
IMPORTING
output = lv_partner_no.
REFRESH lt_input_fields.
CLEAR ls_partner_com.
ls_partner_com-ref_guid = ls_partner-ref_guid.
ls_partner_com-ref_kind = ls_partner-ref_kind.
ls_partner_com-ref_partner_handle = ls_partner-ref_partner_handle.
ls_partner_com-kind_of_entry = 'C'.
ls_partner_com-partner_fct = ls_partner-partner_fct.
ls_partner_com-partner_no = lv_partner_no.
ls_partner_com-display_type = 'BP'.
ls_partner_com-no_type = 'BP'.
ls_partner_com-ref_partner_no = ls_partner-ref_partner_no.
ls_partner_com-ref_partner_fct = ls_partner-ref_partner_fct.
ls_partner_com-ref_no_type -
hello experts,
are there any example using function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' with editable columns.
Or, have somebody an idea to resolve my problem.
I can edit the fields in the alv-grid, but I don't see the changes in the internal table using 'LVC_TRANSFER_FROM_SLIS' function.
thanks and regards.
K. WErnerhi,
here is the code for editable Hieararchical ALV
TYPE-POOLS : slis.
TABLES : mseg.
DATA : BEGIN OF itab_head OCCURS 0,
mat LIKE mseg-matnr,
* matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
END OF itab_head.
DATA : BEGIN OF itab_item OCCURS 0,
* mat LIKE mseg-matnr,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
mblnr LIKE mseg-mblnr,
menge LIKE mseg-menge,
END OF itab_item.
DATA : t_fcat TYPE slis_t_fieldcat_alv,
key_info TYPE slis_keyinfo_alv,
t_eve TYPE slis_t_event,
gt_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF gt_subtot,
t_listhead TYPE slis_t_listheader,
st_line TYPE slis_listheader.
DATA : lin_no TYPE i.
DATA : t_mtdoc LIKE mseg-mblnr.
SELECT-OPTIONS : mat FOR mseg-matnr.
INITIALIZATION.
PERFORM build_cat USING t_fcat.
PERFORM build_eve.
START-OF-SELECTION.
PERFORM get_data.
PERFORM dis_data.
*& Form build_cat
* text
* -->TEMP_FCAT text
FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
DATA : wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'MAT'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'Plant'.
wa_fcat-edit = 'X'.
wa_fcat-input = 'X'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITEM'.
wa_fcat-fieldname = 'MBLNR'.
wa_fcat-seltext_m = 'Material Doc.'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITEM'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'Quantity'.
wa_fcat-edit = 'X'.
wa_fcat-input = 'X'.
wa_fcat-do_sum = 'Y'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
subtot-spos = 1.
subtot-fieldname = 'MAT'.
subtot-tabname = 'ITAB_HEAD'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO gt_subtot.
ENDFORM. "build_cat
*& Form build_eve
* text
FORM build_eve.
DATA : wa_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = t_eve
* EXCEPTIONS
* LIST_TYPE_WRONG = 1
* OTHERS = 2
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE t_eve INTO wa_eve WITH KEY name = 'TOP_OF_PAGE'.
IF sy-subrc = 0.
wa_eve-form = 'TOP_OF_PAGE'.
MODIFY t_eve FROM wa_eve INDEX sy-tabix.
ENDIF.
ENDFORM. "build_eve
*& Form get_data
* text
FORM get_data.
SELECT matnr werks mblnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab_item
WHERE matnr IN mat.
ENDFORM. "get_data
*& Form dis_data
* text
FORM dis_data.
key_info-header01 = 'MAT'.
key_info-item01 = 'MATNR'.
key_info-header02 = 'WERKS'.
key_info-item02 = 'WERKS'.
REFRESH itab_head.
LOOP AT itab_item.
ON CHANGE OF itab_item-matnr OR itab_item-werks.
MOVE-CORRESPONDING itab_item TO itab_head.
itab_head-mat = itab_item-matnr.
APPEND itab_head.
ENDON.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = 'ZALV_PRDS'
it_fieldcat = t_fcat
it_sort = gt_subtot
it_events = t_eve[]
i_tabname_header = 'ITAB_HEAD'
i_tabname_item = 'ITAB_ITEM'
is_keyinfo = key_info
TABLES
t_outtab_header = itab_head
t_outtab_item = itab_item
* 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. "dis_data
*& Form top_of_page
* text
FORM top_of_page.
CLEAR st_line.
st_line-typ = 'H'.
st_line-info = 'Dhwani Shah'.
APPEND st_line TO t_listhead.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_listhead
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
ENDFORM. "top_of_page
reward if usefull..... -
Function module to pricing procedure calculation
hi,
I want to know whether any function modules available to get as I see in Invoice ->
select item level conditions.
Where i can see the basic price ,discount, etc as defined in the corresponding pricing procedure.
i have tried with
RV_INVOICE_PRICE_PBO
PRICING_SUBSCREEN_SET_DATA
here i get only the records which have condition type,
similarly for P.O. we have
ME_SWP_SIC_GET_PRICING_INFO
regards,
Prabhu
Points assured.REPORT zmm_pvr.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPE-POOLS *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TYPE-POOLS slis.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TABLES *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TABLES: mara, " General Material Data
marc, " Plant Data for Material
ekko, " Purchasing Document Header
ekpo, " Purchasing Document Item
lfa1, " Vendor Master (General Section)
konv, " Conditions (Transaction Data)
mbew, " Material Valuation
makt. " Material Descriptions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DATA DECLARATION *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DATA: BEGIN OF i_mat OCCURS 1,
matnr LIKE mara-matnr,
mtart LIKE mara-mtart,
werks LIKE marc-werks,
abcin LIKE marc-abcin,
END OF i_mat.
DATA: BEGIN OF itab OCCURS 1,
ebeln LIKE ekko-ebeln,
bedat LIKE ekko-bedat,
lifnr LIKE ekko-lifnr,
waers LIKE ekko-waers,
bukrs LIKE ekko-bukrs,
ekorg LIKE ekko-ekorg,
name1 LIKE lfa1-name1,
werks LIKE ekpo-werks,
menge LIKE ekpo-menge,
meins LIKE ekpo-meins,
netpr LIKE ekpo-netpr,
netwr LIKE ekpo-netwr,
menge1(16),
netpr1(16),
menge2 TYPE string,
netpr2 TYPE string,
lrate TYPE p DECIMALS 2,
stax LIKE ekpo-netwr,
exbed LIKE ekpo-netwr,
dcost LIKE konv-kwert,
nomvl LIKE ekpo-netwr,
nomrt LIKE ekpo-netwr,
zplp1 LIKE mbew-zplp1,
verpr LIKE mbew-verpr,
bgval LIKE ekpo-netwr,
varnc LIKE ekpo-netwr,
maktx LIKE makt-maktx,
knumv LIKE ekko-knumv,
ebelp LIKE ekpo-ebelp,
matnr LIKE ekpo-matnr,
matkl LIKE ekpo-matkl,
mtart LIKE ekpo-mtart,
bprme LIKE ekpo-bprme,
txz01 LIKE ekpo-txz01,
mwskz LIKE ekpo-mwskz,
prdat LIKE ekpo-prdat,
END OF itab.
DATA: wtab LIKE itab.
DATA: v_steuc TYPE marc-steuc.
DATA: v_brsch TYPE lfa1-brsch.
DATA: wa_komk TYPE komk.
DATA: wa_komp TYPE komp.
DATA: it_komv TYPE TABLE OF komv.
DATA: wa_komv TYPE komv.
DATA : wa_fieldcat TYPE slis_fieldcat_alv,
gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
lt_sort TYPE slis_t_sortinfo_alv,
i LIKE sy-tabix.
DATA: gt_events TYPE slis_t_event.
DATA: gd_prntparams TYPE slis_print_alv.
DATA: it_color TYPE slis_t_specialcol_alv.
DATA: wa_color TYPE slis_specialcol_alv.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Begin Of Selection Screen *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECTION-SCREEN BEGIN OF BLOCK pas WITH FRAME TITLE text-001.
SELECT-OPTIONS s_matnr FOR ekpo-matnr.
SELECT-OPTIONS s_werks FOR ekpo-werks.
SELECT-OPTIONS s_bedat FOR ekko-bedat.
PARAMETERS p_abcin LIKE marc-abcin OBLIGATORY.
SELECTION-SCREEN END OF BLOCK pas.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INITIALIZATION *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
INITIALIZATION.
IF sy-datum+4(2) GE 4.
s_bedat-low+6(2) = 01.
s_bedat-low+4(2) = 04.
s_bedat-low(4) = sy-datum(4).
ENDIF.
IF sy-datum+4(2) LT 4.
s_bedat-low+6(2) = 01.
s_bedat-low+4(2) = 04.
s_bedat-low(4) = sy-datum(4) - 1.
ENDIF.
s_bedat-high = sy-datum.
APPEND s_bedat.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AT Selection Screen Output *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AT SELECTION-SCREEN.
Check for Material Type
SELECT amatnr amtart bwerks babcin INTO CORRESPONDING FIELDS OF TABLE i_mat
FROM mara AS a INNER JOIN marc AS b
ON amatnr = bmatnr
WHERE a~matnr IN s_matnr
AND ( amtart = 'IRAM' OR amtart = 'IPAM' OR amtart = 'PRAM' OR amtart = 'PPAM' )
AND b~werks IN s_werks
AND b~abcin = p_abcin.
SORT i_mat BY matnr werks.
CHECK NOT i_mat[] IS INITIAL.
READ TABLE i_mat INDEX 1.
IF sy-subrc <> 0.
MESSAGE e006(zmm).
LEAVE LIST-PROCESSING.
ENDIF.
Check for Date
IF ( s_bedat-low IS INITIAL AND s_bedat-high IS INITIAL ).
s_bedat-sign = 'I'.
s_bedat-option = 'BT'.
IF sy-datum+4(2) GE 4.
s_bedat-low+6(2) = 01.
s_bedat-low+4(2) = 04.
s_bedat-low(4) = sy-datum(4).
ENDIF.
IF sy-datum+4(2) LT 4.
s_bedat-low+6(2) = 01.
s_bedat-low+4(2) = 04.
s_bedat-low(4) = sy-datum(4) - 1.
ENDIF.
s_bedat-high = sy-datum.
ELSEIF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS INITIAL ).
s_bedat-low6(2) = s_bedat-low6(2).
s_bedat-low4(2) = s_bedat-low4(2).
s_bedat-low(4) = s_bedat-low(4).
ELSEIF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS NOT INITIAL ).
s_bedat-sign = 'I'.
s_bedat-option = 'BT'.
s_bedat-low6(2) = s_bedat-low6(2).
s_bedat-low4(2) = s_bedat-low4(2).
s_bedat-low(4) = s_bedat-low(4).
s_bedat-high6(2) = s_bedat-high6(2).
s_bedat-high4(2) = s_bedat-high4(2).
s_bedat-high(4) = s_bedat-high(4).
ENDIF.
APPEND s_bedat.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
START OF SELECTION *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
START-OF-SELECTION.
*----- Get all PO for given selection criteria.
LOOP AT i_mat.
SELECT
aebeln abedat alifnr aknumv awaers abukrs a~ekorg
bebelp bmatnr bmatkl bnetpr bbprme btxz01 bwerks bmenge bmeins bnetwr bmtart bmwskz b~prdat
FROM ( ekko AS a INNER JOIN ekpo AS b ON amandt = bmandt AND aebeln = bebeln )
INTO CORRESPONDING FIELDS OF TABLE itab
FOR ALL ENTRIES IN i_mat
WHERE a~bedat IN s_bedat
AND a~loekz = ''
AND b~matnr = i_mat-matnr
AND b~werks = i_mat-werks
AND b~loekz = ''
AND b~pstyp = '0'
AND b~bstyp = 'F'
AND b~knttp = ''.
ENDLOOP. " END OF i_mat
CHECK NOT itab[] IS INITIAL.
SORT itab BY ebeln ebelp.
*----- Calculating The DCOST -- Delivery Cost
DATA: BEGIN OF i_konv OCCURS 0,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
stunr LIKE konv-stunr,
zaehk LIKE konv-zaehk,
kschl LIKE konv-kschl,
kbetr LIKE konv-kbetr,
kwert LIKE konv-kwert,
END OF i_konv.
SELECT knumv kposn stunr zaehk kschl kbetr kwert
FROM konv
INTO CORRESPONDING FIELDS OF TABLE i_konv
FOR ALL ENTRIES IN itab
WHERE knumv = itab-knumv
AND kposn = itab-ebelp
AND ( kschl = 'ZFC3' OR kschl = 'ZQIQ'
OR kschl = 'ZQIV' OR kschl = 'ZFA3'
OR kschl = 'ZFB3' OR kschl = 'ZPF2'
OR kschl = 'ZPQ2' OR kschl = 'ZPV2'
OR kschl = 'ZOCP' OR kschl = 'ZOCQ'
OR kschl = 'ZOCV' OR kschl = 'ZMT1'
OR kschl = 'ZIN2' OR kschl = 'ZIQ2'
OR kschl = 'ZIV2' OR kschl = 'ZBK1'
OR kschl = 'ZBKQ' OR kschl = 'ZBKV' ).
SORT i_konv BY knumv kposn stunr zaehk kschl .
DELETE ADJACENT DUPLICATES FROM i_konv.
DELETE i_konv WHERE kbetr = 0.
DATA: BEGIN OF i_knumv OCCURS 0,
knumv LIKE konv-knumv,
kwert LIKE konv-kwert,
END OF i_knumv.
LOOP AT i_konv.
MOVE i_konv-knumv TO i_knumv-knumv.
MOVE i_konv-kwert TO i_knumv-kwert.
COLLECT i_knumv.
ENDLOOP.
CLEAR i_konv.
CLEAR i_knumv.
LOOP AT itab INTO wtab.
READ TABLE i_knumv WITH KEY knumv = wtab-knumv.
IF sy-subrc = 0.
wtab-dcost = i_knumv-kwert.
MODIFY itab FROM wtab.
ENDIF.
ENDLOOP.
CLEAR i_knumv.
CLEAR itab.
*----- Get the vendor name.
LOOP AT itab.
SELECT SINGLE name1 FROM lfa1 INTO itab-name1
WHERE lifnr = itab-lifnr.
MODIFY itab INDEX sy-tabix TRANSPORTING name1.
ENDLOOP.
*----- Calculate Excise Duty, Educat. cess, Sec edu. cess, sales tax
CLEAR: wa_komk, wa_komp.
Selecting The Value Of STEUC (Controlling Code)
CLEAR itab.
LOOP AT itab.
SELECT SINGLE steuc
FROM marc
INTO v_steuc
WHERE matnr = itab-matnr
AND werks = itab-werks.
Selecting The Value Of BRSCH (Industry key)
SELECT SINGLE brsch
FROM lfa1
INTO v_brsch
WHERE lifnr = itab-lifnr.
Filling KOMK (Header Structure)
wa_komk-kappl = 'TX'.
wa_komk-kalsm = 'TAXINN'.
wa_komk-lifnr = itab-lifnr.
wa_komk-waerk = itab-waers.
wa_komk-aland = 'IN'.
wa_komk-hwaer = 'INR'.
wa_komk-bukrs = itab-bukrs.
wa_komk-brsch = v_brsch.
wa_komk-prsdt = itab-bedat.
wa_komk-ekorg = itab-ekorg.
wa_komk-mwskz = itab-mwskz.
Filling KOMP (Details Structure)
wa_komp-kposn = itab-ebelp.
wa_komp-matnr = itab-matnr.
wa_komp-werks = itab-werks.
wa_komp-matkl = itab-matkl.
wa_komp-meins = itab-meins.
wa_komp-vrkme = itab-bprme.
wa_komp-netwr = itab-netwr.
wa_komp-wrbtr = itab-netwr.
wa_komp-mwskz = itab-mwskz.
wa_komp-netpr = itab-netpr.
wa_komp-mtart = itab-mtart.
wa_komp-kursk_dat = itab-prdat.
wa_komp-steuc = v_steuc.
wa_komp-mgame = itab-menge.
wa_komp-mglme = itab-menge.
FREE it_komv.
Calling The Pricing Function To Get GR EXCISE, GR ECES, GR VAT/CST
CALL FUNCTION 'PRICING'
EXPORTING
calculation_type = 'B'
comm_head_i = wa_komk
comm_item_i = wa_komp
TABLES
tkomv = it_komv.
Calculating The Excise --excise duty
DATA: l_kbetr TYPE komv-kbetr.
DATA: l_gr_excise TYPE ekpo-brtwr.
DATA: l_basic_gr_val TYPE ekpo-netpr.
l_basic_gr_val = itab-netwr.
CLEAR: l_kbetr, l_gr_excise.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMOP'
OR kschl = 'JAOP'
OR kschl = 'JMIP'
OR kschl = 'JAOQ'.
l_kbetr = ( wa_komv-kbetr / 10 ).
l_gr_excise = ( l_kbetr * l_basic_gr_val ) / 100.
ENDLOOP.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JAIP'
OR kschl = 'JAIQ'
OR kschl = 'JMIQ'
OR kschl = 'JMOQ'.
l_gr_excise = ( wa_komv-kbetr * l_basic_gr_val ).
ENDLOOP.
Calculating The ECES -- Educational Cess
DATA l_gr_eces TYPE ekpo-netpr.
CLEAR: l_kbetr, l_gr_eces.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'ZECE'
OR kschl = 'ZECN'.
l_kbetr = ( wa_komv-kbetr / 10 ).
l_gr_eces = ( l_kbetr * l_gr_excise ) / 100.
ENDLOOP.
Calculating The SECES -- Sec. Educational Cess
DATA l_gr_secs TYPE ekpo-netpr.
CLEAR: l_kbetr, l_gr_secs.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JSEP'
OR kschl = 'JSEI'.
l_kbetr = ( wa_komv-kbetr / 10 ).
l_gr_secs = ( l_kbetr * l_gr_excise ) / 100.
ENDLOOP.
Calculating The VAT/CST --Sales Tax
DATA l_gr_vatcst TYPE ekpo-netpr.
CLEAR: l_kbetr, l_gr_vatcst.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JVRN'
OR kschl = 'JVRD'
OR kschl = 'JVCS'
OR kschl = 'JVCD'
OR kschl = 'JVCN'
OR kschl = 'JIPS'
OR kschl = 'JIPC'
OR kschl = 'JIPL'.
l_kbetr = ( wa_komv-kbetr / 10 ).
l_gr_vatcst = ( ( l_basic_gr_val + l_gr_excise + l_gr_eces + l_gr_secs ) * l_kbetr ) / 100.
ENDLOOP.
Calculating The NOMVL & NOMVR -- NOM Value (Setoff / Inventory ) & NOM Rate
DATA: l_netpr TYPE ekpo-netpr,
l_menge TYPE ekpo-menge,
l_dcost TYPE ekpo-netwr,
l_nomvl TYPE ekpo-netwr,
l_nomrt TYPE ekpo-netwr.
l_netpr = itab-netpr.
l_menge = itab-menge.
l_dcost = itab-dcost.
CLEAR: l_nomvl, l_nomrt.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMOP' "------setoff
OR kschl = 'ZECE'
OR kschl = 'JSEP'.
l_nomvl = ( l_netpr * l_menge ) + l_gr_vatcst + l_dcost - ( l_gr_excise + l_gr_eces + l_gr_secs ).
l_nomrt = l_nomvl / l_menge.
ENDLOOP.
LOOP AT it_komv INTO wa_komv WHERE kschl = 'JMIP' "-------inventory
OR kschl = 'ZECN'
OR kschl = 'JSEI'.
l_nomvl = ( l_netpr * l_menge ) + l_gr_vatcst + l_dcost.
l_nomrt = l_nomvl / l_menge.
ENDLOOP.
itab-exbed = l_gr_excise + l_gr_eces + l_gr_secs.
itab-stax = l_gr_vatcst.
itab-nomvl = l_nomvl.
itab-nomrt = l_nomrt.
MODIFY itab .
CLEAR itab.
ENDLOOP. " end of itab
LOOP AT itab WHERE exbed = 0.
itab-nomvl = ( itab-netpr * itab-menge ) + itab-stax + itab-dcost.
itab-nomrt = itab-nomvl / itab-menge.
MODIFY itab INDEX sy-tabix TRANSPORTING nomvl nomrt.
ENDLOOP.
*----- Calculating The Budget Rate, Moving Average Price, Landed Rate & Material Description
DATA: verp(15).
DATA: matdes(40).
LOOP AT itab.
SELECT SINGLE zplp1 FROM mbew INTO itab-zplp1
WHERE matnr = itab-matnr AND bwkey = itab-werks.
SELECT SINGLE verpr FROM mbew INTO itab-verpr
WHERE matnr = itab-matnr AND bwkey = itab-werks.
itab-lrate = itab-netwr / itab-menge.
SELECT SINGLE maktx FROM makt INTO itab-maktx
WHERE matnr = itab-matnr AND spras = 'EN'.
MODIFY itab INDEX sy-tabix TRANSPORTING zplp1 verpr lrate maktx.
verp = itab-verpr.
matdes = itab-maktx.
ENDLOOP.
*----- Calculating The Budget Value & Variance
LOOP AT itab.
itab-bgval = itab-zplp1 * itab-menge.
itab-varnc = itab-bgval - itab-nomvl.
MODIFY itab INDEX sy-tabix TRANSPORTING bgval varnc.
ENDLOOP.
*------ Calculating Total of Quantity
DATA: BEGIN OF i_quan OCCURS 1,
quant LIKE ekpo-menge,
unit LIKE ekpo-meins,
nomvl LIKE ekpo-netwr,
curr LIKE ekko-waers,
varnc LIKE ekpo-netwr,
bgval LIKE ekpo-netwr,
END OF i_quan.
LOOP AT itab.
MOVE itab-menge TO i_quan-quant.
MOVE itab-meins TO i_quan-unit.
MOVE itab-nomvl TO i_quan-nomvl.
MOVE itab-waers TO i_quan-curr.
MOVE itab-varnc TO i_quan-varnc.
MOVE itab-bgval TO i_quan-bgval.
COLLECT i_quan.
ENDLOOP.
CLEAR itab.
CLEAR i_quan.
DATA: qty(15).
DATA: unt(3).
DATA: wtd TYPE p DECIMALS 2.
DATA: wtd2(15).
DATA: cur(3).
DATA: var(15).
DATA: nomvl(15).
DATA: bgval(15).
DATA: bgv TYPE p DECIMALS 2.
DATA: bgv2(15).
LOOP AT i_quan.
qty = i_quan-quant.
unt = i_quan-unit.
cur = i_quan-curr.
var = i_quan-varnc.
bgval = i_quan-bgval.
nomvl = i_quan-nomvl.
wtd = nomvl / qty.
bgv = bgval / qty.
ENDLOOP.
CLEAR i_quan.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DATA DISPLAY *
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-seltext_l = 'Purchase Order'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 1.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'BEDAT'.
wa_fieldcat-seltext_l = 'PO Date'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 2.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-seltext_l = 'Vendor Name'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 3.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-seltext_l = 'Plant'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 4.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'MENGE2'.
wa_fieldcat-fieldname = 'MENGE'.
wa_fieldcat-seltext_l = 'Quantity'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 5.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NETPR2'.
wa_fieldcat-fieldname = 'NETPR'.
wa_fieldcat-seltext_l = 'Basic Rate'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 6.
wa_fieldcat-do_sum = ' '.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'EXBED'.
wa_fieldcat-seltext_l = 'Excise'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 7.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'STAX'.
wa_fieldcat-seltext_l = 'Sale Tax'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 7.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'DCOST'.
wa_fieldcat-seltext_l = 'Delivery Cost'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 8.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NETWR'.
wa_fieldcat-seltext_l = 'Landed Value'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 9.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'LRATE'.
wa_fieldcat-seltext_l = 'Landed Rate'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 10.
wa_fieldcat-do_sum = ' '.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NOMVL'.
wa_fieldcat-seltext_l = 'NOM Value'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 12.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'NOMRT'.
wa_fieldcat-seltext_l = 'NOM Rate'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 13.
wa_fieldcat-do_sum = ' '.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'BGVAL'.
wa_fieldcat-seltext_l = 'Budget Value'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 11.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'ZPLP1'.
wa_fieldcat-seltext_l = 'Budget Rate'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 12.
wa_fieldcat-do_sum = ' '.
APPEND wa_fieldcat TO gt_fieldcat.
wa_fieldcat-fieldname = 'VARNC'.
wa_fieldcat-seltext_l = 'Variance'.
wa_fieldcat-tabname = 'ITAB'.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = 13.
wa_fieldcat-do_sum = 'X'.
APPEND wa_fieldcat TO gt_fieldcat.
wa_layout-colwidth_optimize = 'X'.
wa_layout-zebra = ' '.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events[].
READ TABLE gt_events WITH KEY name = slis_ev_end_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE 'END_OF_PAGE' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
READ TABLE gt_events WITH KEY name = slis_ev_end_of_list
INTO ls_event.
IF sy-subrc = 0.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
gd_prntparams-reserve_lines = '7'. "Lines reserved for footer
gd_prntparams-no_coverpage = 'X'.
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 = ' '
i_callback_top_of_page = 'TOP-OF-PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
i_callback_html_end_of_list = 'END_OF_LIST_HTML'
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = gt_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'X'
i_save = 'X'
IS_VARIANT =
it_events = gt_events
IT_EVENT_EXIT =
is_print = gd_prntparams
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 = 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 top-of-page
text
--> p1 text
<-- p2 text
FORM top-of-page .
ALV Header Declarations
DATA: t_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
wa_header1 TYPE slis_listheader,
wa_header2 TYPE slis_listheader,
wa_header3 TYPE slis_listheader,
wa_header4 TYPE slis_listheader.
Title
wa_header-typ = 'H'.
wa_header-info = 'Purchase Variance Report'.
APPEND wa_header TO t_header.
CLEAR wa_header.
Material
SHIFT p_matnr LEFT DELETING LEADING '0'.
wa_header1-typ = 'S'.
wa_header1-info = ' '.
CONCATENATE 'Material : ' p_matnr matdes INTO wa_header1-info SEPARATED BY space.
APPEND wa_header1 TO t_header.
CLEAR wa_header1.
Plant
IF ( s_werks-low IS NOT INITIAL AND s_werks-high IS NOT INITIAL ).
wa_header2-typ = 'S'.
wa_header2-info = ' '.
CONCATENATE 'Plant : ' s_werks-low 'to' s_werks-high INTO wa_header2-info SEPARATED BY space.
APPEND wa_header2 TO t_header.
CLEAR wa_header2.
ELSEIF ( s_werks-low IS NOT INITIAL AND s_werks-high IS INITIAL ).
wa_header2-typ = 'S'.
wa_header2-info = ' '.
CONCATENATE 'Plant : ' s_werks-low INTO wa_header2-info SEPARATED BY space.
APPEND wa_header2 TO t_header.
CLEAR wa_header2.
ELSEIF ( s_werks-low IS INITIAL AND s_werks-high IS INITIAL ).
EXIT.
ENDIF.
Period
IF ( s_bedat-low IS NOT INITIAL AND s_bedat-high IS INITIAL ).
wa_header4-typ = 'S'.
wa_header4-info = ' '.
CONCATENATE 'Period : '
s_bedat-low+6(2) '.'
s_bedat-low+4(2) '.'
s_bedat-low(4) INTO wa_header4-info SEPARATED BY space.
APPEND wa_header4 TO t_header.
CLEAR wa_header4.
ELSE.
IF ( s_bedat-low IS INITIAL AND s_bedat-high IS INITIAL ).
wa_header4-typ = 'S'.
wa_header4-info = ' '.
CONCATENATE 'Period : '
s_bedat-low+6(2) '.'
s_bedat-low+4(2) '.'
s_bedat-low(4)
'to'
s_bedat-high+6(2) '.'
s_bedat-high+4(2) '.'
s_bedat-high(4) INTO wa_header4-info SEPARATED BY space.
APPEND wa_header4 TO t_header.
CLEAR wa_header4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_header.
I_LOGO =
I_END_OF_LIST_GRID =
I_ALV_FORM =
ENDFORM. " top-of-page
*& Form end_of_list_html
output at the end of the list - not in printed output *
FORM end_of_list_html USING end TYPE REF TO cl_dd_document.
DATA: ls_text TYPE sdydo_text_element,
l_grid TYPE REF TO cl_gui_alv_grid,
f(14) TYPE c VALUE 'SET_ROW_HEIGHT'.
DATA: qty1 TYPE sdydo_text_element.
DATA: unt1 TYPE sdydo_text_element.
DATA: wtd1 TYPE sdydo_text_element.
DATA: cur1 TYPE sdydo_text_element.
DATA: var1 TYPE sdydo_text_element.
DATA: verp1 TYPE sdydo_text_element.
DATA: bgv1 TYPE sdydo_text_element.
qty1 = qty.
unt1 = unt.
wtd1 = wtd.
cur1 = cur.
var1 = var.
verp1 = verp.
bgv1 = bgv.
ls_text = 'SUMMARY'.
CALL METHOD end->add_text
EXPORTING
text = ls_text
sap_emphasis = 'strong'.
Total Qty Bought (start new line)
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Total Qty Bought : '.
CALL METHOD end->add_text
EXPORTING
text = qty1.
CALL METHOD end->add_text
EXPORTING
text = unt1.
Wtd. Avg. Purchase Rate
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Wtd. Avg. Purchase Rate : '.
CALL METHOD end->add_text
EXPORTING
text = cur1.
CALL METHOD end->add_text
EXPORTING
text = wtd1.
Wtd. Avg. Budget Rate
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Wtd. Avg. Budget Rate : '.
CALL METHOD end->add_text
EXPORTING
text = cur1.
CALL METHOD end->add_text
EXPORTING
text = bgv1.
Gain / Loss
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Gain / Loss : '.
CALL METHOD end->add_text
EXPORTING
text = cur1.
CALL METHOD end->add_text
EXPORTING
text = var1.
MAP ( Moving Average Price )
CALL METHOD end->new_line.
CALL METHOD end->add_text
EXPORTING
text = 'Mov Avg Price : '.
CALL METHOD end->add_text
EXPORTING
text = cur1.
CALL METHOD end->add_text
EXPORTING
text = verp1.
ENDFORM. "end_of_list_html.
*& Form END_OF_PAGE
FORM end_of_page.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
wtd2 = wtd.
bgv2 = bgv.
CONDENSE qty.
CONDENSE unt.
CONDENSE wtd2.
CONDENSE bgv2.
CONDENSE var.
CONDENSE verp.
SKIP.
WRITE:/ 'SUMMARY:'.
write:/ sy-uline(7).
WRITE:/ 'Total Qty Bought : ', qty, unt.
WRITE:/ 'Wtd. Avg. Purchase Rate : ', wtd2, cur.
WRITE:/ 'Wtd. Avg. Budget Rate : ', bgv2, cur.
WRITE:/ 'Gain / Loss : ', var, cur.
WRITE:/ 'Mov Avg Price : ', verp, cur.
ENDFORM. "END_OF_PAGE
*& Form END_OF_LIST
FORM end_of_list.
DATA: listwidth TYPE i,
ld_pagepos(10) TYPE c,
ld_page(10) TYPE c.
wtd2 = wtd.
bgv2 = bgv.
CONDENSE qty.
CONDENSE unt.
CONDENSE wtd2.
CONDENSE bgv2.
CONDENSE var.
CONDENSE verp.
SKIP.
WRITE:/ 'SUMMARY:'.
write:/ sy-uline(7).
WRITE:/ 'Total Qty Bought : ', qty, unt.
WRITE:/ 'Wtd. Avg. Purchase Rate : ', wtd2, cur.
WRITE:/ 'Wtd. Avg. Budget Rate : ', bgv2, cur.
WRITE:/ 'Gain / Loss : ', var, cur.
WRITE:/ 'Mov Avg Price : ', verp, cur. -
Hi
I have created a report and it gets displayed in ALV. My requirement was to put the whole code in a function module, including the ALV functionality...I have put the same..the problem is that I am not able to see the TOP-OF-PAGE..
I am putting a sample code of what exactly I did in the function module..let me know what needs to be done..
FUNCTION ZAZTEST.
""Local Interface:
*" IMPORTING
*" REFERENCE(GV_REPID) TYPE SY-REPID
*" TABLES
*" S_KUNNR STRUCTURE JITO_KUNNR_RANGE
perform sub_get_customers tables s_kunnr
changing gt_kna1.
perform sub_prepare_fieldcatalog using :
'KUNNR' 'Customer No' '10' 'GT_KNA1' space space changing gt_fieldcat,
'NAME1' 'Name' '35' 'GT_KNA1' space space changing gt_fieldcat,
'LAND1' 'Country' '4' 'GT_KNA1' space space changing gt_fieldcat,
'ORT01' 'City' '35' 'GT_KNA1' space space changing gt_fieldcat.
perform sub_build_alv_events changing gt_events.
perform sub_comment_build tables s_kunnr changing gt_list_top_of_page.
PERFORM sub_display using gv_repid gt_fieldcat gt_events gt_kna1.
ENDFUNCTION.
form sub_get_customers tables p_kunnr structure JITO_KUNNR_RANGE
changing p_it_kna1 type tt_kna1.
select kunnr name1 land1 ort01
from kna1
into table p_it_kna1
where kunnr in p_kunnr.
if sy-subrc eq 0.
sort p_it_kna1 by kunnr.
endif.
endform.
Prepare Field Catalog
-->lv_F fieldname
-->lv_D column Description
-->lv_L Output length
-->lv_T Tablename
--lv_A Reference table name
--lv_B Reference Field Name
FORM sub_prepare_fieldcatalog using value(lv_f)
value(lv_d)
value(lv_t)
value(lv_l)
value(lv_a)
value(lv_b)
changing pt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gs_fieldcat TYPE slis_fieldcat_alv.
gs_fieldcat-fieldname = lv_f.
gs_fieldcat-seltext_m = lv_d.
gs_fieldcat-tabname = lv_t.
gs_fieldcat-outputlen = lv_l.
gs_fieldcat-ref_tabname = lv_a.
gs_fieldcat-ref_fieldname = lv_b.
APPEND gs_fieldcat TO Pt_fieldcat.
CLEAR gs_fieldcat.
ENDFORM. "sub_prepare_fieldcatalog
*& Form sub_build_alv_events
FORM sub_build_alv_events CHANGING PT_EVENTS TYPE slis_t_event.
DATA: ls_index TYPE sy-tabix,
GS_EVENTS TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = Pt_events[]
EXCEPTIONS
list_type_wrong = 0
OTHERS = 0.
READ TABLE Pt_events
INTO gs_events
WITH KEY name = slis_ev_top_of_page
IF sy-subrc = 0.
ls_index = sy-tabix.
gs_events-form = c_ev_top_of_page.
MODIFY Pt_events FROM gs_events INDEX ls_index.
ENDIF.
CLEAR gs_events.
ENDFORM. " sub_build_alv_events
*& Form sub_comment_build
text: print select options in the output
FORM sub_comment_build tables p_kunnr structure JITO_KUNNR_RANGE
changing gt_top_of_page type slis_t_listheader.
DATA: ls_line TYPE slis_listheader,
lv_Low(10) type c,
lv_high(10) type c.
lv_low = p_kunnr-low.
lv_high = p_kunnr-high.
CLEAR: ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Customer Details'.
APPEND ls_line TO gt_top_of_page.
IF NOT lv_low IS INITIAL AND NOT lv_high IS INITIAL.
CLEAR: ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Customer No'. "TEXT DESCRIPTION
CONCATENATE lv_low 'to' lv_high INTO ls_line-info
SEPARATED BY space.
APPEND ls_line TO gt_top_of_page.
elseif lv_low is initial and lv_high is initial.
CLEAR: ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Customer No'.
ls_line-info = 'ALL Values'.
APPEND ls_line TO gt_top_of_page.
ELSEIF lv_high IS INITIAL.
CLEAR: ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Customer No'.
ls_line-info = lv_low.
APPEND ls_line TO gt_top_of_page.
ENDIF.
endform.
form SUB_EVENT_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM. "sub_comment_build
**& Form sub_display
ALV Grid Display
Form sub_display using pv_repid type sy-repid
pt_fieldcat TYPE slis_t_fieldcat_alv
pt_events type slis_t_event
pt_kna1 type TT_kna1.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = pv_repid
it_fieldcat = Pt_fieldcat
it_events = Pt_events[]
TABLES
t_outtab = Pt_kna1
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. "sub_displayHello shakir,
You can refer to the code below:
TYPE-POOLS : slis.
* internal table declaration
Data:i_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv,
top_header TYPE slis_t_listheader. "Table to store The Values of Top-Of-Page Parameter for ALV
* work area declaration
Data: wa_top_header TYPE slis_listheader,
wa_fieldcat TYPE slis_fieldcat_alv.
* CONSTANTS
CONSTANTS: c_h TYPE slis_listheader VALUE 'H',
c_s TYPE slis_listheader VALUE 'S'.
********* calling a subroutine to display the fields ********************
PERFORM zalv_display.
********* function module to display the report in Grid format ***********
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
it_fieldcat = i_fieldcat
TABLES
t_outtab = i_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.
*& Form zalv_display
* Subroutine To display the fields in grid format
FORM zalv_display .
PERFORM zalv_grid_disp USING '1' 'CHARG' 'I_FINAL' 'Shotton coil id'.
PERFORM zalv_grid_disp USING '2' 'MATNR' 'I_FINAL' 'Material number'.
PERFORM zalv_grid_disp USING '3' 'BESTQ' 'I_FINAL' 'Stock Status'.
PERFORM zalv_grid_disp USING '4' 'AUFNR' 'I_FINAL' 'PROCESS ORDER NUMBER'.
PERFORM zalv_grid_disp USING '5' 'KDAUF' 'I_FINAL' 'SALES ORDER NUM'.
PERFORM zalv_grid_disp USING '6' 'GESME' 'I_FINAL' 'Coil Weight'.
PERFORM zalv_grid_disp USING '7' 'WDATU' 'I_FINAL' 'Date of coil receipt'.
PERFORM zalv_grid_disp USING '8' 'LGTYP' 'I_FINAL' 'Storage Type'.
PERFORM zalv_grid_disp USING '9' 'LGPLA' 'I_FINAL' 'Storage Bin'.
PERFORM zalv_grid_disp USING '10' 'COIL_STAT' 'I_FINAL' 'COIL STATUS'.
PERFORM zalv_grid_disp USING '11' 'MAKTX' 'I_FINAL' 'MATERIAL DESP'.
ENDFORM. " zalv_display
*& Form zalv_grid_disp
* text
* -->P_0691 column position
* -->P_0692 field name
* -->P_0693 table name
* -->P_0694 field text
FORM zalv_grid_disp USING value(col_pos) TYPE n
value(field_name) TYPE c
value(tab_name) TYPE c
value(sel_text) TYPE c.
wa_fieldcat-col_pos = col_pos.
wa_fieldcat-fieldname = field_name.
wa_fieldcat-tabname = tab_name.
wa_fieldcat-seltext_l = sel_text.
APPEND wa_fieldcat TO i_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " zalv_grid_disp
*& Form top_of_page
* module to display Header Information
FORM top_of_page.
************************ HEADER ********************************
wa_top_header-typ = c_h.
CONCATENATE 'CONCESSION'
'COIL'
'REPORT'
INTO wa_top_header-info
SEPARATED BY space.
APPEND wa_top_header TO top_header.
CLEAR wa_top_header.
wa_top_header-typ = c_s.
wa_top_header-key = 'Date:'.
WRITE sy-datum TO wa_top_header-info.
APPEND wa_top_header TO top_header.
CLEAR wa_top_header.
wa_top_header-typ = c_s.
wa_top_header-key = 'User Name:'.
WRITE sy-uname TO wa_top_header-info.
APPEND wa_top_header TO top_header.
CLEAR wa_top_header.
* wa_top_header-typ = c_s.
* wa_top_header-key = 'No.Of Records :'.
* WRITE sy-dbcnt TO wa_top_header-info.
* APPEND wa_top_header TO top_header.
* CLEAR wa_top_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = top_header.
ENDFORM. "top_of_page -
How to edit ALV report using function modules
I have a ALV report , i want to edit the report
using function modules.
how can i do that...
Edited by: ms kumar on Mar 6, 2008 3:24 PMhi i had used this report with the check box,
using the fm of alvs.....
*& Report ZZZ00
REPORT ZPR_02.
TYPE-POOLS: SLIS.
TABLES:pa0002,pa0008.
data:begin of it_pa0002 occurs 0,
checkbox,
pernr like pa0002-pernr,
begda like pa0002-begda,
endda like pa0002-endda,
vorna like pa0002-vorna,
nachn like pa0002-nachn,
end of it_pa0002.
data:begin of it_pa00021 occurs 0,
pernr like pa0002-pernr,
begda like pa0002-begda,
endda like pa0002-endda,
vorna like pa0002-vorna,
nachn like pa0002-nachn,
expand TYPE xfeld value 'X',
end of it_pa00021.
data:begin of it_pa0008 occurs 0,
pernr like pa0008-pernr,
begda like pa0008-begda,
endda like pa0008-endda,
ANSAL like pa0008-ANSAL,
LGA01 like pa0008-LGA01,
BET01 LIKE PA0008-BET01,
end of it_pa0008.
DATA: IT_FIELD_CAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FIELD_CAT1 TYPE SLIS_T_FIELDCAT_ALV,
IT_LAYOUT1 TYPE SLIS_LAYOUT_ALV,
WA_FIELD_CAT TYPE SLIS_FIELDCAT_ALV,
WA_FIELD_CAT1 TYPE SLIS_FIELDCAT_ALV,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENTS TYPE SLIS_T_EVENT,
WA_EVENTS TYPE SLIS_ALV_EVENT,
IT_HEADER TYPE SLIS_T_LISTHEADER,
WA_HEADER TYPE SLIS_LISTHEADER,
wa_keyinfo TYPE slis_keyinfo_alv.
CONSTANTS:c VALUE 'X'.
SELECT-OPTIONS: S_pernr FOR pa0002-pernr.
START-OF-SELECTION.
SET PF-STATUS 'DATA' .
PERFORM GET_DATA.
PERFORM BUILD_FIELD_CAT.
PERFORM GET_EVENTS.
PERFORM DISPLAY_DATA.
*& Form get_data
text
FORM GET_DATA .
SELECT pernr
begda
endda
vorna
nachn
FROM pa0002
INTO CORRESPONDING FIELDS OF TABLE IT_pa0002
WHERE pernr IN S_pernr.
ENDFORM. " get_data
*& Form build_field_cat
text
FORM BUILD_FIELD_CAT .
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'CHECKBOX'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Check Box'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'PERNR'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Personnel no'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'BEGDA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Start date'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'ENDDA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'End date'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'VORNA'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'First name'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat-tabname = 'PA0002'.
WA_FIELD_CAT-FIELDNAME = 'NACHN'.
wa_field_cat-ref_tabname = 'IT_PA0002'.
WA_FIELD_CAT-REPTEXT_DDIC = 'Last name'.
APPEND WA_FIELD_CAT TO IT_FIELD_CAT.
CLEAR WA_FIELD_CAT.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'PERNR'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Personnel no'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'BEGDA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Start date'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'ENDDA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'End date'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'VORNA'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'First name'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT.
wa_field_cat1-tabname = 'PA0002'.
WA_FIELD_CAT1-FIELDNAME = 'NACHN'.
wa_field_cat1-ref_tabname = 'IT_PA00021'.
WA_FIELD_CAT1-REPTEXT_DDIC = 'Last name'.
APPEND WA_FIELD_CAT1 TO IT_FIELD_CAT1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'PERNR'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'personnelno'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'BEGDA'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'begindate'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'ENDDA'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'enddate'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'ANSAL'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'annualsalary'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'LGA01'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'wagetype'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
wa_field_cat1-tabname = 'PA0008'.
wa_field_cat1-fieldname = 'BET01'.
wa_field_cat-ref_tabname = 'IT_PA0008'.
wa_field_cat1-REPTEXT_DDIC = 'Amount'.
APPEND wa_field_cat1 TO it_field_cat1.
CLEAR WA_FIELD_CAT1.
ENDFORM. " build_field_cat
*& Form display_data
text
FORM DISPLAY_DATA .
it_layout-box_fieldname = 'CHECKBOX'.
it_layout-EDIT = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FIELD_CAT
IS_LAYOUT = IT_LAYOUT
IT_EVENTS = IT_EVENTS
TABLES
T_OUTTAB = IT_pa0002.
ENDFORM. " display_data
*& Form get_events
text
FORM GET_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
IMPORTING
ET_EVENTS = IT_EVENTS .
READ TABLE IT_EVENTS INTO WA_EVENTS
WITH KEY NAME = SLIS_EV_TOP_OF_PAGE.
IF SY-SUBRC = 0.
WA_EVENTS-FORM = 'TOP_OF_PAGE'.
MODIFY IT_EVENTS FROM WA_EVENTS INDEX SY-TABIX.
ENDIF.
ENDFORM. " get_events
*& Form top_of_page
text
FORM TOP_OF_PAGE.
WA_HEADER-TYP = 'H'.
WA_HEADER-INFO = 'EMPLOYEE DATA'.
APPEND WA_HEADER TO IT_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = IT_HEADER
ENDFORM. "top_of_page
*& Form GUI_SET
FORM GUI_SET USING RT_EXTAB TYPE SLIS_T_EXTAB .
SET PF-STATUS 'DATA' .
ENDFORM. "GUI_SET
*& Form USER_COMMAND
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
R_SELFIELD TYPE SLIS_SELFIELD.
DATA:V_PERNR LIKE PA0002-PERNR.
CASE R_UCOMM.
WHEN 'DET'.
DATA: V_FLAG.
clear : v_flag.
LOOP AT IT_PA0002.
if it_PA0002-checkbox = 'X'.
v_flag = 'X'.
v_pernr = IT_PA0002-PERNR.
SELECT PERNR
BEGDA
ENDDA
VORNA
NACHN
FROM PA0002
INTO CORRESPONDING FIELDS OF TABLE IT_PA00021
WHERE PERNR = V_PERNR.
SORT IT_PA00021 BY PERNR.
DELETE ADJACENT DUPLICATES FROM IT_PA00021 COMPARING PERNR.
READ TABLE IT_PA00021 INDEX 1.
SELECT PERNR
BEGDA
ENDDA
ANSAL
LGA01
BET01
FROM PA0008
INTO TABLE IT_PA0008
FOR ALL ENTRIES IN IT_PA00021
WHERE PERNR = IT_PA00021-PERNR.
if not it_PA0008[] Is initial.
SORT IT_PA0008 BY PERNR.
delete adjacent duplicates from it_PA0008 comparing pernr.
READ TABLE IT_PA0008 INDEX 1.
endif.
endif.
enddo.
it_layout1-group_change_edit = c.
it_layout1-colwidth_optimize = c.
it_layout1-zebra = c.
it_layout1-detail_popup = c.
it_layout1-get_selinfos = c.
it_layout-expand_fieldname = 'EXPAND'.
wa_keyinfo-header01 = 'PERNR'.
wa_keyinfo-item01 = 'PERNR'.
IF NOT V_FLAG IS INITIAL.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = IT_LAYOUT1
IT_FIELDCAT = IT_FIELD_CAT1
I_TABNAME_HEADER = 'PA0002'
I_TABNAME_ITEM = 'PA0008'
IS_KEYINFO = wa_keyinfo
TABLES
T_OUTTAB_HEADER = IT_PA00021
T_OUTTAB_ITEM = IT_PA0008.
ENDIF.
CLEAR: IT_PA00021,IT_PA0002,IT_PA0008.
ENDLOOP.
WHEN 'BACK'.
EXIT.
ENDCASE.
ENDFORM. "USER_COMMAND
reward points if useful,
venkat. -
HOW TO USE OWN LOGO IN 'REUSE_ALV_COMMENTARY_WRITE'
HELLO THERE ,
CAN ANYBODY TELL ME HOW TO USE OWN LOGO IN 'REUSE_ALV_COMMENTARY_WRITE' ?
I HAVE TRIED THROUGH THE TRANSCATION 'OAOR' AND 'OAER' , BUT I'M UNABLE TO DO IT. SO CAN ANYBODY PLZ TELL ME ANY OTHER WAY?
REGARDS.Hello NEON BLUE,
First step first upload u r log in the sap system using the below steps.
1. Goto the transaction OAER
2. Enter the class name as 'PICTURES'
3. Enter the class type as 'OT'
4. Enter the object key as the name of the logo you wish to give
5. Execute
6. Then in the new screen select Standard doc. types in bottom window
Click on the Screen icon
Now, it will ask for the file path where you have to upload the logo
7. Now you can use this logo in REUSE_ALV_COMMENTARY_WRITE
call the FM
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = Y_I_LISTHEADER[]
I_LOGO =
I_END_OF_LIST_GRID =
I_ALV_FORM = -
ALV GRID Display function module giving Run time error
Hello Experts,
I have ALV report, In which I am using ALV grid dispaly FM to display the report.
But when my out table which I am passing to FM is empty that time ALV grid display shows blank ALV report. but when out table is not empty that time I am getting the Run time error, which shows message "Field symbol has not yet been assigned".
Can any one please help me out in this.
ThanksTYPES: BEGIN OF type_out,
col00 TYPE ytlet-rzzyyproduct,
col01 TYPE ytlet-kslvt,
col02 TYPE ytlet-kslvt,
col03 TYPE ytlet-kslvt,
col04 TYPE ytlet-kslvt,
col05 TYPE ytlet-kslvt,
col06 TYPE ytlet-kslvt,
col07 TYPE ytlet-kslvt,
col08 TYPE ytlet-kslvt,
col09 TYPE ytlet-kslvt,
col10 TYPE ytlet-kslvt,
col11 TYPE ytlet-kslvt,
col12 TYPE ytlet-kslvt,
col13 TYPE ytlet-kslvt,
col14 TYPE ytlet-kslvt,
col15 TYPE ytlet-kslvt,
col16 TYPE ytlet-kslvt,
col17 TYPE ytlet-kslvt,
col18 TYPE ytlet-kslvt,
col19 TYPE ytlet-kslvt,
col20 TYPE ytlet-kslvt,
col21 TYPE ytlet-kslvt,
col22 TYPE ytlet-kslvt,
col23 TYPE ytlet-kslvt,
col24 TYPE ytlet-kslvt,
col25 TYPE ytlet-kslvt,
col26 TYPE ytlet-kslvt,
col27 TYPE ytlet-kslvt,
col28 TYPE ytlet-kslvt,
col29 TYPE ytlet-kslvt,
col30 TYPE ytlet-kslvt,
col31 TYPE ytlet-kslvt,
col32 TYPE ytlet-kslvt,
col33 TYPE ytlet-kslvt,
col34 TYPE ytlet-kslvt,
col35 TYPE ytlet-kslvt,
col36 TYPE ytlet-kslvt,
col37 TYPE ytlet-kslvt,
col38 TYPE ytlet-kslvt,
col39 TYPE ytlet-kslvt,
col40 TYPE ytlet-kslvt,
col41 TYPE ytlet-kslvt,
col42 TYPE ytlet-kslvt,
col43 TYPE ytlet-kslvt,
col44 TYPE ytlet-kslvt,
END OF type_out.
DATA: t_fieldcat TYPE slis_t_fieldcat_alv, "Field catelog table
w_fieldcat TYPE slis_fieldcat_alv, "Field catelog Work area
w_layout TYPE slis_layout_alv, "Layout structure
w_event TYPE slis_alv_event, "Event structure
t_event TYPE slis_t_event, "Event structure
t_sort TYPE STANDARD TABLE OF slis_sortinfo_alv,
t_callback_main_user_command TYPE slis_formname,
v_selfield TYPE slis_selfield.
FIELD-SYMBOLS: <ksl>.
FORM DISPLAY_REPORT .
*Prepare Field Catlog
PERFORM creat_field_catlog.
*Set layout
PERFORM set_layout.
*Get Event
PERFORM get_event.
*Display Report
PERFORM display_alv_report.
ENDFORM. " DISPLAY_REPORT
FORM creat_field_catlog .
PERFORM add_fields_catlog USING:
'01' 'RZZYYPRODUCT' 'IT_OUT' 'MPMs' ' ',
'02' 'KSLVT' 'IT_OUT' 'License Fee' ' ',
'03' 'KSLVT' 'IT_OUT' 'Ad Sales' ' ',
'04' 'KSLVT' 'IT_OUT' 'Promo Fees' ' ',
'05' 'KSLVT' 'IT_OUT' 'Total Ad Sales/Promo' ' ',
'06' 'KSLVT' 'IT_OUT' 'Other' ' ',
'07' 'KSLVT' 'IT_OUT' 'Total' ' ',
'08' 'KSLVT' 'IT_OUT' 'Dom Station' ' ',
'09' 'KSLVT' 'IT_OUT' 'Basic Cable/Free VOD' ' ',
'10' 'KSLVT' 'IT_OUT' 'License Fee' ' ',
'11' 'KSLVT' 'IT_OUT' 'Ad Sales (incl Internet)' ' ',
'12' 'KSLVT' 'IT_OUT' 'Promo Fees' ' ',
'13' 'KSLVT' 'IT_OUT' 'Ad Sales & Promo Fees' ' ',
'14' 'KSLVT' 'IT_OUT' 'Foreign' ' ',
'15' 'KSLVT' 'IT_OUT' 'Pay TV' ' ',
'16' 'KSLVT' 'IT_OUT' 'Other' ' ',
'17' 'KSLVT' 'IT_OUT' 'Total' ' ',
'18' 'KSLVT' 'IT_OUT' 'Home Entertainment' ' ',
'19' 'KSLVT' 'IT_OUT' 'SPTI' ' ',
'20' 'KSLVT' 'IT_OUT' 'All Other Divisions' ' ',
'21' 'KSLVT' 'IT_OUT' 'Total' ' ',
'22' 'KSLVT' 'IT_OUT' 'Total Revenue' ' ',
'23' 'KSLVT' 'IT_OUT' 'PV Net Down & Producers Share' '',
'24' 'KSLVT' 'IT_OUT' 'Total Net Revenue' ' ',
'25' 'KSLVT' 'IT_OUT' 'Development Expense' ' ',
'26' 'KSLVT' 'IT_OUT' 'SOP Deficits' ' ',
'27' 'KSLVT' 'IT_OUT' 'Amortization' ' ',
'28' 'KSLVT' 'IT_OUT' 'Other COS ' ' ',
'29' 'KSLVT' 'IT_OUT' 'Total COS' ' ',
'30' 'KSLVT' 'IT_OUT' 'Profit Before Releasing' ' ',
'31' 'KSLVT' 'IT_OUT' 'Gross Profit %' ' ',
'32' 'KSLVT' 'IT_OUT' 'SPT' ' ',
'33' 'KSLVT' 'IT_OUT' 'Home Entertainment' ' ',
'34' 'KSLVT' 'IT_OUT' 'SPTI' ' ',
'35' 'KSLVT' 'IT_OUT' 'All Other Divisions' ' ',
'36' 'KSLVT' 'IT_OUT' 'Other' ' ',
'37' 'KSLVT' 'IT_OUT' 'Total' ' ',
'38' 'KSLVT' 'IT_OUT' 'Gross Profit' ' ',
'39' 'KSLVT' 'IT_OUT' 'SPT' ' ',
'40' 'KSLVT' 'IT_OUT' 'Home Entertainment' ' ',
'41' 'KSLVT' 'IT_OUT' 'SPTI' ' ',
'42' 'KSLVT' 'IT_OUT' 'All Other Divisions' ' ',
'43' 'KSLVT' 'IT_OUT' 'Other' ' ',
'44' 'KSLVT' 'IT_OUT' 'Total' ' ',
'45' 'KSLVT' 'IT_OUT' 'Net Margin' ' '.
ENDFORM. " CREAT_FIELD_CATLOG
*& Form ADD_FIELDS_CATLOG
Filling of field Catlog
FORM add_fields_catlog USING p_colpos
p_fildname
p_tabname
p_fildtext
p_ndisplay.
w_fieldcat-row_pos = '1'.
w_fieldcat-col_pos = p_colpos.
w_fieldcat-fieldname = p_fildname.
w_fieldcat-tabname = p_tabname.
w_fieldcat-reptext_ddic = p_fildtext.
w_fieldcat-no_out = p_ndisplay.
APPEND w_fieldcat TO t_fieldcat.
CLEAR: w_fieldcat.
ENDFORM. " ADD_FIELDS_CATLOG
*& Form SET_LAYOUT
Set Layout
FORM set_layout .
w_layout-colwidth_optimize = 'X'.
ENDFORM. " SET_LAYOUT
*& Form GET_EVENT
text
FORM get_event .
w_event-name = 'TOP-OF-PAGE'.
w_event-form = 'F_TOP-OF_PAGE'.
APPEND w_event TO t_event.
ENDFORM. " GET_EVENT
*& Form TOP-OF-PAGE
Top of Page
FORM top-of-page.
DATA : t_list_commentry TYPE slis_t_listheader,
w_header TYPE slis_listheader,
lv_text(90) TYPE c,
l_text(90) TYPE c,
lv_rundate(10) TYPE c,
lv_runtime(10) TYPE c.
CONSTANTS: c_space(2) TYPE c VALUE ' ',
c_space2(6) TYPE c VALUE ' '.
w_header-typ = 'S'.
w_header-key = 'Program:'.
w_header-info = sy-repid.
APPEND w_header TO t_list_commentry.
WRITE: sy-datum TO lv_rundate MM/DD/YYYY.
WRITE: sy-uzeit TO lv_runtime USING EDIT MASK '__:__:__'.
CLEAR w_header.
w_header-typ = 'S'.
w_header-key = text-021.
w_header-info = lv_rundate.
APPEND w_header TO t_list_commentry.
CLEAR: w_header.
w_header-typ = 'S'.
w_header-key = 'User Id'.
w_header-info = sy-uname.
APPEND w_header TO t_list_commentry.
CLEAR: w_header.
w_header-typ = 'S'.
w_header-key = 'Run Date'.
w_header-info = lv_rundate.
APPEND w_header TO t_list_commentry.
CLEAR: w_header.
w_header-typ = 'S'.
w_header-key = 'Run Time'.
w_header-info = lv_runtime.
APPEND w_header TO t_list_commentry.
CLEAR: w_header.
w_header-typ = 'H'.
w_header-key = 'order'.
w_header-info = 'MCR Report'.
APPEND w_header TO t_list_commentry.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_list_commentry.
ENDFORM. "TOP-OF-PAGE
FORM display_alv_report .
CONSTANTS : gc_save TYPE c VALUE 'A'. "Save Layout
t_callback_main_user_command = c_user_command.
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 = t_callback_main_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 =
I_GRID_SETTINGS =
is_layout = w_layout
it_fieldcat = t_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
i_save = gc_save
IS_VARIANT =
IT_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 = it_out
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
ENDIF. -
ALV Display by function modules
Hi,
I have data in internal table itab, Which having seven columns
I want to display all these data in gridlayout by using function modules.
Can you please guide me the logic how to do.
An also I want to display the headings for each column, then I have to display all data in internal table.HI,
Work on this....
TABLES:pernr.
TYPE-POOLS : slis.
INFOTYPES:
0001,
0002,
0008.
DATA : i_alv TYPE slis_fieldcat_alv OCCURS 0,
wa TYPE slis_fieldcat_alv.
DATA : i_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv,
i_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader,
i_event TYPE slis_t_event,
wa_event TYPE slis_alv_event,
v_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA:v_line TYPE i.
DATA:BEGIN OF tab OCCURS 0,
pernr LIKE p0001-pernr, " Personalnumber
ename LIKE p0001-ename,
gbdat LIKE p0002-gbdat,
ansal LIKE p0008-ansal,
END OF tab.
START-OF-SELECTION.
GET pernr .
rp-provide-from-last p0001 space pn-begda pn-endda.
rp-provide-from-last p0002 space pn-begda pn-endda.
rp-provide-from-last p0008 space pn-begda pn-endda.
MOVE-CORRESPONDING p0001 TO tab.
MOVE-CORRESPONDING p0002 TO tab.
MOVE-CORRESPONDING p0008 TO tab.
APPEND tab.
END-OF-SELECTION.
DESCRIBE TABLE tab LINES v_line.
Check for output internal table
IF v_line = 0.
MESSAGE 'NO RECORDS FOUND' TYPE 'I'.
ELSE.
PERFORM zf_commentbuild.
PERFORM zf_event.
PERFORM zf_display.
ENDIF.
*& Form zf_display
text
FORM zf_display.
CLEAR wa.
wa-fieldname = 'PERNR'.
wa-tabname = 'TAB'.
wa-ref_fieldname = 'PERNR'.
wa-ref_tabname = 'PERNR'.
APPEND wa TO i_alv.
CLEAR wa.
wa-fieldname = 'ENAME'.
wa-tabname = 'TAB'.
wa-ref_fieldname = 'ENAME'.
wa-ref_tabname = 'P0001'.
wa-seltext_m = 'NAME OF EMPLOYEE'.
APPEND wa TO i_alv.
CLEAR wa.
wa-fieldname = 'GBDAT'.
wa-tabname = 'TAB'.
wa-ref_fieldname = 'GBDAT'.
wa-ref_tabname = 'P0002'.
wa-seltext_m = 'BIRTH DATE OF EMPLOYEE'.
APPEND wa TO i_alv.
CLEAR wa.
wa-fieldname = 'ANSAL'.
wa-tabname = 'TAB'.
wa-ref_fieldname = 'ANSAL'.
wa-ref_tabname = 'P0009'.
wa-seltext_m = 'ANNUAL SALARY OF EMPLOYEE'.
APPEND wa TO i_alv.
CLEAR wa.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZHRTEMPLATE'
i_structure_name = 'TAB'
i_background_id = 'ALV_BACKGROUND'
it_fieldcat = i_alv
it_sort = i_sort
i_save = 'X'
it_events = i_event
TABLES
t_outtab = tab
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE 'Error in ALV FM Parameters' TYPE 'I'.
ENDIF.
ENDFORM. "zf_display
*& Form zf_commentbuild
text
--> p1 text
<-- p2 text
FORM zf_commentbuild .
wa_header-typ = 'H'.
wa_header-info = 'SAMPLE REPORT'.
APPEND wa_header TO i_header.
CLEAR wa_header.
ENDFORM. " zf_commentbuild
*& Form zf_event
text
--> p1 text
<-- p2 text
FORM zf_event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = i_event
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
READ TABLE i_event WITH KEY name = slis_ev_top_of_page INTO wa_event.
IF sy-subrc EQ 0.
MOVE v_top_of_page TO wa_event-form.
APPEND wa_event TO i_event.
ENDIF.
ENDFORM. "zf_event
*& Form top_of_page
text
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'INBEV_LOGO'
it_list_commentary = i_header.
ENDFORM. "top_of_page
Reward me if useflu...or any doubts,let me know
sankar
Maybe you are looking for
-
Does anyone know what's wrong with my C6380? The LCD display doesn't pop up when the printer starts. It just lay down all the times. Even I reset the printer with (press: Print Photos + Red Eye Removal), same thing happended. Does anyone has an idea?
-
Do I need a new router or an extender
I have a new HP laptop and am using a Netgear N WnR 2000 v2 wireless router that is about 2 years old. Everything is fine except in one bedroom. Most of the time i get 2 to 4 bars which is fine. However there are times mostly at night when the sign
-
.DS_Store files undo delete command in Terminal
I was copying large quantities of files to a poorly formatted LaCie 3T external drive and kept coming up with interruptions in copying because the Finder kept "seeing" the creation of .DS_Store files. I researched and found a command for Terminal whi
-
Hi, on FSCM91, tools 8.52, How to know what is the last bundle applied ? Thank you.
-
Why won't my iPhone 4 on iOS5 sync updated apps from the iTunes store?
Why won't my iPhone 4 on iOS5 sync updated apps from the iTunes store?