Wednesday, November 17, 2010

Top-of-page and End-of-page in ALV GRID using METHODS

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_background_id = 'ALV_BACKGROUND'
i_callback_html_top_of_page = 'TOP_OF_PAGE'
i_callback_html_end_of_list = 'END_OF_LIST_HTML'

is_layout = wa_layout
it_fieldcat = it_fieldcat
i_default = 'X'
i_save = 'A'
is_print = wa_print
TABLES
t_outtab = it_result
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
*-------------------------------------------------------------------------------------*
FORM top_of_page USING cl_dd TYPE REF TO cl_dd_document.

DATA: lv_per(255).

* for space
CALL METHOD cl_dd->add_gap
EXPORTING
width = 7.

* to add text in heading
CALL METHOD cl_dd->add_text
EXPORTING
text = text-001
sap_style = cl_dd_document=>heading           "Sap styles are heading,Key, success, etc
sap_fontsize = cl_dd_document=>medium       "Sap font sizes are small,medium, large
sap_emphasis = cl_dd_document=>strong.      "Sap emphases are strong , emphasis

* for gap between two text
CALL METHOD cl_dd->add_gap
EXPORTING
width = 23.

* for new text
CALL METHOD cl_dd->add_text
EXPORTING
text = text-001
sap_style = cl_dd_document=>key
sap_color = cl_dd_document=>list_background
sap_fontsize = cl_dd_document=>large
sap_emphasis = cl_dd_document=>emphasis.


* for new line
CALL METHOD cl_dd->new_line
EXPORTING
repeat = 0.

CALL METHOD cl_dd->add_gap
EXPORTING
width = 7.

CALL METHOD cl_dd->add_text
EXPORTING
text = text-001
sap_emphasis = cl_dd_document=>strong
style_class = space.

CALL METHOD cl_dd->add_gap
EXPORTING
width = 25.


CALL METHOD cl_dd->add_text
EXPORTING
text = text-001
sap_emphasis = cl_dd_document=>strong
style_class = space.

ENDFORM. "top_of_page


*-----------------------------------------------------------------------------------------*
*& Form END-OF-PAGE
*-----------------------------------------------------------------------------------------*

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

ls_text = 'Footer title'.

* add icon (red triangle)
CALL METHOD end->add_icon
EXPORTING
sap_icon = 'ICON_MESSAGE_ERROR_SMALL'.

* add text (via variable)
CALL METHOD end->add_text
EXPORTING
text = ls_text
sap_emphasis = 'strong'.

* add new line (start new line)
CALL METHOD end->new_line.

* display text(bold)
CALL METHOD end->add_text
EXPORTING
text = 'Bold text'
sap_emphasis = 'strong'.

*set height of this section
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = l_grid.

CALL METHOD l_grid->parent->parent->(f)
EXPORTING
id = 3
height = 10.

ENDFORM. "end_of_list_html.

Monday, October 25, 2010

Download Smartform Output in PDF


REPORT zsmart_form2.

DATA w_fm_name TYPE rs38l_fnam.
DATA itab TYPE TABLE OF ztest1.
DATA w_itab LIKE LINE OF itab.
DATA w_rad TYPE char3.
DATA: tab_otf_data TYPE ssfcrescl.
DATA: tab_otf_final TYPE itcoo OCCURS 0 WITH HEADER LINE.
DATA: bin_filesize TYPE i,
      file_size TYPE i.
DATA: pdf_tab LIKE tline OCCURS 0 WITH HEADER LINE.

DATA l_v_date LIKE sy-datum.

DATA: cparam TYPE ssfctrlop,
outop TYPE ssfcompop.


PARAMETERS p_workct LIKE crhd-arbpl.
SELECT-OPTIONS: so_date FOR sy-datum.

PARAMETERS: rad1 RADIOBUTTON GROUP radi,
            rad2 RADIOBUTTON GROUP radi,
            rad3 RADIOBUTTON GROUP radi.

REFRESH itab.

w_itab-name = 'name1'.
w_itab-age = '20'.
w_itab-mark1 = '123'.
w_itab-mark2 = '124'.
w_itab-mark3 = '125'.
APPEND w_itab TO itab.

w_itab-name = 'name2'.
w_itab-age = '21'.
w_itab-mark1 = '223'.
w_itab-mark2 = '224'.
w_itab-mark3 = '225'.
APPEND w_itab TO itab.

