Sunday, 27 May 2012

Doc contianer example

*&---------------------------------------------------------------------*
*& Report  ZMON_SWA2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZDOC_CONTAINER NO STANDARD PAGE HEADING.


TABLES: mara.
* *---------------------------------------------------------------------*
* *                        W O R K  A R E A S                           *
* *---------------------------------------------------------------------*
 DATA:
* *  Material Data
   BEGIN OF wa_mara,
     matnr    TYPE   mara-matnr,         " Material No.
     mtart    TYPE   mara-mtart,         " Material Type
*     bismt    TYPE   mara-bismt,         " Old material No.
*     matkl    TYPE   mara-matkl,         " Material group
*     meins    TYPE   mara-meins,         " Base Unit of Measure
*     brgew    TYPE   mara-brgew,         " Gross Weight
     ntgew    TYPE   mara-ntgew,         " Net Weight
     gewei    TYPE   mara-gewei,         " Weight Unit
   END OF wa_mara,

   begin of wa_mara1,
    matnr    TYPE   mara-matnr,         " Material No.
     mtart    TYPE   mara-mtart,         " Material Type
     bismt    TYPE   mara-bismt,         " Old material No.
     matkl    TYPE   mara-matkl,         " Material group
    END OF wa_mara1,
* Field Catalog
    begin of wa_mara2,
    matnr    TYPE   mara-matnr,         " Material No.
     mtart    TYPE   mara-mtart,         " Material Type
     meins    TYPE   mara-meins,         " Base Unit of Measure
     brgew    TYPE   mara-brgew,         " Gross Weight
    END OF wa_mara2,

wa_fieldcat   TYPE lvc_s_fcat.

**---------------------------------------------------------------------*
* *                   I N T E R N A L   T A B L E S                     *
* *---------------------------------------------------------------------*
 DATA:
* * For Material Data
   t_mara LIKE STANDARD TABLE OF wa_mara,
   t_mara1 LIKE STANDARD TABLE OF wa_mara1,
   t_mara2 LIKE STANDARD TABLE OF wa_mara2,
* * For Field Catalog
   t_fieldcat  TYPE lvc_t_fcat,
   t_fieldcat1  TYPE lvc_t_fcat,
   t_fieldcat2  TYPE lvc_t_fcat.

**---------------------------------------------------------------------*
* *                     W O R K  V A R I A B L E S                      *
* *---------------------------------------------------------------------*
 DATA:
* * User Command
   ok_code TYPE sy-ucomm,
* * Reference Variable for Docking Container
   r_dock_container  TYPE REF TO cl_gui_docking_container,
   r_dock_container1  TYPE REF TO cl_gui_docking_container,
   r_dock_container2  TYPE REF TO cl_gui_docking_container,
* * Reference Variable for alv grid
   r_grid  TYPE REF TO cl_gui_alv_grid,
   r_grid1  TYPE REF TO cl_gui_alv_grid,
   r_grid2  TYPE REF TO cl_gui_alv_grid.

**---------------------------------------------------------------------*
* *                S T A R T   O F   S E L E C T I O N                  *
* *---------------------------------------------------------------------*
 START-OF-SELECTION.
* * To Display the Data
   PERFORM display_output.
*  * *&--------------------------------------------------------------------*
* *&      Form  display_output                                          *
* *&--------------------------------------------------------------------*
* *       To Call the  screen & display the output                      *
* *---------------------------------------------------------------------*
* *   There are no interface parameters to be passed to this subroutine.*
* *---------------------------------------------------------------------*
 FORM display_output .
* * To fill the Field Catalog
   PERFORM fill_fieldcat USING :
       'MATNR'    'T_MARA'         'Material No.',
       'MTART'    'T_MARA'         'Material Type',
*       'BISMT'    'T_MARA'         'Old Material No.',
*       'MATKL'    'T_MARA'         'Material Group',
*       'MEINS'    'T_MARA'         'Base Unit of Measure',
*       'BRGEW'    'T_MARA'         'Gross Weight',
       'NTGEW'    'T_MARA'         'Net Weight',
       'GEWEI'    'T_MARA'         'Weight Unit'.
       move t_fieldcat to t_fieldcat1.
       refresh t_fieldcat.
PERFORM fill_fieldcat USING :
       'MATNR'    'T_MARA'         'Material No.',
       'MTART'    'T_MARA'         'Material Type',
       'BISMT'    'T_MARA'         'Old Material No.',
       'MATKL'    'T_MARA'         'Material Group'.
   move t_fieldcat to t_fieldcat2.
       refresh t_fieldcat.
PERFORM fill_fieldcat USING :
       'MATNR'    'T_MARA'         'Material No.',
       'MTART'    'T_MARA'         'Material Type',
        'MEINS'    'T_MARA'         'Base Unit of Measure',
       'BRGEW'    'T_MARA'         'Gross Weight'.

   CALL SCREEN 500.
 ENDFORM.                               " Display_output

