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

ALV USING FM

Former Member
0 Kudos

1.I WANT TO DISPLAY DATE ON HEADER OF THE REPORT IN FORMAT JULY-06,APRIL-05,MAY-99.

BY USING ALV WITH FUNCTION MODULES.

2. I WANT TO SUBTOTAL NUMERICAL FIELDS IN THE REPORT BY USING ALV WITH FUNCTION MODULES

3.I WANT TO DISPLAY MAIN HEADING BY GIVING 20 CHARATER

SPACE FROM EXTERM LEFTSIDE ON THE HEADER OF THE REPORT BY USING ALV WITH FM.

KINDLY HELP ME IT IS URGENT.

4 REPLIES 4

Former Member
0 Kudos

Hi,

You can use the CL_DD_DOCUMENT Class to Design the TOP_OF_PAGE

Check this Blog.

/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid

Also check this blog

/people/community.user/blog/2007/05/07/alignment-of-data-in-top-of-page-in-alv-grid

Thanks,

Suman.

Former Member
0 Kudos

Hi,

Please refer below:

1) Refer code below:


  REPORT  ZTEST_REPORT.

parameter : date like sy-datum default sy-datum.

data : gt_date like t247 occurs 0 WITH HEADER LINE.
data : gv_date(30) type c,
       gv_month(10) type c,
       gv_year(4) type c,
       gv_day(2) type c.


CALL FUNCTION 'MONTH_NAMES_GET'
* EXPORTING
*   LANGUAGE                    = SY-LANGU
* IMPORTING
*   RETURN_CODE                 =
  TABLES
    month_names                 = gt_date
* EXCEPTIONS
*   MONTH_NAMES_NOT_FOUND       = 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.

loop at gt_date.

  if gt_date-mnr eq date+4(2).
    gv_month = gt_date-KTX.
  endif.

endloop.

CONCATENATE date+6(2) gv_month date(4) into gv_date.

write : gv_date

And please refer the link below:

http://www.sapdev.co.uk/reporting/alv/alvgrid_enhanced.htm

Thanks,

Sriram Ponna.

Former Member
0 Kudos

Hi,

Follw the code to print the date in top-of-page

TABLES VBAK.

TYPE-POOLS SLIS.

  • Data Declaration

TYPES: BEGIN OF T_VBAK,

VBELN TYPE VBAK-VBELN,

ERDAT TYPE VBAK-ERDAT,

ERNAM TYPE VBAK-ERNAM,

AUDAT TYPE VBAK-AUDAT,

VBTYP TYPE VBAK-VBTYP,

NETWR TYPE VBAK-NETWR,

VKORG TYPE VBAK-VKORG,

VKGRP TYPE VBAK-VKGRP,

RN TYPE I,

END OF T_VBAK.

DATA IT_VBAK TYPE STANDARD TABLE OF T_VBAK INITIAL SIZE 0 WITH HEADER LINE.

  • ALV Data Declaration

DATA: FLDCAT TYPE SLIS_T_FIELDCAT_ALV,

W_FLDCAT TYPE SLIS_FIELDCAT_ALV,

GD_LAYOUT TYPE SLIS_LAYOUT_ALV,

GD_REPID TYPE SY-REPID.

SELECT-OPTIONS: VBELN FOR VBAK-VBELN.

START-OF-SELECTION.

PERFORM DATA_RETRIEVAL.

END-OF-SELECTION.

PERFORM BLD_FLDCAT.

PERFORM BLD_LAYOUT.

PERFORM DISPLAY_ALV_REPORT.

  • Build Field Catalog for ALV Report

FORM BLD_FLDCAT.

W_FLDCAT-FIELDNAME = 'VBELN'.

W_FLDCAT-SELTEXT_M = 'Sales_Document'.

W_FLDCAT-COL_POS = 1.

*W_FLDCAT-EMPHASIZE = 'C411'.

*CXYZ: C=COLOR,X=COLOR NUMBER(1-9),Y=BOLD(0/1),Z=INVERSE(0/1)

W_FLDCAT-OUTPUTLEN = 15.

