ABAP--program to download BITMAP file to PC

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

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

            

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/hdduugc/article/details/84023205