Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Include ZSD_ALF_INCL
- *&---------------------------------------------------------------------*
- include zsd_alf_exc_incl.
- CLASS lcl_server_api DEFINITION DEFERRED.
- " wspólna struktura plików
- CLASS lcl_file_extension DEFINITION CREATE PROTECTED ABSTRACT.
- PUBLIC SECTION.
- METHODS:
- get_path ABSTRACT
- IMPORTING iv_data TYPE any
- RETURNING VALUE(rv_path) TYPE char50,
- send_to_server ABSTRACT
- IMPORTING iv_pdf_data TYPE any
- iv_key_data TYPE any
- RAISING lcx_no_att_exception lcx_send_failed_exception.
- CLASS-METHODS:
- get_instance
- IMPORTING iv_name TYPE data
- iv_web_handler TYPE i
- RETURNING VALUE(ro_instance) TYPE REF TO lcl_file_extension.
- PROTECTED SECTION.
- TYPES:
- BEGIN OF _lty_class_instances,
- name TYPE char40,
- instance TYPE REF TO lcl_file_extension,
- END OF _lty_class_instances,
- _ltyt_class_instances TYPE TABLE OF _lty_class_instances WITH KEY name.
- CLASS-DATA:
- cdt_instances TYPE _ltyt_class_instances.
- METHODS:
- constructor
- IMPORTING iv_web_handler TYPE i,
- get_server_api
- RETURNING VALUE(ro_server_api) TYPE REF TO lcl_server_api,
- get_web_handler
- RETURNING VALUE(rv_web_handler) TYPE i,
- set_web_handler
- IMPORTING iv_web_handler TYPE i.
- PRIVATE SECTION.
- DATA:
- cdo_server_api TYPE REF TO lcl_server_api,
- cdv_web_handler TYPE i.
- ENDCLASS.
- " wykonywanie operacji na danych plikach
- CLASS lcl_file_handler DEFINITION.
- PUBLIC SECTION.
- TYPES:
- _ltyt_alf_xml TYPE TABLE OF zsd_alf_xml WITH DEFAULT KEY.
- CONSTANTS:
- cdc_pdf TYPE char3 VALUE 'PDF',
- cdc_xml TYPE char3 VALUE 'XML'.
- METHODS:
- constructor
- IMPORTING iv_web_handler TYPE i.
- CLASS-METHODS:
- get_instance
- IMPORTING iv_file_type TYPE char3
- iv_web_handler TYPE i
- RETURNING VALUE(ro_instance) TYPE REF TO lcl_file_extension.
- PRIVATE SECTION.
- * DATA:
- * cdv_web_handler TYPE i.
- ENDCLASS.
- " metody do obsłgi metod na serwerze
- CLASS lcl_server_api DEFINITION.
- PUBLIC SECTION.
- METHODS:
- xstring_to_binary
- IMPORTING iv_pdf TYPE xstring
- RETURNING VALUE(ro_server_instance) TYPE REF TO lcl_server_api
- RAISING lcx_no_att_exception,
- string_to_xstring
- IMPORTING iv_pdf TYPE string
- RETURNING VALUE(rv_string) TYPE xstring,
- xml_transformation
- IMPORTING it_aflfresco_data TYPE any
- RETURNING VALUE(rv_data) TYPE string,
- send_to_server
- IMPORTING iv_webservice_handler TYPE i
- iv_server_path TYPE char50
- RAISING lcx_send_failed_exception.
- PRIVATE SECTION.
- CONSTANTS:
- cdc_encoding_utf_16 TYPE char18 VALUE 'encoding="utf-16"?',
- cdc_encoding_utf_8 TYPE char18 VALUE 'encoding="utf-8"?'.
- DATA:
- cdv_binary_length TYPE i,
- cdt_binary_att TYPE solix_tab.
- ENDCLASS.
- CLASS lcl_xml_extension DEFINITION INHERITING FROM lcl_file_extension CREATE PUBLIC.
- PUBLIC SECTION.
- METHODS:
- get_path REDEFINITION,
- send_to_server REDEFINITION.
- PRIVATE SECTION.
- CONSTANTS:
- cdc_server_path_for_vf TYPE char20 VALUE '/One/FakturySAP/VF',
- cdc_server_underline_separator TYPE char1 VALUE '_',
- cdc_server_file_extension_xml TYPE char4 VALUE '.xml'.
- ENDCLASS.
- CLASS lcl_pdf_extension DEFINITION INHERITING FROM lcl_file_extension CREATE PUBLIC.
- PUBLIC SECTION.
- METHODS:
- get_path REDEFINITION,
- send_to_server REDEFINITION.
- PRIVATE SECTION.
- CONSTANTS:
- cdc_server_path TYPE char20 VALUE '/One/FakturySAP/',
- cdc_server_file_extension_pdf TYPE char4 VALUE '.pdf'.
- ENDCLASS.
- CLASS lcl_server_api IMPLEMENTATION.
- METHOD xstring_to_binary.
- CLEAR:
- cdv_binary_length.
- REFRESH:
- cdt_binary_att.
- CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
- EXPORTING
- buffer = iv_pdf
- append_to_table = 'X' "Do not clear/refresh table
- IMPORTING
- output_length = cdv_binary_length
- TABLES
- binary_tab = cdt_binary_att.
- ro_server_instance = me.
- IF cdt_binary_att is INITIAL.
- raise EXCEPTION TYPE lcx_no_att_exception .
- ENDIF.
- ENDMETHOD.
- METHOD send_to_server.
- CHECK lines( cdt_binary_att ) > 0.
- CALL FUNCTION 'FTP_R3_TO_SERVER'
- EXPORTING
- handle = iv_webservice_handler
- fname = iv_server_path "file path of destination system
- character_mode = ''
- blob_length = cdv_binary_length
- TABLES
- blob = cdt_binary_att
- EXCEPTIONS
- tcpip_error = 1
- command_error = 2
- data_error = 3
- OTHERS = 4.
- IF sy-subrc <> 0.
- raise EXCEPTION type lcx_send_failed_exception.
- ENDIF.
- ENDMETHOD.
- METHOD xml_transformation.
- CALL TRANSFORMATION ('ID')
- SOURCE tab = gt_tab
- RESULT XML rv_data.
- REPLACE cdc_encoding_utf_16 IN rv_data WITH cdc_encoding_utf_8.
- ENDMETHOD.
- METHOD string_to_xstring.
- CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
- EXPORTING
- text = iv_pdf
- IMPORTING
- buffer = rv_string.
- ENDMETHOD.
- ENDCLASS.
- CLASS lcl_file_extension IMPLEMENTATION.
- METHOD constructor.
- cdo_server_api = NEW lcl_server_api( ).
- ENDMETHOD.
- METHOD get_server_api.
- ro_server_api = cdo_server_api.
- ENDMETHOD.
- METHOD get_web_handler.
- rv_web_handler = cdv_web_handler.
- ENDMETHOD.
- METHOD set_web_handler.
- cdv_web_handler = iv_web_handler.
- ENDMETHOD.
- METHOD get_instance.
- READ TABLE lcl_file_extension=>cdt_instances ASSIGNING FIELD-SYMBOL(<fs_instance>) WITH KEY name = iv_name.
- IF sy-subrc = 0.
- ro_instance = <fs_instance>-instance.
- ELSE.
- CREATE OBJECT ro_instance TYPE (iv_name) EXPORTING iv_web_handler = iv_web_handler.
- APPEND INITIAL LINE TO lcl_file_extension=>cdt_instances ASSIGNING <fs_instance>.
- <fs_instance>-name = iv_name.
- <fs_instance>-instance = ro_instance.
- ro_instance->set_web_handler( iv_web_handler ).
- ENDIF.
- ENDMETHOD.
- ENDCLASS.
- CLASS lcl_xml_extension IMPLEMENTATION.
- METHOD get_path.
- CONCATENATE cdc_server_path_for_vf cdc_server_underline_separator iv_data cdc_server_file_extension_xml INTO rv_path.
- ENDMETHOD.
- METHOD send_to_server.
- DATA(lo_server) = me->get_server_api( ).
- * DATA(lv_pdf) = lo_server->string_to_xstring( lo_server->xml_transformation( iv_pdf_data ) ).
- * lo_server->xstring_to_binary( lv_pdf )->send_to_server(
- lo_server->xstring_to_binary( lo_server->string_to_xstring( lo_server->xml_transformation( iv_pdf_data ) ) )->send_to_server(
- iv_webservice_handler = me->get_web_handler( )
- iv_server_path = me->get_path( iv_key_data )
- ).
- ENDMETHOD.
- ENDCLASS.
- CLASS lcl_pdf_extension IMPLEMENTATION.
- METHOD get_path.
- CONCATENATE cdc_server_path iv_data cdc_server_file_extension_pdf INTO rv_path.
- ENDMETHOD.
- METHOD send_to_server.
- me->get_server_api( )->xstring_to_binary( iv_pdf_data )->send_to_server(
- EXPORTING
- iv_webservice_handler = me->get_web_handler( )
- iv_server_path = me->get_path( iv_key_data )
- ).
- ENDMETHOD.
- ENDCLASS.
- CLASS lcl_file_handler IMPLEMENTATION.
- METHOD constructor.
- * cdv_web_handler = iv_web_handler.
- ENDMETHOD.
- METHOD get_instance.
- CASE iv_file_type.
- WHEN 'PDF'.
- DATA(lv_name) = 'LCL_PDF_EXTENSION'.
- WHEN 'XML'.
- lv_name = 'LCL_XML_EXTENSION'.
- WHEN OTHERS.
- ENDCASE.
- ro_instance = lcl_file_extension=>get_instance(
- iv_name = lv_name
- iv_web_handler = iv_web_handler
- ).
- ENDMETHOD.
- ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement