Автор Тема: Вывод документов на печать (Типа по делу первый буду)  (Прочитано 8825 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Иногда в своих программах нужно обеспечить вывод на печать документов. Если считаем что выбор выходного документа в системе настроен правильно, то для печати можно воспользоваться функцией WFMC_MESSAGE_SINGLE, стандартно система производит печать формуляров через этот модуль. В принципе можно написать свою обертку для этого модуля и уже ее вызвать программно. Например печать документа материала к проводке переноса. Вид документа WA, печатаем сводную накладную:

Код: You are not allowed to view links. Register or Login
FUNCTION y_print_mm_document.
*"----------------------------------------------------------------------
*"*"Печать документов
*"  IMPORTING
*"     REFERENCE(MATERIALDOCUMENT) LIKE  MSEG-MBLNR
*"     REFERENCE(MATDOCUMENTYEAR) LIKE  MSEG-MJAHR
*"     REFERENCE(P_PRINT_COPY) TYPE  I DEFAULT 1
*"----------------------------------------------------------------------
*&**********************************************************************
*& Comments    :Печать документов WA03
*& Platform    : SAP R/3 V4.0B or later
*& Autor       :
*& Date create : 28.01.2002
*& Date change : 07-06-2004
*&**********************************************************************
  DATA: i_count_rec TYPE i,
         pe_rcode LIKE sy-subrc,           "return code
         pi_nast LIKE nast,
         l_kschl LIKE nast-kschl,
         l_objky LIKE nast-objky.

  i_count_rec = 0.
  SELECT SINGLE blart INTO (pi_nast-kschl)
  FROM mkpf WHERE mblnr = materialdocument AND
                  mjahr = matdocumentyear.
    IF sy-subrc = 0.
      CONCATENATE materialdocument matdocumentyear '0001'
                  INTO l_objky.
      pi_nast-mandt = sy-mandt.
      pi_nast-kappl = 'ME'.
      pi_nast-objky = l_objky.
      pi_nast-kschl = 'WA03'.
      pi_nast-spras = sy-langu.
      pi_nast-manue = 'X'.
      pi_nast-nacha = 1.
      pi_nast-vsztp = 4.
      pi_nast-anzal = p_print_copy.          "Количество копий
      pi_nast-vstat = 1.
      pi_nast-ldest = 'LOCL'.
      pi_nast-nauto = 'X'.
      pi_nast-erdat = sy-datum.
      pi_nast-eruhr = sy-uzeit.
      pi_nast-dimme = 'X'.                   "Немедленный вывод
      pi_nast-delet = 'X'.                   "Удалить спул после вывода
      pi_nast-usnam = sy-uname.
      pi_nast-tdreceiver = sy-uname.
      pi_nast-objtype = 'MSEG'.
      CALL FUNCTION 'WFMC_MESSAGE_SINGLE'
           EXPORTING
                pi_nast  = pi_nast
           IMPORTING
                pe_rcode = pe_rcode.
ENDFUNCTION.

В принципе параметры вызова данного ФМ для различных видов документов можно посмотреть установив точку прерывания в модуле WFMC_MESSAGE_SINGLE и выполнив печать интересующего документа.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 762
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Короче, а вот и программа общего вида для печати выходных документов для документов материала... текстовые  критерии для программы находятся ytov_prnmm_text.PNG и ytov_prnmm_selopt.PNG, а общий вид программы при работе ytov_prnmm.PNG.
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& Report  YUUK_PRINT_MM
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT yuuk_print_mm.
TABLES: mkpf.

SELECT-OPTIONS: p_mblnr FOR mkpf-mblnr,
                p_mjahr FOR mkpf-mjahr.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK block001 WITH FRAME TITLE text-001.
PARAMETERS    : p_kschl LIKE nast-kschl,
                p_ldest LIKE nast-ldest DEFAULT 'LOCL',
                p_anzal LIKE nast-anzal DEFAULT 1,
                p_dimme AS CHECKBOX,        "Немедленный вывод
                p_delet AS CHECKBOX.        "Удалить спул после вывода
SELECTION-SCREEN END OF BLOCK block001.

************************************************************************
DATA: BEGIN OF lt_mkpf OCCURS 10,
  mblnr LIKE mkpf-mblnr,
  mjahr LIKE mkpf-mjahr.
DATA: END OF lt_mkpf.

************************************************************************
START-OF-SELECTION.
  PERFORM select_documents TABLES lt_mkpf.
  PERFORM print_document TABLES lt_mkpf.
*&---------------------------------------------------------------------*
*&      Form  SELECT_DOCUMENTS
*&---------------------------------------------------------------------*
*       Выбрать документы для печати
*----------------------------------------------------------------------*
*      <-- PT_MKPF - Список документов
*----------------------------------------------------------------------*
FORM select_documents TABLES pt_mkpf STRUCTURE lt_mkpf.

  CLEAR: pt_mkpf[].
  SELECT mblnr
         mjahr
  INTO CORRESPONDING FIELDS OF TABLE pt_mkpf
  FROM mkpf
  WHERE mblnr IN p_mblnr AND
        mjahr IN p_mjahr.
ENDFORM.                    " SELECT_DOCUMENTS
*&---------------------------------------------------------------------*
*&      Form  PRINT_DOCUMENT
*&---------------------------------------------------------------------*
*       Вывод выходных документов
*----------------------------------------------------------------------*
*      --> PT_MKPF - Список документов
*----------------------------------------------------------------------*
FORM print_document TABLES pt_mkpf STRUCTURE lt_mkpf.
  DATA: l_rcode LIKE sy-subrc,           "return code
        ps_nast LIKE nast.

  LOOP AT pt_mkpf.
    CONCATENATE pt_mkpf-mblnr pt_mkpf-mjahr '0001'
    INTO ps_nast-objky.
    ps_nast-mandt = sy-mandt.
    ps_nast-kappl = 'ME'.
    ps_nast-kschl = p_kschl.
    ps_nast-spras = sy-langu.
    ps_nast-manue = 'X'.
    ps_nast-nacha = 1.
    ps_nast-vsztp = 4.
    ps_nast-anzal = p_anzal.                   "Количество копий
    ps_nast-vstat = 1.
    ps_nast-ldest = p_ldest.
    ps_nast-nauto = 'X'.
    ps_nast-erdat = sy-datum.
    ps_nast-eruhr = sy-uzeit.
    ps_nast-dimme = p_dimme.                   "Немедленный вывод
    ps_nast-delet = p_delet.                   "Удалить спул после вывода
    ps_nast-usnam = sy-uname.
    ps_nast-tdreceiver = sy-uname.
    ps_nast-objtype = 'MSEG'.
    CALL FUNCTION 'WFMC_MESSAGE_SINGLE'
      EXPORTING
        pi_nast  = ps_nast
      IMPORTING
        pe_rcode = l_rcode.
  ENDLOOP.
ENDFORM.                    " PRINT_DOCUMENT