Thursday, August 17, 2017

ALV Report Refresh Timely

Sometimes we need a report which will be updated timely and the output screen will reflect with the updated data. In production department we need this kind of approach which displays timely updated data for production control. In the following example we have developed a custom table and the table has been populated data in different time. The report fetches data from that custom table and displays output in ALV. Now whenever data is updated into the table the report will display the updated record after a particular time slab. This is very useful when we deal with transnational data.

Create a table as follows:


The table contains one line of data.


The program is as follows:

REPORT zsr_test NO STANDARD PAGE HEADING.

CLASS lcl_timer DEFINITION DEFERRED.
DATA: mesg     TYPE char50,
      lv_uzeit TYPE char8,
      wa_tab   TYPE zdbtablog,
      it_tab   TYPE TABLE OF zdbtablog.

DATA: ob_grid  TYPE REF TO cl_gui_alv_grid,
      ob_recev TYPE REF TO lcl_timer,
      ob_timer TYPE REF TO cl_gui_timer.

CLASS lcl_timer DEFINITION.
  PUBLIC SECTION.
    METHODS:
      handle_finished FOR EVENT finished OF cl_gui_timer.
ENDCLASS.

CLASS lcl_timer IMPLEMENTATION.
  METHOD handle_finished.
    PERFORM refresh_data.
    CONCATENATE sy-uzeit+0(2) ':'
                sy-uzeit+2(2) ':'
                sy-uzeit+4(2)
                INTO lv_uzeit.
    CONCATENATE 'Last Update at' lv_uzeit
           INTO mesg SEPARATED BY space.
    MESSAGE mesg TYPE 'S'.
    CALL METHOD ob_timer->run.
  ENDMETHOD.                    "handle_finished
ENDCLASS.

START-OF-SELECTION.
  PERFORM select_data.

END-OF-SELECTION.
  CREATE OBJECT ob_timer.
  CREATE OBJECT ob_recev.
  SET HANDLER ob_recev->handle_finished FOR ob_timer.
  ob_timer->interval = 30.
  CALL METHOD ob_timer->run.
  PERFORM display_data.
*&---------------------------------------------------------------------*
*&      Form  SELECT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM select_data .

  SELECT FROM zdbtablog INTO TABLE it_tab.
  IF sy-subrc = 0.
    SORT it_tab BY zmatnr.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  REFRESH_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM refresh_data .

  IF ob_grid IS INITIAL .
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = ob_grid.
  ENDIF.

  IF ob_grid IS NOT INITIAL.
    PERFORM select_data.
    CALL METHOD ob_grid->refresh_table_display.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_data .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      i_structure_name   = 'ZDBTABLOG'
    TABLES
      t_outtab           = it_tab
    EXCEPTIONS
      program_error      = 1
      OTHERS             2.

ENDFORM.


Report Output timely:




Data is uploaded by TMG with SM30:

Monday, August 7, 2017

ALV Grid Color Line with Bold Text

In the ALV Grid display report we can colour one particular line (condition based) and also we can BOLD text. In the following example we are showing PO list with quantity calculation list. We have Sub Total line (colour = yellow & BOLD text) and Similar kind of Grand Total line. Here we have the output table structure as follows.

TYPES: BEGIN OF ty_out,
         ebeln TYPE char15,
         ebelp TYPE char5,
         matnr TYPE ekpo-matnr,
         werks TYPE ekpo-werks,
         menge TYPE ekpo-menge,
         meins TYPE ekpo-meins,
         color TYPE char4,
         bold  TYPE lvc_t_styl,
       END OF ty_out.

Here we have a field of colour of 4 character types & BOLD field of table lvc_t_styl type. This table is a sorted internal table and we insert style field with value ‘00000121’. Here we are using the function - REUSE_ALV_GRID_DISPLAY_LVC and Field catalogue type is lvc_t_fcat & Layout type is lvc_s_layo.

REPORT zsr_test NO STANDARD PAGE HEADING.

TABLES: ekko.
TYPE-POOLS: slis.
DATA: wa_fcat   TYPE lvc_s_fcat,
      it_fcat   TYPE lvc_t_fcat,
      wa_layout TYPE lvc_s_layo,
      wa_top    TYPE slis_listheader,
      it_top    TYPE slis_t_listheader.

TYPES: BEGIN OF ty_ekko,
         ebeln TYPE ekko-ebeln,
         aedat TYPE ekko-aedat,
       END OF ty_ekko.
DATA: wa_ekko TYPE ty_ekko,
      it_ekko TYPE TABLE OF ty_ekko.

TYPES: BEGIN OF ty_ekpo,
         ebeln TYPE ekpo-ebeln,
         ebelp TYPE ekpo-ebelp,
         matnr TYPE ekpo-matnr,
         werks TYPE ekpo-werks,
         menge TYPE ekpo-menge,
         meins TYPE ekpo-meins,
       END OF ty_ekpo.
DATA: wa_ekpo TYPE ty_ekpo,
      it_ekpo TYPE TABLE OF ty_ekpo.

TYPES: BEGIN OF ty_out,
         ebeln TYPE char15,
         ebelp TYPE char5,
         matnr TYPE ekpo-matnr,
         werks TYPE ekpo-werks,
         menge TYPE ekpo-menge,
         meins TYPE ekpo-meins,
         color TYPE char4,
         bold  TYPE lvc_t_styl,
       END OF ty_out.
DATA: wa_out TYPE ty_out,
      it_out TYPE TABLE OF ty_out.

INITIALIZATION.
  SELECT-OPTIONS s_aedat FOR ekko-aedat.

START-OF-SELECTION.
  PERFORM get_ekko.
  PERFORM get_ekpo.

END-OF-SELECTION.
  PERFORM prepare_output.
  PERFORM field_catalog.
  PERFORM alv_grid_display.

TOP-OF-PAGE.
  PERFORM top_of_page.