w_itab-name = 'name3'.
w_itab-age = '22'.
w_itab-mark1 = '323'.
w_itab-mark2 = '324'.
w_itab-mark3 = '325'.
APPEND w_itab TO itab.

**** to supress the dialog box for printer
outop-tddest = 'LP01'.
cparam-no_dialog = 'X'.
cparam-preview = space.
cparam-getotf = 'X'.


CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZFORM_SAMPLE1'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
fm_name = w_fm_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3
.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CALL FUNCTION w_fm_name
EXPORTING
control_parameters = cparam
output_options = outop
user_settings = space

IMPORTING
* DOCUMENT_OUTPUT_INFO =
job_output_info = tab_otf_data
* JOB_OUTPUT_OPTIONS =
TABLES
itab1 = itab[]
 EXCEPTIONS
 formatting_error = 1
 internal_error = 2
 send_error = 3
 user_canceled = 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.


*appending the otf data into the final table ****
tab_otf_final[] = tab_otf_data-otfdata[].


*converting OTF data into pdf data************
CALL FUNCTION 'CONVERT_OTF'
  EXPORTING
    format                = 'PDF'
    max_linewidth         = 132
  IMPORTING
    bin_filesize          = bin_filesize
  TABLES
    otf                   = tab_otf_final
    lines                 = pdf_tab
  EXCEPTIONS
    err_max_linewidth     = 1
    err_format            = 2
    err_conv_not_possible = 3
    err_bad_otf           = 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.

*downloading the converted PDF data to your local PC*
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = bin_filesize
filename = 'D:\TEST.PDF'
filetype = 'BIN'
IMPORTING
filelength = file_size
TABLES
data_tab = pdf_tab
* FIELDNAMES =
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
.

Dialog Box Container Program

PROGRAM zdialog_box_cont.

CLASS lcl_event_receiver DEFINITION DEFERRED.

DATA: ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm,
g_max TYPE i VALUE 100,
gt_sflight TYPE TABLE OF sflight,
gt_sbook TYPE TABLE OF sbook,
g_repid LIKE sy-repid,
gs_layout TYPE lvc_s_layo,
cont_for_flights TYPE scrfname VALUE 'BCALV_GRID_02_100',
grid1 TYPE REF TO cl_gui_alv_grid,
custom_container TYPE REF TO cl_gui_custom_container,
grid2 TYPE REF TO cl_gui_alv_grid,
dialogbox_container TYPE REF TO cl_gui_dialogbox_container,
event_receiver TYPE REF TO lcl_event_receiver.

* Set initial dynpro
SET SCREEN 100.
* class definition
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
* method to close dialog box
METHODS handle_close
FOR EVENT close OF cl_gui_dialogbox_container
IMPORTING sender.
ENDCLASS. "lcl_event_receiver DEFINITION
* class implementation
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_close.
CALL METHOD sender->set_visible
EXPORTING
visible = space.
ENDMETHOD. "handle_close
ENDCLASS. "lcl_event_receiver IMPLEMENTATION

*&---------------------------------------------------------------------*
*& Module PBO_100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE pbo_100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
g_repid = sy-repid.
ENDMODULE. " PBO_100 OUTPUT
*&---------------------------------------------------------------------*
*& Module PAI_100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE pai_100 INPUT.
DATA: dialogbox_status TYPE c. "'X': does exist, SPACE: does not ex.
save_ok = ok_code.
CASE save_ok.
WHEN 'EXIT'.
PERFORM exit_program.
WHEN 'DIALOG'.
IF dialogbox_status IS INITIAL.
dialogbox_status = 'X'.
PERFORM create_detail_list.
ELSE.
CALL METHOD dialogbox_container->set_visible
EXPORTING
visible = 'X'.
CALL METHOD grid2->refresh_table_display.
ENDIF.
ENDCASE.
CLEAR save_ok.
ENDMODULE. " PAI_100 INPUT

*&---------------------------------------------------------------------*
*& Form SELECT_TABLE_SBOOK
*&---------------------------------------------------------------------*
FORM select_table_sbook.
SELECT * FROM sbook INTO TABLE gt_sbook UP TO 10 ROWS.
ENDFORM. " SELECT_TABLE_SBOOK

*&---------------------------------------------------------------------*
*& Form create_detail_list
*&---------------------------------------------------------------------*
FORM create_detail_list.

