hub2002 написал(а):
Остатки тоже надо вычислять самому?
Можно примерчик?
Остатки вычислял из bsis,bsas,bsik bsak.
FIPI можно пользоваться только если полное выравнивание, для всех других случаев пакетник на fb05.
Вот пример кода.
Code:
*----------------------------------------------------------------------*
***INCLUDE Z_DEBTS_CLEAR.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form CLEARING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form clearing .
* data: lt_cell_tab type lvc_t_cell,
data:
lt_alv_cl type table of ZFI_fi_D01_alv1,
ls_alv_cl type ZFI_fi_D01_alv1.
data :l_dmbtr type dmbtr.
data: p_row type lvc_s_row.
field-symbols: <fs_alv_cl> type ZFI_fi_D01_alv1,
<fs_bsis_cl> type bsis.
field-symbols: <fs_row_cl> type ZFI_fi_D01_alv1.
field-symbols <fs_alv_tab3> like ZFI_fi_D01_alv3.
call method go_grid1->check_changed_data.
loop at gt_alv_tab1 assigning <fs_row_cl> where check = 'X'.
p_row-index = sy-tabix.
perform summ_clear using p_row.
perform sum_sal using p_row.
clear: l_dmbtr.
loop at gt_alv_tab3 assigning <fs_alv_tab3>.
l_dmbtr = l_dmbtr + <fs_alv_tab3>-dmbtr .
endloop.
if <fs_row_cl>-dmbtr3 eq l_dmbtr and l_dmbtr ne '0' .
perform start_posting using t_mode.
perform get_ftpost using <fs_row_cl>.
"gt_alv_tab2 таблица с позициями для выравнивания(1)
"gt_alv_tab3 таблица с позициями для выравнивания
elseif <fs_row_cl>-dmbtr3 ne l_dmbtr and l_dmbtr ne '0'.
perform call_fb05 using <fs_row_cl>.
endif.
endloop.
*PERFORM main.
perform prepare changing gs_db_debts.
perform select changing gs_db_debts.
perform refresh_alv.
* call screen '100'.
endform. " CLEARING
*&---------------------------------------------------------------------*
*& Form GET_FTPOST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_ftpost using ps_row type ZFI_fi_D01_alv1.
data: cl_date(10) type c.
data: l_auglv like t041a-auglv.
data l_skb1 like skb1.
data es_t041a like t041a.
field-symbols <fs_alv_tab2> like ZFI_fi_D01_alv2.
field-symbols <fs_alv_tab3> like ZFI_fi_D01_alv3.
refresh: gt_ftpost,l_t_ftclear.
write sp_bldat to cl_date dd/mm/yyyy.
perform ftpos using 'K' 1 'BKPF-BLDAT' cl_date.
write sp_postd to cl_date dd/mm/yyyy.
perform ftpos using 'K' 1 'BKPF-BUDAT' cl_date.
* perform ftpos using 'K' 1 'BKPF-BLART' ''.
perform ftpos using 'K' 1 'BKPF-BUKRS' ps_row-bukrs.
perform ftpos using 'K' 1 'BKPF-WAERS' ps_row-waers.
perform ftpos using 'K' 1 'BKPF-XBLNR' ps_row-xblnr.
perform ftpos using 'K' 1 'BKPF-BKTXT' ps_row-bktxt.
clear: l_f_ftclear.
l_auglv = 'UMBUCHNG'.
l_f_ftclear-agbuk = ps_row-bukrs.
* l_f_ftclear-xnops = 'X'.
" считываем t041a
call function 'FDM_AR_READ_T041A'
exporting
i_auglv = l_auglv
importing
es_t041a = es_t041a
exceptions
not_found = 1
others = 2.
loop at gt_alv_tab2 assigning <fs_alv_tab2>.
l_f_ftclear-selfd = 'BELNR'.
concatenate <fs_alv_tab2>-belnr
<fs_alv_tab2>-gjahr
<fs_alv_tab2>-buzei into l_f_ftclear-selvon.
call function 'SKB1_SINGLE_READ'
exporting
i_bukrs = ps_row-bukrs
i_saknr = <fs_alv_tab2>-hkont
importing
o_skb1 = l_skb1
exceptions
not_found = 1.
l_f_ftclear-agkoa = l_skb1-mitkz.
l_f_ftclear-agkon = ps_row-kontr.
if l_f_ftclear-agkoa eq 'D'.
perform ftpos using 'K' 1 'BKPF-BLART' es_t041a-blard.
else.
perform ftpos using 'K' 1 'BKPF-BLART' es_t041a-blark.
endif.
if <fs_alv_tab2>-umskz is not initial.
l_f_ftclear-xnops = ' '.
l_f_ftclear-agums = <fs_alv_tab2>-umskz.
else.
l_f_ftclear-xnops = 'X'.
endif.
append l_f_ftclear to l_t_ftclear.
endloop.
loop at gt_alv_tab3 assigning <fs_alv_tab3>.
clear: l_f_ftclear.
l_f_ftclear-agbuk = <fs_alv_tab3>-bukrs.
l_f_ftclear-xnops = 'X'.
"документ из ALV
l_f_ftclear-selfd = 'BELNR'.
concatenate <fs_alv_tab3>-belnr
<fs_alv_tab3>-gjahr
<fs_alv_tab3>-buzei into l_f_ftclear-selvon.
l_f_ftclear-agkoa = 'S'.
l_f_ftclear-agkon = <fs_alv_tab3>-hkont.
append l_f_ftclear to l_t_ftclear.
endloop.
call function 'POSTING_INTERFACE_CLEARING'
exporting
i_auglv = l_auglv
i_tcode = 'FB05'
** IMPORTING
** e_msgid = l_msgid
** e_msgno = l_msgno
** e_msgty = l_msgty
** e_msgv1 = l_msgv1
** e_msgv2 = l_msgv2
** e_msgv3 = l_msgv3
** e_msgv4 = l_msgv4
** e_subrc = l_subrc
tables
t_blntab = gt_blntab
t_ftclear = l_t_ftclear
t_ftpost = gt_ftpost
t_fttax = gt_fttax
exceptions
clearing_procedure_invalid = 1
clearing_procedure_missing = 2
table_t041a_empty = 3
transaction_code_invalid = 4
amount_format_error = 5
too_many_line_items = 6
company_code_invalid = 7
screen_not_found = 8
no_authorization = 9
others = 10.
if sy-subrc <> 0.
* CLEAR: l_var1, l_var2, l_var3, l_var4.
* PERFORM message_store USING l_msgid l_msgty l_msgno
* l_msgv1 l_msgv2 l_msgv3 l_msgv4
* space space space.
else.
perform end_posting.
endif.
endform. " GET_FTPOST
*---------------------------------------------------------------------*
* FORM BDC_DYNPRO *
*---------------------------------------------------------------------*
* BDCDATA-Füllen *
*---------------------------------------------------------------------*
form bdc_dynpro using program dynpro changing p_bdcdata type standard table.
data: bdcdata type bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata to p_bdcdata.
endform. " BDC_DYNPRO
*---------------------------------------------------------------------*
* FORM BDC_FIELD *
*---------------------------------------------------------------------*
* BDCDATA-Füllen *
*---------------------------------------------------------------------*
form bdc_field using fnam fval changing p_bdcdata type standard table.
data: bdcdata type bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata to p_bdcdata.
endform. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form CALL_FB05
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_<FS_ROW_CL> text
*----------------------------------------------------------------------*
form call_fb05 using ps_row type ZFI_fi_D01_alv1.
data it_bdcmsgcoll like table of bdcmsgcoll with header line.
refresh bdcdata[].
* perform prepare_fb05_batch using ps_row changing bdcdata[].
perform prepare_fb05_batch_part using ps_row changing bdcdata[].
call transaction 'FB05'
using bdcdata mode t_mode update 'S'
messages into it_bdcmsgcoll.
endform. " CALL_FB05
*&---------------------------------------------------------------------*
*& Form PREPARE_FB05_BATCH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_INV text
* <--P_IT_BDCDATA[] text
*----------------------------------------------------------------------*
form prepare_fb05_batch using p_inv changing p_bdcdata type standard table.
field-symbols <fs_alv_tab2> like ZFI_fi_D01_alv2.
perform dynpro_122 using p_inv changing p_bdcdata[].
loop at gt_alv_tab2 assigning <fs_alv_tab2>.
perform dynpro_710 using p_inv <fs_alv_tab2> changing p_bdcdata[].
perform dynpro_733 using p_inv <fs_alv_tab2> changing p_bdcdata[].
endloop.
perform dynpro_710_1 using p_inv changing p_bdcdata[].
perform dynpro_733_1 using p_inv changing p_bdcdata[].
perform dynpro_3100 using p_inv changing p_bdcdata[].
endform. " PREPARE_FB05_BATCH
*&---------------------------------------------------------------------*
*& Form prepare_fb05_batch_part
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_P_INV text
* <--P_IT_BDCDATA[] text
*----------------------------------------------------------------------*
form prepare_fb05_batch_part using p_inv type ZFI_fi_D01_alv1 changing p_bdcdata type standard table.
data: l_dmbtr type ZFI_dmbtr5.
field-symbols <fs_alv_tab2> like ZFI_fi_D01_alv2.
perform dynpro_122 using p_inv changing p_bdcdata[].
read table gt_alv_tab2 assigning <fs_alv_tab2> index 1.
l_dmbtr = p_inv-dmbtr5.
perform dynpro_710_part using p_inv <fs_alv_tab2> changing p_bdcdata[].
perform dynpro_733_part using p_inv <fs_alv_tab2> changing p_bdcdata[].
perform dynpro_3100_part using p_inv l_dmbtr changing p_bdcdata[].
perform dynpro_710_1 using p_inv changing p_bdcdata[].
perform dynpro_733_1 using p_inv changing p_bdcdata[].
perform dynpro_3100_part_2 using p_inv changing p_bdcdata[].
endform. " prepare_fb05_batch_part
*&---------------------------------------------------------------------*
*& Form dynpro_122
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_INV text
* -->P_BDCDATA text
*----------------------------------------------------------------------*
form dynpro_122 using p_inv type ZFI_fi_D01_alv1 changing p_bdcdata type standard table.
data: cl_date(10) type c.
data es_t041a like t041a.
data l_skb1 like skb1.
" считываем t041a
call function 'FDM_AR_READ_T041A'
exporting
i_auglv = 'UMBUCHNG'
importing
es_t041a = es_t041a
exceptions
not_found = 1
others = 2.
call function 'SKB1_SINGLE_READ'
exporting
i_bukrs = p_inv-bukrs
i_saknr = p_inv-hkont
importing
o_skb1 = l_skb1
exceptions
not_found = 1.
write sp_bldat to cl_date dd/mm/yyyy.
write sp_postd to cl_date dd/mm/yyyy.
perform bdc_dynpro using 'SAPMF05A' '122' changing p_bdcdata[].
perform bdc_field using 'BKPF-BLDAT' cl_date changing p_bdcdata[].
if l_skb1-mitkz eq 'D'.
perform bdc_field using 'BKPF-BLART' es_t041a-blard changing p_bdcdata[].
else.
perform bdc_field using 'BKPF-BLART' es_t041a-blark changing p_bdcdata[].
endif.
perform bdc_field using 'BKPF-BUKRS' p_inv-bukrs changing p_bdcdata[].
perform bdc_field using 'BKPF-BUDAT' cl_date changing p_bdcdata[].
perform bdc_field using 'BKPF-WAERS' p_inv-waers changing p_bdcdata[].
perform bdc_field using 'BKPF-XBLNR' p_inv-xblnr changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '/06' changing p_bdcdata[].
endform. " dynpro_122_ALV
*&---------------------------------------------------------------------*
*& Form dynpro_710_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_710 using p_inv type ZFI_fi_D01_alv1 p_alv type ZFI_fi_D01_alv2
changing p_bdcdata type standard table.
data l_skb1 like skb1.
perform bdc_dynpro using 'SAPMF05A' '710' changing p_bdcdata[].
call function 'SKB1_SINGLE_READ'
exporting
i_bukrs = p_inv-bukrs
i_saknr = p_inv-hkont
importing
o_skb1 = l_skb1
exceptions
not_found = 1.
perform bdc_field using 'RF05A-AGKOA' l_skb1-mitkz changing p_bdcdata[].
perform bdc_field using 'RF05A-AGKON' p_inv-kontr changing p_bdcdata[].
perform bdc_field using 'RF05A-AGBUK' p_inv-bukrs changing p_bdcdata[].
if p_alv-umskz is not initial.
perform bdc_field using 'RF05A-XNOPS' ' ' changing p_bdcdata[].
perform bdc_field using 'RF05A-AGUMS' p_alv-umskz changing p_bdcdata[].
else.
perform bdc_field using 'RF05A-XNOPS' 'X' changing p_bdcdata[].
endif.
perform bdc_field using 'BDC_OKCODE' '/05' changing p_bdcdata[].
endform. " dynpro_710_ALV
*&---------------------------------------------------------------------*
*& Form dynpro_710_part
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_710_part using p_inv type ZFI_fi_D01_alv1 p_alv type ZFI_fi_D01_alv2
changing p_bdcdata type standard table.
data l_skb1 like skb1.
perform bdc_dynpro using 'SAPMF05A' '710' changing p_bdcdata[].
call function 'SKB1_SINGLE_READ'
exporting
i_bukrs = p_inv-bukrs
i_saknr = p_inv-hkont
importing
o_skb1 = l_skb1
exceptions
not_found = 1.
perform bdc_field using 'RF05A-AGKOA' l_skb1-mitkz changing p_bdcdata[].
perform bdc_field using 'RF05A-AGKON' p_inv-kontr changing p_bdcdata[].
perform bdc_field using 'RF05A-AGBUK' p_inv-bukrs changing p_bdcdata[].
if p_alv-umskz is not initial.
perform bdc_field using 'RF05A-XNOPS' ' ' changing p_bdcdata[].
perform bdc_field using 'RF05A-AGUMS' p_alv-umskz changing p_bdcdata[].
else.
perform bdc_field using 'RF05A-XNOPS' 'X' changing p_bdcdata[].
endif.
perform bdc_field using 'BDC_OKCODE' '/05' changing p_bdcdata[].
endform. " dynpro_710_ALV
*&---------------------------------------------------------------------*
*& Form dynpro_733_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_733 using p_inv type ZFI_fi_D01_alv1 p_alv type ZFI_fi_D01_alv2 changing p_bdcdata type standard table.
data: l_sel type selxx_f05a.
perform bdc_dynpro using 'SAPMF05A' '733' changing p_bdcdata[].
perform bdc_field using 'RF05A-FELDN(1)' 'BELNR' changing p_bdcdata[].
concatenate p_alv-belnr
p_alv-gjahr
p_alv-buzei into l_sel.
perform bdc_field using 'RF05A-SEL01(1)' l_sel changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '/07' changing p_bdcdata[].
endform. "dynpro_733
*&---------------------------------------------------------------------*
*& Form dynpro_733_part
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_733_part using p_inv type ZFI_fi_D01_alv1 p_alv type ZFI_fi_D01_alv2 changing p_bdcdata type standard table.
data: l_sel type selxx_f05a.
perform bdc_dynpro using 'SAPMF05A' '733' changing p_bdcdata[].
perform bdc_field using 'RF05A-FELDN(1)' 'BELNR' changing p_bdcdata[].
concatenate p_alv-belnr
p_alv-gjahr
p_alv-buzei into l_sel.
perform bdc_field using 'RF05A-SEL01(1)' l_sel changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '/11' changing p_bdcdata[].
endform. "dynpro_733_part
*&---------------------------------------------------------------------*
*& Form dynpro_710_1_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_710_1 using p_inv type ZFI_fi_D01_alv1 changing p_bdcdata type standard table.
data l_skb1 like skb1.
field-symbols <fs_alv_tab3> like ZFI_fi_D01_alv3.
perform bdc_dynpro using 'SAPMF05A' '710' changing p_bdcdata[].
call function 'SKB1_SINGLE_READ'
exporting
i_bukrs = p_inv-bukrs
i_saknr = p_inv-korrk
importing
o_skb1 = l_skb1
exceptions
not_found = 1.
if l_skb1-mitkz is not initial.
perform bdc_field using 'RF05A-AGKOA' l_skb1-mitkz changing p_bdcdata[].
else.
perform bdc_field using 'RF05A-AGKOA' 'S' changing p_bdcdata[].
endif.
read table gt_alv_tab3 assigning <fs_alv_tab3> index 1.
if <fs_alv_tab3> is assigned.
perform bdc_field using 'RF05A-AGKON' <fs_alv_tab3>-hkont changing p_bdcdata[].
endif.
perform bdc_field using 'RF05A-AGBUK' p_inv-bukrs changing p_bdcdata[].
perform bdc_field using 'RF05A-AGUMS' ' ' changing p_bdcdata[].
perform bdc_field using 'RF05A-XNOPS' 'X' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '/05' changing p_bdcdata[].
endform. " dynpro_710_ALV
*&---------------------------------------------------------------------*
*& Form dynpro_733_1_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_733_1 using p_inv type ZFI_fi_D01_alv1 changing p_bdcdata type standard table.
data: l_sel type selxx_f05a.
data: l_feldn(14) type c value 'RF05A-FELDN( )'.
data: l_sel01(14) type c value 'RF05A-SEL01( )'.
field-symbols <fs_alv_tab3> like ZFI_fi_D01_alv3.
perform bdc_dynpro using 'SAPMF05A' '733' changing p_bdcdata[].
loop at gt_alv_tab3 assigning <fs_alv_tab3>.
l_feldn+12(1) = sy-tabix.
l_sel01+12(1) = sy-tabix.
perform bdc_field using l_feldn 'BELNR' changing p_bdcdata[].
clear: l_sel.
concatenate <fs_alv_tab3>-belnr
<fs_alv_tab3>-gjahr
<fs_alv_tab3>-buzei into l_sel.
perform bdc_field using l_sel01 l_sel changing p_bdcdata[].
endloop.
perform bdc_field using 'BDC_OKCODE' '/11' changing p_bdcdata[].
endform. "dynpro_733
*&---------------------------------------------------------------------*
*& Form dynpro_3100_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_3100 using p_inv type ZFI_fi_D01_alv1 changing p_bdcdata type standard table.
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '/00' changing p_bdcdata[].
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '=PART' changing p_bdcdata[].
perform bdc_field using 'BDC_SUBSCR' 'SAPDF05X 6104PAGE'
changing p_bdcdata[].
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_CURSOR' 'DF05B-PSZAH(01)' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '=PI' changing p_bdcdata[].
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' 'BU' changing p_bdcdata[].
endform. " dynpro_3100_ALV
*&---------------------------------------------------------------------*
*& Form dynpro_3100_part
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_3100_part using p_inv type ZFI_fi_D01_alv1 p_dmbtr type ZFI_dmbtr5 changing p_bdcdata type standard table.
data: p_fval type bdc_fval.
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '/00' changing p_bdcdata[].
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '=PART' changing p_bdcdata[].
perform bdc_field using 'BDC_SUBSCR' 'SAPDF05X 6104PAGE'
changing p_bdcdata[].
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_CURSOR' 'DF05B-PSZAH(01)' changing p_bdcdata[].
perform convert_curr_to_external using p_dmbtr
changing p_fval.
perform bdc_field using 'DF05B-PSZAH(01)' p_fval changing p_bdcdata[].
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '=SL' changing p_bdcdata[].
endform. " dynpro_3100_ALV
*&---------------------------------------------------------------------*
*& Form dynpro_3100_part_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form dynpro_3100_part_2 using p_inv type ZFI_fi_D01_alv1 changing p_bdcdata type standard table.
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '/00' changing p_bdcdata[].
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' '=PART' changing p_bdcdata[].
perform bdc_field using 'BDC_SUBSCR' 'SAPDF05X 6104PAGE'
changing p_bdcdata[].
perform bdc_dynpro using 'SAPDF05X' '3100' changing p_bdcdata[].
perform bdc_field using 'BDC_OKCODE' 'BU' changing p_bdcdata[].
endform. " dynpro_3100_part_2
*&---------------------------------------------------------------------*
*& Form refresh_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
form refresh_alv.
data stable type lvc_s_stbl.
stable-row = 'X'.
stable-col = 'X'.
call method go_grid1->refresh_table_display
exporting
is_stable = stable
exceptions
finished = 1
others = 2.
endform. "refresh_alv
*&---------------------------------------------------------------------*
*& Form SUMM_clear
*&---------------------------------------------------------------------*
* Расшифровка сумм для выравнивания
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form summ_clear using ps_row type lvc_s_row.
data: ls_alv_tab2 type ZFI_fi_D01_alv2,
ls_row type ZFI_fi_D01_alv1.
field-symbols: <fs_row> type bsid,
<fs_row2> type bsik,
<fs_bsid> type bsid,
<fs_bsik> type bsik.
clear: gt_alv_tab2.
read table gt_alv_tab1 into ls_row index ps_row-index.
if sy-subrc = 0.
if ls_row-type_kontr = 'X'.
read table gt_bsid assigning <fs_row> with key bukrs = ls_row-bukrs kunnr = ls_row-kontr zuonr = ls_row-zuonr gjahr = ls_row-gjahr belnr = ls_row-belnr buzei = ls_row-buzei.
if sy-subrc = 0.
ls_alv_tab2-belnr = <fs_row>-belnr.
ls_alv_tab2-buzei = <fs_row>-buzei.
ls_alv_tab2-bldat = <fs_row>-bldat.
ls_alv_tab2-budat = <fs_row>-budat.
ls_alv_tab2-bukrs = <fs_row>-bukrs.
ls_alv_tab2-gjahr = <fs_row>-gjahr.
ls_alv_tab2-hkont = <fs_row>-hkont.
ls_alv_tab2-umskz = <fs_row>-umskz.
if <fs_row>-shkzg = 'H'.
ls_alv_tab2-dmbtr = <fs_row>-dmbtr * -1.
else.
ls_alv_tab2-dmbtr = <fs_row>-dmbtr.
endif.
append ls_alv_tab2 to gt_alv_tab2.
loop at gt_bsid assigning <fs_bsid> where rebzg = <fs_row>-belnr
and rebzj = <fs_row>-gjahr
and rebzz = <fs_row>-buzei.
clear ls_alv_tab2.
ls_alv_tab2-belnr = <fs_bsid>-belnr.
ls_alv_tab2-buzei = <fs_bsid>-buzei.
ls_alv_tab2-bldat = <fs_bsid>-bldat.
ls_alv_tab2-budat = <fs_bsid>-budat.
ls_alv_tab2-bukrs = <fs_bsid>-bukrs.
ls_alv_tab2-gjahr = <fs_bsid>-gjahr.
ls_alv_tab2-hkont = <fs_bsid>-hkont.
ls_alv_tab2-umskz = <fs_bsid>-umskz.
if <fs_bsid>-shkzg = 'H'.
ls_alv_tab2-dmbtr = <fs_bsid>-dmbtr * -1.
else.
ls_alv_tab2-dmbtr = <fs_bsid>-dmbtr.
endif.
append ls_alv_tab2 to gt_alv_tab2.
endloop.
endif.
else.
read table gt_bsik assigning <fs_row2> with key bukrs = ls_row-bukrs lifnr = ls_row-kontr zuonr = ls_row-zuonr gjahr = ls_row-gjahr belnr = ls_row-belnr buzei = ls_row-buzei.
if sy-subrc = 0 .
ls_alv_tab2-belnr = <fs_row2>-belnr.
ls_alv_tab2-buzei = <fs_row2>-buzei.
ls_alv_tab2-bldat = <fs_row2>-bldat.
ls_alv_tab2-budat = <fs_row2>-budat.
ls_alv_tab2-bukrs = <fs_row2>-bukrs.
ls_alv_tab2-gjahr = <fs_row2>-gjahr.
ls_alv_tab2-hkont = <fs_row2>-hkont.
ls_alv_tab2-umskz = <fs_row2>-umskz.
if <fs_row2>-shkzg = 'H'.
ls_alv_tab2-dmbtr = <fs_row2>-dmbtr * -1.
else.
ls_alv_tab2-dmbtr = <fs_row2>-dmbtr.
endif.
append ls_alv_tab2 to gt_alv_tab2.
loop at gt_bsik assigning <fs_bsik> where rebzg = <fs_row2>-belnr
and rebzj = <fs_row2>-gjahr
and rebzz = <fs_row2>-buzei.
clear ls_alv_tab2.
ls_alv_tab2-belnr = <fs_bsik>-belnr.
ls_alv_tab2-buzei = <fs_bsik>-buzei.
ls_alv_tab2-bldat = <fs_bsik>-bldat.
ls_alv_tab2-budat = <fs_bsik>-budat.
ls_alv_tab2-bukrs = <fs_bsik>-bukrs.
ls_alv_tab2-gjahr = <fs_bsik>-gjahr.
ls_alv_tab2-hkont = <fs_row2>-hkont.
ls_alv_tab2-umskz = <fs_row2>-umskz.
if <fs_bsik>-shkzg = 'H'.
ls_alv_tab2-dmbtr = <fs_bsik>-dmbtr * -1.
else.
ls_alv_tab2-dmbtr = <fs_bsik>-dmbtr.
endif.
append ls_alv_tab2 to gt_alv_tab2.
endloop.
endif.
endif.
endif.
* call screen 200 starting at 5 5.
endform. " SUMM
*---------------------------------------------------------------------*
* FORM CONVERT_CURR_TO_EXTERNAL *
*---------------------------------------------------------------------*
* Конвертирование суммы из внутреннего во внешнее представление
*---------------------------------------------------------------------*
* --> _P_CURR - Сумма во внутреннем представлении (type CURR)
* --> _P_FVAL - Сумма во внешнем представлении (type C)
*---------------------------------------------------------------------*
form convert_curr_to_external using _p_curr type dmbtr
changing _p_fval type bdc_fval.
data: _zcurr type dmbtr.
clear: _p_fval.
if not _p_curr is initial.
_zcurr = abs( _p_curr ).
move _zcurr to _p_fval.
condense _p_fval no-gaps.
replace '.' with ',' into _p_fval.
endif.
endform. "CONVERT_CURR_TO_EXTERNAL