*&---------------------------------------------------------------------*
*&      Form  GET_EKKO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_ekko .

  SELECT ebeln aedat FROM ekko
    INTO TABLE it_ekko
    WHERE aedat IN s_aedat.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_EKPO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_ekpo .

  IF it_ekko IS NOT INITIAL.
    SELECT ebeln ebelp matnr werks menge meins
      FROM ekpo INTO TABLE it_ekpo
      FOR ALL ENTRIES IN it_ekko
      WHERE ebeln = it_ekko-ebeln
        AND matnr NE ' '.

    IF sy-subrc = 0.
      SORT it_ekpo BY ebeln ebelp.
    ENDIF.
  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  PREPARE_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM prepare_output .

  DATA: lw_bold TYPE lvc_s_styl,
        lt_bold TYPE lvc_t_styl.

  IF it_ekpo IS NOT INITIAL.
    LOOP AT it_ekpo INTO wa_ekpo.
      wa_out-ebeln = wa_ekpo-ebeln.
      wa_out-ebelp = wa_ekpo-ebelp.
      wa_out-matnr = wa_ekpo-matnr.
      SHIFT wa_out-matnr LEFT DELETING LEADING '0'.
      wa_out-werks = wa_ekpo-werks.
      wa_out-menge = wa_ekpo-menge.
      wa_out-meins = wa_ekpo-meins.
      APPEND wa_out TO it_out.
      CLEAR: wa_out.

      AT END OF ebeln.
        SUM.
        wa_out-ebeln = 'Sub Total'.
        wa_out-menge = wa_ekpo-menge.
        wa_out-color = 'C200'.
        lw_bold-style = '00000121'.
        INSERT lw_bold INTO lt_bold INDEX 1.
        wa_out-bold = lt_bold.
        FREE lt_bold.

        APPEND wa_out TO it_out.
        CLEAR: wa_out, lw_bold, wa_ekpo.
      ENDAT.

      AT LAST.
        SUM.
        wa_out-ebeln = 'Grand Total'.
        wa_out-menge = wa_ekpo-menge.
        wa_out-color = 'C210'.
        lw_bold-style = '00000121'.
        INSERT lw_bold INTO lt_bold INDEX 1.
        wa_out-bold = lt_bold.
        FREE lt_bold.

        APPEND wa_out TO it_out.
        CLEAR: wa_out, lw_bold, wa_ekpo.
      ENDAT.
    ENDLOOP.
  ENDIF.

  FREE it_ekpo.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FIELD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM field_catalog .

  DATA: lv_col TYPE VALUE 0.

  lv_col            = + lv_col.
  wa_fcat-col_pos   = lv_col.
  wa_fcat-fieldname = 'EBELN'.
  wa_fcat-reptext   = 'Purchase Order'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            = + lv_col.
  wa_fcat-col_pos   = lv_col.
  wa_fcat-fieldname = 'EBELP'.
  wa_fcat-reptext   = 'Item'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            = + lv_col.
  wa_fcat-col_pos   = lv_col.
  wa_fcat-fieldname = 'MATNR'.
  wa_fcat-reptext   = 'Material'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            = + lv_col.
  wa_fcat-col_pos   = lv_col.
  wa_fcat-fieldname = 'WERKS'.
  wa_fcat-reptext   = 'Plant'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            = + lv_col.
  wa_fcat-col_pos   = lv_col.
  wa_fcat-fieldname = 'MENGE'.
  wa_fcat-reptext   = 'Quantity'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  lv_col            = + lv_col.
  wa_fcat-col_pos   = lv_col.
  wa_fcat-fieldname = 'MEINS'.
  wa_fcat-reptext   = 'Unit'.
  APPEND wa_fcat TO it_fcat.
  CLEAR wa_fcat.

  wa_layout-zebra      = 'X'.
  wa_layout-cwidth_opt = 'X'.
  wa_layout-info_fname = 'COLOR'.
  wa_layout-stylefname = 'BOLD'.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  ALV_GRID_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv_grid_display .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program     = sy-repid
      i_callback_top_of_page = 'TOP_OF_PAGE'
      is_layout_lvc          = wa_layout
      it_fieldcat_lvc        = it_fcat
    TABLES
      t_outtab               = it_out
    EXCEPTIONS
      program_error          = 1
      OTHERS                 2.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top_of_page .

  REFRESH it_top.

  wa_top-typ  = 'H'.
  wa_top-info = 'Purchasing List'.
  APPEND wa_top TO it_top.
  CLEAR wa_top.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = it_top.

ENDFORM.


Output is:



Thursday, May 18, 2017

Simple BADI for Material Check

At the time of material creation we often activate Batch Management. It means different materials will have different batches. Hence, material & batch both will behave as a unique. At this point the Valuation Category needs to be activated. If we don’t activate Valuation Category then there will be no meaning to activate batch management. Because Valuation Category always ensures that the different batch will hold different price of the materials. If it is not activated in this case, then all materials need to satisfy average price of the batch. At this point the valuation will be wrong for those materials.

In the following BADI we have created a simple logic by which Valuation Category will be mandatory if Batch Management is activated at the time of creating a material; t-code MM01. The required BADI is BADI_MATERIAL_CHECK. Now we implement this step by step.

1. Go to SE18 & enter BADI name and display.


2. We need to add our custom code inside the CHECK DATA.


3. Go to SE19 & enter the BADI name and create Implementation.


4. Enter implementation name and then go to Interface.


5. Double click on CHECK DATA method.


6. It will open with the editor. Write the required code here. Then save -> check -> active.


7. Go back and click on the Active button. By this the BADI is activated.


Required Code:


  METHOD if_ex_badi_material_check~check_data.

    