PERFORM select_table_sbook.

* Object Creation for dialog box
CREATE OBJECT dialogbox_container
EXPORTING
top = 150
left = 150
lifetime = cntl_lifetime_dynpro
caption = 'Bookings'(200)
width = 800
height = 200.

* Object for ALV Grid
CREATE OBJECT grid2
EXPORTING
i_parent = dialogbox_container.

* Object For Event Handler
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_close FOR dialogbox_container.

* display data
gs_layout-grid_title = space.

CALL METHOD grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'SBOOK'
is_layout = gs_layout
CHANGING
it_outtab = gt_sbook.

CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid2.

ENDFORM. " create_detail_list

Reference:
Standard Program : BCALV_GRID_02

Thursday, October 7, 2010

Dynamic Internal Table

REPORT zdynamic_table.
* To create Dynamic Internal Table
TYPE-POOLS: slis.
TABLES zctp_ch_spare.

DATA: BEGIN OF itab OCCURS 0,
      t_mctype LIKE zctp_ch_spare-t_mctype,
      END OF itab.

FIELD-SYMBOLS: <t_dyntable> TYPE STANDARD TABLE,
               <fs_dyntable>,
               <fs_fldval> TYPE ANY.

DATA:   t_newtable TYPE REF TO data,
        t_newline  TYPE REF TO data,
        t_fldcat   TYPE lvc_t_fcat,
        wa_it_fldcat TYPE lvc_s_fcat,
        wa_colno(2) TYPE n,
        wa_flname(12) TYPE c.

DATA:   wa_fieldcat TYPE slis_fieldcat_alv        ,
        it_fieldcat TYPE slis_t_fieldcat_alv      .

DATA: fieldname(20) TYPE c.
DATA: fieldvalue(10) TYPE c.
DATA: index(3) TYPE c.

START-OF-SELECTION.

  SELECT t_mctype FROM zctp_ch_spare INTO TABLE itab.

* Prepare fieldcatalog to create Dynamic table.
  LOOP AT itab.
    CLEAR wa_it_fldcat.
    wa_flname = itab-t_mctype.
    wa_it_fldcat-fieldname = wa_flname.
    wa_it_fldcat-datatype = 'CHAR'.
    wa_it_fldcat-intlen = 10.
    APPEND wa_it_fldcat TO t_fldcat.
  ENDLOOP.

  CLEAR wa_it_fldcat.
  wa_flname = 'ERFUSER'.
  wa_it_fldcat-fieldname = wa_flname.
  wa_it_fldcat-datatype = 'CHAR'.
  wa_it_fldcat-intlen = 20.
  APPEND wa_it_fldcat TO t_fldcat.

  CLEAR wa_it_fldcat.
  wa_flname = 'ERFDATE'.
  wa_it_fldcat-fieldname = wa_flname.
  wa_it_fldcat-datatype = 'DATS'.
  wa_it_fldcat-intlen = 10.
  APPEND wa_it_fldcat TO t_fldcat.

* Create dynamic internal table and assign to FS
  CALL METHOD cl_alv_table_create=>create_dynamic_table
    EXPORTING
      it_fieldcatalog = t_fldcat
    IMPORTING
      ep_table        = t_newtable.

  ASSIGN t_newtable->* TO <t_dyntable>.

* Create dynamic work area and assign to FS
  CREATE DATA t_newline LIKE LINE OF <t_dyntable>.
  ASSIGN t_newline->* TO <fs_dyntable>.
* Append values for dynamically created fields
  LOOP AT itab.
    wa_flname = itab-t_mctype.
    fieldvalue = 'value'.

    ASSIGN COMPONENT  wa_flname
        OF STRUCTURE <fs_dyntable> TO <fs_fldval>.

    <fs_fldval> =  fieldvalue.
  ENDLOOP.

  wa_flname = 'ERFUSER'.
  fieldvalue = sy-uname.

  ASSIGN COMPONENT  wa_flname
      OF STRUCTURE <fs_dyntable> TO <fs_fldval>.

  <fs_fldval> =  fieldvalue.

  wa_flname = 'ERFDATE'.
  fieldvalue = sy-datum.

  ASSIGN COMPONENT  wa_flname
      OF STRUCTURE <fs_dyntable> TO <fs_fldval>.

  <fs_fldval> =  fieldvalue.
