zoukankan      html  css  js  c++  java
  • ABAPprogram to download BITMAP file to PC

    REPORT z_download_bitmap.
    *----------------------------------------------------------------------*

    * D A T A D E C L A R A T I O N S *

    *----------------------------------------------------------------------*
    DATA: v_bitmap TYPE xstring, "graphic data

    v_file TYPE string, "file name

    v_length TYPE i. "length of binary file

    DATA: BEGIN OF it_bitmaps OCCURS 0,

    object TYPE tdobjectgr, "object

    name TYPE tdobname, "name

    id TYPE tdidgr, "id

    tdbtype TYPE tdbtype, "graphic type

    END OF it_bitmaps.

    DATA: itab TYPE TABLE OF x.
    *----------------------------------------------------------------------*

    * S E L E C T I O N - S C R E E N *

    *----------------------------------------------------------------------*
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.

    PARAMETERS: p_object TYPE tdobjectgr, "object

    p_btype TYPE tdbtype, "graphic type

    p_name TYPE tdobname, "name

    p_id TYPE tdidgr. "id

    SELECTION-SCREEN END OF BLOCK b1.

    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.

    PARAMETERS: p_file TYPE rlgrap-filename. "file name

    SELECTION-SCREEN END OF BLOCK b2.
    *----------------------------------------------------------------------*

    *A T S E L E C T I O N - S C R E E N O N V A L U E - R E Q U E S T *

    *----------------------------------------------------------------------*
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_name.

    *-- Creating f4 help for the parameters

    PERFORM get_f4_object_name.

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

    *-- Getting the current value entered

    PERFORM get_current_value.

    *-- Value Request Functionality For Input File Name

    PERFORM f4_value_request.

    *----------------------------------------------------------------------*

    * S T A R T O F - S E L E C T I O N *

    *----------------------------------------------------------------------*

    START-OF-SELECTION.

    *--Getting the graphic as a BMP file

    PERFORM get_graphic_bmp.

    *--Convert the Xstring format to binary format

    PERFORM convert_to_binary.

    *--Download the graphic

    PERFORM download_graphic.

    *&---------------------------------------------------------------------*

    *& Form get_current_value

    *&---------------------------------------------------------------------*

    * Get the current file path entered

    *----------------------------------------------------------------------*

    FORM get_current_value .

    DATA: BEGIN OF li_dynp_value_tab OCCURS 0.

    INCLUDE STRUCTURE dynpread.

    DATA: END OF li_dynp_value_tab.

    DATA: l_program_name LIKE d020s-prog,

    l_dynpro_number LIKE d020s-dnum.

    l_program_name = sy-cprog.

    l_dynpro_number = sy-dynnr.

    REFRESH li_dynp_value_tab.

    li_dynp_value_tab-fieldname = 'P_FILE'.

    APPEND li_dynp_value_tab.

    CALL FUNCTION 'DYNP_VALUES_READ'

    EXPORTING

    dyname = l_program_name

    dynumb = l_dynpro_number

    TABLES

    dynpfields = li_dynp_value_tab

    EXCEPTIONS

    invalid_abapworkarea = 04

    invalid_dynprofield = 08

    invalid_dynproname = 12

    invalid_dynpronummer = 16

    invalid_request = 20

    no_fielddescription = 24

    undefind_error = 28.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

    READ TABLE li_dynp_value_tab INDEX 1.

    p_file = li_dynp_value_tab-fieldvalue.

    ENDFORM. " get_current_value

    *&---------------------------------------------------------------------*

    *& Form f4_value_request

    *&---------------------------------------------------------------------*

    * Provinding the f4 for the given path

    *----------------------------------------------------------------------*

    FORM f4_value_request .

    *-- if the file is to be downloaded to presentation server

    CALL FUNCTION '/SAPDMC/LSM_F4_FRONTEND_FILE'

    EXPORTING

    pathname = p_file

    CHANGING

    pathfile = p_file

    EXCEPTIONS

    canceled_by_user = 1

    system_error = 2

    OTHERS = 3.

    IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno

    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.

    ENDFORM. " f4_value_request

    *&---------------------------------------------------------------------*

    *& Form GET_GRAPHIC_BMP

    *&---------------------------------------------------------------------*

    * Get the graphic as a BMP file

    *----------------------------------------------------------------------*

    FORM get_graphic_bmp .

    CALL METHOD cl_ssf_xsf_utilities=>get_bds_graphic_as_bmp

    EXPORTING

    p_object = p_object

    p_name = p_name

    p_id = p_id

    p_btype = p_btype

    RECEIVING

    p_bmp = v_bitmap

    EXCEPTIONS

    not_found = 1

    internal_error = 2

    OTHERS = 3.

    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. " GET_GRAPHIC_BMP

    *&---------------------------------------------------------------------*

    *& Form CONVERT_TO_BINARY

    *&---------------------------------------------------------------------*

    * Converting the xstring to binary format

    *----------------------------------------------------------------------*

    FORM convert_to_binary .

    CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'

    EXPORTING

    buffer = v_bitmap

    IMPORTING

    output_length = v_length

    TABLES

    binary_tab = itab.

    ENDFORM. " CONVERT_TO_BINARY

    *&---------------------------------------------------------------------*

    *& Form DOWNLOAD_GRAPHIC

    *&---------------------------------------------------------------------*

    * Download the graphic

    *----------------------------------------------------------------------*

    FORM download_graphic .

    * v_file = p_file.

    CONCATENATE p_file '.BMP' INTO v_file.

    CALL FUNCTION 'GUI_DOWNLOAD'

    EXPORTING

    bin_filesize = v_length

    filename = v_file

    filetype = 'BIN'

    TABLES

    data_tab = itab

    EXCEPTIONS

    file_write_error = 1

    no_batch = 2

    gui_refuse_filetransfer = 3

    invalid_type = 4

    no_authority = 5

    unknown_error = 6

    header_not_allowed = 7

    separator_not_allowed = 8

    filesize_not_allowed = 9

    header_too_long = 10

    dp_error_create = 11

    dp_error_send = 12

    dp_error_write = 13

    unknown_dp_error = 14

    access_denied = 15

    dp_out_of_memory = 16

    disk_full = 17

    dp_timeout = 18

    file_not_found = 19

    dataprovider_exception = 20

    control_flush_error = 21

    OTHERS = 22.

    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. " DOWNLOAD_GRAPHIC

    *&---------------------------------------------------------------------*

    *& Form GET_F4_OBJECT_NAME

    *&---------------------------------------------------------------------*

    * Get F4 values for object names

    *----------------------------------------------------------------------*

    FORM get_f4_object_name .

    DATA: dynpfld_mapping TYPE STANDARD TABLE OF dselc WITH HEADER LINE,

    return_tab TYPE STANDARD TABLE OF ddshretval WITH HEADER LINE.

    *--Selecting the values to be provided as f4 help

    SELECT tdobject

    tdname

    tdid

    tdbtype

    FROM stxbitmaps

    INTO TABLE it_bitmaps.

    *--To update the values in the remaining fields

    dynpfld_mapping-fldname = 'F0001'.

    dynpfld_mapping-dyfldname = 'P_OBJECT'.

    APPEND dynpfld_mapping.

    dynpfld_mapping-fldname = 'F0002'.

    dynpfld_mapping-dyfldname = 'P_NAME'.

    APPEND dynpfld_mapping.

    dynpfld_mapping-fldname = 'F0003'.

    dynpfld_mapping-dyfldname = 'P_ID'.

    APPEND dynpfld_mapping.

    dynpfld_mapping-fldname = 'F0004'.

    dynpfld_mapping-dyfldname = 'P_BTYPE'.

    APPEND dynpfld_mapping.
    *--Providing f4 help with the selected values
    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

    EXPORTING

    retfield = 'TDOBNAME'

    dynpprog = sy-repid

    dynpnr = sy-dynnr

    dynprofield = 'P_NAME'

    value_org = 'S'

    TABLES

    value_tab = it_bitmaps

    dynpfld_mapping = dynpfld_mapping

    EXCEPTIONS

    parameter_error = 1

    no_values_found = 2

    OTHERS = 3.

    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. " GET_F4_OBJECT_NAME

     
  • 相关阅读:
    深入浅出Mybatis系列(八)---objectFactory、plugins、mappers
    深入浅出Mybatis系列(七)---TypeHandler简介
    深入浅出Mybatis系列(六)---配置详解之typeAliases别名
    深入浅出Mybatis系列(四)---配置详解之properties与environments
    fastjson 的使用总结
    Java 中 Gson的使用
    Lombok介绍、使用方法和总结
    Jackson的使用和定制
    深入浅出Mybatis系列(三)---配置简介(mybatis源码篇)
    深入浅出Mybatis系列(二)---Mybatis入门
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157247.html
Copyright © 2011-2022 走看看