Use BDS to Store Files Like Excel JPG

BDS or MIME Repository to keep EXECL JPGs etc inside SAP
* Use SE80+Mime Repository to create a Folder ZJNC in PUBLIC with your image 

* Program yjncMimeTest shows how easy it is to use Interface IF_MR_API
* The MIME way is small and crisp
* Thanks to
* https://forums.sdn.sap.com/thread.jspa?threadID=266657&tstart=15
* http://www.sapdevelopment.co.uk/graphics/add_image.htm

*================================================================================
* yjncBDStest is a Simple Maintenance of BDS
* Idea is to use BDS to store files like Excel JPG 
* I prefer  this now over CLUSTER & IMPORT/EXPORT 
* as with BDN(Tcode OAOR) it is possible to transport BDS content

* Based on 
http://smoschid.tripod.com/APPL_SAP_SOURCE_CODE/Z_BUSINESS_DOC_SERVICE.TXT
* by Stefanos Moschidis - SAP Certified Technical Consultant

* create a screen 100 with a container MCONTAINER
* GuiTitle TITLEBAR100
* GuiStatus STATUS100 weith 1 EXIT button

* SAP Desktop Office Integration Using ABAP Objects
* 
http://www.intelligententerprise.com/channels/applications/feature/archive/ehre.jhtml
* SAP BDS & BDN: Integrated Document Management
* 
http://www.intelligententerprise.com/channels/applications/feature/archive/schulze.jhtml 

* Good ready code of BDS+DOI
* http://www.sappro.com/download03.cfm?session=

* 
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVBDS/BDS_STRUCTURE.pdf

* there could be situations where you want BDS integration

*================================================================================

*  Author Jayanta Narayan Choudhuri
*         Flat 302
*         395 Jodhpur Park
*         Kolkata 700 068
*       Email sss@cal.vsnl.net.in
*       URL:  http://www.geocities.com/ojnc

*================================================================================
REPORT yjncMimeTest.   " the MIME way

DATA: o_mr_api TYPE REF TO if_mr_api.

DATA: BEGIN OF graphic_table OCCURS 0,
        line(255) TYPE x,
      END OF graphic_table.

DATA: graphic_size TYPE i.

DATA : mycontainer   TYPE REF TO cl_gui_custom_container .

DATA : ok_code LIKE sy-ucomm ,
       save_ok LIKE sy-ucomm .

DATA: graphic_url(255).

DATA: image     TYPE REF TO cl_gui_picture.

DATA: l_graphic_xstr TYPE xstring,
      l_graphic_conv TYPE i,
      l_graphic_offs TYPE i.

START-OF-SELECTION.

  IF o_mr_api IS INITIAL.
    o_mr_api = cl_mime_repository_api=>if_mr_api~get_api( ).
  ENDIF.

  CALL METHOD o_mr_api->get
    EXPORTING
      i_url              = 'sap/public/zjnc/jbln.jpg'
    IMPORTING
      e_content          = l_graphic_xstr
    EXCEPTIONS
      parameter_missing  = 1
      error_occured      = 2
      not_found          = 3
      permission_failure = 4
      OTHERS             = 5.

* current will hold the image in a XSTRING var

  CLEAR graphic_url.


  graphic_size = XSTRLEN( l_graphic_xstr ).
  CHECK graphic_size > 0.

  l_graphic_conv = graphic_size.
  l_graphic_offs = 0.

  WHILE l_graphic_conv > 255.
    graphic_table-line = l_graphic_xstr+l_graphic_offs(255).
    APPEND graphic_table.
    l_graphic_offs = l_graphic_offs + 255.
    l_graphic_conv = l_graphic_conv - 255.
  ENDWHILE.

  graphic_table-line = l_graphic_xstr+l_graphic_offs(l_graphic_conv).
  APPEND graphic_table.

  CALL FUNCTION 'DP_CREATE_URL'
    EXPORTING
      type                 = 'IMAGE'
      subtype              = 'GIF'
    TABLES
      data                 = graphic_table[]
    CHANGING
      url                  = graphic_url
    EXCEPTIONS
      dp_invalid_parameter = 1
      dp_error_put_table   = 2
      dp_error_general     = 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.
    EXIT.
  ENDIF.

* PERFORM f_download_blob.

  CALL SCREEN 100 .

*&;---------------------------------------------------------------------*
*&;      Module  STATUS_0100  OUTPUT
*&;---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS100'.
  SET TITLEBAR 'TITLEBAR100'.

ENDMODULE.                 " STATUS_0100  OUTPUT