* Append to the dynamic internal table
  APPEND <fs_dyntable> TO <t_dyntable>.
*To display the Dynamic internal table Data in ALV
  LOOP AT itab.
    CLEAR wa_fieldcat.
    wa_flname = itab-t_mctype.
    wa_fieldcat-fieldname = wa_flname.
    wa_fieldcat-seltext_s = wa_flname.
    wa_fieldcat-outputlen = '10'.
    APPEND wa_fieldcat TO it_fieldcat.
  ENDLOOP.

  CLEAR wa_fieldcat.
  wa_flname = 'ERFUSER'.
  wa_fieldcat-fieldname = wa_flname.
  wa_fieldcat-seltext_s = 'CREATED BY'.
  wa_fieldcat-outputlen = '15'.
  APPEND wa_fieldcat TO it_fieldcat.

  CLEAR wa_fieldcat.
  wa_flname = 'ERFDATE'.
  wa_fieldcat-fieldname = wa_flname.
  wa_fieldcat-seltext_s = 'CREATED DATE'.
  wa_fieldcat-outputlen = '15'.
  APPEND wa_fieldcat TO it_fieldcat.
 
* Call ABAP List Viewer (ALV)
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      it_fieldcat = it_fieldcat
    TABLES
      t_outtab    = <t_dyntable>.

To create DYNAMIC ALV REPORT for Given Transparent table :
Dynamically create internal table for given transparent table.

REPORT  ZDYNAMIC_INTERNAL_TABLE                 .

TYPE-POOLS : abap.

field-symbols: <t_dyntable> type standard table,
               <fs_dyntable>,
               <fs_fldval> type any.

DATA: it_table TYPE REF TO data,
it_line TYPE REF TO data,
xfc TYPE lvc_s_fcat,
ifc TYPE lvc_t_fcat.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_table(30) TYPE c DEFAULT 'T001'.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

PERFORM get_structure.
PERFORM create_dynamic_itab.
PERFORM get_data.
PERFORM write_out.
*&---------------------------------------------------------------------*
*& Form get_structure
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_structure.

DATA : idetails TYPE abap_compdescr_tab,
xdetails TYPE abap_compdescr.

DATA : ref_table_des TYPE REF TO cl_abap_structdescr.
* Get the structure of the table.
ref_table_des ?= cl_abap_typedescr=>describe_by_name( p_table ).
idetails[] = ref_table_des->components[].

LOOP AT idetails INTO xdetails.
CLEAR xfc.
xfc-fieldname = xdetails-name .
xfc-datatype = xdetails-type_kind.
xfc-inttype = xdetails-type_kind.
xfc-intlen = xdetails-length.
xfc-decimals = xdetails-decimals.
APPEND xfc TO ifc.
ENDLOOP.
ENDFORM. "get_structure
*&---------------------------------------------------------------------*
*& Form create_dynamic_itab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM create_dynamic_itab.
* Create dynamic internal table and assign to FS
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = ifc
IMPORTING
ep_table = it_table.

ASSIGN it_table->* TO <t_dyntable>.
* Create dynamic work area and assign to FS
CREATE DATA it_line LIKE LINE OF <t_dyntable>.
ASSIGN it_line->* TO <fs_dyntable>.
ENDFORM. "create_dynamic_itab
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_data.
* Select Data from table.
SELECT * INTO TABLE <t_dyntable> FROM (p_table).
ENDFORM. "get_data

*&---------------------------------------------------------------------*
*& Form write_out
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM write_out.
* Print data from table.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
    I_CALLBACK_PROGRAM                = sy-repid
    I_STRUCTURE_NAME                  = p_table
    I_DEFAULT                         = 'X'
    I_SAVE                            = 'A'
  TABLES
    t_outtab                          = <t_dyntable>
* 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. "write_out

Create Fieldcatalog Dynamically

Using SLIS:

type-pools: slis.

data: begin of itab,
        vbeln like vbak-vbeln,
        erdat like vbak-erdat,
        vkorg like vbak-vkorg,
        end of itab.

data gt_fieldcat type slis_t_fieldcat_alv.
data wa_fieldcat type slis_fieldcat_alv.
* to create Fieldcatalog for dynamically for table SFLIGHT

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
 I_PROGRAM_NAME              = sy-repid
 I_STRUCTURE_NAME          = 'SFLIGHT'
