Advertisement
falazure123

Untitled

Jun 21st, 2023 (edited)
1,456
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 32.76 KB | None | 0 0
  1. *&--------------------------------------------------------------------*
  2. *& Номер спецификации: КШ_EXT_ CA_REP_291
  3. *& Наименование спецификации: Отчет сравнения фактов хозяйственной деятельности,
  4. *& между различными методами учета БУ/ НУ/ МСФО.
  5. *& Дата создания: 20.03.2023
  6. *& Проект: Внедрение S/4HANA
  7. *& Функциональный консультант: Рафаилова А.
  8. *& Разработчик: Григорович Р.В.
  9. *&---------------------------------------------------------------------*
  10.  
  11. REPORT ztx_pt_cmp MESSAGE-ID ztax_291.
  12.  
  13. INCLUDE ztx_pt_cmp_t01.
  14. INCLUDE ztx_pt_cmp_s01.
  15. INCLUDE ztx_pt_cmp_cd01.
  16. INCLUDE ztx_pt_cmp_ci01.
  17. INCLUDE ztx_pt_cmp_e01.
  18.  
  19. *&---------------------------------------------------------------------*
  20. *& Include          ZTX_PT_CMP_T01
  21. *&---------------------------------------------------------------------*
  22. TABLES:
  23.   zstx_pt_cmp_ss,
  24.   sscrfields.
  25.  
  26. *&---------------------------------------------------------------------*
  27. *& Include          ZTX_PT_CMP_S01
  28. *&---------------------------------------------------------------------*
  29. PARAMETERS:
  30.   p_bukrs TYPE zstx_pt_cmp_ss-bukrs MEMORY ID buk VALUE CHECK OBLIGATORY,
  31.   p_ryear TYPE zstx_pt_cmp_ss-ryear OBLIGATORY.
  32. SELECT-OPTIONS:
  33.   s_poper FOR  zstx_pt_cmp_ss-poper OBLIGATORY NO-EXTENSION.
  34. SELECTION-SCREEN:
  35. SKIP.
  36. SELECT-OPTIONS:
  37.   s_diffty FOR zstx_pt_cmp_ss-difftyp,
  38.   s_taxdif FOR zstx_pt_cmp_ss-taxdiff.
  39. SELECTION-SCREEN:
  40. SKIP.
  41. SELECTION-SCREEN BEGIN OF BLOCK sb0 WITH FRAME TITLE TEXT-sb0.
  42.   PARAMETERS p_dop TYPE flag NO-DISPLAY.
  43.   SELECTION-SCREEN PUSHBUTTON /1(5) bb0 USER-COMMAND bb0.
  44.  
  45. SELECT-OPTIONS:
  46.     s_racct  FOR zstx_pt_cmp_ss-racct MODIF ID dop,
  47.     s_rcntr FOR zstx_pt_cmp_ss-rcntr MODIF ID dop,
  48.     s_aufnr FOR zstx_pt_cmp_ss-aufnr MODIF ID dop,
  49.     s_pspnr FOR zstx_pt_cmp_ss-ps_psp_pnr MODIF ID dop,
  50.     s_vptnr FOR zstx_pt_cmp_ss-vptnr MODIF ID dop,
  51.     s_zuonr FOR zstx_pt_cmp_ss-zuonr MODIF ID dop,
  52.     s_anln1 FOR zstx_pt_cmp_ss-anln1 MODIF ID dop,
  53.     s_matnr FOR zstx_pt_cmp_ss-matnr MODIF ID dop,
  54.     s_werks FOR zstx_pt_cmp_ss-werks MODIF ID dop.
  55.  
  56.   SELECTION-SCREEN BEGIN OF BLOCK sb8 WITH FRAME.
  57.     SELECT-OPTIONS:
  58.       s_belnr FOR zstx_pt_cmp_ss-belnr MODIF ID dop,
  59.       s_blart FOR zstx_pt_cmp_ss-blart MODIF ID dop,
  60.       s_xrev  FOR zstx_pt_cmp_ss-xreversed MODIF ID dop,
  61.       s_budat FOR zstx_pt_cmp_ss-budat MODIF ID dop,
  62.       s_cpudt FOR zstx_pt_cmp_ss-cpudt MODIF ID dop.
  63.   SELECTION-SCREEN END OF BLOCK sb8.
  64. SELECTION-SCREEN END OF BLOCK sb0.
  65.  
  66. SELECTION-SCREEN:
  67. SKIP.
  68. PARAMETERS:
  69.   p_init TYPE xfeld,
  70.   p_sbeg AS CHECKBOX,
  71.   p_nmax LIKE zstx_pt_cmp_ss-nmax_it DEFAULT '99999'.
  72.  
  73. *&---------------------------------------------------------------------*
  74. *&     CLASS LCL_APPLICATION DEFINITION
  75. *&---------------------------------------------------------------------*
  76. *   Класс работы с приложением
  77. *----------------------------------------------------------------------*
  78. CLASS lcl_application DEFINITION FINAL.
  79.   PUBLIC SECTION.
  80.     CLASS-METHODS:
  81.       INITIALIZATION,
  82.       at_selection_screen,
  83.       start_of_selection,
  84.       end_of_selection,
  85.       check_bukrs IMPORTING iv_bukrs TYPE bukrs,
  86.       at_selection_output.
  87.  
  88.   PRIVATE SECTION.
  89.     CLASS-DATA:
  90.       go_ptcmp TYPE REF TO zcl_tx_ptcmp.
  91.  
  92. ENDCLASS.                         " LCL_APPLICATION DEFINITION
  93.  
  94. *&---------------------------------------------------------------------*
  95. *   Класс приложения
  96. *----------------------------------------------------------------------*
  97. CLASS lcl_application IMPLEMENTATION.
  98. *----------------------------------------------------------------------*
  99. * Проверка БЕ
  100. *----------------------------------------------------------------------*
  101.   METHOD check_bukrs.
  102.     " Проверка полномочий на БЕ
  103.     AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
  104.       ID 'BUKRS' FIELD iv_bukrs
  105.       ID 'ACTVT' FIELD '03'.
  106.     IF sy-subrc <> 0.
  107. *Нет полномочий на БЕ &1
  108.       MESSAGE e004 WITH iv_bukrs.
  109.     ENDIF.
  110.   ENDMETHOD.
  111. *----------------------------------------------------------------------*
  112. *  Метод для обработки события INITIALIZATION
  113. *----------------------------------------------------------------------*
  114.   METHOD INITIALIZATION.
  115.  
  116.     IF sy-datum+4(2) = '01'.
  117.       p_ryear = sy-datum(4) - 1.
  118.       s_poper[] = VALUE #( ( SIGN = 'I' OPTION = 'BT' LOW = '001' HIGH = '012' ) ).
  119.     ELSE.
  120.       p_ryear = sy-datum(4).
  121.       s_poper[] = VALUE #( ( SIGN = 'I' OPTION = 'BT' LOW = '001' HIGH = CONV #( sy-datum+4(2) - 1 ) ) ).
  122.     ENDIF.
  123.  
  124.   ENDMETHOD.                    " AT_SELECTION_SREEN
  125. *----------------------------------------------------------------------*
  126. *  Метод для обработки события AT_SELECTION_SREEN
  127. *----------------------------------------------------------------------*
  128.   METHOD at_selection_screen.
  129.     IF sscrfields-ucomm = 'BB0'.
  130.       CASE p_dop.
  131.         WHEN abap_true.
  132.           p_dop = abap_false.
  133.         WHEN abap_false.
  134.           p_dop = abap_true.
  135.       ENDCASE.
  136.     ENDIF.
  137.     CASE sscrfields-ucomm.
  138.       WHEN 'DOP'.
  139.         IF p_dop = abap_false.
  140.           CLEAR: s_rcntr[],s_aufnr[],s_pspnr[],s_vptnr,s_zuonr,s_anln1[],s_matnr[],s_werks[]. "s_taxprt[].
  141.         ENDIF.
  142.     ENDCASE.
  143.  
  144.   ENDMETHOD.                    " AT_SELECTION_SREEN
  145. *----------------------------------------------------------------------*
  146. *  Метод для обработки события AT_SELECTION_OUTPUT
  147. *----------------------------------------------------------------------*
  148.   METHOD at_selection_output.
  149.     CASE p_dop.
  150.       WHEN abap_true.
  151.         bb0 = icon_data_area_collapse.
  152.       WHEN abap_false.
  153.         bb0 = icon_data_area_expand.
  154.     ENDCASE.
  155.  
  156.     LOOP AT SCREEN.
  157.       IF p_dop = abap_false.
  158.         IF screen-group1 = 'DOP'.
  159. *При не установленном флаге 'Дополнительные признаки'
  160.           screen-active = 0.
  161.           MODIFY SCREEN.
  162.         ENDIF.
  163.       ENDIF.
  164.     ENDLOOP.
  165.   ENDMETHOD.                    " AT_SELECTION_SREEN
  166. *----------------------------------------------------------------------*
  167. *  Метод для обработки события START-OF-SELECTION.
  168. *----------------------------------------------------------------------*
  169.   METHOD start_of_selection.
  170.     DATA:
  171.       lv_sbeg  TYPE flag.
  172.  
  173.     IF s_poper-low = 1.
  174.       lv_sbeg = p_sbeg.
  175.     ENDIF.
  176.  
  177.     go_ptcmp = NEW #( "iv_rldnr   = p_rldnr
  178.                       iv_nmax_it = p_nmax
  179.                       iv_init    = p_init
  180.                       iv_sbeg    = lv_sbeg
  181.                       is_reppar  = VALUE #( bukrs = p_bukrs
  182.                                             ryear = p_ryear
  183.                                             rpoper = VALUE #( s_poper[ 1 ] OPTIONAL )
  184.                                            )
  185.                        is_selcrit = VALUE #( r_difty  = s_diffty[]
  186.                                              r_racct  = s_racct[]
  187.                                              r_rcntr  = s_rcntr[]
  188.                                              r_aufnr  = s_aufnr[]
  189.                                              r_pspnr  = s_pspnr[]
  190.                                              r_vptnr  = s_vptnr[]
  191.                                              r_zuonr  = s_zuonr[]
  192.                                              r_anln1  = s_anln1[]
  193.                                              r_matnr  = s_matnr[]
  194.                                              r_werks  = s_werks[]
  195.                                              r_taxdif = s_taxdif[]
  196.                                              r_belnr  = s_belnr[]
  197.                                              r_blart  = s_blart[]
  198.                                              xrevers  = s_xrev[]
  199.                                              r_budat  = s_budat[]
  200.                                              r_cpudt  = s_cpudt[]
  201.                                             )
  202.                       ).
  203.  
  204.  
  205.   ENDMETHOD.                    " START_OF_SELECTION
  206. *----------------------------------------------------------------------*
  207. *  Метод для обработки события END-OF-SELECTION.
  208. *----------------------------------------------------------------------*
  209.   METHOD end_of_selection.
  210.     go_ptcmp->show_report( ).
  211.   ENDMETHOD.                    " START_OF_SELECTION
  212. ENDCLASS.
  213.  
  214. *&---------------------------------------------------------------------*
  215. *& Include          ZTX_PT_CMP_E01
  216. *&---------------------------------------------------------------------*
  217.  
  218. INITIALIZATION.
  219.   lcl_application=>INITIALIZATION( ).
  220.  
  221. AT SELECTION-SCREEN OUTPUT.
  222.   lcl_application=>at_selection_output( ).
  223.  
  224. AT SELECTION-SCREEN ON p_bukrs.
  225.   lcl_application=>check_bukrs( p_bukrs ).
  226.  
  227. AT SELECTION-SCREEN.
  228.   lcl_application=>at_selection_screen( ).
  229.  
  230. START-OF-SELECTION.
  231.   lcl_application=>start_of_selection( ).
  232.  
  233. END-OF-SELECTION.
  234.   lcl_application=>end_of_selection( ).
  235.  
  236. CLASS ZCL_TX_PTCMP DEFINITION
  237.   PUBLIC
  238.   FINAL
  239.   CREATE PUBLIC .
  240.  
  241. PUBLIC SECTION.
  242.  
  243.   METHODS CONSTRUCTOR
  244.     IMPORTING
  245.       !IV_RLDNR TYPE RLDNR OPTIONAL
  246.       !IS_REPPAR TYPE ZSTX_REGKEYPAR
  247.       !IS_SELCRIT TYPE ZSTX_REGSELCRIT OPTIONAL
  248.       !IS_DRLREPSTR TYPE ZSTX_JNODRLSRC OPTIONAL
  249.       !IV_NMAX_IT TYPE ZSTX_PT_CMP_SS-NMAX_IT DEFAULT '99999'
  250.       !IT_SELCRIT_DYN TYPE RSDS_FRANGE_T OPTIONAL
  251.       !IV_INIT TYPE XFELD
  252.       !IV_SBEG TYPE XFELD .
  253.   METHODS SHOW_REPORT
  254.     IMPORTING
  255.       !IV_VARREPORT TYPE SY-REPID OPTIONAL
  256.       !IV_VARHANDLE TYPE SLIS_HANDL DEFAULT 'JNO'
  257.     PREFERRED PARAMETER IV_VARREPORT .
  258.   METHODS TOP_OF_PAGE
  259.     IMPORTING
  260.       !IO_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT
  261.       !IV_TABLE_INDEX TYPE SYINDEX .
  262.   METHODS DRILL_DOWN
  263.     IMPORTING
  264.       !IV_FIELDNAME TYPE FIELDNAME
  265.       !IS_REP_LINE TYPE ZVTX_PTDATA_CMP
  266.       !IS_ROW_NO TYPE LVC_S_ROID
  267.       !IS_ROW TYPE LVC_S_ROW .
  268.   PROTECTED SECTION.
  269. PRIVATE SECTION.
  270.  
  271.   DATA MV_RLDNR TYPE RLDNR .
  272.   DATA MS_REPPAR TYPE ZSTX_REGKEYPAR .
  273.   DATA MS_SELCRIT TYPE ZSTX_REGSELCRIT .
  274.   DATA MS_DRL_REPSTR TYPE ZSTX_JNODRLSRC .
  275.   DATA MT_DATA TYPE ZTTTX_PTDATA_CMP .
  276.   DATA MV_SEL_DATE TYPE SYST_DATUM .
  277.   DATA MV_SEL_TIME TYPE SYST_UZEIT .
  278.   DATA MI_LOG TYPE REF TO ZIF_RA_SLOG .
  279.   DATA MO_ALV TYPE REF TO ZCL_TX_PTCMP_ALV .
  280.   DATA MV_NMAX_IT TYPE ZSTX_PT_CMP_SS-NMAX_IT .
  281.   DATA MV_KOKRS TYPE KOKRS .
  282.   CONSTANTS GCOV_TEMPLATE TYPE ZERA_REPORT_TEMPLATE VALUE 'ZTAX_291_CMP' ##NO_TEXT.
  283.   DATA MTD_SELCRIT_DYN TYPE RSDS_FRANGE_T .
  284.   DATA MV_BUTXT TYPE BUTXT .
  285.   DATA MV_INIT TYPE XFELD .
  286.   DATA MV_SBEG TYPE XFELD .
  287.   CONSTANTS GCOV_BSTAT TYPE ACDOCA-BSTAT VALUE 'C' ##NO_TEXT.
  288.   CONSTANTS GCOV_EQ TYPE CHAR2 VALUE 'EQ' ##NO_TEXT.
  289.  
  290.   METHODS READ_DATA .
  291.   METHODS STORNO_DOCS .
  292.   METHODS AUTH_RACCT .
  293.   METHODS ON_USER_COMMAND
  294.     FOR event COMMAND OF ZIF_RA_ALV
  295.     IMPORTING
  296.       !EV_COMMAND_NAME .
  297.   METHODS EXCEL_REP .
  298.   METHODS FILL_HEADER_XLS
  299.     EXPORTING
  300.       !ES_DATA TYPE ZSTX_PTDATA_CMP_HEADER_XLS .
  301.   METHODS FILL_TABLE_XLS
  302.     EXPORTING
  303.       !ET_TABLE TYPE ZTTTX_PTDATA_CMP_ITEM_XLS
  304.       !ES_ITOGO TYPE ZSTX_PTDATA_CMP_ITEM_XLS .
  305.   METHODS SHOW_PARTNR
  306.     IMPORTING
  307.       !IV_PARTNR TYPE LIFNR .
  308.   METHODS GET_CREATOR
  309.     RETURNING
  310.       VALUE(RV_FIO) TYPE TEXT100 .
  311. ENDCLASS.
  312.  
  313.  
  314.  
  315. CLASS ZCL_TX_PTCMP IMPLEMENTATION.
  316.  
  317.  
  318. * <SIGNATURE>---------------------------------------------------------------------------------------+
  319. * | Instance Private Method ZCL_TX_PTCMP->AUTH_RACCT
  320. * +-------------------------------------------------------------------------------------------------+
  321. * +--------------------------------------------------------------------------------------</SIGNATURE>
  322.   METHOD auth_racct.
  323.     TYPES:
  324.       BEGIN OF ltys_skb1_key,
  325.         saknr TYPE skb1-saknr,
  326.       END OF ltys_skb1_key,
  327.       BEGIN OF ltys_skb1,
  328.         saknr TYPE skb1-saknr,
  329.         begru TYPE skb1-begru,
  330.       END OF ltys_skb1.
  331.     DATA:
  332.       lt_skb1_key TYPE STANDARD TABLE OF ltys_skb1_key,
  333.       lt_skb1     TYPE STANDARD TABLE OF ltys_skb1,
  334.       lt_racct_r  TYPE RANGE OF acdoca-racct,
  335.       ls_racct_r  LIKE LINE OF lt_racct_r.
  336.  
  337.     lt_skb1_key = VALUE #( FOR GROUPS ls_racct OF <ls_data> IN mt_data
  338.                            USING KEY racct_key
  339.                            GROUP BY ( racct = <ls_data>-racct )
  340.                            ASCENDING WITHOUT MEMBERS ( ls_racct ) ).
  341.     IF lt_skb1_key[] IS INITIAL.
  342.       RETURN.
  343.     ENDIF.
  344.  
  345.     SELECT skb1~saknr, skb1~begru
  346.       FROM skb1
  347.       JOIN @lt_skb1_key AS TAB
  348.         ON skb1~saknr = TAB~saknr
  349.       WHERE bukrs = @ms_reppar-bukrs
  350.         AND NOT begru IS INITIAL
  351.     INTO TABLE @lt_skb1.
  352.     IF sy-subrc <> 0.
  353.       RETURN.
  354.     ENDIF.
  355.  
  356.     LOOP AT lt_skb1 ASSIGNING FIELD-SYMBOL(<ls_skb1>).
  357.       AUTHORITY-CHECK OBJECT 'F_BKPF_BES'
  358.        ID 'BRGRU' FIELD <ls_skb1>
  359.        ID 'ACTVT' FIELD '03'.
  360.       CHECK sy-subrc <> 0.
  361.  
  362.       ls_racct_r(3) = 'IEQ'.
  363.       ls_racct_r-LOW = <ls_skb1>-saknr.
  364.       APPEND ls_racct_r TO lt_racct_r.
  365.     ENDLOOP.
  366.  
  367.     IF lt_racct_r[] IS INITIAL.
  368.       RETURN.
  369.     ENDIF.
  370.  
  371.     DELETE mt_data WHERE racct IN lt_racct_r[].
  372.  
  373.     MESSAGE w003 INTO zcl_ra_slog=>mv_dummy.
  374.     mi_log->add_msg( ).
  375.  
  376.   ENDMETHOD.
  377.  
  378.  
  379. * <SIGNATURE>---------------------------------------------------------------------------------------+
  380. * | Instance Public Method ZCL_TX_PTCMP->CONSTRUCTOR
  381. * +-------------------------------------------------------------------------------------------------+
  382. * | [--->] IV_RLDNR                       TYPE        RLDNR(optional)
  383. * | [--->] IS_REPPAR                      TYPE        ZSTX_REGKEYPAR
  384. * | [--->] IS_SELCRIT                     TYPE        ZSTX_REGSELCRIT(optional)
  385. * | [--->] IS_DRLREPSTR                   TYPE        ZSTX_JNODRLSRC(optional)
  386. * | [--->] IV_NMAX_IT                     TYPE        ZSTX_PT_CMP_SS-NMAX_IT (default ='99999')
  387. * | [--->] IT_SELCRIT_DYN                 TYPE        RSDS_FRANGE_T(optional)
  388. * | [--->] IV_INIT                        TYPE        XFELD
  389. * | [--->] IV_SBEG                        TYPE        XFELD
  390. * +--------------------------------------------------------------------------------------</SIGNATURE>
  391.   METHOD constructor.
  392. *Максимальное количество записей
  393.     mv_nmax_it = iv_nmax_it.
  394.  
  395.     mv_init = iv_init.
  396.     mv_sbeg = iv_sbeg.
  397.  
  398. *Параметры отчета
  399.     ms_reppar = is_reppar.
  400. *Доп.параметры выбора данных
  401.     ms_selcrit   = is_selcrit.
  402. *Журнал сообщений
  403.     mi_log = zcl_ra_slog=>get_general_log( ).
  404.   ENDMETHOD.
  405.  
  406.  
  407. * <SIGNATURE>---------------------------------------------------------------------------------------+
  408. * | Instance Public Method ZCL_TX_PTCMP->DRILL_DOWN
  409. * +-------------------------------------------------------------------------------------------------+
  410. * | [--->] IV_FIELDNAME                   TYPE        FIELDNAME
  411. * | [--->] IS_REP_LINE                    TYPE        ZVTX_PTDATA_CMP
  412. * | [--->] IS_ROW_NO                      TYPE        LVC_S_ROID
  413. * | [--->] IS_ROW                         TYPE        LVC_S_ROW
  414. * +--------------------------------------------------------------------------------------</SIGNATURE>
  415.   METHOD drill_down.
  416.     DATA:
  417.       lt_budat_r TYPE RANGE OF bkpf-budat,
  418.       lv_posid   TYPE prps-posid,
  419.       lt_field   TYPE TABLE OF sval,
  420.       lv_rc.
  421.  
  422.     ASSIGN is_rep_line TO FIELD-SYMBOL(<ls_data>).
  423.     CHECK sy-subrc = 0.
  424.  
  425.     ASSIGN COMPONENT iv_fieldname OF STRUCTURE <ls_data> TO FIELD-SYMBOL(<lv_value>).
  426.     IF sy-subrc <> 0.
  427.       RETURN.
  428.     ENDIF.
  429.  
  430.     IF <lv_value> IS INITIAL.
  431.       RETURN.
  432.     ENDIF.
  433.  
  434.     CASE iv_fieldname.
  435.       WHEN 'RCNTR'.
  436. *МВЗ
  437.         SET PARAMETER ID: 'CAC' FIELD mv_kokrs,
  438.                           'KOS' FIELD <lv_value>.
  439.         CALL TRANSACTION 'KS03' WITH AUTHORITY-CHECK     "#EC CI_CALLTA
  440.              AND SKIP FIRST SCREEN.
  441.       WHEN 'AUFNR'.
  442. *Заказ
  443.         SET PARAMETER ID: 'ANR' FIELD <lv_value>.
  444.         CALL TRANSACTION 'KO03' WITH AUTHORITY-CHECK     "#EC CI_CALLTA
  445.              AND SKIP FIRST SCREEN.
  446.       WHEN 'PS_PSP_PNR'.
  447. *СПП
  448.         SET PARAMETER ID: 'CAC' FIELD mv_kokrs,
  449.                           'PDB' FIELD '000000000001'.
  450.  
  451.         CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'
  452.           EXPORTING
  453.             INPUT  = <lv_value>
  454.           IMPORTING
  455.             OUTPUT = lv_posid.
  456.  
  457.         SUBMIT rkpep003                                  "#EC CI_SUBMIT
  458.         WITH cn_pspnr = lv_posid
  459.         WITH r_budat  IN lt_budat_r[]
  460.          AND RETURN.
  461.  
  462.       WHEN 'LIFNR' OR 'KUNNR' OR 'COR_PARTN'.
  463. *Партнер
  464.         show_partnr( <lv_value> ).
  465.  
  466.       WHEN 'RACCT'.
  467. *Счет
  468.         SET PARAMETER ID: 'BUK' FIELD ms_reppar-bukrs,
  469.                           'SAK' FIELD <lv_value>.
  470.         CALL TRANSACTION 'FS00' WITH AUTHORITY-CHECK     "#EC CI_CALLTA
  471.              AND SKIP FIRST SCREEN.
  472.       WHEN 'ANLN1'.
  473. *ОС
  474.         SET PARAMETER ID: 'BUK' FIELD ms_reppar-bukrs,
  475.                           'AN1' FIELD <lv_value>.
  476.         CALL TRANSACTION 'AS03' WITH AUTHORITY-CHECK     "#EC CI_CALLTA
  477.              AND SKIP FIRST SCREEN.
  478.       WHEN 'MATNR'.
  479. *Материал
  480.         SET PARAMETER ID: 'MAT' FIELD <lv_value>.
  481.         CALL TRANSACTION 'MM03' WITH AUTHORITY-CHECK     "#EC CI_CALLTA
  482.              AND SKIP FIRST SCREEN.
  483.  
  484.       WHEN OTHERS.
  485.         lt_field = VALUE #( ( tabname = 'ACDOCA' fieldname = 'RLDNR' field_obl = abap_true ) ).
  486.         CALL FUNCTION 'POPUP_GET_VALUES'
  487.           EXPORTING
  488.             popup_title = 'Введите регистр'
  489.           IMPORTING
  490.             RETURNCODE  = lv_rc
  491.           TABLES
  492.             FIELDS      = lt_field.
  493.         CHECK lv_rc IS INITIAL.
  494.         READ TABLE lt_field INTO DATA(ls_rldnr) WITH KEY fieldname = 'RLDNR'.
  495.         SET PARAMETER ID: 'BUK' FIELD ms_reppar-bukrs,
  496.                           'GJR' FIELD <ls_data>-gjahr,
  497.                           'BLN' FIELD <ls_data>-belnr,
  498.                           'GLN' FIELD ls_rldnr-VALUE.
  499.         CALL TRANSACTION 'FB03L' WITH AUTHORITY-CHECK    "#EC CI_CALLTA
  500.              AND SKIP FIRST SCREEN.
  501.     ENDCASE.
  502.  
  503.   ENDMETHOD.
  504.  
  505.  
  506. * <SIGNATURE>---------------------------------------------------------------------------------------+
  507. * | Instance Private Method ZCL_TX_PTCMP->EXCEL_REP
  508. * +-------------------------------------------------------------------------------------------------+
  509. * +--------------------------------------------------------------------------------------</SIGNATURE>
  510.   METHOD excel_rep.
  511.     DATA:
  512.       ls_context    TYPE zstx_ptdata_cmp_xls,
  513.       lo_format_xls TYPE REF TO zcl_ra_report_format_xls3.
  514. *      lx_err        TYPE REF TO zcx_ra_slog.
  515.  
  516.     fill_header_xls( IMPORTING es_data = ls_context-header ).
  517.     fill_table_xls( IMPORTING et_table = ls_context-items
  518.                               es_itogo = ls_context-itogo ).
  519.     TRY.
  520.         lo_format_xls = NEW #( ).
  521.         lo_format_xls->zif_ra_report_format~run(
  522.             ia_data     = ls_context
  523.             iv_template = gcov_template
  524.             iv_open     = abap_true ).
  525.       CATCH zcx_ra_slog INTO DATA(lx_err).
  526.         lx_err->show_as_popup( ).
  527.     ENDTRY.
  528.   ENDMETHOD.
  529.  
  530.  
  531. * <SIGNATURE>---------------------------------------------------------------------------------------+
  532. * | Instance Private Method ZCL_TX_PTCMP->FILL_HEADER_XLS
  533. * +-------------------------------------------------------------------------------------------------+
  534. * | [<---] ES_DATA                        TYPE        ZSTX_PTDATA_CMP_HEADER_XLS
  535. * +--------------------------------------------------------------------------------------</SIGNATURE>
  536.   METHOD fill_header_xls.
  537.     DATA:
  538.       lt_month_name TYPE TABLE OF t247,
  539.       lv_tax_und    TYPE text30.
  540.  
  541.     CLEAR es_data.
  542.  
  543.     es_data = VALUE #(
  544. *Время
  545.               sel_time = |{ mv_sel_time TIME = USER }|
  546. *Дата
  547.               sel_date = |{ mv_sel_date DATE = USER }|
  548. *Год
  549.               ryear    = ms_reppar-ryear ).
  550.  
  551. *УНД
  552.     IF ms_reppar-rztaxund-HIGH IS NOT INITIAL.
  553.       lv_tax_und = ms_reppar-rztaxund-HIGH.
  554. *      SHIFT lv_tax_und LEFT DELETING LEADING '0'.
  555.       lv_tax_und = SHIFT_LEFT( val = lv_tax_und sub = '0' ).
  556.       es_data-taxund = |{ 'Уточнение №'(e01) }{ lv_tax_und }|.
  557.     ENDIF.
  558.  
  559. *Период
  560.     CALL FUNCTION 'MONTH_NAMES_GET'
  561.       TABLES
  562.         month_names           = lt_month_name
  563.       EXCEPTIONS
  564.         month_names_not_found = 1
  565.         OTHERS                = 2.
  566.     IF sy-subrc <> 0.
  567.       CLEAR lt_month_name[].
  568.     ENDIF.
  569.  
  570.     es_data-poper = lt_month_name[ mnr = ms_reppar-rpoper-LOW+1 ]-ltx. "#EC CI_STDSEQ
  571.     IF ms_reppar-rpoper-HIGH IS NOT INITIAL AND ms_reppar-rpoper-HIGH <> ms_reppar-rpoper-LOW.
  572.       es_data-poper = |{ es_data-poper } - { lt_month_name[ mnr = ms_reppar-rpoper-HIGH+1 ]-ltx }|. "#EC CI_STDSEQ
  573.     ENDIF.
  574.  
  575. *Налогоплательщик
  576.     es_data-buktxt = zcl_tx_utils=>get_excel_report_bukrs_txt( ms_reppar-bukrs ).
  577.  
  578. * Имя пользователя
  579.     es_data-username = get_creator( ).
  580.   ENDMETHOD.
  581.  
  582.  
  583. * <SIGNATURE>---------------------------------------------------------------------------------------+
  584. * | Instance Private Method ZCL_TX_PTCMP->FILL_TABLE_XLS
  585. * +-------------------------------------------------------------------------------------------------+
  586. * | [<---] ET_TABLE                       TYPE        ZTTTX_PTDATA_CMP_ITEM_XLS
  587. * | [<---] ES_ITOGO                       TYPE        ZSTX_PTDATA_CMP_ITEM_XLS
  588. * +--------------------------------------------------------------------------------------</SIGNATURE>
  589.   METHOD fill_table_xls.
  590.     CLEAR:
  591.       et_table, es_itogo.
  592.  
  593.     LOOP AT mt_data ASSIGNING FIELD-SYMBOL(<ls_data>).
  594.       APPEND INITIAL LINE TO et_table ASSIGNING FIELD-SYMBOL(<ls_table>).
  595.  
  596.       <ls_table> = CORRESPONDING #( <ls_data> ).
  597.       <ls_table>-znp = sy-tabix.
  598.  
  599. *Контрагент
  600.       IF <ls_data>-lifnr IS NOT INITIAL.
  601.         <ls_table>-partn = <ls_data>-lifnr.
  602.       ELSEIF <ls_data>-kunnr IS NOT INITIAL.
  603.         <ls_table>-partn = <ls_data>-kunnr.
  604.       ELSE.
  605.         <ls_table>-partn = <ls_data>-cor_partn.
  606.       ENDIF.
  607.  
  608.       es_itogo-hsl_ias = es_itogo-hsl_ias + <ls_data>-hsl_ias.
  609.       es_itogo-hsl_ras = es_itogo-hsl_ras + <ls_data>-hsl_ras.
  610.       es_itogo-hsl_tax = es_itogo-hsl_tax + <ls_data>-hsl_tax.
  611.  
  612.       es_itogo-zz_taxdif_ias = es_itogo-zz_taxdif_ias + <ls_data>-zz_taxdif_ias.
  613.       es_itogo-zz_taxdif_pbu = es_itogo-zz_taxdif_pbu + <ls_data>-zz_taxdif_pbu.
  614.     ENDLOOP.
  615.   ENDMETHOD.
  616.  
  617. * <SIGNATURE>---------------------------------------------------------------------------------------+
  618. * | Instance Private Method ZCL_TX_PTCMP->GET_CREATOR
  619. * +-------------------------------------------------------------------------------------------------+
  620. * | [<-()] RV_FIO                         TYPE        TEXT100
  621. * +--------------------------------------------------------------------------------------</SIGNATURE>
  622.   METHOD get_creator.
  623. *Поиск составителя
  624.     DATA:
  625.       ls_addr3_val TYPE addr3_val.
  626.  
  627.     CLEAR: rv_fio.
  628.  
  629.     CALL FUNCTION 'SUSR_USER_ADDRESS_READ'
  630.       EXPORTING
  631.         user_name    = sy-uname
  632.       IMPORTING
  633.         user_address = ls_addr3_val
  634.       EXCEPTIONS
  635.         OTHERS       = 0.
  636.  
  637.     rv_fio = CONV #( ls_addr3_val-name_text ).
  638.  
  639.   ENDMETHOD.
  640.  
  641.  
  642. * <SIGNATURE>---------------------------------------------------------------------------------------+
  643. * | Instance Private Method ZCL_TX_PTCMP->ON_USER_COMMAND
  644. * +-------------------------------------------------------------------------------------------------+
  645. * | [--->] EV_COMMAND_NAME                LIKE
  646. * +--------------------------------------------------------------------------------------</SIGNATURE>
  647.   METHOD on_user_command.
  648.     CASE ev_command_name.
  649.       WHEN 'EXCEL'.
  650.         excel_rep( ).
  651.     ENDCASE.
  652.   ENDMETHOD.
  653.  
  654.  
  655. * <SIGNATURE>---------------------------------------------------------------------------------------+
  656. * | Instance Private Method ZCL_TX_PTCMP->READ_DATA
  657. * +-------------------------------------------------------------------------------------------------+
  658. * +--------------------------------------------------------------------------------------</SIGNATURE>
  659.   METHOD read_data.
  660.     CLEAR: mt_data.
  661.  
  662. *Переменные даты и времени выборки
  663.     mv_sel_date = sy-datum.
  664.     mv_sel_time = sy-uzeit.
  665.  
  666.     " Выбор документов - основные
  667.     IF mv_sbeg = abap_true.
  668.       IF ms_reppar-rpoper-OPTION = 'EQ'.
  669.         ms_reppar-rpoper-OPTION = 'BT'.
  670.         ms_reppar-rpoper-HIGH = 1.
  671.       ENDIF.
  672.       ms_reppar-rpoper-LOW = 0.
  673.     ENDIF.
  674.  
  675. *Выбор данных
  676.     SELECT *
  677.       APPENDING CORRESPONDING FIELDS OF TABLE @mt_data
  678.       FROM zc_ca_tax_ptdata_cmp
  679.       WHERE rbukrs      = @ms_reppar-bukrs
  680.         AND gjahr       = @ms_reppar-ryear
  681.         AND poper       BETWEEN @ms_reppar-rpoper-LOW AND @ms_reppar-rpoper-HIGH
  682.         AND zzcorgjr    = @SPACE
  683.         AND zzcorprd    = @SPACE
  684.         AND racct       IN @ms_selcrit-r_racct
  685.         AND rcntr       IN @ms_selcrit-r_rcntr
  686.         AND aufnr       IN @ms_selcrit-r_aufnr
  687.         AND ps_psp_pnr  IN @ms_selcrit-r_pspnr
  688.         AND ( lifnr     IN @ms_selcrit-r_vptnr
  689.            OR kunnr     IN @ms_selcrit-r_vptnr
  690.            OR cor_partn IN @ms_selcrit-r_vptnr )
  691.         AND zuonr       IN @ms_selcrit-r_zuonr
  692.         AND anln1       IN @ms_selcrit-r_anln1
  693.         AND matnr       IN @ms_selcrit-r_matnr
  694.         AND werks       IN @ms_selcrit-r_werks
  695.         AND zztaxdif    IN @ms_selcrit-r_taxdif
  696.         AND zz_diffcode IN @ms_selcrit-r_difty
  697.         AND blart       IN @ms_selcrit-r_blart
  698.         AND budat       IN @ms_selcrit-r_budat
  699.         AND belnr       IN @ms_selcrit-r_belnr
  700.         AND cpudt       IN @ms_selcrit-r_cpudt
  701.       ORDER BY rbukrs,gjahr,belnr,docln ##TOO_MANY_ITAB_FIELDS.
  702.     LOOP AT mt_data ASSIGNING FIELD-SYMBOL(<fs>).
  703.       <fs>-zz_taxdif_pbu = <fs>-hsl_ras - <fs>-hsl_tax.
  704.       <fs>-zz_taxdif_ias = <fs>-hsl_ias - <fs>-hsl_tax.
  705.     ENDLOOP.
  706.  
  707.     IF LINES( mt_data[] ) > mv_nmax_it.
  708. *Выбранные данные ограничены указанным количеством записей
  709.       MESSAGE w002 INTO zcl_ra_slog=>mv_dummy.
  710.       mi_log->add_msg( ).
  711.  
  712.       DATA(lv_rows) = CONV sy-tabix( mv_nmax_it + 1 ).
  713.       DELETE mt_data INDEX lv_rows.                     "#EC CI_SEL_DEL
  714.     ENDIF.
  715.  
  716.     IF mt_data[] IS INITIAL.
  717.       MESSAGE e001 INTO zcl_ra_slog=>mv_dummy.
  718.       mi_log->add_msg( ).
  719.       RETURN.
  720.     ENDIF.
  721.  
  722. *Сторнируемые и сторнирующие документы
  723.     storno_docs( ).
  724.  
  725. *Полномочия на счет
  726.     auth_racct( ).
  727.  
  728.   ENDMETHOD.
  729.  
  730.  
  731. * <SIGNATURE>---------------------------------------------------------------------------------------+
  732. * | Instance Private Method ZCL_TX_PTCMP->SHOW_PARTNR
  733. * +-------------------------------------------------------------------------------------------------+
  734. * | [--->] IV_PARTNR                      TYPE        LIFNR
  735. * +--------------------------------------------------------------------------------------</SIGNATURE>
  736.   METHOD show_partnr.
  737.     SET PARAMETER ID 'BUK' FIELD ms_reppar-bukrs.
  738.  
  739.     DATA(lo_request) = NEW cl_bupa_navigation_request( ).
  740.     lo_request->set_partner_number( iv_partnr ).
  741.     lo_request->set_bupa_activity( '03' ).
  742.  
  743.     lo_request->set_maintenance_id( 'B' ).
  744.     DATA(lo_options) = NEW cl_bupa_dialog_joel_options( ).
  745.     lo_options->set_locator_visible( SPACE ).
  746.  
  747.     CALL METHOD cl_bupa_dialog_joel=>start_with_navigation
  748.       EXPORTING
  749.         iv_request              = lo_request
  750.         iv_options              = lo_options
  751.         iv_in_new_internal_mode = abap_true
  752.       EXCEPTIONS
  753.         already_started         = 1
  754.         not_allowed             = 2
  755.         OTHERS                  = 3.
  756.     IF sy-subrc <> 0.
  757.     ENDIF.
  758.   ENDMETHOD.
  759.  
  760.  
  761. * <SIGNATURE>---------------------------------------------------------------------------------------+
  762. * | Instance Public Method ZCL_TX_PTCMP->SHOW_REPORT
  763. * +-------------------------------------------------------------------------------------------------+
  764. * | [--->] IV_VARREPORT                   TYPE        SY-REPID(optional)
  765. * | [--->] IV_VARHANDLE                   TYPE        SLIS_HANDL (default ='JNO')
  766. * +--------------------------------------------------------------------------------------</SIGNATURE>
  767.   METHOD show_report.
  768.     DATA ls_variant TYPE disvariant.
  769.  
  770.     mo_alv = NEW #( io_model = me  ).
  771.  
  772.     read_data( ).
  773.  
  774.     IF mi_log->has_messages( iv_has_any = abap_true ) = abap_true.
  775.       mi_log->show_as_popup( ).
  776.       mi_log->CLEAR( ).
  777.     ENDIF.
  778.  
  779.     IF mt_data[] IS INITIAL.
  780.       MESSAGE s001. "Данные не выбраны
  781.       RETURN.
  782.     ENDIF.
  783.  
  784.     TRY.
  785.         " Обработчик событий
  786.         SET HANDLER: me->on_user_command FOR mo_alv.
  787.  
  788.         mo_alv->zif_ra_alv~set_html( iv_set_top_of_page    = abap_true
  789.                                      iv_top_of_page_height = 6 ).
  790.  
  791.         ls_variant-REPORT = COND #( WHEN iv_varreport IS NOT INITIAL
  792.                                      THEN iv_varreport ELSE sy-cprog ).
  793.         ls_variant-HANDLE = iv_varhandle.
  794.  
  795.         mo_alv->zif_ra_alv~alv_show( it_a_table = mt_data
  796.                                      is_variant = ls_variant
  797.                                      iv_title   = TEXT-t01 ).
  798.       CATCH zcx_ra_slog INTO DATA(lx_err).
  799.         lx_err->show_as_popup( ).
  800.     ENDTRY.
  801.   ENDMETHOD.
  802.  
  803.  
  804. * <SIGNATURE>---------------------------------------------------------------------------------------+
  805. * | Instance Private Method ZCL_TX_PTCMP->STORNO_DOCS
  806. * +-------------------------------------------------------------------------------------------------+
  807. * +--------------------------------------------------------------------------------------</SIGNATURE>
  808.   METHOD storno_docs.
  809.     IF abap_true NOT IN ms_selcrit-xrevers[] OR ms_selcrit-xrevers[] IS INITIAL.
  810.       RETURN.
  811.     ENDIF.
  812.  
  813.     LOOP AT mt_data ASSIGNING FIELD-SYMBOL(<ls_data_x>)
  814.                     USING KEY xreversed WHERE xreversed = abap_true.
  815.       READ TABLE mt_data ASSIGNING FIELD-SYMBOL(<ls_data>)
  816.                     WITH TABLE KEY storno_key
  817.                     COMPONENTS awtyp_rev = <ls_data_x>-awtyp
  818.                                aworg_rev = <ls_data_x>-aworg
  819.                                awref_rev = <ls_data_x>-awref.
  820. *                               hsl       = - <ls_data_x>-hsl.
  821.       CHECK sy-subrc = 0.
  822.       CHECK <ls_data_x>-budat(6) = <ls_data>-budat(6).
  823.  
  824.       DELETE mt_data USING KEY primary_key
  825.                      WHERE rbukrs = <ls_data_x>-rbukrs
  826.                        AND gjahr  = <ls_data_x>-gjahr
  827.                        AND belnr  = <ls_data_x>-belnr
  828.                        AND docln  = <ls_data_x>-docln.
  829.  
  830.       DELETE mt_data USING KEY primary_key
  831.                      WHERE rbukrs = <ls_data>-rbukrs
  832.                        AND gjahr  = <ls_data>-gjahr
  833.                        AND belnr  = <ls_data>-belnr
  834.                        AND docln  = <ls_data>-docln.
  835.     ENDLOOP.
  836.  
  837.   ENDMETHOD.
  838.  
  839.  
  840. * <SIGNATURE>---------------------------------------------------------------------------------------+
  841. * | Instance Public Method ZCL_TX_PTCMP->TOP_OF_PAGE
  842. * +-------------------------------------------------------------------------------------------------+
  843. * | [--->] IO_DYNDOC_ID                   TYPE REF TO CL_DD_DOCUMENT
  844. * | [--->] IV_TABLE_INDEX                 TYPE        SYINDEX
  845. * +--------------------------------------------------------------------------------------</SIGNATURE>
  846.   METHOD top_of_page.
  847.  
  848.     io_dyndoc_id->add_text( text = CONV #( |БЕ| )
  849.                             sap_emphasis = 'Strong'  ).
  850.     io_dyndoc_id->add_gap( WIDTH = 1 ).
  851.     io_dyndoc_id->add_text( text = CONV #( |{ ms_reppar-bukrs } { mv_butxt },| ) ).
  852.     io_dyndoc_id->add_gap( WIDTH = 2 ).
  853.  
  854.     io_dyndoc_id->add_text( text = CONV #( |Год| )
  855.                             sap_emphasis = 'Strong'  ).
  856.     io_dyndoc_id->add_gap( WIDTH = 1 ).
  857.     io_dyndoc_id->add_text( text = CONV #( |{ ms_reppar-ryear },| ) ).
  858.     io_dyndoc_id->add_gap( WIDTH = 2 ).
  859.  
  860.     io_dyndoc_id->add_text( text = CONV #( |Период с| )
  861.                             sap_emphasis = 'Strong'  ).
  862.     io_dyndoc_id->add_gap( WIDTH = 1 ).
  863.     io_dyndoc_id->add_text( text = CONV #( |{ ms_reppar-rpoper-LOW }| ) ).
  864.     io_dyndoc_id->add_gap( WIDTH = 1 ).
  865.     io_dyndoc_id->add_text( text = CONV #( |по| )
  866.                             sap_emphasis = 'Strong'  ).
  867.     io_dyndoc_id->add_gap( WIDTH = 1 ).
  868.     io_dyndoc_id->add_text( text = CONV #( |{ ms_reppar-rpoper-HIGH }| ) ).
  869.  
  870.   ENDMETHOD.
  871. ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement