Текущее время: Вт, июл 22 2025, 09:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Загрузка объектов разграничения
СообщениеДобавлено: Вт, дек 15 2015, 14:57 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, сен 02 2014, 11:50
Сообщения: 60
Добрый день, какие существуют способы массовой загрузки объектов разграничения (тр. ACACTREE01 - Periodic Processing -> Manual Accruals -> Create Accrual Objects)?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка объектов разграничения
СообщениеДобавлено: Ср, дек 16 2015, 19:21 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вс, мар 21 2010, 15:48
Сообщения: 180
Откуда: Собянин-сити
Пол: Мужской
В свое время писал вот такую прогу, пользуйся. немного докрутишь под себя и все будет гуд.
В личку могу в нормальном виде скинуть код со структурами.

Code:
*&---------------------------------------------------------------------*
*& Report  Z_FI_BP_OST
*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*  Название        : Программа массового ввода ACC
*
***  Цель: Программа массового ввода ACC
*&---------------------------------------------------------------------*


report z_fi_bp_ost.

types ty_t_acc type table of z_salv_zacc.

tables: t001.




data gt_data type ty_t_acc.
data ok_code type syucomm.
class lcl_event definition deferred.
data g_container type ref to cl_gui_docking_container.
data g_grid type ref to cl_gui_alv_grid.
data g_error.
data gt_return type bapiret2_t.
data g_log type ref to zcl_msg_log.





************************************************************************









selection-screen begin of block par with frame.

parameter sp_acr type tacac_objtyp-acac_objtype.
parameter sp_bldat type bkpf-bldat default sy-datum obligatory.
parameter sp_fname type rlgrap-filename obligatory.
selection-screen end of block par.



at selection-screen output.
   set cursor field 'SP_FNAME'.

at selection-screen on value-request for sp_fname.
   perform get_fname.


************************************************************************



start-of-selection.

  perform free.
   perform select_data.

  call screen 9100.



************************************************************************



class lcl_event definition.

  public section.

    class-methods:
     handle_double_click
             for event double_click of cl_gui_alv_grid
                 importing e_row e_column es_row_no,
     handle_toolbar
           for event toolbar of cl_gui_alv_grid
           importing e_object e_interactive,

    handle_user_command
           for event user_command of cl_gui_alv_grid
           importing e_ucomm.



*  PRIVATE SECTION.


endclass. "lcl_event DEFINITION


*----------------------------------------------------------------------*
*       CLASS lcl_event IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*


class lcl_event implementation.

  method handle_double_click.
     perform double_click using e_row
                                e_column
                                es_row_no.
     "sender.
   endmethod.                                               "handle_double_click

  method handle_toolbar.

    data: s_toolbar type stb_button,
           separator type tb_btype value 3,
           s_btnmenu type stb_btnmnu.

    delete e_object->mt_toolbar where function eq :


*    '&MB_SUM',
*    '&MB_SUBTOT',


     '&&SEP05',
     '&PRINT_BACK',
     '&MB_VIEW',
     '&&SEP06',
     '&GRAPH',
     '&&SEP07',
     '&INFO',


**


     '&CHECK',
     '&REFRESH',
     '&&SEP01',
     '&LOCAL&CUT',
     '&LOCAL©',
     '&LOCAL&PASTE',
     '&LOCAL&UNDO',
     '&&SEP02',
     '&LOCAL&APPEND',
     '&LOCAL&INSERT_ROW',
     '&LOCAL&DELETE_ROW',
     '&LOCAL©_ROW',
     '&&SEP03'.

    clear s_toolbar.
     move   separator to s_toolbar-butn_type.
     append s_toolbar to e_object->mt_toolbar.

    clear s_toolbar.
     move 'CREATE'              to s_toolbar-function.
     move icon_create           to s_toolbar-icon.
     move 'Создать объекты ACC' to s_toolbar-quickinfo.
     move 'Создать ACC'         to s_toolbar-text.
     append s_toolbar to e_object->mt_toolbar.

  endmethod.                                               "handle_toolbar


  method handle_user_command.

    case e_ucomm.
       when 'CREATE'.
         perform create_acc.
         perform refresh_alv.



*        IF g_error = abap_false.
**          LEAVE TO SCREEN 0.
*        ENDIF.


     endcase.


  endmethod.                                               "handle_user_command