* I_CLIENT_NEVER_DISPLAY = 'X'
* I_BYPASSING_BUFFER       =
* I_BUFFER_ACTIVE              =

CHANGING
ct_fieldcat                              = gt_fieldcat[].
* to create fieldcatalog for fields declared in INTERNAL TABLE
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
 EXPORTING
 I_PROGRAM_NAME              = sy-repid     " Program Name
  I_INTERNAL_TABNAME     = 'ITAB'        " Internal Table Name
  I_INCLNAME                        = sy-repid     " Include Name Where the Int. Table is Declared
CHANGING
   ct_fieldcat                              = gt_fieldcat[].
Note:
When Creating Fieldcatalog Using Internal Table
  -> Maximum Line length in Report should not exceed 72.
 ->  In Internal Table the fieldnames referring DB Table fields Should be Declared Using LIKE.

Using OOABAP:

data: it_fieldcat type lvc_t_fcat,
       w_fieldcat type lvc_s_fcat.

* to create field catalog dynamically for table SFLIGHT
call function 'LVC_FIELDCATALOG_MERGE'
exporting
i_structure_name = 'SFLIGHT'
changing
ct_fieldcat = it_fieldcat[].

Sap Script Formatting options

Output Length
&symbol(length)&
Omitting the Leading Sign
&symbol(S)&
Leading Sign to the Left
&symbol(<)&
Leading Sign to the Right
&symbol(>)&
Omitting Leading Zeros
&symbol(Z)&
Space Compression
&symbol(C)&
Number of Decimal Places
&symbol(.N)&
Omitting the Separator for ‘Thousands’
&symbol(T)&
Specifying an Exponent for Floating Point Numbers
&symbol(EN)&

Right-Justified Output
&symbol(R)&
Fill Characters&symbol(Ff)&f = fill character
Example: &KNA1-UMSAT(F*)& -> **700.00

Suppressing Output of Initial Values
&symbol(I)&
Ignoring Conversion Routines
&symbol(K)&
Date Mask/: SET DATE MASK = 'date_mask'
Example: /: SET DATE MASK = 'MMMM DD, YYYY'
        &DATE& -> March 01, 1997



Time Mask/: SET TIME MASK = 'time_mask'
Example: /: SET TIME MASK = 'HH:MM'
       &TIME& -> 10:08



Reference:
http://help.sap.com/saphelp_47x200/helpdata/en/d1/803411454211d189710000e8322d00/content.htm

Friday, October 1, 2010

Footer in ALV Grid Display

To display Footer in ALV Grid you have to use HTML_End_of_List Parameter in ALV Grid Function Module.

i.e.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     I_CALLBACK_PROGRAM                    = sy-repid
     I_CALLBACK_TOP_OF_PAGE           = 'TOP_OF_PAGE'
     I_BACKGROUND_ID                              = 'ALV_BACKGROUND'
     i_callback_html_end_of_list                   = 'END_OF_LIST_HTML'
     IS_LAYOUT                                              = wa_layout
     IT_FIELDCAT                                           = it_fieldcat
     I_DEFAULT                                              = 'X'
     I_SAVE                                                     = 'A'
     IT_EVENTS                                              = it_event[]
     IS_PRINT                                                  = wa_print
   TABLES
      t_outtab                                                    = it_result
   EXCEPTIONS
     PROGRAM_ERROR                               = 1
     OTHERS                                                   = 2.



Write your Footer content in Subroutine using OOABAP.


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'.
   ls_text = 'Footer title'.
 * adds and icon (red triangle)
  CALL METHOD end->add_icon
    EXPORTING
      sap_icon = 'ICON_MESSAGE_ERROR_SMALL'.
 * adds test (via variable)
  CALL METHOD end->add_text
    EXPORTING
      text         = ls_text
      sap_emphasis = 'strong'.
 * adds new line (start new line)
  CALL METHOD end->new_line.
 * display text(bold)
  CALL METHOD end->add_text
    EXPORTING
      text         = 'Bold text'
      sap_emphasis = 'strong'.
 * adds new line (start new line)
  CALL METHOD end->new_line.
 * display text(normal)
  CALL METHOD end->add_text
    EXPORTING
      text         = 'Normal text'.
 * adds new line (start new line)
  CALL METHOD end->new_line.
 * display text(bold)
  CALL METHOD end->add_text
    EXPORTING
      text         = 'Yellow triangle'
      sap_emphasis = 'strong'.
 * adds and icon (yellow triangle)
  CALL METHOD end->add_icon
    EXPORTING
      sap_icon = 'ICON_LED_YELLOW'.
 * display text(normal)
  CALL METHOD end->add_text
    EXPORTING
      text         = 'More text'.
 *set height of this section
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = l_grid.
   CALL METHOD l_grid->parent->parent->(f)
    EXPORTING
      id     = 3
      height = 14.
 ENDFORM. "end_of_list_html.

