Advertisement
Guest User

Untitled

a guest
Jul 26th, 2019
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 48.12 KB | None | 0 0
  1. CLASS zcl_fi_0287_nioktr11 DEFINITION
  2.   PUBLIC
  3.   INHERITING FROM zcl_fi_0197_abstract
  4.   FINAL
  5.   CREATE PUBLIC .
  6.  
  7.   PUBLIC SECTION.
  8.  
  9.     TYPES:
  10. *-- Sort fields for control structures
  11.       BEGIN OF t_sort.
  12.     TYPES srtf1 TYPE text1024.
  13.     TYPES srtf2 TYPE text1024.
  14.     TYPES srtf3 TYPE text1024.
  15.     TYPES srtf_bukrs TYPE bukrs.
  16.     TYPES srtf_anln1 TYPE anln1.
  17.     TYPES srtf_anln2 TYPE anln2.
  18.             INCLUDE TYPE zsfi_0287_alv.
  19.  
  20.     TYPES END OF t_sort .
  21.     TYPES:
  22.       tt_sort TYPE STANDARD TABLE OF t_sort .
  23.  
  24.     METHODS pdf_print_loc
  25.       IMPORTING
  26.         !io_if        TYPE REF TO zreuseif_pdf_print
  27.         !iv_doc_split TYPE xfeld OPTIONAL .
  28.  
  29.     METHODS change_salv_specific
  30.          REDEFINITION .
  31.     METHODS on_user_command
  32.          REDEFINITION .
  33.     METHODS print_salv
  34.          REDEFINITION .
  35.     METHODS salv_command_zpdf
  36.          REDEFINITION .
  37.     METHODS select_data_specific
  38.          REDEFINITION .
  39.     METHODS show_result
  40.          REDEFINITION .
  41.   PROTECTED SECTION.
  42.  
  43.     TYPES:
  44.       BEGIN OF gty_os_cards,
  45.         bukrs TYPE anla-bukrs,
  46.         anln1 TYPE anla-anln1,
  47.         anln2 TYPE anla-anln2,
  48.       END OF gty_os_cards .
  49.     TYPES:
  50.       BEGIN OF gty_zpin,
  51.         bukrs TYPE bukrs,
  52.         anln1 TYPE anln1,
  53.         anln2 TYPE anln2,
  54.         zzpin TYPE zepin,
  55.       END OF gty_zpin.
  56.     TYPES:
  57.       BEGIN OF gty_txk50,
  58.         bukrs TYPE bukrs,
  59.         anln1 TYPE anln1,
  60.         anln2 TYPE anln2,
  61.         tkx50 TYPE txt50_ankt,
  62.       END OF gty_txk50.
  63.     TYPES:
  64.       BEGIN OF gty_draw,
  65.         bukrs        TYPE bukrs,
  66.         anln1        TYPE anln1,
  67.         anln2        TYPE anln2,
  68.         zz_num_reg   TYPE zedms_numreg,
  69.         zz_datum_reg TYPE zedms_datreg,
  70.       END OF gty_draw .
  71.     TYPES:
  72.       BEGIN OF gty_ename,
  73.         ename TYPE emnam,
  74.         pernr TYPE pernr_d,
  75.       END OF gty_ename.
  76.    TYPES:
  77.      BEGIN OF gty_stltx,
  78.           stltx TYPE stltx,
  79.           pernr TYPE pernr_d,
  80.      END OF gty_stltx.
  81.    TYPES:
  82.       BEGIN OF gty_ktnafg,
  83.         ktnafg TYPE ktnafg,
  84.         afabe TYPE afabe_d,
  85.         bukrs TYPE bukrs,
  86.         anln1 TYPE anln1,
  87.         anln2 TYPE anln2,
  88.       END OF gty_ktnafg.
  89.       TYPES:
  90.         BEGIN OF gty_name_org,
  91.           bukrs     TYPE bukrs,
  92.           anln1     TYPE anln1,
  93.           anln2     TYPE anln2,
  94.           name_org1 TYPE BU_NAMEOR1,
  95.           name_org2 TYPE BU_NAMEOR2,
  96.           name_org3 TYPE BU_NAMEOR3,
  97.           name_org4 TYPE BU_NAMEOR4,
  98.         END OF gty_name_org.
  99.       TYPES:
  100.         BEGIN OF gty_cskt_ktext,
  101.           ktext TYPE ktext,
  102.           kostl TYPE kostl,
  103.         END OF gty_cskt_ktext.
  104.       TYPES:
  105.         BEGIN OF gty_cepct_ltext,
  106.             ltext TYPE LTEXT,
  107.             prctr TYPE prctr,
  108.         END OF gty_cepct_ltext.
  109.     DATA: mt_cepct_ltext TYPE TABLE OF gty_cepct_ltext WITH NON-UNIQUE KEY prctr.
  110.     DATA: mt_cskt_ktext TYPE TABLE OF gty_cskt_ktext WITH NON-UNIQUE KEY kostl.
  111.     DATA: mt_name_org TYPE TABLE OF gty_name_org WITH NON-UNIQUE KEY bukrs anln1 anln2.
  112.     DATA: mt_ktnafg TYPE TABLE OF gty_ktnafg WITH NON-UNIQUE KEY bukrs anln1 anln2 afabe.
  113.     DATA: mt_stltx TYPE TABLE OF gty_stltx WITH NON-UNIQUE KEY pernr.
  114.     DATA: mt_ename TYPE TABLE OF gty_ename WITH NON-UNIQUE KEY pernr.
  115.  
  116.     DATA: mt_zpin TYPE TABLE OF gty_zpin WITH NON-UNIQUE KEY bukrs anln1 anln2.
  117.     DATA: mt_txk50 TYPE TABLE OF gty_txk50 WITH NON-UNIQUE KEY bukrs anln1 anln2.
  118.     DATA:
  119.       mt_prctr TYPE RANGE OF anlz-prctr .         "МВП
  120.     DATA:
  121.       mt_alv_data TYPE TABLE OF zsfi_0287_alv .
  122.     DATA:
  123.       mt_forms_list_anlkl TYPE TABLE OF anla .
  124.     DATA mv_afabe TYPE anlb-afabe .
  125.     DATA:
  126.       mt_os_cards  TYPE TABLE OF gty_os_cards .
  127.     DATA mt_aufk TYPE zifi_0287_aufk_tt.
  128.     DATA:
  129.       mr_001 TYPE RANGE OF t001-bukrs .
  130.     DATA mv_002 TYPE afabe_d .
  131.     DATA mv_co_mvz TYPE ktext .
  132.     DATA mv_co_mvp TYPE ltext .
  133.     DATA mv_001_bukrs TYPE bukrs .                       " БЕ
  134.     DATA mv_002_name_be TYPE text80 .                    " Имя БЕ
  135.     DATA mv_002_temp TYPE adrc .
  136.     DATA mv_05a_name_os_a TYPE txa50_anlt .              " Название ОС
  137.     DATA mv_05b_name_os_b TYPE txa50_more .              " Название ОС (продолжение)
  138.     DATA mv_05c_name_os_c TYPE anlkl .                   "
  139.     DATA mv_006_os_class TYPE anlkl .                    " Класс ОС
  140.     DATA mv_007_class_name TYPE txa50_anlt .             " Наименование класса
  141.     DATA mv_008_inv_number TYPE invnr_anla .             " Инвентарный номер
  142.     DATA mv_009_mvz TYPE kostl .                         " МВЗ
  143.     DATA mv_010_mvz_name TYPE ktext .                    " Наименование МВЗ
  144.     DATA mv_011_factory TYPE werks_d .                   " Завод
  145.     DATA mv_012_factory_name TYPE name1 .                " Наименование завода
  146.     DATA mv_013_place TYPE stort .                       " Местоположение
  147.     DATA mv_014_place_name TYPE ktext .                  " Наименование местоположения
  148.     DATA mv_015_billing_number TYPE persno .             " Табельный номер
  149.     DATA mv_016_fio_emp1 TYPE ename .                    " ФИО
  150.     DATA mv_017_position_emp1 TYPE stltx .               " Должность сотрудника
  151.     DATA mv_018_mvp TYPE prctr .                         " МВП
  152.     DATA mv_019_mvp_name TYPE ltext .                    " Наименование МВП
  153.     DATA mv_020_inner_order TYPE aufnr .                 " Внутренний заказ
  154.     DATA mv_021_inner_order_name TYPE text40 .           " Наименование внутреннего заказа
  155.     DATA mv_022_org_executive TYPE text80 .              " Организация исполнитель
  156.     DATA ms_022_temp TYPE but000 .
  157.     DATA mv_023_pin TYPE zepin .                         " Пин объекта
  158.     DATA mv_024_end_date TYPE bzdat .                    " Дата завершения
  159.     DATA mv_030_registration_date TYPE aktivd . " дата постановки на учёт (25)
  160.     DATA mv_029_accouting_cost TYPE ktnafg .  " счёт затрат (26)
  161.     DATA mt_026_input TYPE zifiaa_amort_in .             "первонач стоимость (27)
  162.     DATA mv_026_amort_perv_st TYPE j_3r_orig_costs .
  163.     DATA mo_026_amort TYPE REF TO zcl_fiaa_amort_common .
  164.     DATA ms_026_amort_in TYPE zsfiaa_amort_in .        "zifiaa_amort_in WITH HEADER LINE,
  165.     DATA ms_026_amort_out TYPE zifiaa_amort_out .
  166.   PRIVATE SECTION.
  167.  
  168.     DATA:
  169.       mt_afabe TYPE RANGE OF anlb-afabe .
  170.  
  171.     METHODS pdf_prepare
  172.       RETURNING
  173.         VALUE(ro_object) TYPE REF TO zreuseif_pdf_print .
  174.     METHODS fill_alv .
  175. ENDCLASS.
  176.  
  177.  
  178.  
  179. CLASS ZCL_FI_0287_NIOKTR11 IMPLEMENTATION.
  180.  
  181.  
  182. * <SIGNATURE>---------------------------------------------------------------------------------------+
  183. * | Instance Public Method ZCL_FI_0287_NIOKTR11->CHANGE_SALV_SPECIFIC
  184. * +-------------------------------------------------------------------------------------------------+
  185. * +--------------------------------------------------------------------------------------</SIGNATURE>
  186.   METHOD change_salv_specific.
  187.  
  188.     DATA: lo_column     TYPE REF TO   cl_salv_column.
  189.     DATA: lt_columns    TYPE TABLE OF lvc_fname.
  190.     DATA: lo_layout     TYPE REF TO   cl_salv_layout.
  191.     DATA: lo_layout_key TYPE          salv_s_layout_key.
  192.     DATA: lo_functs     TYPE REF TO   cl_salv_functions.
  193.  
  194.     mo_salv->set_screen_status(
  195.       pfstatus      = 'SALV_STANDARD'
  196.       report        = 'ZFI_0287_NIOKTR11'
  197.       set_functions = mo_salv->c_functions_all ).
  198.  
  199.  
  200.     CLEAR: lo_layout, lo_layout_key.
  201.     MOVE ms_params-repid TO lo_layout_key-report.                       "Set Report ID as Layout Key"
  202.     lo_layout = mo_salv->get_layout( ).                                 "Get Layout of Table"
  203.     lo_layout->set_key( lo_layout_key ).                                "Set Report Id to Layout"
  204.     lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ). "No Restriction to Save Layout"
  205.     IF ms_params-format IS INITIAL.
  206.       lo_layout->set_default( abap_true ).               "Set Default Variant"
  207.     ELSE.
  208.       lo_layout->set_initial_layout( ms_params-format ).                 "Set the Selected Variant as Initial"
  209.     ENDIF.
  210.  
  211.     DATA(lo_selections) = mo_salv->get_selections( ).                    "Set selection mode
  212.     lo_selections->set_selection_mode( if_salv_c_selection_mode=>row_column ).
  213.  
  214.  
  215.     lo_functs = mo_salv->get_functions( ).
  216.     lo_functs->set_all( abap_true ).
  217.  
  218.     "  ** Убираем кнопки, логика которых которые ещё не реализована
  219.     TRY.
  220.         lo_functs->set_function( name = 'ZEXPORT' boolean = abap_false ).
  221.         lo_functs->set_function( name = 'ZIMPORT' boolean = abap_false ).
  222.         lo_functs->set_function( name = 'ZSAVE' boolean = abap_false ).
  223.       CATCH cx_salv_not_found.
  224.       CATCH cx_salv_wrong_call.
  225.     ENDTRY.
  226.  
  227.     mo_salv_columns = mo_salv->get_columns( ).
  228.     mo_salv_columns->set_optimize( 'X' ).
  229.  
  230.     DATA: lo_events TYPE REF TO cl_salv_events_table.
  231.     lo_events = mo_salv->get_event( ).
  232.     SET HANDLER me->on_user_command FOR lo_events.
  233.     SET HANDLER me->on_double_click FOR lo_events.
  234.   ENDMETHOD.
  235.  
  236.  
  237. * <SIGNATURE>---------------------------------------------------------------------------------------+
  238. * | Instance Private Method ZCL_FI_0287_NIOKTR11->FILL_ALV
  239. * +-------------------------------------------------------------------------------------------------+
  240. * +--------------------------------------------------------------------------------------</SIGNATURE>
  241.   METHOD fill_alv. " Заполнение таблицы для вывода в ALV
  242.  
  243.     DATA: ls_anla        LIKE LINE OF mt_anla,
  244.           ls_anlz        LIKE LINE OF mt_anlz,
  245.           ls_t001w       LIKE LINE OF mt_t001w,
  246.           ls_t499s       LIKE LINE OF mt_t499s,
  247.           ls_aufk        LIKE LINE OF mt_aufk,
  248.           ls_zpin        LIKE LINE OF mt_zpin,
  249.           ls_txk50       LIKE LINE OF mt_txk50,
  250.           ls_ename       LIKE LINE OF mt_ename,
  251.           ls_stltx       LIKE LINE OF mt_stltx,
  252.           ls_ktnafg      LIKE LINE OF mt_ktnafg,
  253.           ls_name_org    LIKE LINE OF mt_name_org,
  254.           ls_cskt_ktext  LIKE LINE OF mt_cskt_ktext,
  255.           ls_cepct_ltext LIKE LINE OF mt_cepct_ltext.
  256.  
  257.     CALL METHOD zcl_params=>get_range
  258.       EXPORTING
  259.         i_prgid      = 'Z_FORMS_VNA'
  260.         i_varid      = '001'
  261.         i_table      = 'T001'
  262.         i_field      = 'BUKRS'
  263.       IMPORTING
  264.         e_range      = mr_001
  265.       EXCEPTIONS
  266.         no_data      = 1
  267.         is_parameter = 2
  268.         OTHERS       = 3.
  269.     IF sy-subrc <> 0.
  270.       MESSAGE s002(zca_zssp) WITH 'Z_FORMS_VNA' '001' 'T001'.
  271.     ENDIF.
  272.  
  273.     CALL METHOD zcl_params=>get_parameter
  274.       EXPORTING
  275.         i_prgid  = 'Z_FORMS_VNA'
  276.         i_varid  = '002'
  277.         i_table  = 'ANLB'
  278.         i_field  = 'AFABE'
  279.       IMPORTING
  280.         e_value  = mv_002
  281.       EXCEPTIONS
  282.         no_data  = 1
  283.         is_range = 2
  284.         OTHERS   = 3.
  285.     IF sy-subrc <> 0.
  286.       MESSAGE s001(zca_zssp) WITH 'Z_FORMS_VNA' '002'.
  287.     ENDIF.
  288.  
  289.     CLEAR mt_anla.
  290.     SELECT bukrs, anln1, anln2, txt50, txa50, anlkl, invnr, posnr, aktiv, ktogr
  291.       FROM anla
  292.       INTO CORRESPONDING FIELDS OF TABLE @mt_anla
  293.       FOR ALL ENTRIES IN @mt_os_cards
  294.       WHERE
  295.         anla~bukrs = @mt_os_cards-bukrs AND
  296.         anla~anln1 = @mt_os_cards-anln1 AND
  297.         anla~anln2 = @mt_os_cards-anln2.
  298.  
  299.     CLEAR mt_anlz.
  300.     SELECT bukrs, anln1, anln2, bdatu, kostl, werks, stort, pernr, prctr, caufn
  301.       FROM anlz
  302.       INTO CORRESPONDING FIELDS OF TABLE @mt_anlz
  303.       FOR ALL ENTRIES IN @mt_os_cards
  304.       WHERE
  305.         anlz~bukrs = @mt_os_cards-bukrs AND
  306.         anlz~anln1 = @mt_os_cards-anln1 AND
  307.         anlz~anln2 = @mt_os_cards-anln2 AND
  308.         anlz~bdatu GT @ms_params-date AND
  309.         anlz~adatu LE @ms_params-date.
  310.  
  311.     CLEAR mt_t001w.
  312.     SELECT werks, name1
  313.       FROM t001w
  314.       INTO CORRESPONDING FIELDS OF TABLE @mt_t001w.
  315.  
  316.     CLEAR mt_t499s.
  317.     SELECT werks, stand, ktext
  318.       FROM t499s
  319.       INTO CORRESPONDING FIELDS OF TABLE @mt_t499s.
  320.  
  321.     CLEAR mt_aufk.
  322.     SELECT aufnr, ktext                                 "#EC CI_NOWHERE
  323.       FROM aufk
  324.       INTO CORRESPONDING FIELDS OF TABLE @mt_aufk.
  325.  
  326.     CLEAR mt_zpin.
  327.     SELECT anla~bukrs, anla~anln1, anla~anln2, prps~zzpin
  328.     FROM prps
  329.     JOIN anla ON prps~pspnr = anla~posnr
  330.     INTO TABLE @mt_zpin
  331.     FOR ALL ENTRIES IN @mt_os_cards
  332.     WHERE anla~bukrs = @mt_os_cards-bukrs  AND
  333.           anla~anln1 = @mt_os_cards-anln1 AND
  334.           anla~anln2 = @mt_os_cards-anln2.
  335.  
  336.     CLEAR mt_txk50.
  337.     SELECT anla~bukrs, anla~anln1, anla~anln2, ankt~txk50 " anka~txk50 "#EC CI_BUFFJOIN
  338.     FROM anla
  339.     JOIN anka ON anka~anlkl = anla~anlkl
  340.     JOIN ankt ON anka~anlkl = ankt~anlkl
  341.     INTO TABLE @mt_txk50
  342.     FOR ALL ENTRIES IN @mt_os_cards
  343.     WHERE
  344.           anla~bukrs = @mt_os_cards-bukrs
  345.     AND   anla~anln1 = @mt_os_cards-anln1
  346.     AND   anla~anln2 = @mt_os_cards-anln2.
  347.  
  348.     CLEAR mt_ename.
  349.     SELECT pa0001~ename, anlz~pernr
  350.       FROM pa0001
  351.       JOIN anlz ON pa0001~pernr = anlz~pernr
  352.       WHERE
  353.             pa0001~begda LE @ms_params-date AND
  354.             pa0001~endda GT @ms_params-date
  355.       INTO TABLE @mt_ename.
  356.  
  357.     CLEAR mt_stltx.
  358.     SELECT t513s~stltx, pa0001~pernr
  359.       FROM t513s
  360.       JOIN pa0001 ON t513s~stell = pa0001~stell
  361.       WHERE
  362.             t513s~sprsl   EQ 'R' AND
  363.             t513s~begda   LE @ms_params-date AND
  364.             t513s~endda   GT @ms_params-date AND
  365.             pa0001~begda  LE @ms_params-date AND
  366.             pa0001~endda  GT @ms_params-date
  367.       INTO TABLE @mt_stltx.
  368.  
  369.     CLEAR mt_ktnafg.
  370.     SELECT t095b~ktnafg, t095b~afabe, anla~bukrs, anla~anln1, anla~anln2
  371.       FROM t095b
  372.       JOIN t001 ON t095b~ktopl = t001~ktopl
  373.       JOIN anla ON t095b~ktogr = anla~ktogr "#EC CI_BUFFJOIN
  374.       WHERE
  375.             anla~bukrs  EQ @ms_params-bukrs AND
  376.             t095b~afabe EQ @mv_002
  377.       INTO TABLE @mt_ktnafg.
  378.  
  379.     SELECT anlu~bukrs, anlu~anln1, anlu~anln2,
  380.              but000~name_org1,
  381.              but000~name_org2,
  382.              but000~name_org3,
  383.              but000~name_org4
  384.       FROM but000
  385.       JOIN draw ON but000~partner = draw~zz_bu_partner
  386.       JOIN anlu ON draw~doknr     = anlu~zz_dogovor
  387.       INTO TABLE @mt_name_org
  388.       FOR ALL ENTRIES IN @mt_os_cards
  389.       WHERE
  390.             anlu~bukrs EQ @mt_os_cards-bukrs
  391.       AND   anlu~anln1 EQ @mt_os_cards-anln1
  392.       AND   anlu~anln2 EQ @mt_os_cards-anln2.
  393.  
  394.     SELECT cskt~ktext, cskt~kostl
  395.     FROM cskt
  396.     JOIN tka02 ON cskt~kokrs = tka02~kokrs "#EC CI_BUFFJOIN
  397.     WHERE
  398.           cskt~spras  EQ 'R'
  399.     AND   cskt~datbi  GE @ms_params-date
  400.     INTO TABLE @mt_cskt_ktext.
  401.  
  402.     SELECT cepct~ltext, cepct~prctr
  403.     FROM cepct
  404.     JOIN tka02 ON cepct~kokrs = tka02~kokrs "#EC CI_BUFFJOIN
  405.     WHERE
  406.           cepct~spras EQ 'R'
  407.     AND   cepct~datbi GE  @ms_params-date
  408.     AND   tka02~bukrs EQ   @ms_params-bukrs
  409.     INTO TABLE @mt_cepct_ltext.
  410.  
  411.     IF ms_params-bukrs NOT IN mr_001.
  412.       READ TABLE mt_cskt_ktext INTO ls_cskt_ktext WITH TABLE KEY kostl = ms_params-nioktr11-co.
  413.       mv_co_mvz = ls_cskt_ktext-ktext.
  414.     ELSE.
  415.       READ TABLE mt_cepct_ltext INTO ls_cepct_ltext WITH TABLE KEY prctr = ms_params-nioktr11-co.
  416.       mv_co_mvp = ls_cepct_ltext-ltext.
  417.     ENDIF.
  418.  
  419.     "****************************************************************
  420.     "*** Выборка для ALV по карточкам
  421.     "****************************************************************
  422.     "** 1. БЕ
  423.     "****************************************************************
  424.     mv_001_bukrs = ms_params-bukrs.
  425.  
  426.     "** 2. Наименование БЕ
  427.     "****************************************************************
  428.  
  429.     SELECT SINGLE adrc~name1, adrc~name2, adrc~name3, adrc~name4 "#EC CI_BUFFJOIN
  430.     FROM adrc
  431.     JOIN t001 ON adrc~addrnumber = t001~adrnr
  432.     WHERE
  433.           adrc~nation EQ ''
  434.     AND   t001~bukrs  EQ @ms_params-bukrs
  435.     INTO CORRESPONDING FIELDS OF @mv_002_temp.
  436.  
  437.     IF mv_002_temp-name1 IS NOT INITIAL.
  438.       CONCATENATE mv_002_temp-name1 mv_002_name_be INTO mv_002_name_be SEPARATED BY ', '.
  439.     ENDIF.
  440.  
  441.     IF mv_002_temp-name2 IS NOT INITIAL.
  442.       CONCATENATE mv_002_temp-name2 mv_002_name_be INTO mv_002_name_be SEPARATED BY ', '.
  443.     ENDIF.
  444.  
  445.     IF mv_002_temp-name3 IS NOT INITIAL.
  446.       CONCATENATE mv_002_temp-name3 mv_002_name_be INTO mv_002_name_be SEPARATED BY ', '.
  447.     ENDIF.
  448.  
  449.     IF mv_002_temp-name4 IS NOT INITIAL.
  450.       CONCATENATE mv_002_temp-name4 mv_002_name_be INTO mv_002_name_be SEPARATED BY ', '.
  451.     ENDIF.
  452.  
  453.     IF mv_002_name_be IS NOT INITIAL.
  454.       mv_002_name_be = substring( val = mv_002_name_be off = 0 len = strlen( mv_002_name_be ) - 1 ).
  455.     ENDIF.
  456.  
  457.     LOOP AT mt_os_cards ASSIGNING FIELD-SYMBOL(<ls_cards>).
  458.       "** 5a. Название ОС
  459.       "****************************************************************
  460.       CLEAR ls_anla.
  461.       READ TABLE mt_anla INTO ls_anla WITH TABLE KEY  bukrs = <ls_cards>-bukrs
  462.                                                       anln1 = <ls_cards>-anln1
  463.                                                       anln2 = <ls_cards>-anln2.
  464.  
  465.       "** 7. Наименование класса
  466.       "****************************************************************
  467.       CLEAR ls_txk50.
  468.       READ TABLE mt_txk50 INTO ls_txk50 WITH TABLE KEY bukrs = <ls_cards>-bukrs
  469.                                               anln1 = <ls_cards>-anln1
  470.                                               anln2 = <ls_cards>-anln2.
  471.  
  472.       "** 9. МВЗ
  473.       "****************************************************************
  474.       CLEAR ls_anlz.
  475.       LOOP AT mt_anlz INTO ls_anlz USING KEY primary_key WHERE  bukrs = <ls_cards>-bukrs AND "#EC CI_NESTED
  476.                                                                 anln1 = <ls_cards>-anln1 AND
  477.                                                                 anln2 = <ls_cards>-anln2 AND
  478.                                                                 bdatu GT ms_params-date  AND
  479.                                                                 adatu LE ms_params-date.
  480.         EXIT.
  481.       ENDLOOP.
  482.  
  483.       "** 10. Наименование МВЗ
  484.       "****************************************************************
  485.       CLEAR ls_cskt_ktext.
  486.       READ TABLE mt_cskt_ktext INTO ls_cskt_ktext WITH TABLE KEY kostl = ls_anlz-kostl.
  487.  
  488.       "** 12. Наименование завода
  489.       "****************************************************************
  490.       CLEAR ls_t001w.
  491.       READ TABLE mt_t001w INTO ls_t001w WITH TABLE KEY werks = ls_anlz-werks.
  492.  
  493.       "** 14. Наименование местоположения
  494.       "****************************************************************
  495.       CLEAR ls_t499s.
  496.       READ TABLE mt_t499s INTO ls_t499s WITH TABLE KEY werks = ls_anlz-werks
  497.                                                        stand = ls_anlz-stort.
  498.  
  499.       "** 16. ФИО
  500.       "****************************************************************
  501.       CLEAR ls_ename.
  502.       READ TABLE mt_ename INTO ls_ename WITH TABLE KEY pernr = ls_anlz-pernr.
  503.  
  504.       "** 17. Должность сотрудника
  505.       "****************************************************************
  506.       CLEAR ls_stltx.
  507.       READ TABLE mt_stltx INTO ls_stltx WITH TABLE KEY pernr = ls_anlz-pernr.
  508.  
  509.       "** 19. Наименование МВП
  510.       "****************************************************************
  511.       CLEAR ls_cepct_ltext.
  512.       READ TABLE mt_cepct_ltext INTO ls_cepct_ltext WITH TABLE KEY prctr = ls_anlz-prctr.
  513.  
  514.       "** 21. Наименование внутреннего заказа
  515.       "****************************************************************
  516.       CLEAR ls_aufk.
  517.       READ TABLE mt_aufk INTO ls_aufk WITH TABLE KEY aufnr = ls_anlz-caufn.
  518.  
  519.       "** 22. Организация исполнитель
  520.       "****************************************************************
  521.       CLEAR ls_name_org.
  522.       READ TABLE mt_name_org INTO ls_name_org WITH TABLE KEY  bukrs = <ls_cards>-bukrs
  523.                                                       anln1 = <ls_cards>-anln1
  524.                                                       anln2 = <ls_cards>-anln2.
  525.       CONCATENATE
  526.       ls_name_org-name_org1
  527.       ls_name_org-name_org2
  528.       ls_name_org-name_org3
  529.       ls_name_org-name_org4
  530.       INTO
  531.       mv_022_org_executive
  532.       SEPARATED BY space.
  533.  
  534.       "** 23. Пин объекта
  535.       "****************************************************************
  536.       CLEAR ls_zpin.
  537.       READ TABLE mt_zpin INTO ls_zpin WITH TABLE KEY bukrs = <ls_cards>-bukrs
  538.                                                     anln1 = <ls_cards>-anln1
  539.                                                     anln2 = <ls_cards>-anln2.
  540.  
  541.       "** 26. Счет затрат
  542.       "****************************************************************
  543.       CLEAR ls_ktnafg.
  544.       READ TABLE mt_ktnafg INTO ls_ktnafg WITH TABLE KEY bukrs = <ls_cards>-bukrs
  545.                                                     anln1 = <ls_cards>-anln1
  546.                                                     anln2 = <ls_cards>-anln2
  547.                                                     afabe = mv_002.
  548.  
  549.       "** 27. Первоначальная стоимость
  550.       "****************************************************************
  551.       CREATE OBJECT mo_026_amort.
  552.       CLEAR mt_026_input.
  553.       CLEAR mv_026_amort_perv_st.
  554.       FREE ms_026_amort_out.
  555.  
  556.       APPEND VALUE #( bukrs = <ls_cards>-bukrs anln1 = <ls_cards>-anln1 anln2 = <ls_cards>-anln2 ) TO mt_026_input.
  557.  
  558.       mo_026_amort->fetch_db(
  559.         EXPORTING
  560.           i_input = mt_026_input
  561.           i_afabe = mv_002
  562.           i_datum = ms_params-date
  563.       ).
  564.  
  565.       ms_026_amort_out = mo_026_amort->calc( ).
  566.  
  567.       LOOP AT ms_026_amort_out ASSIGNING FIELD-SYMBOL(<ls_amort_out1>). "#EC CI_NESTED
  568.         mv_026_amort_perv_st = mv_026_amort_perv_st + <ls_amort_out1>-perv_st.
  569.       ENDLOOP.
  570.  
  571.  
  572.       FREE mo_026_amort.
  573.  
  574. *      "****************************************************************
  575. *      "****************************************************************
  576.  
  577.       APPEND VALUE #(
  578.         be                      = mv_001_bukrs
  579.         name_be                 = mv_002_name_be
  580.         os                      = <ls_cards>-anln1
  581.         subnumber               = <ls_cards>-anln2
  582.         os_name_a               = ls_anla-txt50
  583.         os_name_b               = ls_anla-txa50
  584.         os_class                = ls_anla-anlkl
  585.         class_name              = ls_txk50-tkx50
  586.         inv_number              = ls_anla-invnr
  587.         mvz                     = ls_anlz-kostl
  588.         mvz_name                = ls_cskt_ktext-ktext
  589.         factory                 = ls_anlz-werks
  590.         factory_name            = ls_t001w-name1
  591.         place                   = ls_anlz-stort
  592.         place_name              = ls_t499s-ktext
  593.         billing_number          = ls_anlz-pernr
  594.         fio_emp1                = ls_ename-ename
  595.         position_emp1           = ls_stltx-stltx
  596.         mvp                     = ls_anlz-prctr
  597.         mvp_name                = ls_cepct_ltext-ltext
  598.         inner_order             = ls_anlz-caufn
  599.         inner_order_name        = ls_aufk-ktext
  600.         org_executive           = mv_022_org_executive
  601.         pin_obj                 = ls_zpin-zzpin
  602.         end_date                = mv_024_end_date
  603.         registration_date       = ls_anla-aktiv
  604.         accounting_cost         = ls_ktnafg-ktnafg
  605.         amort_pert_st           = mv_026_amort_perv_st
  606.       ) TO mt_alv_data.
  607.  
  608.     ENDLOOP.
  609.  
  610.   ENDMETHOD.
  611.  
  612.  
  613. * <SIGNATURE>---------------------------------------------------------------------------------------+
  614. * | Instance Public Method ZCL_FI_0287_NIOKTR11->ON_USER_COMMAND
  615. * +-------------------------------------------------------------------------------------------------+
  616. * | [--->] E_SALV_FUNCTION                LIKE
  617. * +--------------------------------------------------------------------------------------</SIGNATURE>
  618.   METHOD on_user_command.
  619.     CALL METHOD super->on_user_command
  620.       EXPORTING
  621.         e_salv_function = e_salv_function.
  622.   ENDMETHOD.
  623.  
  624.  
  625. * <SIGNATURE>---------------------------------------------------------------------------------------+
  626. * | Instance Private Method ZCL_FI_0287_NIOKTR11->PDF_PREPARE
  627. * +-------------------------------------------------------------------------------------------------+
  628. * | [<-()] RO_OBJECT                      TYPE REF TO ZREUSEIF_PDF_PRINT
  629. * +--------------------------------------------------------------------------------------</SIGNATURE>
  630.   METHOD pdf_prepare.
  631.     CONSTANTS:  lc_prgid       TYPE programm  VALUE 'Z_FORMS_VNA',
  632.                 lc_varid_001   TYPE variant   VALUE '001',
  633.                 lc_table_t001  TYPE tabname   VALUE 'T001',
  634.                 lc_field_bukrs TYPE fieldname VALUE 'BUKRS',
  635.                 lc_adatu_empty TYPE sy-datum VALUE '19000101'.
  636.  
  637.     DATA: lo_sel             TYPE REF TO cl_salv_selections,
  638.           lr_bukrs_forms_vna TYPE RANGE OF anla-bukrs,
  639.           lt_row             TYPE salv_t_row,
  640.           lv_index           TYPE sy-index,
  641.           lt_group_table     TYPE tt_sort,
  642.           lv_adatu_min       TYPE sy-datum,
  643.           lt_context         TYPE zifi_0287_context,
  644.           lv_barcode         TYPE zefi_barcode,
  645.           lv_found           TYPE xfeld,
  646.           lv_dock_num          TYPE zedfi_0197_form_nbr,
  647.           lv_xstil_prev      TYPE c VALUE 'F'. "проставим значение для первого прохода
  648.  
  649.     DATA ls_context TYPE zsfi_0287_context.
  650.  
  651.     DATA lo_nioktr11 TYPE REF TO zcl_fi_0287_nioktr11_pdf.
  652.  
  653.     CREATE OBJECT lo_nioktr11.
  654.     lo_sel = mo_salv->get_selections( ).
  655.     lt_row = lo_sel->get_selected_rows( ).
  656.  
  657.     IF lines( lt_row ) = 0.
  658.       LOOP AT mt_alv_data ASSIGNING FIELD-SYMBOL(<ls_alv>).
  659.         APPEND sy-tabix TO lt_row.
  660.       ENDLOOP.
  661.     ENDIF.
  662.  
  663.     "выборка ZSSP Z_FORMS_VNA
  664.     zcl_params=>get_range( EXPORTING i_prgid  = lc_prgid
  665.                                      i_varid  = lc_varid_001
  666.                                      i_table  = lc_table_t001
  667.                                      i_field  = lc_field_bukrs
  668.                            IMPORTING e_range  = lr_bukrs_forms_vna
  669.                           EXCEPTIONS no_data  = 1
  670.                                      is_parameter = 2
  671.                                      OTHERS   = 3 ).
  672.     IF sy-subrc NE 0.
  673.       CLEAR lr_bukrs_forms_vna[].
  674.     ENDIF.
  675.  
  676.     " **********************************************************************
  677.     " Группировка
  678.     LOOP AT lt_row ASSIGNING FIELD-SYMBOL(<ls_row>).
  679.       READ TABLE mt_alv_data ASSIGNING <ls_alv> INDEX <ls_row>.
  680.       IF sy-subrc EQ 0.
  681.         APPEND INITIAL LINE TO lt_group_table ASSIGNING FIELD-SYMBOL(<ls_group>).
  682.         MOVE-CORRESPONDING <ls_alv> TO <ls_group>.
  683.  
  684.         IF ms_params-nioktr11-group EQ abap_true.
  685.           IF ms_params-bukrs IN lr_bukrs_forms_vna.
  686.             <ls_group>-srtf1 =  <ls_alv>-mvp. "МВП
  687.           ELSE.
  688.             <ls_group>-srtf1 =  <ls_alv>-mvz. "МВЗ
  689.           ENDIF.
  690.         ENDIF.
  691.  
  692.         IF ms_params-nioktr11-mol EQ abap_true.  "Группировка в разрезе МОЛ
  693.           <ls_group>-srtf2 =  <ls_alv>-billing_number.
  694.         ENDIF.
  695.  
  696.         IF ms_params-nioktr11-plase EQ abap_true.  "Группировка в разрезе Местоположение
  697.           CONCATENATE  <ls_alv>-factory  <ls_alv>-place
  698.             INTO <ls_group>-srtf3.
  699.         ENDIF.
  700.  
  701.         IF ms_params-nioktr11-group EQ abap_false AND
  702.            ms_params-nioktr11-mol EQ abap_false AND
  703.            ms_params-nioktr11-plase EQ abap_false.
  704.  
  705.           <ls_group>-srtf_bukrs = <ls_alv>-be.
  706.           <ls_group>-srtf_anln1 = <ls_alv>-os.
  707.           <ls_group>-srtf_anln2 = <ls_alv>-subnumber.
  708.  
  709.         ENDIF.
  710.  
  711.       ENDIF.
  712.     ENDLOOP.
  713.  
  714.     SORT lt_group_table BY srtf1 srtf2 srtf3 srtf_bukrs srtf_anln1 srtf_anln2.
  715.  
  716.     LOOP AT lt_group_table ASSIGNING <ls_group>.
  717.       AT NEW srtf_anln2.
  718.         CLEAR: ls_context, lv_adatu_min.
  719.         lv_xstil_prev = 'F'.
  720.         ls_context-is_main-organization = <ls_group>-name_be. " 1. Организация
  721.  
  722.         IF ms_params-bukrs IN lr_bukrs_forms_vna.                " 2. структурное подразделение
  723.           ls_context-is_main-mv_name = <ls_group>-mvp_name. "МВП
  724.         ELSE.
  725.           ls_context-is_main-mv_name = <ls_group>-mvz_name. "МВЗ
  726.         ENDIF.
  727.  
  728.         IF ms_params-bukrs IN lr_bukrs_forms_vna.                " 4. Код
  729.           ls_context-is_main-code = <ls_group>-mvp. "МВП
  730.         ELSE.
  731.           ls_context-is_main-code = <ls_group>-mvz. "МВЗ
  732.         ENDIF.
  733.  
  734.         " 5. Номер документа  Заполняется порядковым номером
  735.         "Заполняется только при активированной опции на селекционном экране «сформировать штрих-код»
  736.         IF ms_params-nioktr11-shtrh EQ abap_true.
  737.           ls_context-is_main-card_nioktr_num = ''.
  738.         ENDIF.
  739.  
  740.         " 6. Дата составления
  741.         ls_context-is_main-rep_date = ms_params-date.
  742.  
  743.         "** 8. Поле дата. (день из p_com_date с СЭ)
  744.         ls_context-is_main-com_day = ms_params-nioktr11-comdat+6(2).
  745.  
  746.         "** 9. Поле месяц. (месяц из p_com_date с СЭ)
  747.         DATA lv_com_month TYPE t7ru9a-regno.
  748.         CALL FUNCTION 'HR_RU_MONTH_NAME_IN_GENITIVE'
  749.           EXPORTING
  750.             month = ms_params-nioktr11-comdat+4(2)
  751.           IMPORTING
  752.             name  = lv_com_month.
  753.         ls_context-is_main-com_month = lv_com_month.
  754.  
  755.         "** 10. Поле год. (год из p_com_date с СЭ)
  756.         ls_context-is_main-com_year = ms_params-nioktr11-comdat+0(4).
  757.  
  758.         "** 11. Поле №. (p_com_number с СЭ)
  759.         ls_context-is_main-com_num = ms_params-nioktr11-comnum.
  760.  
  761.         "** 12. Поле дата. (день из p_prot_date с СЭ)
  762.         ls_context-is_main-prot_day = ms_params-nioktr11-prot_d+6(2).
  763.  
  764.         "** 13. Поле месяц. (месяц из p_prot_date с СЭ)
  765.         DATA lv_prot_month TYPE t7ru9a-regno.
  766.         CALL FUNCTION 'HR_RU_MONTH_NAME_IN_GENITIVE'
  767.           EXPORTING
  768.             month = ms_params-nioktr11-prot_d+4(2)
  769.           IMPORTING
  770.             name  = lv_prot_month.
  771.         ls_context-is_main-prot_month = lv_prot_month.
  772.  
  773.         "** 14. Поле год. (год из p_prot_date с СЭ)
  774.         ls_context-is_main-prot_year = ms_params-nioktr11-prot_d+0(4).
  775.  
  776.         "** 15. Поле №. (p_prot_number с СЭ)
  777.         ls_context-is_main-prot_num = ms_params-nioktr11-prot_n.
  778.  
  779.         "** 16. Результат / (вид ниоктр)
  780.         ls_context-is_main-results = <ls_group>-class_name.
  781.  
  782.         "** 17. Работы по теме/ (полное наименование объекта (темы)  НИОКТР)
  783.         ls_context-is_main-job = <ls_group>-os_name_a.
  784.  
  785.         "** 18. Выполненной/ (наименование научной организации, структурного подразделения, номер и дата договора)
  786.         ls_context-is_main-org = <ls_group>-org_executive.
  787.  
  788.         "** 19. принят к учету, передан для использования/ (указать область применения результатов НИОКТР, структурное подразделение)
  789.         IF ms_params-bukrs IN lr_bukrs_forms_vna.
  790.           ls_context-is_main-co = mv_co_mvp.
  791.         ELSE.
  792.           ls_context-is_main-co = mv_co_mvz.
  793.         ENDIF.
  794.  
  795.  
  796.       ENDAT.
  797.  
  798.       APPEND INITIAL LINE TO ls_context-it_tab1 ASSIGNING FIELD-SYMBOL(<ls_tab1>).
  799.  
  800.       <ls_tab1>-pin = <ls_group>-pin_obj.
  801.       <ls_tab1>-inv_num = <ls_group>-inv_number.
  802.       <ls_tab1>-end_dat = <ls_group>-end_date.
  803.       <ls_tab1>-reg_dat = <ls_group>-registration_date.
  804.       <ls_tab1>-amort_pert_st = <ls_group>-amort_pert_st.
  805.       <ls_tab1>-debit_method = 'линейный'.
  806.       <ls_tab1>-accounting_cost = <ls_group>-accounting_cost.
  807.  
  808.       AT END OF srtf_anln2.
  809.  
  810.         "** 32. Председатель комиссии
  811.         ls_context-is_main-fio_chrm = ms_params-nioktr11-fioch. " mv_fioch.
  812.  
  813.         "** 33. Должность председатель комиссии
  814.         ls_context-is_main-job_chrm = ms_params-nioktr11-jobch. " mv_jobch.
  815.  
  816.         "** 34. Член комиссии 1
  817.         ls_context-is_main-fio_mc_1 = ms_params-nioktr11-fiomc1. " mv_fiomc1.
  818.  
  819.         "** 35. Должность члена комиссии 1
  820.         ls_context-is_main-job_mc_1 = ms_params-nioktr11-jobmc1. " mv_jobmc1.
  821.  
  822.         "** 36. Член комиссии 2
  823.         ls_context-is_main-fio_mc_2 = ms_params-nioktr11-fiomc2. " mv_fiomc2.
  824.  
  825.         "** 37. Должность члена комиссии 2
  826.         ls_context-is_main-job_mc_2 = ms_params-nioktr11-jobmc2. " mv_jobmc2.
  827.  
  828.         "** 38. Член комиссии 3
  829.         ls_context-is_main-fio_mc_3 = ms_params-nioktr11-fiomc3. " mv_fiomc3.
  830.  
  831.         "** 39. Должность члена комиссии 3
  832.         ls_context-is_main-job_mc_3 = ms_params-nioktr11-jobmc3. " mv_jobmc3.
  833.  
  834.         "** 40. Член комиссии 4
  835.         ls_context-is_main-fio_mc_4 = ms_params-nioktr11-fiomc4. " mv_fiomc4.
  836.  
  837.         "** 41. Должность члена комиссии 4
  838.         ls_context-is_main-job_mc_4 = ms_params-nioktr11-jobmc4. " mv_jobmc4.
  839.  
  840.         "** 42. Член комиссии 5
  841.         ls_context-is_main-fio_mc_5 = ms_params-nioktr11-fiomc5. " mv_fiomc5.
  842.  
  843.         "** 43. Должность члена комиссии 5
  844.         ls_context-is_main-job_mc_5 = ms_params-nioktr11-jobmc5. " mv_jobmc5.
  845.  
  846.         "** 44. Член комиссии 6
  847.         ls_context-is_main-fio_mc_6 = ms_params-nioktr11-fiomc6. " mv_fiomc6.
  848.  
  849.         "** 45. Должность члена комиссии 6
  850.         ls_context-is_main-job_mc_6 = ms_params-nioktr11-jobmc6. " mv_jobmc6.
  851.  
  852.         "** 46. Член комиссии 7
  853.         ls_context-is_main-fio_mc_7 = ms_params-nioktr11-fiomc7. " mv_fiomc7.
  854.  
  855.         "** 47. Должность члена комиссии 7
  856.         ls_context-is_main-job_mc_7 = ms_params-nioktr11-jobmc7. " mv_jobmc7.
  857.  
  858.         "** 48. Член комиссии 8
  859.         ls_context-is_main-fio_mc_8 = ms_params-nioktr11-fiomc8. " mv_fiomc8.
  860.  
  861.         "** 49. Должность члена комиссии 8
  862.         ls_context-is_main-job_mc_8 = ms_params-nioktr11-jobmc8. " mv_jobmc8.
  863.  
  864.         "** 50. Член комиссии 9
  865.         ls_context-is_main-fio_mc_9 = ms_params-nioktr11-fiomc9. " mv_fiomc9.
  866.  
  867.         "** 51. Должность члена комиссии 9
  868.         ls_context-is_main-job_mc_9 = ms_params-nioktr11-jobmc9. " mv_jobmc9.
  869.  
  870.         "** 52. Член комиссии 10
  871.         ls_context-is_main-fio_mc_10 = ms_params-nioktr11-fiomc10. " mv_fiomc10.
  872.  
  873.         "** 53. Должность члена комиссии 10
  874.         ls_context-is_main-job_mc_10 = ms_params-nioktr11-jobmc10. " mv_jobmc10.
  875.  
  876.         "** 54. Лицо, ответственное за ведение учета
  877.         ls_context-is_main-fio_uch = ms_params-nioktr11-fiouch. " mv_fiouch.
  878.  
  879.         "** 55. Должность лица ответственного за учёт
  880.         ls_context-is_main-job_uch = ms_params-nioktr11-jobuch. " mv_jobuch.
  881.  
  882.         "** 56. Карточку составил
  883.         ls_context-is_main-fio_crd = ms_params-nioktr11-fiocrd. " mv_fiocrd.
  884.  
  885.         "** 57. Должность составившего карточку
  886.         ls_context-is_main-job_crd = ms_params-nioktr11-jobcrd. " mv_jobcrd.
  887.  
  888.  
  889.         " Штрихкод
  890.         IF  ms_params-nioktr11-shtrh IS NOT INITIAL.
  891.           IF lv_dock_num IS INITIAL.
  892.             lv_dock_num = zcl_fiaa_static=>generate_docnum_new(
  893.                                        EXPORTING i_context  = ms_ztfi_0197_form-pdf_form
  894.                                                  i_formname = CONV j_3r_formname( ms_ztfi_0197_form-form_name )
  895.                                                  i_bukrs    = <ls_group>-be
  896.                                                  i_anln1    = <ls_group>-os
  897.                                                  i_anln2    = <ls_group>-subnumber
  898.                                                  i_bldat    = ms_params-date
  899.                                        CHANGING  c_found    = lv_found ).
  900.           ENDIF.
  901.           ls_context-is_main-card_nioktr_num = lv_dock_num.
  902.  
  903.           IF lv_barcode IS INITIAL.
  904.             ls_context-is_main-barcode = zcl_fiaa_static=>generate_barcode_new(
  905.                  i_context  = 'ZFI_NIOKTR11_CONTEXT'
  906.                  i_formname = CONV j_3r_formname( 'NIOKTR11' )
  907.                  i_bukrs    = <ls_group>-be
  908.                  i_anln1    = <ls_group>-os
  909.                  i_anln2    = <ls_group>-subnumber
  910.                  i_docnum   = ls_context-is_main-card_nioktr_num
  911.                  i_bldat    = ms_params-date
  912.                  i_found    = abap_true
  913.                  i_wait     = abap_true ).
  914.           ELSE.
  915.             zcl_fiaa_static=>generate_barcode_new(
  916.                 i_context  = ms_ztfi_0197_form-pdf_form
  917.                 i_formname = CONV j_3r_formname( ms_ztfi_0197_form-form_name )
  918.                 i_bukrs    = <ls_group>-be
  919.                 i_anln1    = <ls_group>-os
  920.                 i_anln2    = <ls_group>-subnumber
  921.                 i_docnum   = ls_context-is_main-card_nioktr_num
  922.                 i_bldat    = ms_params-date
  923.                 i_found    = abap_true
  924.                 i_barcode  = lv_barcode
  925.                 i_wait     = abap_true ).
  926.           ENDIF.
  927.         ENDIF.
  928.  
  929.         APPEND ls_context TO lt_context.
  930.       ENDAT.
  931.  
  932.     ENDLOOP.
  933.  
  934.     lo_nioktr11->mt_form_data[] = lt_context[].
  935.     ro_object ?= lo_nioktr11.
  936.  
  937.   ENDMETHOD.
  938.  
  939.  
  940. * <SIGNATURE>---------------------------------------------------------------------------------------+
  941. * | Instance Public Method ZCL_FI_0287_NIOKTR11->PDF_PRINT_LOC
  942. * +-------------------------------------------------------------------------------------------------+
  943. * | [--->] IO_IF                          TYPE REF TO ZREUSEIF_PDF_PRINT
  944. * | [--->] IV_DOC_SPLIT                   TYPE        XFELD(optional)
  945. * +--------------------------------------------------------------------------------------</SIGNATURE>
  946.   METHOD pdf_print_loc.
  947.  
  948.     ms_ztfi_0197_form-pdf_form = 'ZFI_NIOKTR11_CONTEXT'.
  949.     CHECK ms_ztfi_0197_form-pdf_form IS NOT INITIAL.
  950.  
  951.     DATA lr_pdf TYPE REF TO zreusecl_pdf_print.
  952.     CREATE OBJECT lr_pdf.
  953.  
  954.     DATA(ls_outpar) = lr_pdf->get_outputparams( ).
  955.  
  956.     CASE  abap_true.
  957.       WHEN ms_params-pdfpre.
  958. *-- Print preview
  959.         ls_outpar-noprint = abap_true.
  960.         ls_outpar-dest    = ms_params-printr.
  961.         CLEAR ls_outpar-reqimm.
  962.         ls_outpar-pdftagged = abap_true.
  963.  
  964.       WHEN ms_params-pdfint.
  965. *-- Interactive PDF Preview
  966.         ls_outpar-dest      = ms_params-printr.
  967.         lr_pdf->set_fillable( abap_true ).
  968.         CLEAR ls_outpar-reqimm.
  969.         ls_outpar-pdftagged = abap_true.
  970.  
  971.     ENDCASE.
  972.  
  973.     ls_outpar-device   = 'PRINTER'.
  974.     ls_outpar-copies   = ms_params-numcpy.
  975.  
  976.     lr_pdf->set_outputparams( ls_outpar ).
  977.  
  978.     DATA lv_fpname TYPE fpname.
  979.     lv_fpname = ms_ztfi_0197_form-pdf_form.
  980.  
  981.     CALL METHOD lr_pdf->show_pdf
  982.       EXPORTING
  983.         i_fpname = lv_fpname
  984.         io_if    = io_if.
  985.  
  986.   ENDMETHOD.
  987.  
  988.  
  989. * <SIGNATURE>---------------------------------------------------------------------------------------+
  990. * | Instance Public Method ZCL_FI_0287_NIOKTR11->PRINT_SALV
  991. * +-------------------------------------------------------------------------------------------------+
  992. * | [--->] IV_EDIT                        TYPE        XFELD(optional)
  993. * | [<-->] IT_TABLE                       TYPE        ANY TABLE(optional)
  994. * | [!CX!] CX_SALV_NOT_FOUND
  995. * | [!CX!] CX_SALV_WRONG_CALL
  996. * +--------------------------------------------------------------------------------------</SIGNATURE>
  997.   METHOD print_salv.
  998.     super->print_salv( EXPORTING iv_edit = space CHANGING it_table = mt_alv_data ).
  999.   ENDMETHOD.
  1000.  
  1001.  
  1002. * <SIGNATURE>---------------------------------------------------------------------------------------+
  1003. * | Instance Public Method ZCL_FI_0287_NIOKTR11->SALV_COMMAND_ZPDF
  1004. * +-------------------------------------------------------------------------------------------------+
  1005. * +--------------------------------------------------------------------------------------</SIGNATURE>
  1006.   METHOD salv_command_zpdf.
  1007.     "Интерактивный просмотр PDF
  1008.     "Предварительный просмотр PDF
  1009.  
  1010.     IF ms_params-pdfpre IS NOT INITIAL OR ms_params-pdfint IS NOT INITIAL.
  1011.       DATA(lo_nioktr11) = pdf_prepare( ).
  1012.       pdf_print_loc( lo_nioktr11 ).
  1013.     ENDIF.
  1014.   ENDMETHOD.
  1015.  
  1016.  
  1017. * <SIGNATURE>---------------------------------------------------------------------------------------+
  1018. * | Instance Public Method ZCL_FI_0287_NIOKTR11->SELECT_DATA_SPECIFIC
  1019. * +-------------------------------------------------------------------------------------------------+
  1020. * | [!CX!] ZCX_GENERIC
  1021. * +--------------------------------------------------------------------------------------</SIGNATURE>
  1022.   METHOD select_data_specific. " Выбор данных из БД для конкретной формы
  1023.     CONSTANTS: lc_fikrs       TYPE fmfctrt-fikrs VALUE '1000',
  1024.                lc_prgid       TYPE programm  VALUE 'ZFI_0287_NIOKTR11',
  1025.                lc_varid_002   TYPE variant   VALUE '002',
  1026.                lc_table_anlb  TYPE tabname   VALUE 'ANLB',
  1027.                lc_field_afabe TYPE fieldname VALUE 'AFABE'.
  1028.     DATA lr_forms_list_anlkl   TYPE RANGE OF ztfi_forms_list-anlkl.
  1029.  
  1030.     SELECT SINGLE *
  1031.    FROM ztfi_forms_vna
  1032.    INTO CORRESPONDING FIELDS OF @ms_ztfi_0197_form
  1033.    WHERE bukrs  EQ @ms_params-bukrs
  1034.      AND form   EQ 'НН.НИОКТР-1.1'
  1035.      AND begda    LE @ms_params-date
  1036.      AND endda    GE @ms_params-date.
  1037.     IF sy-subrc NE 0.
  1038.       SELECT SINGLE *
  1039.         FROM ztfi_forms_vna
  1040.         INTO CORRESPONDING FIELDS OF @ms_ztfi_0197_form
  1041.          WHERE bukrs  EQ '+'
  1042.            AND form   EQ 'НН.НИОКТР-1.1'
  1043.            AND begda    LE @ms_params-date
  1044.            AND endda    GE @ms_params-date.
  1045.     ENDIF.
  1046.  
  1047.     "выборка ZSSP Z_FORMS_VNA
  1048.     zcl_params=>get_parameter( EXPORTING i_prgid  = lc_prgid
  1049.                                      i_varid  = lc_varid_002
  1050.                                      i_table  = lc_table_anlb
  1051.                                      i_field  = lc_field_afabe
  1052.                            IMPORTING e_value  = mv_afabe
  1053.                           EXCEPTIONS no_data  = 1
  1054.                                      is_range = 2
  1055.                                      OTHERS   = 3 ).
  1056.  
  1057.     "выборка ZSSP Z_FORMS_VNA
  1058.     zcl_params=>get_range( EXPORTING i_prgid  = lc_prgid
  1059.                                      i_varid  = lc_varid_002
  1060.                                      i_table  = lc_table_anlb
  1061.                                      i_field  = lc_field_afabe
  1062.                            IMPORTING e_range  = mt_afabe
  1063.                           EXCEPTIONS no_data  = 1
  1064.                                      is_parameter = 2
  1065.                                      OTHERS   = 3 ).
  1066.  
  1067.  
  1068.     IF ms_params-tables-anla-r_anlkl IS NOT INITIAL.
  1069.       SELECT anla~bukrs, anla~anln1, anla~anln2
  1070.       FROM anla
  1071.       JOIN anlz ON
  1072.           anla~bukrs = anlz~bukrs
  1073.       AND anla~anln1 = anlz~anln1
  1074.       AND anla~anln2 = anlz~anln2
  1075.       WHERE
  1076.           anlz~adatu LE @ms_params-date
  1077.       AND anlz~bdatu GE @ms_params-date
  1078.       AND anla~bukrs EQ @ms_params-bukrs
  1079.       AND anla~anln1 IN @ms_params-r_anln1
  1080.       AND anla~anln2 IN @ms_params-r_anln2
  1081.       AND anla~anlkl IN @ms_params-tables-anla-r_anlkl
  1082.       AND ( anla~aktiv IS NOT NULL  AND anla~aktiv  LE @ms_params-date )
  1083.       AND anla~invnr IN @ms_params-tables-anla-r_invnr
  1084.       AND anlz~kostl IN @ms_params-tables-anlz-r_kostl
  1085.       AND anlz~prctr IN @ms_params-nioktr11-r_prctr
  1086.       AND anlz~werks IN @ms_params-tables-anlz-r_werks
  1087.       AND anlz~stort IN @ms_params-tables-anlz-r_stort
  1088.       AND anlz~pernr IN @ms_params-tables-anlz-r_pernr
  1089.       INTO CORRESPONDING FIELDS OF TABLE @mt_os_cards.
  1090.     ELSE.
  1091.       IF
  1092.             ms_params-r_anln1  IS INITIAL
  1093.         AND ms_params-r_anln2  IS INITIAL
  1094.         AND ms_params-tables-anla-r_anlkl[] IS INITIAL
  1095.         AND ms_params-tables-anla-r_invnr  IS INITIAL
  1096.         AND ms_params-tables-anlz-r_kostl  IS NOT INITIAL
  1097.         AND ms_params-tables-anlz-r_werks  IS NOT INITIAL
  1098.         AND ms_params-tables-anlz-r_stort  IS NOT INITIAL
  1099.         AND ms_params-tables-anlz-r_pernr  IS NOT INITIAL.
  1100.  
  1101.         SELECT anla~bukrs, anla~anln1, anla~anln2  "#EC CI_NO_TRANSFORM
  1102.           FROM anla
  1103.           WHERE
  1104.                 anla~bukrs EQ @ms_params-bukrs
  1105.           AND ( anla~aktiv IS NOT NULL  AND anla~aktiv  LE @ms_params-date )
  1106.           AND ( anla~deakt IS NULL      OR anla~deakt   GT @ms_params-date )
  1107.           AND anla~inken = 'X'
  1108.           INTO CORRESPONDING FIELDS OF TABLE @mt_os_cards.
  1109.  
  1110.         SELECT anla~bukrs, anla~anln1, anla~anln2  "#EC CI_NO_TRANSFORM
  1111.        FROM anla
  1112.        JOIN anlz ON
  1113.            anla~bukrs = anlz~bukrs
  1114.        AND anla~anln1 = anlz~anln1
  1115.        AND anla~anln2 = anlz~anln2
  1116.        FOR ALL ENTRIES IN @mt_os_cards
  1117.        WHERE
  1118.            anla~bukrs EQ @mt_os_cards-bukrs
  1119.        AND anla~anln1 EQ @mt_os_cards-anln1
  1120.        AND anla~anln2 EQ @mt_os_cards-anln2
  1121.        AND anlz~adatu LE @ms_params-date
  1122.        AND anlz~bdatu GE @ms_params-date
  1123.        AND anlz~bukrs EQ @ms_params-bukrs
  1124.        AND anlz~anln1 IN @ms_params-r_anln1
  1125.        AND anlz~anln2 IN @ms_params-r_anln2
  1126.        AND anlz~kostl IN @ms_params-tables-anlz-r_kostl
  1127.        AND anlz~prctr IN @ms_params-nioktr11-r_prctr
  1128.        AND anlz~werks IN @ms_params-tables-anlz-r_werks
  1129.        AND anlz~stort IN @ms_params-tables-anlz-r_stort
  1130.        AND anlz~pernr IN @ms_params-tables-anlz-r_pernr
  1131.        INTO CORRESPONDING FIELDS OF TABLE @mt_os_cards.
  1132.  
  1133.       ELSEIF ms_params-tables-anla-r_anlkl[] IS INITIAL.
  1134.         SELECT anla~bukrs, anla~anln1, anla~anln2
  1135.         FROM anla
  1136.         JOIN anlz ON
  1137.             anla~bukrs = anlz~bukrs
  1138.         AND anla~anln1 = anlz~anln1
  1139.         AND anla~anln2 = anlz~anln2
  1140.         WHERE
  1141.             anlz~adatu LE @ms_params-date
  1142.         AND anlz~bdatu GE @ms_params-date
  1143.         AND anla~bukrs EQ @ms_params-bukrs
  1144.         AND anla~anln1 IN @ms_params-r_anln1
  1145.         AND anla~anln2 IN @ms_params-r_anln2
  1146.         AND anla~anlkl IN @ms_params-tables-anla-r_anlkl
  1147.         AND ( anla~aktiv IS NOT NULL  AND anla~aktiv  LE @ms_params-date )
  1148.         AND anla~invnr IN @ms_params-tables-anla-r_invnr
  1149.         AND anlz~kostl IN @ms_params-tables-anlz-r_kostl
  1150.         AND anlz~prctr IN @ms_params-nioktr11-r_prctr
  1151.         AND anlz~werks IN @ms_params-tables-anlz-r_werks
  1152.         AND anlz~stort IN @ms_params-tables-anlz-r_stort
  1153.         AND anlz~pernr IN @ms_params-tables-anlz-r_pernr
  1154.         INTO CORRESPONDING FIELDS OF TABLE @mt_os_cards.
  1155.       ENDIF.
  1156.     ENDIF.
  1157.  
  1158.  
  1159.   ENDMETHOD.
  1160.  
  1161.  
  1162. * <SIGNATURE>---------------------------------------------------------------------------------------+
  1163. * | Instance Public Method ZCL_FI_0287_NIOKTR11->SHOW_RESULT
  1164. * +-------------------------------------------------------------------------------------------------+
  1165. * | [!CX!] ZCX_GENERIC
  1166. * | [!CX!] CX_SALV_NOT_FOUND
  1167. * | [!CX!] CX_SALV_WRONG_CALL
  1168. * +--------------------------------------------------------------------------------------</SIGNATURE>
  1169.   METHOD show_result.
  1170.     " Заполнение таблицы для ALV
  1171.     fill_alv( ).
  1172.  
  1173.     DESCRIBE TABLE mt_alv_data LINES sy-tfill.
  1174.     IF sy-tfill > 0.
  1175.       " Вывод ALV на экран
  1176.       print_salv( EXPORTING iv_edit = space CHANGING it_table = mt_alv_data ).
  1177.     ELSE.
  1178.       MESSAGE e006 INTO DATA(lv_msg).  " По заданным критериям записи не найдены
  1179.       zcx_generic=>raise( ).
  1180.     ENDIF.
  1181.   ENDMETHOD.
  1182. ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement