cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ABAP utility to print and view PO Adobe form developed by Form Data Provider (Gateway Model)

padchalingam
Explorer
444
REPORT zmm_po_adobe_form.
DATA lo_hlp          TYPE REF TO if_apoc_or_h_factory_internal.
DATA lo_fp_srv       TYPE REF TO if_apoc_somu_form_services.
DATA lo_merge        TYPE REF TO if_apoc_document_merge.
DATA lo_util         TYPE REF TO if_apoc_utility.

DATA lt_master       TYPE if_apoc_common_api=>ty_gt_fdp_parameter.
DATA lt_appl         TYPE if_apoc_common_api=>ty_gt_fdp_parameter.
DATA lt_data         TYPE if_apoc_logger=>tty_ty_data.
DATA lt_msg          TYPE cl_somu_form_services=>ty_gt_message.
DATA lt_msg_all      TYPE cl_somu_form_services=>ty_gt_message.

DATA ls_merge_doc    TYPE if_apoc_document_merge=>document_object.
DATA ls_symsg        TYPE symsg.

DATA lv_mform_cnt_id TYPE apoc_form_master_content_id.
DATA lv_xml_in       TYPE xstring.
DATA lv_xml_out      TYPE xstring.
DATA lv_xml_out_all  TYPE xstring.
DATA lv_appl_multi   TYPE boole_d.
DATA lv_appl_key_chg TYPE boole_d.
DATA lv_stop         TYPE boole_d.
DATA lv_msg          TYPE string.
DATA lv_pdf          TYPE boole_d.
DATA lv_pdl_type     TYPE apoc_pdl_type.
DATA lv_pq_name      TYPE pq_qname.
DATA lv_idx          TYPE sytabix.
*DATA ir_or_item                 TYPE REF TO apoc_s_or_item.
FIELD-SYMBOLS <ls_msg> TYPE cl_somu_form_services=>ty_gs_message.
TYPES:
  BEGIN OF ty_gs_fdp_key,
    name  TYPE string,
    value TYPE string,
  END OF ty_gs_fdp_key .
TYPES:
  ty_gt_fdp_key TYPE STANDARD TABLE OF ty_gs_fdp_key WITH EMPTY KEY .
DATA: ls_master_keys    TYPE ty_gt_fdp_key, wa_ls_master_keys TYPE ty_gs_fdp_key.
DATA: ls_appl_keys    TYPE ty_gt_fdp_key, wa_ls_appl_keys TYPE ty_gs_fdp_key.
DATA _fcode        TYPE t185f-fcode.
DATA(lo_fact_int)  = cl_apoc_or_h_factory_internal=>get_helper_factory( ).
DATA(lo_form_util) = lo_fact_int->get_forms_utility( ).
DATA(lo_or_h_util) = lo_fact_int->get_apoc_or_h_utility_instance( ).
DATA(lo_chk_proxy) = lo_fact_int->get_or_check_proxy( cl_apoc_or_check_proxy=>gc_channel_check_item_minimum ).
DATA(lo_log)       = lo_fact_int->get_apoc_logger( iv_name = if_apoc_logger=>gc_apoc_main_logger_name ).
DATA(lo_log_audit) = lo_fact_int->get_apoc_logger( iv_name = 'AUDITOR_TRACE' ).
DATA(lo_auth_srv)  = lo_fact_int->get_authorization_service( ).
DATA(lo_ch_srv)    = lo_fact_int->get_or_item_channel_serv( ).
DATA(lo_at_srv)    = lo_fact_int->get_apoc_attachment_service( ).
DATA(lo_doc_fact)  = lo_fact_int->get_document_factory( ).
DATA(lo_cfg)       = cl_apoc_services_factory=>get_config_instance( ).
DATA eo_message  TYPE REF TO /bobf/if_frw_message.
eo_message         = lo_fact_int->get_bobf_message( ).