*&;---------------------------------------------------------------------*
*&;      Module  prepare_controls  OUTPUT
*&;---------------------------------------------------------------------*
MODULE prepare_controls OUTPUT.
  IF mycontainer IS INITIAL.

    CREATE OBJECT mycontainer
        EXPORTING
            container_name = 'MCONTAINER'
        EXCEPTIONS
            OTHERS = 1.

    CASE sy-subrc.
      WHEN 0.
      WHEN OTHERS.
        RAISE cntl_error.
    ENDCASE.

  ENDIF.

  IF graphic_url IS NOT INITIAL AND image IS INITIAL.
    PERFORM f_pic_display.
    EXIT.
  ENDIF.


ENDMODULE.                 " prepare_controls  OUTPUT

*&;---------------------------------------------------------------------*
*&;      Module  USER_COMMAND_0100  INPUT
*&;---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  save_ok = ok_code .
  CLEAR ok_code .
  IF save_ok = 'EXIT' .
    LEAVE TO SCREEN 0.
  ENDIF .
ENDMODULE.                 " USER_COMMAND_0100

*&---------------------------------------------------------------------*
*&      Form  f_pic_display
*&---------------------------------------------------------------------*
FORM f_pic_display.

  CREATE OBJECT image
    EXPORTING
      parent = mycontainer.

  CALL METHOD image->load_picture_from_url
    EXPORTING
      url = graphic_url.

  image->set_display_mode( image->display_mode_normal_center ).

  cl_gui_cfw=>flush( ).

  cl_gui_cfw=>update_view( ).

ENDFORM.          "f_pic_display

*================================================================================
REPORT yjncbdstest.  " the BDS way

TYPE-POOLS: sbdst, abap.

* 
======================================================================
* DATA DECLARATIONS
* 
======================================================================
DATA : viewer        TYPE REF TO i_oi_document_viewer .
DATA : mycontainer   TYPE REF TO cl_gui_custom_container .

DATA : edurl(2048).

CONSTANTS : buttonselected VALUE 'X' .

DATA : ok_code LIKE sy-ucomm ,
       save_ok LIKE sy-ucomm .

* For uploading Files to BDS
DATA: BEGIN OF itab  OCCURS 0,
         raw TYPE sdok_sdatx,
      END OF itab.

DATA: filesize      TYPE i,
      filename      TYPE string,
      myext         TYPE string.

DATA: myclassname  TYPE sbdst_classname,
      myclasstype  TYPE sbdst_classtype,
      mymimetype   TYPE bapicompon-mimetype,
      mycomponents TYPE sbdst_components  WITH HEADER LINE,
      myfiles      TYPE sbdst_files       WITH HEADER LINE,
      mysignature  TYPE sbdst_signature   WITH HEADER LINE,
      excluding    TYPE sbdst_excluding   WITH HEADER LINE,
      myquery      TYPE sbdst_query       WITH HEADER LINE,
      myuris       TYPE sbdst_uri         WITH HEADER LINE.

DATA: graphic_url(255).

DATA: image     TYPE REF TO cl_gui_picture.

DATA: len    TYPE i,
      offset TYPE i,
      wlen   TYPE i,
      woff   TYPE i.

* -------------------------------------------------------------------
* 2 KEYWORDS
* -------------------------------------------------------------------
DATA: key_1 LIKE bapibds01-key_word,
      key_2 LIKE bapibds01-key_word.

* 
======================================================================
* SELECTION SCREEN DEFAULT
* 
======================================================================
* -------------------------------------------------------------------
* Frame of Program Options ; TEXT-002 = 'Program Options' .
* -------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK action_a WITH FRAME TITLE text-002 .

PARAMETERS: upload   RADIOBUTTON GROUP navs DEFAULT 'X',
            get_url  RADIOBUTTON GROUP navs,
            downsngl RADIOBUTTON GROUP navs,
            navigato RADIOBUTTON GROUP navs,
            showimg  RADIOBUTTON GROUP navs.

SELECTION-SCREEN END OF BLOCK action_a .

SELECTION-SCREEN BEGIN OF BLOCK action_b WITH FRAME TITLE text-002 .

PARAMETERS: p_file   TYPE  rlgrap-filename,
            p_mime   TYPE  bapicompon-mimetype,
            p_class  TYPE  sbdst_classname.


SELECTION-SCREEN END OF BLOCK action_b.

* 
======================================================================
INITIALIZATION .
* 
======================================================================
*  t_upload   = '1 Upload File to BDS' .
*  t_url      = '2 Show from URL' .
*  t_single   = '3 Download File from BDS' .
*  t_navi     = '4 Show Navigator' .
*  t_show     = '5 Show Image' .



* At selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      field_name = 'P_FILE'
    IMPORTING
      file_name  = p_file.

* 
======================================================================
START-OF-SELECTION .
* 
======================================================================

  MOVE p_class TO: myclassname, key_1.

  MOVE 'OT' TO myclasstype.

  CLEAR myfiles.

  MOVE '1' TO: myfiles-doc_count, myfiles-comp_count.

  MOVE p_file TO filename.
  COMPUTE len = STRLEN( filename ).

  DO len TIMES.
    offset = len - sy-index.
    IF filename+offset(1) = '.'.
      woff = offset + 1.
      wlen = len - woff.
      MOVE filename+woff(wlen) TO myext.
    ENDIF.

    IF filename+offset(1) = '\' OR filename+offset(1) = '/'.
      woff = offset + 1.
      wlen = len - woff.
      MOVE filename+woff(wlen) TO myfiles-filename.

      wlen = offset.
      MOVE filename+0(wlen) TO myfiles-directory.
      EXIT.
    ENDIF.
  ENDDO.

  TRANSLATE myext TO UPPER CASE.

* http://www.w3schools.com/media/media_mimeref.asp
  CASE myext.
    WHEN 'XLS'.
      MOVE 'application/vnd.ms-excel' TO mymimetype.
    WHEN 'DOC'.
      MOVE 'application/msword' TO mymimetype.
    WHEN 'PPT'.
      MOVE 'application/vnd.ms-powerpoint' TO mymimetype.
    WHEN 'PDF'.
      MOVE 'application/pdf' TO mymimetype.
    WHEN 'JPG'.
      MOVE 'image/jpeg' TO mymimetype.
    WHEN 'GIF'.
      MOVE 'image/gif' TO mymimetype.
    WHEN 'BMP'.
      MOVE 'image/bmp' TO mymimetype.
    WHEN 'TIF'.
      MOVE 'image/tiff' TO mymimetype.
    WHEN 'ZIP'.
      MOVE 'application/zip' TO mymimetype.
    WHEN 'RTF'.
      MOVE 'application/rtf' TO mymimetype.
    WHEN 'TXT'.
      MOVE 'text/plain' TO mymimetype.
  ENDCASE.

  IF mymimetype IS INITIAL.
    MOVE p_mime TO mymimetype.
  ENDIF.

  MOVE mymimetype TO: myfiles-mimetype, key_2.

  IF myfiles-filename IS NOT INITIAL.
    IF myfiles-directory IS INITIAL.
      MOVE '/' TO myfiles-directory.
    ENDIF.
    APPEND myfiles.
  ENDIF.

  CASE buttonselected .

*   -------> UPLOAD DOCUMENT IN BUSINESS DOCUMENT NAVIGATOR 
<------------
    WHEN upload.
      PERFORM build_keyword_criteria .

      IF myfiles-filename IS INITIAL.
        MESSAGE e999(zmsgs) WITH 'File Name is Mandatory'.
      ENDIF.

      IF mymimetype IS INITIAL.
        MESSAGE e999(zmsgs) WITH 'Mime Type is Mandatory'.
      ENDIF.

      CALL METHOD cl_bds_document_set=>create_with_files
        EXPORTING
          classname       = myclassname
          classtype       = myclasstype
        CHANGING
          files           = myfiles[]
          signature       = mysignature[]
        EXCEPTIONS
          internal_error  = 1
          error_kpro      = 2
          parameter_error = 3
          not_allowed     = 4
          not_authorized  = 5
          nothing_found   = 6
          OTHERS          = 7.

      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.

      MESSAGE i999(zmsgs) WITH 'Upload Successful'.

*   -------> Display Image  ACCORDING TO KEYWORD CRITERIA <----------
    WHEN downsngl .
      PERFORM build_keyword_criteria .

      IF myfiles-filename IS INITIAL.
        MESSAGE e999(zmsgs) WITH 'File Name is Mandatory'.
      ENDIF.

      CALL METHOD cl_bds_document_set=>get_with_url
        EXPORTING
          classname    = myclassname
          classtype    = myclasstype
          url_lifetime = 'T'
        CHANGING
          uris         = myuris[]
          signature    = mysignature[].

      CALL METHOD cl_bds_document_set=>get_with_files
        EXPORTING
          classname       = myclassname
          classtype       = myclasstype
        CHANGING
          files           = myfiles[]
          signature       = mysignature[]
        EXCEPTIONS
          nothing_found   = 1
          error_kpro      = 2
          internal_error  = 3
          parameter_error = 4
          not_authorized  = 5
          not_allowed     = 6.

      IF sy-subrc NE 0 .
        MESSAGE i999(zmsgs) WITH 'ERROR DOWNLOADING FILE' sy-subrc .
      ENDIF .

*   -------> FIND A FILE SHOW INPLACE FROM SAP R3 URL <----------
    WHEN get_url .
      PERFORM build_keyword_criteria.

      CALL METHOD cl_bds_document_set=>get_with_url
        EXPORTING
          classname    = myclassname
          classtype    = myclasstype
          url_lifetime = 'T'
        CHANGING
          uris         = myuris[]
          signature    = mysignature[].

      CALL SCREEN 100 .

*   -------> SHOW DOCUMENTS IN BUSINESS DOCUMENT NAVIGATOR 
<------------
    WHEN navigato .
      PERFORM build_keyword_criteria.

      CALL METHOD cl_bds_document_set=>call_navigator
        EXPORTING
          classname = myclassname
          classtype = myclasstype
        CHANGING
          excluding = excluding[]
          signature = mysignature[].

*   -------> SHOW IMAGE if image/jpeg <------
    WHEN showimg .
      PERFORM build_keyword_criteria.

      CALL METHOD cl_bds_document_set=>get_with_table
        EXPORTING
          classname       = myclassname
          classtype       = myclasstype
        CHANGING
          content         = itab[]
        EXCEPTIONS
          error_kpro      = 1
          internal_error  = 2
          nothing_found   = 3
          no_content      = 4
          parameter_error = 5
          not_authorized  = 6
          not_allowed     = 7
          OTHERS          = 8.

      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.

      PERFORM f_display_pic.

  ENDCASE .

*&;---------------------------------------------------------------------*
*&;      Form  BUILD_KEYWORD_CRITERIA
*&;---------------------------------------------------------------------*
FORM build_keyword_criteria.

  MOVE '1' TO: mysignature-doc_count, mysignature-comp_count.
  MOVE: 'BDS_KEYWORD' TO mysignature-prop_name,
         key_1 TO mysignature-prop_value.
  APPEND mysignature.

  MOVE '1' TO: mysignature-doc_count, mysignature-comp_count.
  MOVE: 'BDS_KEYWORD' TO mysignature-prop_name,
         key_2 TO mysignature-prop_value.
  APPEND mysignature.

ENDFORM.                    " BUILD_KEYWORD_CRITERIA

*&;---------------------------------------------------------------------*
*&;      Module  STATUS_0100  OUTPUT
*&;---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS100'.
  SET TITLEBAR 'TITLEBAR100'.

ENDMODULE.                 " STATUS_0100  OUTPUT

*&;---------------------------------------------------------------------*
*&;      Module  prepare_controls  OUTPUT
*&;---------------------------------------------------------------------*
MODULE prepare_controls OUTPUT.
  IF mycontainer IS INITIAL.

    CREATE OBJECT mycontainer
        EXPORTING
            container_name = 'MCONTAINER'
        EXCEPTIONS
            OTHERS = 1.

    CASE sy-subrc.
      WHEN 0.
      WHEN OTHERS.
        RAISE cntl_error.
    ENDCASE.

  ENDIF.

  IF graphic_url IS NOT INITIAL AND image IS INITIAL.
    PERFORM f_pic_display.
    EXIT.

  ENDIF.

  IF viewer IS INITIAL.
    CALL METHOD c_oi_container_control_creator=>get_document_viewer
      IMPORTING
        viewer               = viewer
      EXCEPTIONS
        unsupported_platform = 1.

    IF sy-subrc NE 0.
      MESSAGE i999(zmsg) WITH 'Unknown error'.
    ENDIF.

    CALL METHOD viewer->init_viewer
      EXPORTING
        parent             = mycontainer
      EXCEPTIONS
        cntl_error         = 1
        cntl_install_error = 2
        dp_install_error   = 3
        dp_error           = 4.

    IF sy-subrc NE 0.
      MESSAGE i999(zmsgs) WITH 'Unknown error'.
    ENDIF.
  ENDIF.

  CLEAR edurl.

  SORT myuris BY uri_count DESCENDING .

  READ TABLE myuris INDEX 1 .
  IF sy-subrc = 0 .
    edurl = myuris-uri .
  ENDIF .

  IF NOT edurl IS INITIAL.
    CALL METHOD viewer->view_document_from_url
      EXPORTING
        document_url      = edurl
        show_inplace      = 'X'
      EXCEPTIONS
        cntl_error        = 1
        not_initialized   = 2
        dp_error_general  = 3
        invalid_parameter = 4.

    IF sy-subrc NE 0.
      MESSAGE i999(zmsgs) WITH 'Unknown error'.
    ENDIF.
  ENDIF.