**&--------------------------------------------------------------*
* *&      Form  FILL_FIELDCAT                                     *
* *&--------------------------------------------------------------*
* *       To Fill the Field Catalog                               *
* *---------------------------------------------------------------*
* *  Three Parameters are passed                                  *
* *  pv_field   TYPE any for Field                                *
* *  pv_tabname TYPE any for Table Name                           *
* *  pv_coltext TYPE any for Header Text                          *
* *---------------------------------------------------------------*
 FORM fill_fieldcat  USING   pv_field   TYPE any
                             pv_tabname TYPE any
                             pv_coltext TYPE any .

  wa_fieldcat-fieldname  = pv_field.
   wa_fieldcat-tabname    = pv_tabname.
   wa_fieldcat-coltext    = pv_coltext.

  APPEND wa_fieldcat TO t_fieldcat.
   CLEAR  wa_fieldcat.
 ENDFORM.                               " FILL_FIELDCAT

*Create the Screen 0500.

*Flow Logic for Screen 500.

**&---------------------------------------------------------------------*
* *&      Module  STATUS_0500  OUTPUT                                    *
* *&---------------------------------------------------------------------*
* *       To Set GUI Status & Title                                      *
* *----------------------------------------------------------------------*
 MODULE status_0500 OUTPUT.

  SET PF-STATUS 'STATUS'.
   SET TITLEBAR 'TITLE'.

ENDMODULE.                             " STATUS_0500  OUTPUT


**&---------------------------------------------------------------------*
* *&      Module  CREATE_OBJECTS  OUTPUT                                 *
* *&---------------------------------------------------------------------*
* *       To Call the Docking Container & Display Method                 *
* *----------------------------------------------------------------------*
 MODULE create_objects OUTPUT.
* * Create a Docking container and dock the control at right side of screen
   CHECK r_dock_container IS  INITIAL.
   CREATE OBJECT r_dock_container
     EXPORTING
    side                        = cl_gui_docking_container=>dock_at_left
       extension                   = 300
       caption                     = 'Materials'
     EXCEPTIONS
       cntl_error                  = 1
       cntl_system_error           = 2
       create_error                = 3
       lifetime_error              = 4
       lifetime_dynpro_dynpro_link = 5
       OTHERS                      6.
   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 sy-subrc <> 0.

* To Create the Grid Instance
   CREATE OBJECT r_grid
     EXPORTING
       i_parent          = r_dock_container
     EXCEPTIONS
       error_cntl_create = 1
       error_cntl_init   = 2
       error_cntl_link   = 3
       error_dp_create   = 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 sy-subrc <> 0.
 CHECK r_dock_container1 IS  INITIAL.
   CREATE OBJECT r_dock_container1
     EXPORTING
    side                        = cl_gui_docking_container=>dock_at_left
       extension                   = 300
       caption                     = 'Materials'
     EXCEPTIONS
       cntl_error                  = 1
       cntl_system_error           = 2
       create_error                = 3
       lifetime_error              = 4
       lifetime_dynpro_dynpro_link = 5
       OTHERS                      6.
   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 sy-subrc <> 0.

* To Create the Grid Instance
   CREATE OBJECT r_grid1
     EXPORTING
       i_parent          = r_dock_container1
     EXCEPTIONS
       error_cntl_create = 1
       error_cntl_init   = 2
       error_cntl_link   = 3
       error_dp_create   = 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 sy-subrc <> 0.

     CHECK r_dock_container2 IS  INITIAL.
   CREATE OBJECT r_dock_container2
     EXPORTING
    side                        = cl_gui_docking_container=>dock_at_bottom
       extension                   = 200
       caption                     = 'Materials'
     EXCEPTIONS
       cntl_error                  = 1
       cntl_system_error           = 2
       create_error                = 3
       lifetime_error              = 4
       lifetime_dynpro_dynpro_link = 5
       OTHERS                      6.
   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 sy-subrc <> 0.

* To Create the Grid Instance
   CREATE OBJECT r_grid2
     EXPORTING
       i_parent          = r_dock_container2
     EXCEPTIONS
       error_cntl_create = 1
       error_cntl_init   = 2
       error_cntl_link   = 3
       error_dp_create   = 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.

* Formatted Output Table is Sent to Control
   CALL METHOD r_grid->set_table_for_first_display
     CHANGING
       it_outtab                      =  t_mara
       it_fieldcatalog                =  t_fieldcat
* *      it_sort                       =
* *      it_filter                     =
     EXCEPTIONS
       invalid_parameter_combination = 1
       program_error                 = 2
       too_many_lines                = 3
       OTHERS                        4
           .
   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 sy-subrc <> 0.

