v41dugu  发表时间:2008-03-27 09:06:53    

老白你好 .  把图片存到数据库中应该怎样实现? 数据库中的图片是以二进制存在的? 那么和用SE78把图片导入到server上有什么不同呢? 

Blog作者的回复:
可以用簇表,给你写个例子

 
*&---------------------------------------------------------------------*
*& Report  Z_BARRY_CLUSTER_PIC                                         *
*&                                                                     *
*&---------------------------------------------------------------------*
*&  把图片放到簇表,然后取出显示                                       *
*&                                                                     *
*&---------------------------------------------------------------------*
 
REPORT  z_barry_cluster_pic                     .
DATA container TYPE REF TO cl_gui_custom_container.
DATA picture TYPE REF TO cl_gui_picture.
DATA ok_code TYPE sy-ucomm.
DATA subrc TYPE i.
SET SCREEN 100.
 
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS'.
  PERFORM fill_pic.
ENDMODULE.                             " STATUS_0100  OUTPUT
 
*&---------------------------------------------------------------------*
*&      Module  exit  INPUT
*&---------------------------------------------------------------------*
MODULE exit INPUT.
  CALL METHOD picture->free.
  CALL METHOD container->free.
  LEAVE PROGRAM.
ENDMODULE.                 " exit  INPUT
 
*&---------------------------------------------------------------------*
*&      Form  fill_pic
*&---------------------------------------------------------------------*
FORM fill_pic .
  DATA: url(255) .
  IF container IS INITIAL.
    CREATE OBJECT container
       EXPORTING container_name = 'CUSTOM_CONTAINER'.
    CREATE OBJECT picture
       EXPORTING  parent = container.
    CLEAR url.
    PERFORM load_pic_from_db CHANGING url.
    CALL METHOD picture->load_picture_from_url
      EXPORTING
        url    = url
      IMPORTING
        RESULT = subrc
      EXCEPTIONS
        error  = 1
        OTHERS = 2.
  ENDIF.
ENDFORM.                    " fill_pic
 
*&---------------------------------------------------------------------*
*&      Form  LOAD_PIC_FROM_DB
*&---------------------------------------------------------------------*
FORM load_pic_from_db CHANGING url.
  TYPES pict_line(256) TYPE x.
  DATA  itab_pic TYPE TABLE OF pict_line WITH HEADER LINE .
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename = 'C:\20.jpg'
      filetype = 'BIN'
    TABLES
      data_tab = itab_pic[].
  EXPORT itab_pic TO DATABASE indx(zz) ID 'Pic' .

  REFRESH itab_pic.
  IMPORT itab_pic FROM DATABASE indx(zz) ID 'Pic' .
  CALL FUNCTION 'DP_CREATE_URL'
    EXPORTING
      type    = 'IMAGE'
      subtype = 'GIF'
    TABLES
      data    = itab_pic[]
    CHANGING
      url     = url.
  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.
ENDFORM.                    "load_pic_from_db
posted on 2009-03-26 15:38  yxbsmx  阅读(213)  评论(0编辑  收藏  举报