ENDMODULE.                 " prepare_controls  OUTPUT

*&;---------------------------------------------------------------------*
*&;      Module  USER_COMMAND_0100  INPUT
*&;---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  save_ok = ok_code .
  CLEAR ok_code .
  IF save_ok = 'EXIT' .
    LEAVE TO SCREEN 0.
  ENDIF .
ENDMODULE.                 " USER_COMMAND_0100

*&---------------------------------------------------------------------*
*&      Form  F_upload_blob
*&---------------------------------------------------------------------*
FORM f_upload_blob.

  MOVE p_file TO filename.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filetype                = 'BIN'
      filename                = filename
    IMPORTING
      filelength              = filesize
    TABLES
      data_tab                = itab
    EXCEPTIONS
      file_open_error         = 1
      file_read_error         = 2
      no_batch                = 3
      gui_refuse_filetransfer = 4
      invalid_type            = 5
      no_authority            = 6
      unknown_error           = 7
      bad_data_format         = 8
      header_not_allowed      = 9
      separator_not_allowed   = 10
      header_too_long         = 11
      unknown_dp_error        = 12
      access_denied           = 13
      dp_out_of_memory        = 14
      disk_full               = 15
      dp_timeout              = 16
      OTHERS                  = 17.

  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.                    " F_upload_blob

*&---------------------------------------------------------------------*
*&      Form  F_download_blob
*&---------------------------------------------------------------------*
FORM f_download_blob.

  MOVE p_file TO filename.

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filetype                = 'BIN'
      filename                = filename
    IMPORTING
      filelength              = filesize
    TABLES
      data_tab                = itab
    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.

  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.                    " F_download_blob

*&---------------------------------------------------------------------*
*&      Form  f_display_pic
*&---------------------------------------------------------------------*
FORM f_display_pic.

  CLEAR graphic_url.

  CALL FUNCTION 'DP_CREATE_URL'
    EXPORTING
      type                 = 'IMAGE'
      subtype              = 'GIF'
    TABLES
      data                 = itab[]
    CHANGING
      url                  = graphic_url
    EXCEPTIONS
      dp_invalid_parameter = 1
      dp_error_put_table   = 2
      dp_error_general     = 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.
    EXIT.
  ENDIF.

* PERFORM f_download_blob.

  CALL SCREEN 100 .

ENDFORM.                    "f_display_pic

*&---------------------------------------------------------------------*
*&      Form  f_pic_display
*&---------------------------------------------------------------------*
FORM f_pic_display.

  CREATE OBJECT image
    EXPORTING
      parent = mycontainer.

  CALL METHOD image->load_picture_from_url
    EXPORTING
      url = graphic_url.

  image->set_display_mode( image->display_mode_normal_center ).

  cl_gui_cfw=>flush( ).

  cl_gui_cfw=>update_view( ).

ENDFORM.          "f_pic_display


* CREATE FROM TABLE
*==================
*      PERFORM build_keyword_criteria .
*
*      PERFORM f_upload_blob.
*
*      MOVE 1 TO mycomponents-doc_count.
*      MOVE 1 TO mycomponents-comp_count.
*      MOVE mymimetype TO mycomponents-mimetype.
*      APPEND mycomponents.
*
*      CALL METHOD cl_bds_document_set=>create_with_table
*        EXPORTING
*          classname       = myclassname
*          classtype       = myclasstype
*          components      = mycomponents[]
*          content         = itab[]
*        CHANGING
*          signature       = mysignature[]
*        EXCEPTIONS
*          internal_error  = 1
*          error_kpro      = 2
*          parameter_error = 3
*          not_authorized  = 4
*          not_allowed     = 5
*          nothing_found   = 6
*          OTHERS          = 7.
*
*      IF sy-subrc <> 0.
*        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*      ENDIF.

Get help for your ABAP problems
Do you have a ABAP Question?

SAP Books
SAP Certification, Interview Questions, Functional, Basis Administration and ABAP Programming Reference Books

ABAP Tips
ABAP Forum for Discussion and Samples Program Codes for Abapers

Best regards,
SAP Basis, ABAP Programming and Other IMG Stuff
http://www.erpgreat.com

All the site contents are Copyright © www.erpgreat.com and the content authors. All rights reserved.
All product names are trademarks of their respective companies.  The site www.erpgreat.com is in no way affiliated with SAP AG.
Every effort is made to ensure the content integrity.  Information used on this site is at your own risk.
 The content on this site may not be reproduced or redistributed without the express written permission of
www.erpgreat.com or the content authors.