*   fieldcatlog2----------------------------------


* Formatted Output Table is Sent to Control
   CALL METHOD r_grid1->set_table_for_first_display
     CHANGING
       it_outtab                      =  t_mara1
       it_fieldcatalog                =  t_fieldcat1
* *      it_sort                       =
* *      it_filter                     =
     EXCEPTIONS
       invalid_parameter_combination = 1
       program_error                 = 2
       too_many_lines                = 3
       OTHERS                        4
           .
   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 sy-subrc <> 0.

    CALL METHOD r_grid2->set_table_for_first_display
     CHANGING
       it_outtab                      =  t_mara2
       it_fieldcatalog                =  t_fieldcat2
* *      it_sort                       =
* *      it_filter                     =
     EXCEPTIONS
       invalid_parameter_combination = 1
       program_error                 = 2
       too_many_lines                = 3
       OTHERS                        4
           .
   IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF.
 ENDMODULE.                             " CREATE_OBJECTS  OUTPUT
* *&---------------------------------------------------------------------*
* *&      Module  USER_COMMAND_0500  INPUT                               *
* *&---------------------------------------------------------------------*
* *     To Fetch the Material Data & Refresh Table after get User Command*
* *----------------------------------------------------------------------*
 MODULE user_command_0500 INPUT.
   CASE ok_code.
     WHEN 'EXECUTE'.
       SELECT matnr                     " material no.
              mtart                     " material type
*              meins                     " base unit of measure
*              brgew                     " gross weight
              ntgew                     " net weight
              gewei                     " weight unit
         FROM mara
         INTO TABLE t_mara
         WHERE  mtart = mara-mtart.

         SELECT matnr                     " material no.
              mtart                     " material type
              bismt                     " old material no.
              matkl                     " material group
           FROM mara
         INTO TABLE t_mara1
         WHERE  mtart = mara-mtart.

      SELECT matnr                     " material no.
              mtart                     " material type
             meins                     " base unit of measure
              brgew                     " gross weight
           FROM mara
         INTO TABLE t_mara2
         WHERE  mtart = mara-mtart.
       IF sy-subrc <> 0.
       ENDIF.                           " IF sy-subrc EQ 0.
       CALL METHOD r_grid->refresh_table_display.
          CALL METHOD r_grid1->refresh_table_display.
          CALL METHOD r_grid2->refresh_table_display.
     WHEN 'BACK' OR 'CANCEL' OR 'EXIT'.
       LEAVE TO SCREEN 0.
   ENDCASE.                             " CASE ok_code.
 ENDMODULE.                             " USER_COMMAND_0500  INPUT

Send mail from SAP to external mail id sample code

DATA   :    LV_MAILSUB  TYPE SO_OBJ_DES VALUE 'Test Mail',
      LO_DOCUMENT      TYPE REF TO CL_DOCUMENT_BCS VALUE IS INITIAL,
            LO_RECIPIENT     TYPE REF TO IF_RECIPIENT_BCS VALUE IS INITIAL,
*             LO_SEND_REQUEST TYPE REF TO CL_BCS VALUE IS INITIAL,
             LO_SEND_REQUEST TYPE REF TO CL_BCS VALUE IS INITIAL,
             T_ATT_CONTENT_HEX TYPE SOLIX_TAB.
CLASS CL_BCS DEFINITION LOAD.
LO_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).

LO_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
I_TYPE = 'RAW'
I_TEXT = LT_MAIL_TEXT
I_SUBJECT = LV_MAILSUB ).

TRY .
    LO_SEND_REQUEST->SET_DOCUMENT( LO_DOCUMENT ).
  CATCH CX_ROOT.

ENDTRY.

DATA: LO_SENDER TYPE REF TO IF_SENDER_BCS VALUE IS INITIAL.
LO_SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).

LO_SEND_REQUEST->SET_SENDER(
EXPORTING
I_SENDER = LO_SENDER ).
LO_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
                           'divyap@mouritech.com' ).
* SET RECIPIENT
LO_SEND_REQUEST->ADD_RECIPIENT(
EXPORTING
I_RECIPIENT = LO_RECIPIENT
I_EXPRESS = 'X'
I_COPY = ' ').

LO_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
                         'swetha.creddy@yahoo.com' ).
LO_SEND_REQUEST->ADD_RECIPIENT(
EXPORTING
I_RECIPIENT = LO_RECIPIENT
I_EXPRESS = 'X'
I_COPY = 'X').


* SEND EMAIL
DATA: LV_SENT_TO_ALL(1) TYPE VALUE IS INITIAL.
LO_SEND_REQUEST->SEND(
EXPORTING
I_WITH_ERROR_SCREEN = 'X'
RECEIVING
RESULT = LV_SENT_TO_ALL ).
COMMIT WORK.