endclass. "lcl_event IMPLEMENTATION




*&---------------------------------------------------------------------*
*&      Form  double_click
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_ROW      text
*      -->P_E_COLUMN   text
*      -->P_ES_ROW_NO  text
*----------------------------------------------------------------------*


form double_click using p_e_row type lvc_s_row
                             p_e_column type lvc_s_col
                             p_es_row_no type lvc_s_roid.

  data:
         l_ref_key type ace_ref_key.
   field-symbols: <fw> like line of gt_data.

  check p_e_row-rowtype is initial.

  read table gt_data assigning <fw> index p_e_row-index.
   check sy-subrc = 0.

  case p_e_column-fieldname.

    when 'ACAC_OBJNUMBER'.

      check <fw>-acac_objnumber is not initial.
       clear: l_ref_key.
       l_ref_key = <fw>-acac_objnumber.

      submit acac_basisdata_sel_for_main
            with p_keydte = <fw>-vality_from
            with so_bukrs-low = sp_bukrs
            with so_objnm-low = l_ref_key
            and return.


    when 'ICON'.
       check <fw>-acac_objnumber is not initial.
       clear: l_ref_key.
       l_ref_key = <fw>-acac_objnumber.

      submit acac_basisdata_sel_for_main
            with p_keydte = <fw>-vality_from
            with so_bukrs-low = sp_bukrs
            with so_objnm-low = l_ref_key
            and return.


    when  others.

  endcase.

endform. "double_click


*&---------------------------------------------------------------------*
*&      Form  refresh_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*


form refresh_alv.
   data stable type lvc_s_stbl.
   stable-row = 'X'.
   stable-col = 'X'.

  call method g_grid->refresh_table_display
     exporting
       is_stable = stable
     exceptions
       finished  = 1
       others    = 2.



*  CLEAR: save_code, save_code2.

*   call method cl_gui_cfw=>flush.



endform. "refresh_alv



*&---------------------------------------------------------------------*
*&      Form  GET_FNAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*


form get_fname .

  data rc      type i.
   data t_fname type filetable.
   data s_fname type file_table.

  call method cl_gui_frontend_services=>file_open_dialog


*    EXPORTING
*     window_title         =
*      default_extension    =
*      default_file_name    =
*     with_encoding        =
*     file_filter          =
*     initial_directory    =


     changing
       file_table           = t_fname
       rc                   = rc


*     user_action          =
*     file_encoding        =


     exceptions
       file_open_dialog_failed = 1
       cntl_error              = 2
       error_no_gui            = 3
       not_supported_by_gui    = 4
       others                  = 5.
   if sy-subrc ne 0.
     return.
   endif.

  if rc = 1.
     read table t_fname into sp_fname index 1.
   endif.

endform. " GET_FNAME


*&---------------------------------------------------------------------*
*&      Form  SELECT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*


form select_data .

  field-symbols <data> type zec_salv_zacc.


 

Выборка из EXCEL


  loop at gt_data assigning <data>.

    <data>-bukrs = sp_bukrs.

    call function 'CONVERSION_EXIT_CUNIT_INPUT'
       exporting
         input  = <data>-unit_b
       importing
         output = <data>-unit_b.

    call function 'CONVERSION_EXIT_CUNIT_INPUT'
       exporting
         input  = <data>-unit_n
       importing
         output = <data>-unit_n.

    <data>-bldat = sp_bldat.


  endloop.

endform. " SELECT_DATA


*&---------------------------------------------------------------------*
*&      Module  STATUS_9100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*


module status_9100 output.
   set pf-status 'MAIN9100'.
   set titlebar 'MAIN9100'.

endmodule. " STATUS_9100 OUTPUT


*&---------------------------------------------------------------------*
*&      Module  EXIT_COMMAND_9100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*


module exit_command_9100 input.

  case ok_code.
     when 'CANCEL'.
       leave to screen 0.
   endcase.

endmodule. " EXIT_COMMAND_9100 INPUT


*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*


module user_command_9100 input.

  case ok_code.
     when 'BACK' or 'EXIT' or 'CANCEL'.
       leave to screen 0.
   endcase.

endmodule. " USER_COMMAND_9100 INPUT


*&---------------------------------------------------------------------*
*&      Module  ALV_OUTPUT  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*


