[代码]如何上载图片到SAP数据库并显示详解编程语言

1, 简介

整理了一段代码,实现上载本地图片到SAP的数据库表中,并且显示在屏幕上。

其中用到了一下函数:

1, GUI_UPLOAD:上载图片文件

2, SCMS_BINARY_TO_XSTRING:将图片文件转换成xstring

3, SCMS_XSTRING_TO_BINARY:将图片xstring转换成binary格式保存到内表中

4, DP_CREATE_URL:创建得到图片的URL

5, go_pic->load_picture_from_url:根据图片URL导入

6, go_pic->set_display_mode:显示图片

2, 完整代码

REPORT ztest_upload_pic. 
**数据定义部分 
 
TYPES: BEGIN OF ty_pic, 
         pic_data(1024) TYPE x, 
       END OF ty_pic. 
 
DATA: pic_tab TYPE TABLE OF ty_pic. 
 
DATA: wa_pic TYPE zpictable. 
 
**zpictable为自定义table,设置一个主键字段,再设置一个或者多个RAWSTRING类型的字段存储图片数据 
 
DATA: c_pic TYPE REF TO cl_gui_custom_container, 
      go_pic   TYPE REF TO cl_gui_picture. 
 
DATA: len         TYPE i, 
      url(256), 
      resu        TYPE i VALUE 123, 
      path_string TYPE string. 
 
PARAMETERS: p_file LIKE ibipparms-path OBLIGATORY. 
 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. 
 
  PERFORM select_file USING p_file. 
 
START-OF-SELECTION. 
 
  PERFORM upload_pic. 
 
  PERFORM show_pic. 
 
  CALL SCREEN 100. 
 
FORM select_file USING p_file. 
 
  CALL FUNCTION 'F4_FILENAME' 
    IMPORTING 
      file_name = p_file. 
 
ENDFORM. 
 
FORM upload_pic. 
  path_string = p_file. 
  DATA lv_content TYPE xstring. 
 
* 上载PIC文件 
  CALL FUNCTION 'GUI_UPLOAD' 
    EXPORTING 
      filename   = path_string 
      filetype   = 'BIN' 
    IMPORTING 
      filelength = len 
    TABLES 
      data_tab   = pic_tab[]. 
 
  CALL FUNCTION 'SCMS_BINARY_TO_XSTRING' 
    EXPORTING 
      input_length = len 
    IMPORTING 
      buffer       = lv_content 
    TABLES 
      binary_tab   = pic_tab[] 
    EXCEPTIONS 
      failed       = 1 
      OTHERS       = 2. 
 
  wa_pic-key1    = '主键字段'. 
  wa_pic-field1 = lv_content. 
  MODIFY zpictable FROM wa_pic. 
 
  IF sy-subrc = 0 . 
    MESSAGE '图片已经保存至数据库表' TYPE 'S'. 
  ELSE. 
  ENDIF. 
ENDFORM. 
 
FORM show_pic. 
  CLEAR pic_tab. 
 
  SELECT SINGLE * 
    INTO wa_pic 
    FROM zpictable 
    WHERE key1 = '关键字段'. 
 
  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' 
    EXPORTING 
      buffer     = wa_pic-field1 
    TABLES 
      binary_tab = pic_tab. 
 
* 创建图片URL 
  CALL FUNCTION 'DP_CREATE_URL' 
    EXPORTING 
      type    = 'IMAGE' 
      subtype = 'JPG' 
    TABLES 
      data    = pic_tab 
    CHANGING 
      url     = url. 
 
  CREATE OBJECT c_pic 
    EXPORTING 
      container_name = 'C_PIC'. 
 
  CREATE OBJECT go_pic 
    EXPORTING 
      parent = c_pic. 
 
  CALL METHOD go_pic->load_picture_from_url 
    EXPORTING 
      url    = url 
    IMPORTING 
      result = resu. 
* 3,居中显示 
  CALL METHOD go_pic->set_display_mode 
    EXPORTING 
      display_mode = 3. 
 
ENDFORM. 
 
MODULE status_0100 OUTPUT. 
  SET PF-STATUS '100'. 
ENDMODULE. 
 
MODULE user_command_0100 INPUT. 
  CASE sy-ucomm. 
    WHEN 'BACK'. 
      CALL METHOD c_pic->free. 
*      (必须释放对象,否则会出现同一屏幕上操作图片无法刷新的情况) 
      LEAVE TO SCREEN 0. 
    WHEN OTHERS. 
  ENDCASE. 
ENDMODULE.

屏幕100:

PROCESS BEFORE OUTPUT. 
  MODULE status_0100. 
* 
PROCESS AFTER INPUT. 
  MODULE user_command_0100.

[代码]如何上载图片到SAP数据库并显示详解编程语言

在屏幕上创建一个自定义的container:C_PIC

[代码]如何上载图片到SAP数据库并显示详解编程语言

状态status 100,简单的就设置个BACK按钮

[代码]如何上载图片到SAP数据库并显示详解编程语言

SE11 创建一个数据库表ZPICTABLE用来保存上载的图片文件,其中field1就是用来保存图片rawstring的字段。

[代码]如何上载图片到SAP数据库并显示详解编程语言

3, 程序运行

选择画面输入图片文件路径,然后运行即可

[代码]如何上载图片到SAP数据库并显示详解编程语言

然后美女就出现了。。。

[代码]如何上载图片到SAP数据库并显示详解编程语言

以上。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/19261.html

(0)
上一篇 2021年7月19日 22:01
下一篇 2021年7月19日 22:01

相关推荐

发表回复

登录后才能评论