SCMS_DOC_READ_FILES 下载成文件夹的处理方式

今天有人说SCMS_DOC_READ_FILES下载下来居然是文件夹,我琢磨了很久,发现是由于传递的PATH参数长度有问题,因此根据路径的实际长度动态创建变量就完美解决了这个问题。我相信肯定还有更好的方式,我觉得这样解决太2B了。


REPORT  Z_TEST.

DATACOMPS2 TYPE STANDARD TABLE OF SCMS_DOINF WITH HEADER LINE,
      COMP_NAMES TYPE STANDARD TABLE OF SCMS_DONAM WITH HEADER LINE.
DATA:BEGIN OF GT_PERNR OCCURS 0,
     OBJECT_ID TYPE TOAHR-OBJECT_ID,
     END OF GT_PERNR.
DATA:G_PERNR TYPE PA0001-PERNR.
DATA:G_PATH TYPE STRING.

DATALEN TYPE I.
DATADREF  TYPE REF TO DATA,
      CTYPE TYPE REF TO CL_ABAP_ELEMDESCR.
FIELD-SYMBOLS:<FS>.

SELECT OBJECT_ID FROM TOAHR INTO TABLE GT_PERNR WHERE SAP_OBJECT 'PREL' AND AR_OBJECT 'HRICOLFOTO'.

LOOP AT GT_PERNR.
  CONDENSE GT_PERNR-OBJECT_ID.
  G_PERNR GT_PERNR-OBJECT_ID.
  CONCATENATE 'D:\' G_PERNR '.JPG' INTO G_PATH.
**************************************************************************************************
  "根据路径长度动态创建C类型,否则将会下载成文件夹
  LEN STRLENG_PATH ).
  CTYPE CL_ABAP_ELEMDESCR=>GET_CLEN ).
  CREATE DATA DREF TYPE HANDLE CTYPE.
  ASSIGN DREF->TO <FS>.
  <FS> G_PATH.

**************************************************************************************************
  PERFORM PHOTO_DOWN
  USING
   G_PERNR
  'A'
  '18000101'
  '99991231'
  "'D:\000000052.JPG'.
  <FS>.
ENDLOOP.

*&---------------------------------------------------------------------*
*&      Form  PHOTO_DOWN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_PERNR    text
*      -->P_TCLAS    text
*      -->P_BEGDA    text
*      -->P_ENDDA    text
*      -->PATH       text
*----------------------------------------------------------------------*
FORM PHOTO_DOWN USING P_PERNR LIKE PRELP-PERNR
                      P_TCLAS LIKE PSPAR-TCLAS
                      P_BEGDA LIKE PRELP-BEGDA
                      P_ENDDA LIKE PRELP-ENDDA
                      PATH TYPE C.

  DATAL_CONNECT_INFO LIKE TOAV0,
        L_EXISTS(1TYPE C.
  CALL FUNCTION'HR_IMAGE_EXISTS'
  EXPORTING

        P_PERNR        P_PERNR
        P_TCLAS        P_TCLAS
        P_BEGDA        P_BEGDA
        P_ENDDA        P_ENDDA
  IMPORTING
        P_EXISTS       L_EXISTS
        P_CONNECT_INFO L_CONNECT_INFO

  EXCEPTIONS
  OTHERS 2.

  IF SY-SUBRC <> 0.

    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 .
    EXIT.

  ENDIF.

  CALL FUNCTION'SCMS_DOC_READ_FILES'
  EXPORTING
        STOR_CAT              SPACE
        CREP_ID               L_CONNECT_INFO-ARCHIV_ID
        DOC_ID                L_CONNECT_INFO-ARC_DOC_ID
        PATH                  PATH
        FRONTEND              'X'
  TABLES
        COMPS                 COMPS2
        COMP_NAMES            COMP_NAMES
  EXCEPTIONS
        BAD_STORAGE_TYPE      1
        BAD_REQUEST           2
        UNAUTHORIZED          3
        NOT_FOUND             4
        CONFLICT              5
        INTERNAL_SERVER_ERROR 6
        ERROR_HTTP            7
        ERROR_SIGNATURE       8
        ERROR_CONFIG          9
        ERROR_HIERARCHY       10
        ERROR_DOWNLOAD        11
        ERROR_OPEN            12
        ERROR_PARAMETER       13
        ERROR                 14
  OTHERS 15.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 .
  ENDIF.
ENDFORM                    "PHOTO_DOWN
.
"photo_down

By 小熊东东

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值