IF    wmarc-xchar = 'X'
      
AND ( wmara-mtart = 'ROH' OR wmara-mtart = 'VERP' )
      
AND sy-tcode = 'MM01'.

      
IF wmbew-bwtty IS INITIAL.
        
MESSAGE 'Valuation Category is mandatory (Value = X)'
        
TYPE 'I' DISPLAY LIKE 'E'.
        
LEAVE LIST-PROCESSING.
        
LEAVE TO SCREEN sy-dynnr.
      
ENDIF.
    
ENDIF.

  ENDMETHOD.

Material Creation:

1. Now go to MM01.


2. Select the required views and enter.



3. Enter plant & s-loc, and then enter.



4. Check the Batch Management.


5. Create the Inspection Setup.




6. Now keep Valuation Category blank and then try to save the material.


7. It will give the Information (display like error) message.


8. Now enter the Valuation Category and the save the material.




9. The material has been created and we can check the Valuation Category details in the MARC table.


Tuesday, April 11, 2017

Table Control with Uploading from Clip Board

Sometimes we just need to copy & paste a lot of records into table control. Now table control lines are specific (say 13 lines) as per design level. If we want to paste more lines (say 100) into this table control then it will not happen. In this case the system will paste only first 13 lines into the table control which is visible though the copy is there (RAM). At this point we need to paste total 100 lines into that table control.

We cannot achieve this by just paste (ctrl + v) option. Here we create a button by which we shall achieve this purpose. This button functions exactly like ‘Upload from Clip Board’ which is standard. Here we need to call method: cl_gui_frontend_services=>clipboard_import

This method generates an internal table which contains the total copy data. If we select only one field then the table will have only one field. If we select more than one field then internal table will have more than one field. Hence the table structure depends on the selected copy.


In the following example we just create a table control.

INCLUDE ztabc_top                               .  " global Data
INCLUDE ztabc_o01                               .  " PBO-Modules
INCLUDE ztabc_i01                               .  " PAI-Modules
INCLUDE ztabc_f01                               .  " FORM-Routines 

Top Include:

TABLESzsd_pallet_ser.
TYPESBEGIN OF ty_ser,
         sernr TYPE zsd_pallet_ser-sernr,
       END OF ty_ser.
DATAwa_ser TYPE ty_ser,
      it_ser TYPE TABLE OF ty_ser.

DATAok_code_9000 TYPE sy-ucomm.

CONTROLStabc_9000 TYPE TABLEVIEW USING SCREEN 9000.

PBO Include:

MODULE status_9000 OUTPUT.
  SET PF-STATUS 'PF_9000'.
  SET TITLEBAR 'T_9000'.
ENDMODULE.

MODULE tabc_9000_pbo OUTPUT.

  DESCRIBE TABLE it_ser LINES sy-dbcnt.
  tabc_9000-current_line sy-loopc.
  tabc_9000-lines sy-dbcnt.

  zsd_pallet_ser-sernr wa_ser-sernr.

ENDMODULE.

PAI Include:

MODULE user_command_9000 INPUT.

  CASE ok_code_9000.
    WHEN 'BACK'.
      PERFORM back_9000.
    WHEN 'UPL'.
      PERFORM upload_data.
  ENDCASE.

ENDMODULE.

MODULE tabc_9000_pai INPUT.

  READ TABLE it_ser INTO wa_ser INDEX tabc_9000-current_line.
  IF sy-subrc 0.
    MODIFY it_ser FROM wa_ser INDEX tabc_9000-current_line.
  ENDIF.

ENDMODULE.

Form Include:

FORM back_9000 .

  CLEARok_code_9000.
  LEAVE PROGRAM.

ENDFORM.

