点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我正在尝试从服务器获取BMP图像并将其导入BDS。 但是我比较了从本地目录获得相同图像的情况后,发现 BDSCONT2 表未正确填充。 在这种情况下,表格已正确填充,我可以在 MM03 图像标签上看到图片。
当我从前端上传图像时, BDS_BUSINESSDOCUMENT_CREATEF 函数可以获取路径并且可以正常工作。
然后,我使用了 BDS_BUSINESSDOCUMENT_CREA_TAB 函数或cl_bds_document_set => CREATE_WITH_TABLE 方法来创建具有内部表的BDS。 但是我看不到MM03上的图像。 我发现MM03屏幕查看 BDSCONT2 表以显示图像。 表格包含的行数少于应有的行数。
我在调试模式下从本地和服务器上传图像之间进行了交叉检查。 我从下面的函数和类发送到/获取的参数具有相同的值。
通过这种方式,我可以成功地将图像从服务器加载到SE78图形。
在以下代码中获取图像内容时,我是否犯了一个错误? 还是在此流程中可能出了什么问题?
谢谢。
在二进制模式下输入OPEN DATASET LV_FILENAME_ALL。 如果SY-SUBRC EQ 0。 清除:XSTR。 清除XSTR_TEMP。 做。 将数据集LV_FILENAME_ALL读入XSTR。 如果SY-SUBRC NE 0。 出口。 其他。 XSTR_TEMP = XSTR。 万一。 ENDDO。 万一。 CLOSE DATASET LV_FILENAME_ALL。 清除L_BITMAP。 通话功能'SCMS_XSTRING_TO_BINARY' 出口 缓冲= XSTR_TEMP 输入 OUTPUT_LENGTH = L_BYTECOUNT 桌子 BINARY_TAB = L_BITMAP 。 通话功能'SAPSCRIPT_CONVERT_BITMAP_BDS' 出口 颜色='X' 格式='BMP' 居民='' BITMAP_BYTECOUNT = L_BYTECOUNT COMPRESS_BITMAP ='X' 输入 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 = L_BITMAP 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。 WA_BDS_COMPONENTS-DOC_COUNT ='1'。 WA_BDS_COMPONENTS-COMP_COUNT ='1'。 WA_BDS_COMPONENTS-MIMETYPE = C_BDS_MIMETYPE。 WA_BDS_COMPONENTS-COMP_SIZE = L_BYTECOUNT。 WA_BDS_COMPONENTS-COMP_ID = WA_PFILE-FILENAME。 将WA_BDS_COMPONENTS附加到L_BDS_COMPONENTS。 清除:WA_BDS_COMPONENTS。 如果P_DOCID是INITIAL。 "图形是新的 清除WA_BDS_SIGNATURE。 WA_BDS_SIGNATURE-DOC_COUNT ='1'。 WA_BDS_SIGNATURE-PROP_NAME ='BDS_DOCUMENTCLASS'。 WA_BDS_SIGNATURE-PROP_VALUE ='BMP'。 将WA_BDS_SIGNATURE附加到L_BDS_SIGNATURE。 清除WA_BDS_SIGNATURE。 WA_BDS_SIGNATURE-DOC_COUNT ='1'。 WA_BDS_SIGNATURE-PROP_NAME ='BDS_CONTREP'。 WA_BDS_SIGNATURE-PROP_VALUE =''。 将WA_BDS_SIGNATURE附加到L_BDS_SIGNATURE。 清除WA_BDS_SIGNATURE。 WA_BDS_SIGNATURE-DOC_COUNT ='1'。 WA_BDS_SIGNATURE-PROP_NAME ='BDS_DOCUMENTTYPE'。 WA_BDS_SIGNATURE-PROP_VALUE ='BDS_IMAGE'。 将WA_BDS_SIGNATURE附加到L_BDS_SIGNATURE。 清除WA_BDS_SIGNATURE。 WA_BDS_SIGNATURE-DOC_COUNT ='1'。 WA_BDS_SIGNATURE-PROP_NAME ='DESCRIPTION'。 将LV_NAME移动到WA_BDS_SIGNATURE-PROP_VALUE。 将WA_BDS_SIGNATURE附加到L_BDS_SIGNATURE。 清除WA_BDS_SIGNATURE。 WA_BDS_SIGNATURE-DOC_COUNT ='1'。 WA_BDS_SIGNATURE-PROP_NAME ='LANGUAGE'。 WA_BDS_SIGNATURE-PROP_VALUE = SYST-LANGU。 将WA_BDS_SIGNATURE附加到L_BDS_SIGNATURE。 呼叫方法L_BDS_OBJECT-> CREATE_WITH_TABLE 出口 CLASSNAME ="图片" CLASSTYPE ='OT' 组件= L_BDS_COMPONENTS 内容= L_BDS_CONTENT 改变 签名= L_BDS_SIGNATURE OBJECT_KEY = LV_OBJKEY 例外情况 其他= 1。
也许我错了,但是我认为您不能以SAPscript/智能表单图形/SE78的格式保存文件(不要调用SAPSCRIPT_CONVERT_BITMAP_BDS)。
调用时 CREATE_WITH_TABLE,要将文档附加到业务对象,参数CLASSTYPE必须是BO,而CLASSNAME必须是业务对象的类型(在您的情况下,我认为是BUS1001),而OBJECT_KEY是物料编号。
NB:有关信息,没有循环需要将二进制文件读取到XSTRING变量中,只有一个READ读取整个文件。
一周热门 更多>