module alv_output output.

  if g_container is not bound.
     perform alv_output.
   endif.

endmodule. " ALV_OUTPUT OUTPUT


*&---------------------------------------------------------------------*
*&      Form  CREATE_OS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*


form create_acc .

  data s_return type bapiret2.

  if g_log is bound.
     g_log->clear_log( ).
   else.
     create object g_log.
   endif.
   refresh gt_return.
   clear g_error.

  perform acc_create.



endform.



*&---------------------------------------------------------------------*
*&      Form  ALV_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*


form alv_output .


  create object g_container
     exporting


*      repid                       = sy-repid
*      dynnr                       = sy-dynnr


       side                        = cl_gui_docking_container=>dock_at_top
       extension                   = cl_gui_docking_container=>ws_maximizebox


*     ratio                       =


     exceptions
       cntl_error                  = 1
       cntl_system_error           = 2
       create_error                = 3
       lifetime_error              = 4
       lifetime_dynpro_dynpro_link = 5
       others                      = 6.
   if sy-subrc ne 0.


* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


   endif.


  check g_container is bound.
   create object g_grid
     exporting
       i_parent = g_container.

  data t_fcat   type lvc_t_fcat.
   data s_layout type lvc_s_layo.
   field-symbols <fcat> type lvc_s_fcat.

  call function 'LVC_FIELDCATALOG_MERGE'
     exporting
       i_buffer_active        = ''
       i_structure_name       = 'Z_SALV_ZACC'
       i_bypassing_buffer     = 'X'
     changing
       ct_fieldcat            = t_fcat
     exceptions
       inconsistent_interface = 1
       program_error          = 2
       others                 = 3.

  loop at t_fcat assigning <fcat>.
     case <fcat>-fieldname.

      when 'ACCRULE_B'.
         <fcat>-reptext   = 'Предписание по отчетности БУ'.
         <fcat>-scrtext_l = 'Предписание по отчетности БУ'.
         <fcat>-scrtext_m = 'Предписание по отчетности БУ'.
         <fcat>-scrtext_s = 'Предписание по отчетности БУ'.

      when 'AMOUNT_B'.
         <fcat>-reptext   = 'Общая сумма БУ'.
         <fcat>-scrtext_l = 'Общая сумма БУ'.
         <fcat>-scrtext_m = 'Предписание БУ'.
         <fcat>-scrtext_s = 'Предписание БУ'.

      when 'CURRENCY_B'.
         <fcat>-reptext   = 'Валюта БУ'.
         <fcat>-scrtext_l = 'Валюта БУ'.
         <fcat>-scrtext_m = 'Валюта БУ'.
         <fcat>-scrtext_s = 'Валюта БУ'.

      when 'QUANTITY_B'.
         <fcat>-reptext   = 'Колич БУ'.
         <fcat>-scrtext_l = 'Колич БУ'.
         <fcat>-scrtext_m = 'Колич БУ'.
         <fcat>-scrtext_s = 'Колич БУ'.
       when 'UNIT_B'.
         <fcat>-reptext   = 'Ед.из БУ'.
         <fcat>-scrtext_l = 'Ед.из БУ'.
         <fcat>-scrtext_m = 'Ед.из БУ'.
         <fcat>-scrtext_s = 'Ед.из БУ'.
       when 'ACRMETHOD_B'.
         <fcat>-reptext   = 'Мет.разг БУ'.
         <fcat>-scrtext_l = 'Мет.разг БУ'.
         <fcat>-scrtext_m = 'Мет.разг БУ'.
         <fcat>-scrtext_s = 'Мет.разг БУ'.

      when 'ACCRULE_N'.
         <fcat>-reptext   = 'Предписание по отчетности НУ'.
         <fcat>-scrtext_l = 'Предписание по отчетности НУ'.
         <fcat>-scrtext_m = 'Предписание по отчетности НУ'.
         <fcat>-scrtext_s = 'Предписание по отчетности НУ'.

      when 'AMOUNT_N'.
         <fcat>-reptext   = 'Общая сумма НУ'.
         <fcat>-scrtext_l = 'Общая сумма НУ'.
         <fcat>-scrtext_m = 'Предписание НУ'.
         <fcat>-scrtext_s = 'Предписание НУ'.

      when 'CURRENCY_N'.
         <fcat>-reptext   = 'Валюта НУ'.
         <fcat>-scrtext_l = 'Валюта НУ'.
         <fcat>-scrtext_m = 'Валюта НУ'.
         <fcat>-scrtext_s = 'Валюта НУ'.

      when 'QUANTITY_N'.
         <fcat>-reptext   = 'Колич НУ'.
         <fcat>-scrtext_l = 'Колич НУ'.
         <fcat>-scrtext_m = 'Колич НУ'.
         <fcat>-scrtext_s = 'Колич НУ'.
       when 'UNIT_N'.
         <fcat>-reptext   = 'Ед.из НУ'.
         <fcat>-scrtext_l = 'Ед.из НУ'.
         <fcat>-scrtext_m = 'Ед.из НУ'.
         <fcat>-scrtext_s = 'Ед.из НУ'.
       when 'ACRMETHOD_N'.
         <fcat>-reptext   = 'Мет.разг НУ'.
         <fcat>-scrtext_l = 'Мет.разг НУ'.
         <fcat>-scrtext_m = 'Мет.разг НУ'.
         <fcat>-scrtext_s = 'Мет.разг НУ'.
       when 'ZLIFNR'.
         <fcat>-reptext   = 'Контрагент'.
         <fcat>-scrtext_l = 'Контрагент'.
         <fcat>-scrtext_m = 'Контрагент'.
         <fcat>-scrtext_s = 'Контрагент'.
       when 'ZDZUONR'.
         <fcat>-reptext   = 'Договор'.
         <fcat>-scrtext_l = 'Договор'.
         <fcat>-scrtext_m = 'Договор'.
         <fcat>-scrtext_s = 'Договор'.

      when 'ICON'.
         <fcat>-reptext   = 'Статус'.
         <fcat>-scrtext_l = 'Статус'.
         <fcat>-scrtext_m = 'Статус'.
         <fcat>-scrtext_s = 'Статус'.
       when others.

    endcase.
   endloop.

  s_layout-zebra      = 'X'.
   s_layout-sel_mode   = 'N'.
   s_layout-cwidth_opt = 'X'.

  data s_variant  type disvariant.

  s_variant-report  = sy-repid.


*  s_variant-variant = 'DEFAULT'.



  set handler lcl_event=>handle_toolbar for g_grid.
   set handler lcl_event=>handle_user_command for g_grid.
   set handler lcl_event=>handle_double_click for  g_grid.



*  CALL METHOD grid->set_variant( s_variant ).



  call method g_grid->set_table_for_first_display
     exporting
       i_bypassing_buffer            = 'X'
       i_buffer_active               = ''
       is_variant                    = s_variant
       i_save                        = 'A'
       is_layout                     = s_layout


*     it_toolbar_excluding          = t_exclude


     changing
       it_outtab                     = gt_data
       it_fieldcatalog               = t_fcat


*     it_sort                       = t_sort


     exceptions
       invalid_parameter_combination = 1
       program_error                 = 2
       too_many_lines                = 3
       others                        = 4.

  if sy-subrc ne 0.

  endif.

endform. " ALV_OUTPUT


*&---------------------------------------------------------------------*
*&      Form  FREE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*


form free .

  refresh gt_data.

  if g_grid is bound.
     g_grid->free( ).
   endif.

  if g_container is bound.
     g_container->free( ).
   endif.

endform. " FREE


*&---------------------------------------------------------------------*
*&      Form  ACC_CREATE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*


form acc_create .

  data:
         is_assignments type ace_assignments,
         it_accounts    type aceds_accounts_t,
         it_params      type aceds_param_t,
         id_effdate     type ace_effdate,
         is_post_params type aceps_manual_posting_params.

  data:
         ed_data_created  type flag,
         ed_data_changed  type flag,
         et_docitems      type aceps_ace_doc_extended_t,
         et_return        type bapiret2_t,
         et_accdoc_return type ace_accdoc_return_t.

  data: cs_object       type acac_object_header_ext,
         ct_object_items type aceds_items_t.
   data: wa_object_items type aceds_object_item_ext.
   data: wa_params       type aceds_object_parameter_ext.

  field-symbols <data> type zec_salv_zacc.

  loop at gt_data assigning <data> where acac_objnumber is initial.
     clear: cs_object, is_assignments, id_effdate, wa_object_items, ed_data_created,
     ed_data_changed .
     refresh: it_params[], et_return[], et_docitems[], et_accdoc_return[],ct_object_items[].

    "Заголовок
     cs_object-bukrs          = sp_bukrs.
     cs_object-acac_objtype   = sp_acr.
     cs_object-date_from      = sp_bldat.
     cs_object-text           = <data>-text.
     cs_object-acac_resperson = <data>-acac_resperson.
     cs_object-vality_from    = <data>-vality_from.
     cs_object-vality_to      = <data>-vality_to.

    "контировка
     is_assignments-costcenter = <data>-costcenter.
     "Дата
     id_effdate = sp_bldat.

    "


