BDSCONT2表未从服务器文件正确填充

2020-08-15 19:45发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我正在尝试从服务器获...

         点击此处--->   EasySAP.com群内免费提供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。

      
 
1条回答
zhangjiyang1323
2020-08-15 20:27

也许我错了,但是我认为您不能以SAPscript/智能表单图形/SE78的格式保存文件(不要调用SAPSCRIPT_CONVERT_BITMAP_BDS)。

调用时 CREATE_WITH_TABLE,要将文档附加到业务对象,参数CLASSTYPE必须是BO,而CLASSNAME必须是业务对象的类型(在您的情况下,我认为是BUS1001),而OBJECT_KEY是物料编号。

NB:有关信息,没有循环需要将二进制文件读取到XSTRING变量中,只有一个READ读取整个文件。

一周热门 更多>