在SE78中将图像上传后转换为BMP(使用IGS)问题

2020-08-18 15:28发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我使用IGS类将PNG图像转换为BMP。 它工作正常。 当我使用FM'SAPSCRIPT_CONVERT_BITMAP_BDS'将BMP转换为BDS(用于在SE78中上载)时,会出现问题。 我收到一个shordump:

运行时错误:COMPUTE_INT_TIMES_OVERFLOW

异常:CX_SY_ARITHMETIC_OVERFLOW

我知道问题在于DPI值的计算值太大,但是我不知道是什么原因造成的。 最后是这种情况:当我运行一次时,所有程序都运行良好。 但是总是在第二次执行时,我会收到shordump。

以下是将PNG转换为BMP的例程:

使用p_width形成convert_image

p_height

p_content_length。

创建对象i_igs_image_converter。

i_igs_image_converter-> input ='image/png'。

i_igs_image_converter-> output ='image/x-ms-bmp'。

i_igs_image_converter-> width = p_width。

i_igs_image_converter-> height = p_height。

调用方法i_igs_image_converter-> set_image

导出

blob = mime

blob_size = p_content_length。

调用方法i_igs_image_converter->执行

例外情况

communication_error = 1

internal_error = 2

external_error = 3

其他= 4。

如果sy-subrc = 0。

调用方法i_igs_image_converter-> get_image

导入

blob = blob

blob_size = blob_size

blob_type = blob_type。

l_bytecount = blob_size。

ENDIF。

ENDFORM。



以下是将此BMP传递给函数的例程:


*位图转换

调用功能'SAPSCRIPT_CONVERT_BITMAP_BDS'

导出

color ='X'

format = p_format" BMP

居民= p_resident"''

bitmap_bytecount = l_bytecount

* compress_bitmap = p_bmcomp

导入

width_tw = l_width_tw

height_tw = l_height_tw

width_pix = l_width_pix

height_pix = l_height_pix

dpi = p_resolution

bds_bytecount = l_bds_bytecount

表格

bitmap_file = p_blob

bitmap_file_bds = l_bds_content

例外情况

format_not_supported = 1

no_bmp_file = 2

bmperr_invalid_format = 3

bmperr_no_colortable = 4

bmperr_unsup_compression = 5

bmperr_corrupt_rle_data = 6

其他= 7。



以下是导致程序崩溃的标准程序的一部分:


ABAP类别编程错误

运行时错误COMPUTE_INT_TIMES_OVERFLOW

除外。 CX_SY_ARITHMETIC_OVERFLOW

ABAP程序SAPLSTXBITMAPS

应用程序组件BC-SRV-SCR

1946年*每米Y像素

1947执行bmptab_getlong_ofs表的位图文件

1948年,使用ofs bmp_ypelspermeter。

1949 *使用的颜色

1950执行bmptab_getdword_ofs表的位图文件

1951年使用ofs单词。

1952年*颜色很重要

1953年执行bmptab_getdword_ofs表的位图文件

1954年使用ofs单词。

1955 ofs_rgbquad = ofs_bitmapinfoheader + bmp_bisize。

1956 *现在我们有了OFS_RGBQUAD->色表

1957 * OFS_BITMAPDATA->位图字节

1958年otf_bminfo-new_rd_format = c_false。

1959年otf_bminfo-is_resident = c_false。

>>>>> otf_bminfo-dpi =(bmp_xpelspermeter * 100)/3937。

1961使用otf_bminfo-dpi执行bmp_adjust_dpi。

1962 otf_bminfo-w_pix = bmp_width。

1963 otf_bminfo-h_pix = abs(bmp_height)。

1964 otf_bminfo-w_tw =(1440 * otf_bminfo-w_pix)/otf_bminfo-dpi。

1965 otf_bminfo-h_tw =(1440 * otf_bminfo-h_pix)/otf_bminfo-dpi。

1966年的案件bmp_bitcount。

1967年1点。

1968 otf_bminfo-bitsperpix = 1。

1969 otf_bminfo-bytes_per_row = otf_bminfo-w_pix div 8。

1970 rest = otf_bminfo-w_pix mod 8。

1971年,当时为4。

谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我使用IGS类将PNG图像转换为BMP。 它工作正常。 当我使用FM'SAPSCRIPT_CONVERT_BITMAP_BDS'将BMP转换为BDS(用于在SE78中上载)时,会出现问题。 我收到一个shordump:

运行时错误:COMPUTE_INT_TIMES_OVERFLOW

异常:CX_SY_ARITHMETIC_OVERFLOW

我知道问题在于DPI值的计算值太大,但是我不知道是什么原因造成的。 最后是这种情况:当我运行一次时,所有程序都运行良好。 但是总是在第二次执行时,我会收到shordump。