Tuesday, September 28, 2010

Demo program on ALV Blocked List Display

Sequence of Function modules used for Blocked ALV List Display.
  • REUSE_ALV_BLOCK_LIST_INIT
  • REUSE_ALV_BLOCK_LIST_APPEND
  • REUSE_ALV_BLOCK_LIST_DISPLAY 
Demo Program.
*&-------------------------------------------------*
*&Report  ZALV_BLOCKEDALV                          *
*&-------------------------------------------------*
REPORT  ZALV_BLOCKEDALV .
*tables
TABLES: MARA, MAKT, MARD.
*type-pools
TYPE-POOLS: SLIS.
*select-options
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
*provide data objects
DATA: V_REPID TYPE SY-REPID,
      WA_MARA_FIELD TYPE SLIS_FIELDCAT_ALV,       
      WA_MAKT_FIELD TYPE SLIS_FIELDCAT_ALV,
      WA_MARD_FIELD TYPE SLIS_FIELDCAT_ALV,
      WA_MARA TYPE MARA,
      WA_MAKT TYPE MAKT,
      WA_MARD TYPE MARD,
      IT_MARA_FIELD TYPE SLIS_T_FIELDCAT_ALV,
      IT_MAKT_FIELD TYPE SLIS_T_FIELDCAT_ALV,
      IT_MARD_FIELD TYPE SLIS_T_FIELDCAT_ALV,
      IT_MARA TYPE TABLE OF MARA,
      IT_MAKT TYPE TABLE OF MAKT,
      IT_MARD TYPE TABLE OF MARD,
      V_LAYOUT TYPE SLIS_LAYOUT_ALV,
      IT_EVENTS TYPE SLIS_T_EVENT,           
      WA_EVENTS TYPE SLIS_ALV_EVENT.
V_REPID = SY-REPID.
*provide field catalog perform
PERFORM FIELD_CAT.
*call the initial function module
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
  EXPORTING
    I_CALLBACK_PROGRAM             = V_REPID
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   IT_EXCLUDING                   =
          .

PERFORM SELECT_DATA.
*call append list for MARA Table
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                        = V_LAYOUT
    IT_FIELDCAT                      = IT_MARA_FIELD[]
    I_TABNAME                        = 'MARA'
    IT_EVENTS                        = IT_EVENTS[]
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = IT_MARA
 EXCEPTIONS
   PROGRAM_ERROR                    = 1
   MAXIMUM_OF_APPENDS_REACHED       = 2
   OTHERS                           = 3.
*call append list for MAKT Table
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                        = V_LAYOUT
    IT_FIELDCAT                      = IT_MAKT_FIELD
    I_TABNAME                        = 'MAKT'
    IT_EVENTS                        = IT_EVENTS
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = IT_MAKT
 EXCEPTIONS
   PROGRAM_ERROR                    = 1
   MAXIMUM_OF_APPENDS_REACHED       = 2
   OTHERS                           = 3.
*call append list for MARD Table
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
  EXPORTING
    IS_LAYOUT                        = V_LAYOUT
    IT_FIELDCAT                      = IT_MARD_FIELD
    I_TABNAME                        = 'MARD'
    IT_EVENTS                        = IT_EVENTS
*   IT_SORT                          =
*   I_TEXT                           = ' '
  TABLES
    T_OUTTAB                         = IT_MARD
 EXCEPTIONS
   PROGRAM_ERROR                    = 1
   MAXIMUM_OF_APPENDS_REACHED       = 2
   OTHERS                           = 3.
