利用ODATA取附件清单传输PDF格式至SAPUI5,上传附件,PDF

 METHOD /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_STREAM.

    DATA: LT_STREAM TYPE ZCL_ZHR_SELFSERVICE_PR_MPC_EXT=>TT_ZHR_GET_STREAM,
          LS_STREAM TYPE TY_S_MEDIA_RESOURCE.

    DATA:  LV_PERNR    TYPE  PERSNO.
    DATA:  LV_ZTYPE    TYPE  C.

    DATA:LV_INSTID_A  TYPE SIBFBORIID."兼容 BOR 的持久对象参考中的实例标识

    DATA:LT_SRGBTBREL TYPE TABLE OF SRGBTBREL,
         LS_SRGBTBREL TYPE  SRGBTBREL.

    DATA : OBJCONT    TYPE TABLE OF SOLI,
           LS_OBJCONT TYPE SOLI,
           OBJHEAD    TYPE TABLE OF SOLI,
           PDFCONTENT TYPE FPCONTENT,
           HEADER     TYPE IHTTPNVP,
           FOLDER_ID  TYPE SOODK,
           OBJECT_ID  TYPE SOODK.

    DATA: LV_FOLTP TYPE  SO_OBJ_TP, "文件类别
          LV_FOLYR TYPE  SO_OBJ_YR, "文件夹年
          LV_FOLNO TYPE  SO_OBJ_NO. "文件夹号码

    DATA:LV_OBJTP TYPE  SO_OBJ_TP, "类别
         LV_OBJYR TYPE  SO_OBJ_YR, "对象年
         LV_OBJNO TYPE  SO_OBJ_NO. "对象号码

    DATA:L_LEN      TYPE I.
    DATA:LS_P0001 TYPE  PA0001.

    DATA:LOIO_OBJECT TYPE SDOKOBJECT,
         PHIO_OBJECT TYPE SDOKOBJECT.

    DATA : CONTEXT    TYPE TABLE OF SDOKPROPTY,
           LS_CONTEXT TYPE SDOKPROPTY.

    DATA:CONT_BIN    TYPE TABLE OF SDOKCNTBIN,
         LS_CONT_BIN TYPE  SDOKCNTBIN.

    DATA:FILE_ACCESS_INFO   TYPE TABLE OF SDOKFILACI,
         LS_FILE            TYPE SDOKFILACI,
         FILE_CONTENT_ASCII TYPE TABLE OF SDOKCNTASC.

    CASE IV_ENTITY_SET_NAME.

      WHEN 'ZHR_GET_STREAMSet'.

        CALL METHOD READ_PARAM_VALUE
          EXPORTING
            IT_KEY_TAB = IT_KEY_TAB
            I_PARAM    = 'PERNR'
          IMPORTING
            E_VALUE    = LV_PERNR.

        CALL METHOD READ_PARAM_VALUE " (0是岗位,1是部门)
          EXPORTING
            IT_KEY_TAB = IT_KEY_TAB
            I_PARAM    = 'ZTYPE'
          IMPORTING
            E_VALUE    = LV_ZTYPE.

        SELECT * FROM PA0001 INTO TABLE @DATA(LT_PA0001)  WHERE PERNR = @LV_PERNR.
        IF SY-SUBRC = 0.
          SORT LT_PA0001 BY BEGDA DESCENDING.
          READ TABLE LT_PA0001  INTO LS_P0001 INDEX 1.
          IF LV_ZTYPE = '0'. "岗位

            LV_INSTID_A = '01' && LS_P0001-PLANS.

          ELSE."部门

            LV_INSTID_A = '01' && LS_P0001-ORGEH.

          ENDIF.
        ENDIF.

        LV_INSTID_A = '0150010287'.
        SELECT * INTO TABLE LT_SRGBTBREL FROM SRGBTBREL WHERE INSTID_A = LV_INSTID_A.

        IF SY-SUBRC = 0.
          SORT  LT_SRGBTBREL BY INSTID_B DESCENDING.
          READ TABLE LT_SRGBTBREL INTO LS_SRGBTBREL INDEX 1.

          LV_FOLTP = LS_SRGBTBREL-INSTID_B(3)."文件类别
          LV_FOLYR = LS_SRGBTBREL-INSTID_B+3(2)."文件夹年
          LV_FOLNO = LS_SRGBTBREL-INSTID_B+5(12)."文件夹号码

          LV_OBJTP = LS_SRGBTBREL-INSTID_B+17(3)."类别
          LV_OBJYR = LS_SRGBTBREL-INSTID_B+20(2)."对象年
          LV_OBJNO = LS_SRGBTBREL-INSTID_B+22(12)."对象年

          FOLDER_ID-OBJTP = LV_FOLTP.
          FOLDER_ID-OBJYR = LV_FOLYR.
          FOLDER_ID-OBJNO = LV_FOLNO.

          OBJECT_ID-OBJTP = LV_OBJTP.
          OBJECT_ID-OBJYR = LV_OBJYR.
          OBJECT_ID-OBJNO = LV_OBJNO.

          CALL FUNCTION 'SO_OBJECT_READ'
            EXPORTING