以下是将PNG转换为BMP的例程:

使用p_width形成convert_image

p_height

p_content_length。

创建对象i_igs_image_converter。

i_igs_image_converter-> input ='image/png'。

i_igs_image_converter-> output ='image/x-ms-bmp'。

i_igs_image_converter-> width = p_width。

i_igs_image_converter-> height = p_height。

调用方法i_igs_image_converter-> set_image

导出

blob = mime

blob_size = p_content_length。

调用方法i_igs_image_converter->执行

例外情况

communication_error = 1

internal_error = 2

external_error = 3

其他= 4。

如果sy-subrc = 0。

调用方法i_igs_image_converter-> get_image

导入

blob = blob

blob_size = blob_size

blob_type = blob_type。

l_bytecount = blob_size。

ENDIF。

ENDFORM。



以下是将此BMP传递给函数的例程:


*位图转换

调用功能'SAPSCRIPT_CONVERT_BITMAP_BDS'

导出

color ='X'

format = p_format" BMP

居民= p_resident"''

bitmap_bytecount = l_bytecount

* compress_bitmap = p_bmcomp

导入

width_tw = l_width_tw

height_tw = l_height_tw

width_pix = l_width_pix

height_pix = l_height_pix

dpi = p_resolution

bds_bytecount = l_bds_bytecount

表格

bitmap_file = p_blob

bitmap_file_bds = l_bds_content

例外情况

format_not_supported = 1

no_bmp_file = 2

bmperr_invalid_format = 3

bmperr_no_colortable = 4

bmperr_unsup_compression = 5

bmperr_corrupt_rle_data = 6

其他= 7。



以下是导致程序崩溃的标准程序的一部分:


ABAP类别编程错误

运行时错误COMPUTE_INT_TIMES_OVERFLOW

除外。 CX_SY_ARITHMETIC_OVERFLOW

ABAP程序SAPLSTXBITMAPS

应用程序组件BC-SRV-SCR

1946年*每米Y像素

1947执行bmptab_getlong_ofs表的位图文件

1948年,使用ofs bmp_ypelspermeter。

1949 *使用的颜色

1950执行bmptab_getdword_ofs表的位图文件

1951年使用ofs单词。

1952年*颜色很重要

1953年执行bmptab_getdword_ofs表的位图文件

1954年使用ofs单词。

1955 ofs_rgbquad = ofs_bitmapinfoheader + bmp_bisize。

1956 *现在我们有了OFS_RGBQUAD->色表

1957 * OFS_BITMAPDATA->位图字节

1958年otf_bminfo-new_rd_format = c_false。

1959年otf_bminfo-is_resident = c_false。

>>>>> otf_bminfo-dpi =(bmp_xpelspermeter * 100)/3937。

1961使用otf_bminfo-dpi执行bmp_adjust_dpi。

1962 otf_bminfo-w_pix = bmp_width。

1963 otf_bminfo-h_pix = abs(bmp_height)。

1964 otf_bminfo-w_tw =(1440 * otf_bminfo-w_pix)/otf_bminfo-dpi。

1965 otf_bminfo-h_tw =(1440 * otf_bminfo-h_pix)/otf_bminfo-dpi。

1966年的案件bmp_bitcount。

1967年1点。

1968 otf_bminfo-bitsperpix = 1。

1969 otf_bminfo-bytes_per_row = otf_bminfo-w_pix div 8。

1970 rest = otf_bminfo-w_pix mod 8。

1971年,当时为4。

谢谢。

付费偷看设置
发送
3条回答
Climb_Ma
1楼-- · 2020-08-18 16:03

嗨,

为简化起见,请发布整个代码和图像。 表单例程(使用看起来像* squints * ... 5个全局变量)已经看起来很糟糕:|

有一个相对较新的OSS注释,它与IGS PNG转换有关:2042588-IMGCONV:转换某些PNG图像时"图像数据损坏"

欢呼声

贾尼斯(Jānis)

SC_Yao
2楼-- · 2020-08-18 16:03

我遇到了同样的错误,就我而言,问题出在图像尺寸上。

我调整了图像的大小并上传了它,它对我有用。

太Q了
3楼-- · 2020-08-18 16:03

嗨,

如果您可以看到.png的话,那么我 会尝试验证IGS是否会从中创建"正确的" .bmp。 如果没有(如果它在QAS上有效),我将要求Basis调查问题(IGS是否最新等)。 如果.bmp也可以,我将其写到光盘上,看看是否可以在740 SP 09上以SE78

Btw上传时重现该问题,SAP终于添加了对QR码的支持< a hraf=" http://service.sap.com/sap/support/notes/2030263"> 2030263-支持SAPscript和智能表单中的QR Code 2005条码


欢呼声

Janis

一周热门 更多>