*    it_accounts-



    "позиции
     move:
            <data>-acrtype to wa_object_items-acrtype,
            <data>-accrule_b to wa_object_items-accrule,
            <data>-amount_b to wa_object_items-amount,
            <data>-currency_b to wa_object_items-currency,
            <data>-quantity_b to wa_object_items-quantity,
            <data>-unit_b to wa_object_items-unit,
            <data>-acrmethod_b to wa_object_items-acrmethod.
     append wa_object_items to ct_object_items[].

    clear: wa_object_items.
     move:   <data>-acrtype to wa_object_items-acrtype,
           <data>-accrule_n to wa_object_items-accrule,
           <data>-amount_n to wa_object_items-amount,
           <data>-currency_n to wa_object_items-currency,
           <data>-quantity_n to wa_object_items-quantity,
           <data>-unit_n to wa_object_items-unit,
           <data>-acrmethod_n to wa_object_items-acrmethod.


    append wa_object_items to ct_object_items[].

    "даты
     is_post_params-pstng_date = sp_bldat.
     is_post_params-fisc_year  = sp_bldat(4).
     is_post_params-fis_period = sp_bldat+4(2).

    " параметры

    if <data>-zlifnr is not initial.
       clear: wa_params.
       wa_params-param_name = 'ZLIFNR'.
       wa_params-content    = <data>-zlifnr.
       append wa_params to it_params.
     endif.

    if  <data>-zdzuonr is not initial.
       clear: wa_params.
       wa_params-param_name = 'ZDZUONR'.
       wa_params-content    = <data>-zdzuonr.
       append wa_params to it_params.
     endif.

    if <data>-zanln1 is not initial.
       clear: wa_params.
       wa_params-param_name = 'ZANLN1'.
       wa_params-content    = <data>-zanln1.
       append wa_params to it_params.


    endif.



    call function 'ACAC_OBJECT_MODIFY_EXT'
       exporting
         is_assignments   = is_assignments
         it_accounts      = it_accounts
         it_params        = it_params
         id_effdate       = id_effdate
         is_post_params   = is_post_params
         id_testrun       = abap_false
       importing
         ed_data_created  = ed_data_created
         ed_data_changed  = ed_data_changed
         et_docitems      = et_docitems
         et_return        = et_return
         et_accdoc_return = et_accdoc_return
       changing
         cs_object        = cs_object
         ct_object_items  = ct_object_items.


    break ecsflas01.
     <data>-acac_objnumber = cs_object-acac_objnumber.

    if cs_object-acac_objnumber is not initial and ed_data_created eq abap_true .
       <data>-icon = '@08@'.

      call function 'BAPI_TRANSACTION_COMMIT'
         exporting
           wait = 'X'.

    else.
       call function 'BAPI_TRANSACTION_ROLLBACK'.

      <data>-icon = '@0A@'.
     endif.

  endloop.


endform. " ACC_CREATE



*GUI Texts
*----------------------------------------------------------
* MAIN9100 --> Загрузка объектов ACC


*Selection texts
*----------------------------------------------------------
* SP_ACR         Вид объекта разграничения
* SP_BLDAT         Дата документа
* SP_BUKRS         Балансовая единица
* SP_FNAME         Имя файла


*Messages
*----------------------------------------------------------
*
* Message class: PM
*276   Нет полномочий для БЕ &1

_________________
"Sap"ЕР-подрывник...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка объектов разграничения
СообщениеДобавлено: Чт, дек 17 2015, 10:47 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, сен 02 2014, 11:50
Сообщения: 60
Скинь, пожалуйста))) Спасибо!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB