You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码将生成的二维码上传至SE78图形库?

二维码上传SE78的代码实现解答

问题1:能否通过代码将生成的二维码上传至SE78?

可以完全通过ABAP代码实现二维码到SE78图形库的自动上传,无需手动操作SE78事务码。

问题2:如何通过代码上传生成的二维码至SE78?

基于你已有的二维码生成逻辑,只需补充调用标准上传函数的代码即可完成自动上传。以下是完整的实现方案:

实现步骤

  1. 保留你原有的二维码生成代码,获取二维码的XSTRING格式数据
  2. 将XSTRING转换为SE78要求的MIME内表格式
  3. 调用标准函数完成上传,指定图形的关键属性

完整代码示例

* 原有二维码生成逻辑
DATA: lv_qrcode_link TYPE string VALUE 'https://your-target-url.com',
      lv_qrcode      TYPE xstring,
      lv_xstrlen     TYPE i,
      lv_mime        TYPE solix_tab.

CALL METHOD cl_rstx_barcode_renderer=>qr_code
  EXPORTING
    i_module_size       = 120
    i_error_correction  = 'L'
    i_barcode_text      = lv_qrcode_link
  IMPORTING
    e_bitmap            = lv_qrcode.

lv_xstrlen = xstrlen( lv_qrcode ).
CALL FUNCTION 'RSFO_XSTRING_TO_MIME'
  EXPORTING
    c_xstring = lv_qrcode
    i_length  = lv_xstrlen
  TABLES
    c_t_mime  = lv_mime.
IF sy-subrc <> 0.
  MESSAGE '二维码转MIME格式失败' TYPE 'E'.
ENDIF.

* 新增:上传至SE78图形库
DATA: lv_graphic_name TYPE tdobname VALUE 'ZQR_MY_LINK', " 自定义图形名称
      lv_object       TYPE tdobject VALUE 'GRAPHICS',
      lv_id           TYPE tdid VALUE 'BMAP',
      lv_type         TYPE tdtype VALUE 'COL'. " COL=彩色,BW=黑白

CALL FUNCTION 'SAPCRIPT_GRAPHIC_UPLOAD'
  EXPORTING
    filename                = lv_graphic_name
    filetype                = 'BMP' " 二维码生成的是BMP格式
    object                  = lv_object
    id                      = lv_id
    type                    = lv_type
    overwrite               = 'X' " 允许覆盖已存在的同名图形
  TABLES
    mime_table              = lv_mime
  EXCEPTIONS
    graphic_file_not_found  = 1
    wrong_file_format       = 2
    graphic_too_big         = 3
    wrong_graphic_type      = 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.

WRITE: '二维码已成功上传至SE78,图形名称:', lv_graphic_name.

关键参数说明

  • lv_graphic_name:自定义图形名称,需使用Z/Y开头的自定义命名空间,避免与SAP标准图形冲突
  • lv_object:固定为GRAPHICS,对应SE78中的图形对象类型
  • lv_id:固定为BMAP,表示上传的是位图类型
  • lv_type:COL对应彩色位图,BW对应黑白位图,根据你的二维码生成格式选择
  • overwrite:设为X时,若已有同名图形则直接覆盖;若设为空,则上传会因图形已存在报错

注意事项

  • 确保当前用户拥有SE78图形库的修改权限(需权限对象S_SCRP的相关权限)
  • 二维码生成的是BMP格式,因此filetype必须指定为BMP,否则会报格式错误
  • 若上传失败,可根据SY-SUBRC对应的异常代码排查问题,比如图形尺寸过大、权限不足等

内容的提问来源于stack exchange,提问作者Mannat Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:05:38