Skip to content

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 *