*display the data
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
*   I_INTERFACE_CHECK             = ' '
*   IS_PRINT                      =
*   I_SCREEN_START_COLUMN         = 0
*   I_SCREEN_START_LINE           = 0
*   I_SCREEN_END_COLUMN           = 0
*   I_SCREEN_END_LINE             = 0
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER       =
*   ES_EXIT_CAUSED_BY_USER        =
* EXCEPTIONS
*   PROGRAM_ERROR                 = 1
*   OTHERS                        = 2.
.
*&-----------------------------------------------*
*&      Form  TOP_PAGE
*&-----------------------------------------------*
*       text
*----------------------------------------------------*
FORM TOP_PAGE.
  WRITE:/ 'THIS IS BLOCKED ALV REPORT PROGRAM BASED ON 3 BLOCKS' 
           COLOR 5.
ENDFORM.                    "TOP_PAGE
*&-----------------------------------------------*
*&      Form  FIELD_CAT
*&-----------------------------------------------*

FORM FIELD_CAT .
WA_MARA_FIELD-COL_POS = 1.
WA_MARA_FIELD-FIELDNAME = 'MATNR'.
WA_MARA_FIELD-REF_TABNAME = 'MARA'.
APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
CLEAR WA_MARA_FIELD.
WA_MARA_FIELD-COL_POS = 2.
WA_MARA_FIELD-FIELDNAME = 'ERSDA'.
WA_MARA_FIELD-REF_TABNAME = 'MARA'.
APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
CLEAR WA_MARA_FIELD.
WA_MARA_FIELD-COL_POS = 3.
WA_MARA_FIELD-FIELDNAME = 'ERNAM'.
WA_MARA_FIELD-REF_TABNAME = 'MARA'.
APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
CLEAR WA_MARA_FIELD.
WA_MARA_FIELD-COL_POS = 4.
WA_MARA_FIELD-FIELDNAME = 'LAEDA'.
WA_MARA_FIELD-REF_TABNAME = 'MARA'.
APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
CLEAR WA_MARA_FIELD.
WA_MAKT_FIELD-COL_POS = '1'.
WA_MAKT_FIELD-FIELDNAME = 'MATNR'.
WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
CLEAR WA_MAKT_FIELD.
WA_MAKT_FIELD-COL_POS = 2.
WA_MAKT_FIELD-FIELDNAME = 'MAKTX'.
WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
CLEAR WA_MAKT_FIELD.
WA_MAKT_FIELD-COL_POS = 3.
WA_MAKT_FIELD-FIELDNAME = 'MAKTG'.
WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
CLEAR WA_MAKT_FIELD.
WA_MARD_FIELD-COL_POS = 1.
WA_MARD_FIELD-FIELDNAME = 'MATNR'.
WA_MARD_FIELD-REF_TABNAME = 'MARD'.
APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
CLEAR WA_MARD_FIELD.
WA_MARD_FIELD-COL_POS = 2.
WA_MARD_FIELD-FIELDNAME = 'WERKS'.
WA_MARD_FIELD-REF_TABNAME = 'MARD'.
APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
CLEAR WA_MARD_FIELD.
WA_MARD_FIELD-COL_POS = 3.
WA_MARD_FIELD-FIELDNAME = 'LGORT'.
WA_MARD_FIELD-REF_TABNAME = 'MARD'.
APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
CLEAR WA_MARD_FIELD.
WA_EVENTS-FORM = 'TOP_PAGE'.
WA_EVENTS-NAME = 'TOP_OF_PAGE'.
APPEND WA_EVENTS TO IT_EVENTS.
ENDFORM.                    " FIELD_CAT
*&----------------------------------------------*
*&      Form  SELECT_DATA
*&----------------------------------------------*

FORM SELECT_DATA .
SELECT * FROM MARA INTO TABLE IT_MARA
                     WHERE MATNR IN S_MATNR.
SELECT * FROM MAKT INTO TABLE IT_MAKT
                     WHERE MATNR IN S_MATNR.
SELECT * FROM MARD INTO TABLE IT_MARD
                     WHERE MATNR IN S_MATNR.
ENDFORM.                    " SELECT_DATA

 

 

Steps to Install SAP Note

1.      Go to transaction code SNOTE
 
2.      Download SAP note
a.       Click Goto à Download SAP note
b.       Enter note Number
c.       Click Execute
 
3.      Implement SAP Note
a.       Select note and click Implement SAP Note icon
b.       Request – Click Create; Enter note Number and description
c.       Take note of transport request no.
 
4.      Test transport before migration
a.       Notify requestor to verify changes before migrating to the next environment
b.      After thorough testing has been completed, release transport
c.       Migrate transport to the other environments