*             FILTER                     =
              FOLDER_ID                  = FOLDER_ID
*             FORWARDER                  =
              OBJECT_ID                  = OBJECT_ID
*             OWNER                      =
*             F_MAILER                   = ' '
*       IMPORTING
*             OBJECT_FL_DISPLAY          =
*             OBJECT_HD_DISPLAY          =
*             OBJECT_RC_DISPLAY          =
            TABLES
              OBJCONT                    = OBJCONT
              OBJHEAD                    = OBJHEAD
*             OBJPARA                    =
*             OBJPARB                    =
            EXCEPTIONS
              ACTIVE_USER_NOT_EXIST      = 1
              COMMUNICATION_FAILURE      = 2
              COMPONENT_NOT_AVAILABLE    = 3
              FOLDER_NOT_EXIST           = 4
              FOLDER_NO_AUTHORIZATION    = 5
              OBJECT_NOT_EXIST           = 6
              OBJECT_NO_AUTHORIZATION    = 7
              OPERATION_NO_AUTHORIZATION = 8
              OWNER_NOT_EXIST            = 9
              PARAMETER_ERROR            = 10
              SUBSTITUTE_NOT_ACTIVE      = 11
              SUBSTITUTE_NOT_DEFINED     = 12
              SYSTEM_FAILURE             = 13
              X_ERROR                    = 14
              OTHERS                     = 15.
          IF SY-SUBRC <> 0.
            EXIT.
          ELSE.

            CALL FUNCTION 'SO_KPRO_DATA_FROM_OBJCONT_GET'
              IMPORTING
                LOIO_OBJECT       = LOIO_OBJECT
              TABLES
                OBJCONT           = OBJCONT
                CONTEXT           = CONTEXT
              EXCEPTIONS
                MISSING_KPRO_DATA = 1.
            IF SY-SUBRC = 0.
              CALL FUNCTION 'SO_LOIO_PHIO_GET'
                EXPORTING
                  LOIO_OBJECT        = LOIO_OBJECT
                IMPORTING
                  PHIO_OBJECT        = PHIO_OBJECT
                TABLES
                  CONTEXT            = CONTEXT
                EXCEPTIONS
                  KPRO_INCONSISTENCY = 1
                  X_ERROR            = 2.

              CALL FUNCTION 'SDOK_PHIO_LOAD_CONTENT'
                EXPORTING
                  OBJECT_ID           = PHIO_OBJECT
*                 CLIENT              = SY-MANDT
*                 AS_IS_MODE          =
*                 RAW_MODE            =
                  TEXT_AS_STREAM      = 'X'
                TABLES
                  FILE_ACCESS_INFO    = FILE_ACCESS_INFO
                  FILE_CONTENT_ASCII  = FILE_CONTENT_ASCII
                  FILE_CONTENT_BINARY = CONT_BIN
                EXCEPTIONS
                  NOT_EXISTING        = 1
                  NOT_AUTHORIZED      = 2
                  NO_CONTENT          = 3
                  BAD_STORAGE_TYPE    = 4.

            ENDIF.

            IF CONT_BIN  IS NOT INITIAL .
              LOOP AT CONT_BIN INTO LS_CONT_BIN.
                L_LEN = L_LEN + XSTRLEN( LS_CONT_BIN-LINE ).
              ENDLOOP.
              CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
                EXPORTING
                  INPUT_LENGTH = L_LEN
*                 FIRST_LINE   = 0
*                 LAST_LINE    = 0
                IMPORTING
                  BUFFER       = PDFCONTENT
                TABLES
                  BINARY_TAB   = CONT_BIN "lt_clustd
                EXCEPTIONS
                  FAILED       = 1
                  OTHERS       = 2.

              LS_STREAM-VALUE     = PDFCONTENT.
              LS_STREAM-MIME_TYPE = 'application/pdf'.
              READ TABLE   FILE_ACCESS_INFO INTO LS_FILE INDEX 1.
              HEADER-NAME = 'content-disposition'.
              HEADER-VALUE = 'inline;filename=' &&    LS_FILE-FILE_NAME.
              /IWBEP/IF_MGW_CONV_SRV_RUNTIME~SET_HEADER( EXPORTING IS_HEADER = HEADER ).

              COPY_DATA_TO_REF( EXPORTING IS_DATA = LS_STREAM
                             CHANGING  CR_DATA = ER_STREAM ).
            ENDIF.
          ENDIF.
        ENDIF.
      WHEN OTHERS.
    ENDCASE.

  ENDMETHOD.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值