Home » ABAP » Print Multiple Adobe Forms Together
Posted in

Print Multiple Adobe Forms Together

How to print multiple Adobe Forms?

Printing multiple Adobe Forms at the same time is possible. You can print them together in a loop or in program flow.

To be able to print, you have to set parameter output_param-bumode = 'M'.

TRY.
      "get master fm
      CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
        EXPORTING
          i_name     = mv_master_form "Form name
        IMPORTING
          e_funcname = fm_master.

      IF mv_single_form IS NOT INITIAL.
        "get single fm
        CALL FUNCTION 'FP_FUNCTION_MODULE_NAME'
          EXPORTING
            i_name     = mv_single_form "Form name
          IMPORTING
            e_funcname = fm_single.
      ENDIF.
    CATCH cx_fp_api_repository.
      r_subrc = 1.
      RETURN.
    CATCH cx_fp_api_usage.
      r_subrc = 1.
      RETURN.
    CATCH cx_fp_api_internal.
      r_subrc = 1.
      RETURN.
  ENDTRY.

  "open form
  output_param-nodialog = 'X'.
  output_param-preview =  mv_preview.
  output_param-bumode = 'M'. "!! should be M to print multiple form
  output_param-reqnew = 'X'.
  
  "get user printer device
  SELECT SINGLE spld
    FROM usr01
    WHERE bname = @sy-uname
    INTO @output_param-dest.
  IF sy-subrc NE 0 OR output_param-dest IS INITIAL.
*      r_subrc = 3.
*      RETURN.
    output_param-dest = 'PDFC'. ##TEST
  ENDIF.

  CALL FUNCTION 'FP_JOB_OPEN'
    CHANGING
      ie_outputparams = output_param
    EXCEPTIONS
      cancel          = 1
      usage_error     = 2
      system_error    = 3
      internal_error  = 4
      OTHERS          = 5.
  IF sy-subrc <> 0.
    r_subrc = sy-subrc.
    RETURN.
  ENDIF.

  doc_params-langu = sy-langu.
  doc_params-country = 'DE'.
  doc_params-replangu1 = 'E'.
  doc_params-replangu2 = 'E'.

  "print master
  IF lt_output_master IS NOT INITIAL.
    CALL FUNCTION fm_master
      EXPORTING
        /1bcdwb/docparams = doc_params
        it_output         = lt_output_master
*          IMPORTING
*         /1bcdwb/formoutput =
      EXCEPTIONS
        usage_error       = 1
        system_error      = 2
        internal_error    = 3
        OTHERS            = 4.
    IF sy-subrc <> 0.
      r_subrc = 3.
      RETURN.
    ENDIF.
  ENDIF.

  "print single
  IF lt_output_single IS NOT INITIAL.
    CALL FUNCTION fm_single
      EXPORTING
        /1bcdwb/docparams = doc_params
        it_output         = lt_output_single
*          IMPORTING
*         /1bcdwb/formoutput =
      EXCEPTIONS
        usage_error       = 1
        system_error      = 2
        internal_error    = 3
        OTHERS            = 4.
    IF sy-subrc <> 0.
      r_subrc = 3.
      RETURN.
    ENDIF.
  ENDIF.
  "Finish
  CALL FUNCTION 'FP_JOB_CLOSE'
    IMPORTING
      e_result       = result
    EXCEPTIONS
      usage_error    = 1
      system_error   = 2
      internal_error = 3
      OTHERS         = 4.
  IF sy-subrc <> 0.
    r_subrc = 3.
    RETURN.
  ENDIF.

Leave a Reply

Your email address will not be published. Required fields are marked *