DATA: go_pdf_html_control TYPE REF TO cl_gui_html_viewer,
      go_html_container   TYPE REF TO cl_gui_custom_container.
PARAMETERS po_nr TYPE ebeln.
PARAMETERS pdf_form TYPE  fpwbformname DEFAULT 'MM_PUR_PURCHASE_ORDER'.
PARAMETERS pdf_mfor TYPE apoc_form_master_template_id DEFAULT 'APOC_DEMO_FORM_MASTER_CA'.

wa_ls_master_keys-name = 'PrintFormDerivationRule'.
wa_ls_master_keys-value = 'DCP_PURCHASE_ORDER_01'.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'WatermarkText'.
wa_ls_master_keys-value = 'Test Copy'.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'LocaleCountry'.
wa_ls_master_keys-value = 'CA'.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'LocaleLanguage'.
wa_ls_master_keys-value = 'E'.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'OutputControlApplicationObjectType'.
wa_ls_master_keys-value = 'PURCHASE_ORDER'.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'OutputControlApplicationObject'.
*wa_ls_master_keys-value = '4500000369'.
wa_ls_master_keys-value = po_nr.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'OutputRequestItem'.
*wa_ls_master_keys-value = '000002'.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'OutputDocumentType'.
wa_ls_master_keys-value = 'PURCHASE_ORDER'.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'Recipient'.
wa_ls_master_keys-value = ''.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'RecipientRole'.
wa_ls_master_keys-value = ''.
APPEND wa_ls_master_keys TO ls_master_keys.
wa_ls_master_keys-name = 'SenderCountry'.
wa_ls_master_keys-value = 'CA'.
APPEND wa_ls_master_keys TO ls_master_keys.

wa_ls_appl_keys-name = 'PurchaseOrder'.
*wa_ls_appl_keys-value = '4500000369'.
wa_ls_appl_keys-value =  po_nr.
APPEND wa_ls_appl_keys TO ls_appl_keys.
wa_ls_appl_keys-name = 'SenderCountry'.
wa_ls_appl_keys-value = 'CA'.
APPEND wa_ls_appl_keys TO ls_appl_keys.
wa_ls_appl_keys-name = 'PurchaseOrderChangeFlag'.
wa_ls_appl_keys-value = ''.
APPEND wa_ls_appl_keys TO ls_appl_keys.
wa_ls_appl_keys-name = 'ReceiverPartnerNumber'.
wa_ls_appl_keys-value = ''.
APPEND wa_ls_appl_keys TO ls_appl_keys.
wa_ls_appl_keys-name = 'Language'.
wa_ls_appl_keys-value = 'E'.
APPEND wa_ls_appl_keys TO ls_appl_keys.


DATA render_options TYPE cl_somu_form_services=>ty_gs_render_options.
render_options-create_pdf = 'X'.
" Render Document
TRY.
    lo_hlp = cl_apoc_or_h_factory_internal=>get_helper_factory( ).
    " Get form provide services
    lo_fp_srv = lo_hlp->get_somu_form_services( ).

    lo_fp_srv->get_document(
      EXPORTING
*        iv_master_form_name     = 'ZZ1_DCP_MM_PUR_ORDER_MASTER'
        iv_master_form_name            = pdf_mfor
*        iv_form_name            = 'ZZ1_DCP_MM_PUR_PURCHASE_ORDER'
        iv_form_name            = pdf_form
        it_key                  = ls_appl_keys
*        it_filter_select_option = ls_appl-filter_options
        it_master_key           = ls_master_keys
        iv_form_language        = 'E'
        iv_form_country         = 'CA'
        is_render_options       = render_options
        iv_print_queue_name     = lv_pq_name
        iv_xml                  = lv_xml_in
        iv_disable_cache        = 'X'
      IMPORTING
        ev_content              = ls_merge_doc-document_data
        ev_pages                = ls_merge_doc-pages_count
        ev_stop_processing      = lv_stop
        et_message              = lt_msg
        ev_xml                  = lv_xml_out
        ev_pdl_type             = lv_pdl_type ).
    INSERT LINES OF lt_msg INTO TABLE lt_msg_all.

    IF ls_merge_doc-document_data IS NOT INITIAL.
      CALL SCREEN 0300 STARTING AT 1 1.
    ENDIF.