FORM upload_data .

  TYPESBEGIN OF ty_clip,
           data TYPE char18,
         END OF ty_clip.

  DATAit_clip TYPE TABLE OF ty_clip,
        wa_clip TYPE ty_clip.

  CALL METHOD cl_gui_frontend_services=>clipboard_import
    IMPORTING
      data                 it_clip
    EXCEPTIONS
      cntl_error           1
      error_no_gui         2
      not_supported_by_gui 3
      OTHERS               4.

  IF sy-subrc 0.
    LOOP AT it_clip INTO wa_clip.
      wa_ser-sernr wa_clip-data.
      APPEND wa_ser TO it_ser.
      CLEARwa_serwa_clip.
    ENDLOOP.
  ENDIF.

  CLEAR ok_code_9000.

ENDFORM.

Here we have generated the internal table by that method and then populate the table control’s internal table. To avoid duplicate entries we just clear the OK code inside there.

Now create a T-code and execute it. The table control will look like follows. We have created an upload button to copy from clipboard. In the visible section we have only 13 rows.


Now from excel we have selected 25 rows and copy (ctrl + c) it.


Now go to SAP screen and click on UPLOAD button. The 25 rows have been inserted and only 13 rows are visible because of table control design.


Now we scroll and check whether the purpose got successful or not.




Saturday, February 4, 2017

ABAP Help Information

Colour Code for WRITE Statement:

Colour No. Colour
1 Gray-blue (blue sky)
2 Light Gray (light cyan)
3 Yellow
4 Blue-green (between light cyan and blue sky)
5 Green
6 Red
7 Violet (orange)

Sample:
COLOR INTENSIFIED OFF
COLOR INTENSIFIED ON
COLOR INVERSE ON


Message Type:

Sometimes we need to show error message for specific situation. But we need to stay on that screen. To achieve this we can fix this into Information or Success message with display like Error.

REPORT zsr_test.

PARAMETERS p_inp TYPE char12.

IF p_inp 'INFORMATION'.
  MESSAGE 'Information Message' TYPE 'I'.


ELSEIF p_inp 'ERROR'.
  MESSAGE 'Error Information' TYPE 'I' DISPLAY LIKE 'E'.

ELSEIF p_inp 'SUCCESS'.
  MESSAGE 'Success' TYPE 'S'.

ELSEIF p_inp 'FALSE'.
  MESSAGE 'False' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.


Output options Field Catalog:

outputlen (column width)
       Value range: 0 (initial), n
       For fields with reference to the Data Dictionary you can leave this
       parameter set to initial.
       For fields without reference to the Data Dictionary (program fields)
       you must set the parameter to the desired field output length on the
       list (column width).
       initial = The column width is derived from the output length of the
       referenced field (domain) in the Data Dictionary.
       n = The column width is n characters.
key (key column)
         Value range: SPACE, 'X'
         'X' = Key field (colored output for key fields)
         Key fields cannot be hidden interactively by the user.
         Parameter FIELDCAT-NO_OUT must be left set to initial.
         For exceptions, see the documentation on parameter FIELDCAT-KEY_SEL.
key_sel (key column that can be hidden)
         Value range: SPACE, 'X'
         Only relevant if FIELDCAT-KEY = 'X'
         Key field that can be hidden interactively by the user.
         The user cannot interactively change the sequence of the key
         columns.
         As with non-key fields, output control is performed using parameter
         FIELDCAT-NO_OUT.
no_out (field in the available fields list)
         Value range: SPACE, 'X'
         'X' = Field is not displayed on the current list.
         The field is available to the user in the field list and can be
         interactively selected as a display field.
         At row level, the user can use the detail function to display the
         content of these fields.
         See also the documentation on the 'Detail screen' section of
         parameter IS_LAYOUT.
no_zero (suppress zeros)
         Value range: SPACE, 'X'
         Only relevant to value fields
         'X' = Supress zeros
no_sign (no +/- sign)
         Value range: SPACE, 'X'
         Only relevant to value fields
         'X' = Value output without +/- signs.