W_FLDCAT-KEY = 'X'.

W_FLDCAT-ICON = 'X'.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

W_FLDCAT-FIELDNAME = 'ERDAT'.

W_FLDCAT-SELTEXT_L = 'Record_Date_created'.

W_FLDCAT-COL_POS = 2.

W_FLDCAT-KEY = 'X'.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

W_FLDCAT-FIELDNAME = 'ERNAM'.

W_FLDCAT-SELTEXT_L = 'Cteated_Person_Name'.

W_FLDCAT-COL_POS = 3.

W_FLDCAT-EMPHASIZE = 'C011'.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

W_FLDCAT-FIELDNAME = 'AUDAT'.

W_FLDCAT-SELTEXT_M = 'Document_Date'.

W_FLDCAT-COL_POS = 4.

W_FLDCAT-EMPHASIZE = 'C110'.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

W_FLDCAT-FIELDNAME = 'VBTYP'.

W_FLDCAT-SELTEXT_L = 'SDDocument_category'.

W_FLDCAT-COL_POS = 5.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

W_FLDCAT-FIELDNAME = 'NETWR'.

W_FLDCAT-SELTEXT_L = 'Net_Value'.

W_FLDCAT-COL_POS = 6.

W_FLDCAT-OUTPUTLEN = 10.

W_FLDCAT-DO_SUM = 'X'.

W_FLDCAT-DATATYPE = 'CURR'.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

W_FLDCAT-FIELDNAME = 'VKORG'.

W_FLDCAT-SELTEXT_L = 'Sales_Organization'.

W_FLDCAT-COL_POS = 7.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

W_FLDCAT-FIELDNAME = 'VKGRP'.

W_FLDCAT-SELTEXT_M = 'Sales_Group'.

W_FLDCAT-COL_POS = 8.

W_FLDCAT-EMPHASIZE = 'C801'.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

W_FLDCAT-FIELDNAME = 'RN'.

W_FLDCAT-SELTEXT_S = 'RN'.

W_FLDCAT-COL_POS = 0.

APPEND W_FLDCAT TO FLDCAT.

CLEAR W_FLDCAT.

ENDFORM.

  • Build Layout for ALV Grid Report

FORM BLD_LAYOUT.

GD_LAYOUT-NO_INPUT = 'X'.

*GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

*GD_LAYOUT-NO_SCROLLING = 'X'.

*GD_LAYOUT-BOX_FIELDNAME = 'VBELN'.

ENDFORM.

  • Display report using ALV grid

FORM DISPLAY_ALV_REPORT.

GD_REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = GD_REPID

IS_LAYOUT = GD_LAYOUT

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

IT_FIELDCAT = FLDCAT[]

I_SAVE = 'X'

TABLES

T_OUTTAB = IT_VBAK

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM.

  • Retrieve data from VBAK table and populate itab IT_VBAK

FORM DATA_RETRIEVAL.

SELECT VBELN ERDAT ERNAM AUDAT VBTYP NETWR VKORG

FROM VBAK

INTO TABLE IT_VBAK

WHERE VBELN IN VBELN.

LOOP AT IT_VBAK.

IT_VBAK-RN = SY-TABIX.

MODIFY IT_VBAK INDEX SY-TABIX.

ENDLOOP.

ENDFORM.

FORM TOP_OF_PAGE_SPLIT USING R_TOP TYPE REF TO CL_DD_DOCUMENT.

DATA: S_TAB TYPE SDYDO_TEXT_TABLE,

C_AREA TYPE REF TO CL_DD_AREA,

TEXT TYPE SDYDO_TEXT_ELEMENT.

TYPES: BEGIN OF TAB_TEXT,

TEXT TYPE SDYDO_TEXT_ELEMENT,

END OF TAB_TEXT.

DATA: I_TEXT TYPE TABLE OF TAB_TEXT.

DATA: W_TEXT TYPE TAB_TEXT.

CALL METHOD R_TOP->INITIALIZE_DOCUMENT.

CALL METHOD R_TOP->VERTICAL_SPLIT

EXPORTING

