Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7203250
  • 博文数量: 655
  • 博客积分: 10264
  • 博客等级: 上将
  • 技术积分: 8278
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-04 17:47
个人简介

ABAP顾问

文章分类

全部博文(655)

文章存档

2017年(2)

2014年(8)

2013年(3)

2012年(2)

2011年(18)

2010年(102)

2009年(137)

2008年(274)

2007年(134)

分类:

2008-03-27 13:53:10

 
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
阅读(4794) | 评论(7) | 转发(0) |
给主人留下些什么吧!~~

qdbarry2009-02-19 19:46:52

Tcode:SE78,把图片放到服务器,然后在Smartforms调用

nanyunjian2009-02-04 15:54:24

白老师:如何把你放入到数据库中的图片在SMARTFORMS中多个的显示出来呢?

qdbarry2008-03-28 08:50:33

UNICODE系统要定义成:TYPES pict_line(256) TYPE X . 如果是非UNICODE系统,也可以定义成:TYPES pict_line(256) TYPE C . 因为UNICODE系统的C类型在内部是用两个直接来表示一个字符的,所以总的大小是X类型的两倍,多出来很多'00',图片内容被破坏所以不能显示。

qdbarry2008-03-27 17:33:10

嗯,BMP也是可以的,JPG也可以

v41dugu2008-03-27 17:25:30

那可能是我哪里错了.. 不过我找了好久.. 我用的BMP的图片 应该也可以才对..