Sie sind auf Seite 1von 5

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

*& Report ZDEMO_PROG1


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZDEMO_PROG1.
INCLUDE zdemo_include_def.
INCLUDE ZDEMO_INCLUDE1.
********at selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM get_file.
START-OF-SELECTION.
PERFORM convertto_xstring.
PERFORM pdf_instantiate.
PERFORM extract_data.
*&---------------------------------------------------------------------*
*& Include
ZDEMO_INCLUDE_DEF
*&---------------------------------------------------------------------*
***********global data
DATA:
gt_filetable
TYPE filetable,
gv_rc
TYPE i,
gv_filelen
TYPE i,
gv_filename
TYPE string,
gv_result
TYPE char1,
gt_data
TYPE TABLE OF char255,
gv_buffer
TYPE xstring,
go_pdf
TYPE REF TO if_fp_pdf_object.
***********selection screen
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
PARAMETERS:
p_file TYPE string OBLIGATORY.
SELECTION-SCREEN END OF BLOCK a1.
*----------------------------------------------------------------------*
***INCLUDE ZDEMO_INCLUDE1 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form GET_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM GET_FILE .

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG


CHANGING
FILE_TABLE
= gt_filetable
RC
= gv_rc
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR
= 2
ERROR_NO_GUI
= 3
NOT_SUPPORTED_BY_GUI
= 4
others
= 5.
IF SY-SUBRC = 0.
READ TABLE gt_filetable INTO p_file INDEX 1.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE
= p_file
RECEIVING
RESULT
= gv_result
EXCEPTIONS
CNTL_ERROR
= 1
ERROR_NO_GUI
= 2
WRONG_PARAMETER
= 3
NOT_SUPPORTED_BY_GUI = 4
others
= 5.
IF gv_result = abap_true.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME
= p_file
FILETYPE
= 'BIN'
IMPORTING
FILELENGTH
= gv_filelen
TABLES
DATA_TAB
= gt_data
EXCEPTIONS
FILE_OPEN_ERROR
= 1
FILE_READ_ERROR
= 2
NO_BATCH
= 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE
= 5
NO_AUTHORITY
= 6
UNKNOWN_ERROR
= 7
BAD_DATA_FORMAT
= 8
HEADER_NOT_ALLOWED
= 9
SEPARATOR_NOT_ALLOWED
= 10
HEADER_TOO_LONG
= 11
UNKNOWN_DP_ERROR
= 12
ACCESS_DENIED
= 13
DP_OUT_OF_MEMORY
= 14
DISK_FULL
= 15
DP_TIMEOUT
= 16

OTHERS
= 17.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
" GET_FILE
*&---------------------------------------------------------------------*
*&
Form CONVERTTO_XSTRING
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM CONVERTTO_XSTRING .
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
INPUT_LENGTH = gv_filelen
IMPORTING
BUFFER
= gv_buffer
TABLES
BINARY_TAB
= gt_data
EXCEPTIONS
FAILED
= 1
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.
ENDIF.
ENDFORM.
" CONVERTTO_XSTRING
*&---------------------------------------------------------------------*
*&
Form PDF_INSTANTIATE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM PDF_INSTANTIATE .
DATA:
lo_fp TYPE REF TO if_fp.
CALL METHOD CL_FP=>GET_REFERENCE
RECEIVING
RVAL = lo_fp.
TRY.
CALL METHOD LO_FP->CREATE_PDF_OBJECT

EXPORTING
CONNECTION = 'ADS'
RECEIVING
PDF_OBJECT = go_pdf
.
CATCH CX_FP_RUNTIME_INTERNAL .
CATCH CX_FP_RUNTIME_SYSTEM .
CATCH CX_FP_RUNTIME_USAGE .
ENDTRY.

TRY.
CALL METHOD GO_PDF->SET_DOCUMENT
EXPORTING
PDFDATA = gv_buffer.
CATCH CX_FP_RUNTIME_USAGE .
ENDTRY.
TRY.
CALL METHOD GO_PDF->SET_EXTRACTDATA.
CATCH CX_FP_RUNTIME_USAGE .
ENDTRY.
TRY.
CALL METHOD GO_PDF->EXECUTE
.
CATCH CX_FP_RUNTIME_INTERNAL .
CATCH CX_FP_RUNTIME_SYSTEM .
CATCH CX_FP_RUNTIME_USAGE .
ENDTRY.
ENDFORM.
" PDF_INSTANTIATE
*&---------------------------------------------------------------------*
*&
Form EXTRACT_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM EXTRACT_DATA .
DATA:
lv_xstring TYPE xstring,
lt_return TYPE STANDARD TABLE OF bapiret2,
lt_xml TYPE STANDARD TABLE OF smum_xmltb,
ls_xml TYPE smum_xmltb.
TRY.
CALL METHOD GO_PDF->GET_DATA
IMPORTING
FORMDATA = lv_xstring
.

ENDTRY.
CALL FUNCTION 'SMUM_XML_PARSE'
EXPORTING
XML_INPUT
= lv_xstring
TABLES
XML_TABLE
= lt_xml
RETURN
= lt_return
.
ENDFORM.

" EXTRACT_DATA

Das könnte Ihnen auch gefallen