SPLIT_AREA = R_TOP

SPLIT_WIDTH = '70%'

IMPORTING

RIGHT_AREA = C_AREA.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

*CONCATENATE SY-DATUM4(2) ' / ' SY-DATUM6(2) ' / ' SY-DATUM(4) INTO DATE1.

*CONCATENATE 'DATE' DATE1 INTO W_TEXT-TEXT SEPARATED BY ':'.

W_TEXT-TEXT = 'GEMS TECHNO SOLUTIONS PVT LIMITED'.

APPEND W_TEXT TO I_TEXT.

W_TEXT-TEXT = 'PLOT NO.100,SECTOR 1'.

APPEND W_TEXT TO I_TEXT.

W_TEXT-TEXT = 'MVP DOUBLE ROAD'.

APPEND W_TEXT TO I_TEXT.

W_TEXT-TEXT = 'MVP COLONY,VIZAG'.

APPEND W_TEXT TO I_TEXT.

S_TAB[] = I_TEXT[].

CALL METHOD C_AREA->ADD_TEXT

EXPORTING

TEXT_TABLE = S_TAB

FIX_LINES = 'X'

SAP_FONTSIZE = CL_DD_DOCUMENT=>MEDIUM

SAP_EMPHASIS = CL_DD_DOCUMENT=>STRONG.

*CALL METHOD R_TOP->ADD_GAP

  • EXPORTING

  • WIDTH = 60.

TEXT = 'REPORT:'.

CALL METHOD R_TOP->ADD_TEXT

EXPORTING

TEXT = TEXT

SAP_EMPHASIS = 'STRONG'.

CALL METHOD R_TOP->ADD_GAP

EXPORTING

WIDTH = 2.

TEXT = SY-REPID.

CALL METHOD R_TOP->ADD_TEXT

EXPORTING

TEXT = TEXT

SAP_STYLE = 'KEY'.

CALL METHOD R_TOP->NEW_LINE.

TEXT = 'DATE:'.

CALL METHOD R_TOP->ADD_TEXT

EXPORTING

TEXT = TEXT

SAP_EMPHASIS = 'STRONG'.

CALL METHOD R_TOP->ADD_GAP

EXPORTING

WIDTH = 8.

TEXT = Datevar.

CALL METHOD R_TOP->ADD_TEXT

EXPORTING

TEXT = TEXT

SAP_STYLE = 'KEY'.

CALL METHOD R_TOP->NEW_LINE.

ENDFORM.

Replace the variable from above post to display the date in your required format to the bold variable in this code.

Reward,if it is useful.

Thanks,

Chandu

venkat_o
Active Contributor
0 Kudos

Hi Saritha, Check this sample program. This will solve 1 and 3 . REPORT zvenkat_alv_test.

*&---------------------------------------------------------------------*
" Declaration
"types
TYPES:
     BEGIN OF t_pa0001,
       pernr    TYPE pa0001-pernr,
       ename    TYPE pa0001-ename,
     END OF t_pa0001.
"Work area
DATA:
      w_pa0001 TYPE t_pa0001.
"Internal tables
DATA:
      i_pa0001 TYPE STANDARD TABLE OF t_pa0001.
*&---------------------------------------------------------------------*
* ALV Declarations
*----------------------------------------------------------------------*
* Types Pools
TYPE-POOLS:
   slis.
* Types
TYPES:
   t_fieldcat         TYPE slis_fieldcat_alv,
   t_events           TYPE slis_alv_event,
   t_layout           TYPE slis_layout_alv.
* Workareas
DATA:
   w_fieldcat         TYPE t_fieldcat,
   w_events           TYPE t_events,
   w_layout           TYPE t_layout.
* Internal Tables
DATA:
   i_fieldcat         TYPE STANDARD TABLE OF t_fieldcat,
   i_events           TYPE STANDARD TABLE OF t_events.
*&---------------------------------------------------------------------*
*&START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION .
  PERFORM get_data.

*&---------------------------------------------------------------------*
*&END-OF-SELECTION
*&---------------------------------------------------------------------*
END-OF-SELECTION.

  PERFORM fieldcat.
  PERFORM layout_build.
  PERFORM dispaly .
*&---------------------------------------------------------------------*
  " Form  fieldcat
*&---------------------------------------------------------------------*
FORM fieldcat .

  CLEAR :
  w_fieldcat,i_fieldcat[].

  w_fieldcat-fieldname = 'PERNR'.
  w_fieldcat-tabname   = 'I_PA0001'.
  w_fieldcat-seltext_m = 'Employee No'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.


  w_fieldcat-fieldname = 'ENAME'.
  w_fieldcat-tabname   = 'I_PA0001'.
  w_fieldcat-seltext_m = 'ENAME'.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.


ENDFORM.                    " fieldcat
*&---------------------------------------------------------------------*
*&      Form  dispaly
*&---------------------------------------------------------------------*
FORM dispaly .

  DATA :l_program TYPE sy-repid.
  l_program = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program          = l_program
      i_callback_html_top_of_page = 'TOP_OF_PAGE'
      is_layout                   = w_layout
      it_events                   = i_events
      it_fieldcat                 = i_fieldcat
    TABLES
      t_outtab                    = i_pa0001.
  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.                    " dispaly
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
FORM get_data .
  DO 20 TIMES.
    SELECT pernr ename
    FROM pa0001
    APPENDING CORRESPONDING FIELDS OF TABLE i_pa0001
    UP TO 10 ROWS.
  ENDDO.
ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
*&      Form  layout_build
*&---------------------------------------------------------------------*
FORM layout_build .

  w_layout-zebra = 'X'. "Pass COLOR field name like this.

ENDFORM.                    " layout_build

*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
FORM top_of_page USING document TYPE REF TO cl_dd_document.
  DATA:
        l_text TYPE sdydo_text_element,
        l_ltx  TYPE t247-ltx,
        l_date TYPE sdydo_text_element.
  " Adding 20 char width from Extreme Left
  CALL METHOD document->add_gap
    EXPORTING
      width = 20.
  l_text = 'XYZ Pvt Ltd'.
  "Displaying text
  CALL METHOD document->add_text
    EXPORTING
      text         = l_text
      sap_emphasis = cl_dd_document=>strong
      sap_style    = cl_dd_document=>key.
  " Getting Date format.
  SELECT SINGLE ltx
    FROM t247
    INTO l_ltx
   WHERE spras  = sy-langu
     AND mnr    = sy-datum+4(2).
  CONCATENATE l_ltx sy-datum+0(4) INTO l_date SEPARATED BY '-'.
  "Adding new line
  CALL METHOD document->new_line.
  "Giving Width at Leftside
  CALL METHOD document->add_gap
    EXPORTING
      width = 20.
  "Displaying text
  CALL METHOD document->add_text
    EXPORTING
      text         = l_date
      sap_fontsize = cl_dd_document=>medium
      sap_color    = cl_dd_document=>list_positive
      sap_style    = cl_dd_document=>key.

  CALL METHOD document->underline.

ENDFORM.                    "top_of_page
To get Subtotal and Total check the following procedure. 1.Define SORT table and FIELDCATALOG table .
Data :i_field type slis_t_fieldcat_alv,
            w_field like line of i_field,
            i_sort type slis_t_sortinfo_alv,
            w_sort like line of i_sort.
2.While buildingfieldcatalog,We have to set DO_SUM = 'X' for quantity field . ex.
w_field-fieldname = 'MENGE'.
    w_field-tabname    = 'I_TAB'.
    w_field-DO_SUM = 'X'.       "total
    append w_field to i_field.
    clear w_field.
3.Build sort table .
Clear: w_sort,i_sort[].
       w_sort-spos         = 1.
       w_sort-fieldname = 'WERKS'.
       w_sort-up            = 'X'.
       w_sort-subtot      = 'X'.
   append w_sort to i_sort.
   clear w_sort.
4.Pass this I_SORT table thru REUSE_ALV_LIST_DISPLAY function module ..like fieldcatalog table. I hope that it helps u . Regards, Venkat.O