tech (technical field)
         Value range: SPACE, 'X'
         'X' = Technical field
         The field cannot be output on the list and cannot be shown
         interactively by the user.
         The field may only be used in the field catalog (not in IT_SORT,...).
emphasize (highlight column in color)
        Value range: SPACE, 'X' or 'Cxyz' (x:'1'-'9'; y,z: '0'=off '1'=on)
        'X' = The column is highlighted in the default color for color
        highlighting.
        'Cxyz' = The column is highlighted in the coded color:
-   C: Color (coding must start with C)
 -   x: Color number
-   y: Intensified
 -   z: Inverse
hotspot (column as hotspot)
        Value range: SPACE, 'X'
        'X' = The cells of the column are output as a hotspot.
do_sum (calculate totals for column)
        Value range: SPACE, 'X'
        'X' = Totals are calculated for this field of the internal output
        table.
        This function can also be used interactively by the user.
no_sum (totals calculation not allowed)
        Value range: SPACE, 'X'
        'X' = No totals may be calculated for this field although the data
        type of the field allows totalling.
Formatting column contents
icon (icon)
         Value range: SPACE, 'X'
         'X' = The column contents are displayed as an icon.
         The column contents of the internal output table must consist of
         valid icon strings (@xx@).
         The caller should consider the problem of printing icons.
symbol (symbol)
         Value range: SPACE, 'X'
         'X' = The column contents are output as a symbol.
         The column contents of the internal output table must consist of
         valid symbol characters.
         The caller should consider the problem of printing symbols.
         Although symbols can generally be printed, they are not always shown
         correctly depending on the printer configuration.
just (justification)
         Value range: SPACE, 'R', 'L', 'C'
         Only relevant to fields of data type CHAR or NUMC
         ' ' = Default justification according to data type
         'R' = Right-justified output
'L' = Left-justified output
         'C' = Centered output
         The justification of the column header depends on the justification
         of the column contents. You cannot justify the column header
         independently of the column contents.
lzero (leading zeros)
         Value range: SPACE, 'X'
         Only relevant to fields of data type NUMC
         By default, NUMC fields are output in the ALV right-justified
         without leading zeros.
         'X' = Output with leading zeros
edit_mask (field formatting)
         Value range: SPACE, mask
         mask = See documentation on the WRITE formatting option
         USING EDIT MASK mask
         Using mask = '== conv' you can force an output conversion conv.


ALV Color Code:

* Colour code : *
* Colour is a 4-char field where : *
* - 1st char = C (color property) *
* - 2nd char = color code (from 0 to 7) *
* 0 = background color *
* 1 = blue *
* 2 = gray *
* 3 = yellow *
* 4 = blue/gray *
* 5 = green *
* 6 = red *
* 7 = orange *
* - 3rd char = intensified (0=off, 1=on) *
* - 4th char = inverse display (0=off, 1=on) *
* *
* Colour overwriting priority : *
* 0 = background color *
* 1. Line *
* 2. Cell *
* 3. Column *


Calling Standard Buttons in Custom PF Status:

- Go to program SAPLSLVC_FULLSCREEN 
- Go to GUI status STANDARD_FULLSCREEN 
- Add required standard code to your custom PF status


Fetching System Terminal Name:

DATA: opcode_usr_attr(1) TYPE VALUE 5,
      terminal           TYPE usr41-terminal.

CALL 'ThUsrInfo' ID 'OPCODE' FIELD opcode_usr_attr
  ID 'TERMINAL' FIELD terminal.

WRITE:/ 'Terminal:', terminal.


Finding IP Address:

  CALL METHOD cl_gui_frontend_services=>get_ip_address
    RECEIVING
      ip_address           = ip (string)
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS                4.



How to unset MS word as editor:
Go to report RSCPSETEDITOR & execute. Unselect the Smartform as follows.





Different Viewing of Output as Modal Dialog:
cl_demo_output=>displayit_mara ).