ENDTRY.
*&---------------------------------------------------------------------*
*& Module PBO_SET_STATUS_0300 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE pbo_set_status_0300 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
  SET PF-STATUS 'STATUS_0300' EXCLUDING 'DOWN'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module PBO_HTML_CONTROL OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE pbo_html_control OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
  PERFORM html_control_pbo.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form html_control_pbo
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM html_control_pbo .
* Container
  IF go_html_container IS INITIAL.
    CREATE OBJECT go_html_container
      EXPORTING
        container_name = 'HTML'
      EXCEPTIONS
        OTHERS         = 1.
    IF sy-subrc IS NOT INITIAL.
      " MESSAGE 'CONTROL ERROR' TYPE 'E'.
    ENDIF.
  ENDIF.

* HTML control
  IF go_pdf_html_control IS INITIAL.
    CREATE OBJECT go_pdf_html_control
      EXPORTING
        parent = go_html_container
      EXCEPTIONS
        OTHERS = 1.
    IF sy-subrc IS NOT INITIAL.
      " MESSAGE 'CONTROL ERROR' TYPE 'E'.
    ENDIF.

*    IF gs_or_item-print_queue_name NE if_apoc_or_c=>gc_download_form_data_xml.
    PERFORM html_control_display_pdf.
*    ELSE.
*      PERFORM html_control_display_xml.
*    ENDIF.

  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form html_control_display_pdf
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM html_control_display_pdf .
  DATA: lv_url      TYPE char80,
        lv_pdf_data TYPE tsfixml,
        lv_pdf_size TYPE i.

* Convert output data to binary format
  CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
    EXPORTING
      buffer     = ls_merge_doc-document_data
    TABLES
      binary_tab = lv_pdf_data.
  lv_pdf_size = xstrlen( ls_merge_doc-document_data ).

* Load output data
  CALL METHOD go_pdf_html_control->load_data
    EXPORTING
      url          = 'preview.pdf'  "#EC NOTEXT
      size         = lv_pdf_size
      type         = 'application'  "#EC NOTEXT
      subtype      = 'pdf'
    IMPORTING
      assigned_url = lv_url
    CHANGING
      data_table   = lv_pdf_data
    EXCEPTIONS
      OTHERS       = 1.
  IF sy-subrc IS NOT INITIAL.
    MESSAGE ID     'APOC_OR_UI_MESSAGES'
            TYPE   'E'
            NUMBER '052'.
  ENDIF.

* Show output data
  CALL METHOD go_pdf_html_control->show_data
    EXPORTING
      url    = lv_url
    EXCEPTIONS
      OTHERS = 1.
  IF sy-subrc IS NOT INITIAL.
    MESSAGE ID     'APOC_OR_UI_MESSAGES'
            TYPE   'E'
            NUMBER '053'.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Module  PAI_HTML_CONTROL  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE pai_html_control INPUT.
  PERFORM html_control_pai.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Form html_control_pai
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM html_control_pai .
  CASE _fcode.
    WHEN 'GOON' OR 'CANC'.
      IF NOT go_pdf_html_control IS INITIAL.
        go_pdf_html_control->free( ).
        FREE go_pdf_html_control.
      ENDIF.
      IF NOT go_html_container IS INITIAL.
        go_html_container->free( ).
        FREE go_html_container.
      ENDIF.
      LEAVE TO SCREEN 0.
    WHEN 'DOWN'.
*      PERFORM download_xml.
    WHEN OTHERS.
      cl_gui_cfw=>dispatch( ).
  ENDCASE.

  CLEAR _fcode.
ENDFORM.

Accepted Solutions (0)

Answers (0)