Smartform 打印二维码 (SAP本身支持二维码打印,不需要插件)

Step 1: Upgrade the Kernel if Required

Log in to the SAP >> SAP Easy Access Screen >> System Menu >> Status

61f54e4a9c546883afcbe118344899a7.jpeg

Click on the component to check the SAP_BASIS release 731

347acd67766b624d21cb2094b6cb31e0.jpeg

d19aa1b6db9efd16d54840f702901461.jpeg

Close the pop-up dialog and click on the arrow button. The Kernel Version Should be 321 or superior. If it is not then ask your Basis Team to upgrade it.

aaede21ff231892ffb1c69349315413c.jpeg

4fa21bd7a89d13f0eaf6926651c7d638.png

Step 2: Implement SAP Note 2029824

Ask the Developer to implement the note

2029824 – Support for QR code and data matrix bar code

Step 3: SAP Script Font Maintenance

After successful implementation of the SAP Note. Go to Transaction SE73.

Click on System Bar Code option and Click on Change.

747b7ddeba1ba8da976ed7c422468889.png

Click on Create(F5).

08c983c6b6b6b989621bb08e10092724.jpeg

Click on New (new Barcode Technology)

67b5b2a7febd53d6ed765dcc59f08ae8.png

Define the Name and Description of the Bar code.

59cf4df7384230bdb01f0f90fc0f5d3e.png

Select Bar Code Symbology as "QR Code 2005" and Click OK. Select Alignment as "Normal"

3a1d887d5df7a4a1fe6daebeb91a9ed3.png

3d7b308dbb189abba75c7a80b3f5c1aa.png

Choose Mode, Module Size, Error Correction Level (Refer the SAP note 2030263 for further information)

Mode:

A – AUTOMATIC

N – NUMERIC

L – ALPHANUMERIC

B – BYTE_LATIN1

K – KANJI

U – BYTE_UTF8

1 – FNC1_POS1 (FNC1 in first position)

2 – FNC1_POS2 (FNC1 in second position)

Module Size: Numeric User Entry

Error Correction Level:

L – 7 % Error Correction capability

M – 15% Error Correction capability

Q – 25% Error Correction capability

H – 30% Error Correction capability

885e0146a80860dfcfac88025027a754.png

Save the Bar Code Definition. Select the same and Test.

5c9e3254857e7d971b49650368386fb2.png

Step 4: Create Program to Download the QR Code as BMP (image File)

Write the below code in the SE38 Program. This Program can download the QR Code as image (.bmp format) on your presentation system.

*YOTQR starts

*&———————————————————————*

*& Report  YOTQR2 this program dirctly print BMP file of any barcode

*&

*&———————————————————————*

*&

*&

*&———————————————————————*

REPORT YOTQR.

PARAMETERS: barcode like tfo05-tdbarcode default 'ZQRCODE',

            barcdata(50) type c lower case default '1234567890',

            filename type string LOWER CASE default 'd:\1.bmp'.

DATA:errmsg(80)   TYPE c,

      bc_cmd       LIKE itcoo,

      bp_cmd       LIKE itcoo,

      bitmapsize   TYPE i,

      bitmap2_size TYPE i,

      w            TYPE i,

      h            TYPE i,

      bitmap       LIKE rspolpbi OCCURS 10 WITH HEADER LINE,

      bitmap2      LIKE rspolpbi OCCURS 10 WITH HEADER LINE,

      l_bitmap     TYPE xstring,

      otf          LIKE itcoo OCCURS 10 WITH HEADER LINE.

PERFORM get_otf_bc_cmd  IN PROGRAM sapmssco

                       USING barcode

                             barcdata

                             bc_cmd.

CHECK sy-subrc = 0.

bp_cmd-tdprintcom = 'BP'.

PERFORM get_otf_bp_cmd  IN PROGRAM sapmssco

                       USING barcode

                             bp_cmd-tdprintpar.

CHECK sy-subrc = 0.

PERFORM renderbarcode IN PROGRAM sapmssco

                     TABLES bitmap

                      USING bc_cmd

                            bp_cmd

                            barcdata

                            bitmapsize

                            w

                            h

                            errmsg.

CHECK sy-subrc = 0.

perform bitmap2otf IN PROGRAM sapmssco

                   tables bitmap

                          otf

                    using bitmapsize

                          w

                          h.

data length type i.

data hex type xstring.

data bitmap3 type xstring.

FIELD-SYMBOLS     type x.

clear: hex, bitmap3.

loop at otf.

  length = otf-tdprintpar+2(2).

  assign otf-tdprintpar+4(length) to casting.

  hex = (length).

  concatenate bitmap3 hex into bitmap3 in BYTE MODE.

endloop.

* convert from old format to new format

hex = 'FFFFFFFF01010000'.

CONCATENATE bitmap3(8) hex bitmap3+8 into bitmap3 in BYTE MODE.

clear hex.

shift hex right by 90 places in BYTE MODE.

CONCATENATE bitmap3(42) hex bitmap3+42 into bitmap3 in BYTE MODE.

data bitmap4 type SBDST_CONTENT.

  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'

    EXPORTING

      buffer                = bitmap3 " xstring

    TABLES

      binary_tab            = bitmap4.

data bitmap4_size type i.

bitmap4_size = xstrlen( bitmap3 ).

CALL FUNCTION 'SAPSCRIPT_CONVERT_BITMAP'

EXPORTING

   OLD_FORMAT                     = 'BDS'

   NEW_FORMAT                     = 'BMP'

   BITMAP_FILE_BYTECOUNT_IN       = bitmap4_size

IMPORTING

   BITMAP_FILE_BYTECOUNT          = bitmap2_size

  TABLES

    bitmap_file                    = bitmap2

   BDS_BITMAP_FILE                = BITMAP4

EXCEPTIONS

   NO_BITMAP_FILE                 = 1

   FORMAT_NOT_SUPPORTED           = 2

   BITMAP_FILE_NOT_TYPE_X         = 3

   NO_BMP_FILE                    = 4

   BMPERR_INVALID_FORMAT          = 5

   BMPERR_NO_COLORTABLE           = 6

   BMPERR_UNSUP_COMPRESSION       = 7

   BMPERR_CORRUPT_RLE_DATA        = 8

   BMPERR_EOF                     = 9

   BDSERR_INVALID_FORMAT          = 10

   BDSERR_EOF                     = 11.

  CALL METHOD cl_gui_frontend_services=>gui_download

    EXPORTING

      bin_filesize = bitmap2_size

      filename     = filename

      filetype     = 'BIN'

    CHANGING

      data_tab     = bitmap2[]

    EXCEPTIONS

      OTHERS       = 3.

*YOTQR Ends

Step 5: Create Smartstyle for QR Code

Define your Smartstyle as below screenshots

Define the QR Code in Character Format as below Screenshot

Step 6: Use SmartStyle in SmartForm

Define the smartstyle in the form attributes as per the below screenshot

Define Text as below screenshots. Caution: keep the (small letters) not (capital Letters) otherwise QR code will not get Printed)

in this example, I've used material Number to be encoded in QR Code.

Test The SmartForm

We can use the same procedure to include the QR code on your SmartForms.

This Bar Code can encode up to 255 characters (it is the limit).But, I think, 255 characters enough.

Using this you can shrink the size of your label. You can encode the address information as QR Code and save the space on the form for more details and many more.

END

本人测试结果

2c9ec4b9686461ba36ab43265ba34f93.png

177f64439c33670d37cf17a27f6441cc.jpeg

174efad0f525f8fb2265ffc8230f844f.gif

点击阅读原文,可查看本文参考博客~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值