Здравствуйте, уважаемые коллеги!
Как и обещал, высылаю программу отлова платежей в реальном режиме времени. Пока программа вставляет информацию в лог, который можно просмотреть в транзакции slg1. Сейчас делаю, так чтобы можно было получать информацию по почте.
Не забудьте настроить BTE за номером 1030 на этот функциональный модуль:
1 тр. fibf
2 параметры настройки - продукты - клиента - задайте имя продукта и поставьте галку в столбце А - активный
3 параметры настройки - ps модули - клиента - событие 1030, функц модуль z_log (или уж как сами назовете)
FUNCTION Z_LOG .
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(I_BKDF) LIKE BKDF STRUCTURE BKDF
*" REFERENCE(I_UF05A) LIKE UF05A STRUCTURE UF05A
*" REFERENCE(I_XVBUP) LIKE OFIWA-XVBUP DEFAULT 'X'
*" TABLES
*" T_AUSZ1 STRUCTURE AUSZ1 OPTIONAL
*" T_AUSZ2 STRUCTURE AUSZ2 OPTIONAL
*" T_AUSZ3 STRUCTURE AUSZ_CLR OPTIONAL
*" T_BKP1 STRUCTURE BKP1
*" T_BKPF STRUCTURE BKPF
*" T_BSEC STRUCTURE BSEC
*" T_BSED STRUCTURE BSED
*" T_BSEG STRUCTURE BSEG
*" T_BSET STRUCTURE BSET
*" T_BSEU STRUCTURE BSEU
*"----------------------------------------------------------------------
types: begin of t_itab,
laufi type reguh-laufi,
laufd type reguh-laufd,
end of t_itab.
types: begin of t_itab1,
laufi type reguh-laufi,
laufd type reguh-laufd,
vblnr type reguh-vblnr,
end of t_itab1.
types: begin of bseg_t,
belnr type bseg-belnr,
dmbtr type bseg-dmbtr,
wrbtr type bseg-wrbtr,
gjahr type bseg-gjahr,
koart type bseg-koart,
umskz type bseg-umskz,
waers type bkpf-waers,
shkzg type bseg-shkzg,
bukrs type bseg-bukrs,
lifnr type lfa1-lifnr,
name1 type znazv,
gsber type bseg-gsber,
sgtxt type bseg-sgtxt,
xblnr type bkpf-xblnr,
bldat type bkpf-bldat,
budat type bkpf-budat,
end of bseg_t.
types: begin of s_itab,
belnr_clr type bse_clr-belnr_clr,
gjahr_clr type bse_clr-gjahr_clr,
belnr type bse_clr-belnr,
gjahr type bse_clr-gjahr,
end of s_itab.
DATA: gf_log_handle TYPE balloghndl,
ls_log TYPE bal_s_log,
p_log_handle TYPE BAL_T_LOGH,
lf_dummy(1) TYPE c.
DATA: IV_SUBOBJECT TYPE BAL_S_LOG-SUBOBJECT VALUE 'F110'.
DATA: IV_OBJECT TYPE BAL_S_LOG-OBJECT VALUE 'ZTEST'.
DATA: string1(255).
DATA: string2(255).
DATA: string3(255).
data: w_it type s_itab.
data: b_it type bseg_t.
data: itab type bseg_t occurs 10 with header line.
data: itab1 type s_itab occurs 10 with header line.
data: t_itt type t_itab occurs 10 with header line.
data: t_it type t_itab.
data: t_it1 type t_itab1.
data: s type zkaadat.
data: ii type c.
data: begin of WBKPF,
xblnr type bkpf-xblnr,
bktxt type bkpf-bktxt,
bLdat type bkpf-bLdat,
END OF WBKPF.
data: begin of WBSEG,
belnr type bseg-belnr,
sgtxt type bseg-sgtxt,
zuonr type bseg-zuonr,
dmbtr type bseg-dmbtr,
gsber type bseg-gsber,
rebzg type bseg-rebzg,
rebzj type bseg-rebzj,
gjahr type bseg-gjahr,
umskz type bseg-umskz,
pswsl type bseg-pswsl,
wrbtr type bseg-wrbtr,
lifnr type bseg-lifnr,
shkzg type bseg-shkzg,
END OF Wbseg.
data: witab4 type bseg_t.
data: sgtxt type bseg-sgtxt.
data: zuonr type bseg-zuonr.
data: dmbtr type bseg-dmbtr.
data: gsber type bseg-gsber.
data: rebzg type bseg-rebzg.
data: rebzj type bseg-rebzj.
data: lif_1 type lfa1-name1.
data: lif_2 type lfa1-name2.
data: lif_3 type znazv.
data: st_1 type zname20.
data: st_2 type zname20.
data: pswsl type bseg-pswsl.
data: wrbtr type bseg-wrbtr.
data: xblnr type bkpf-xblnr.
data: bldat type bkpf-bldat.
data: gjahr_clr type bse_clr-gjahr.
data: belnr_clr type bse_clr-belnr.
data: data_clr type reguh-laufd.
data: lifnr type bseg-lifnr.
data: sum type bseg-dmbtr.
data T_FI type FIDOC_TPR_ITEMS occurs 10 with header line.
CLEAR gf_log_handle.
ls_log-extnumber = sy-title.
ls_log-EXTNUMBER = text-004.
ls_log-ALUSER = SY-UNAME.
ls_log-ALDATE = SY-DATUM.
ls_log-ALTIME = SY-UZEIT.
ls_log-ALTCODE = sy-tcode.
ls_log-ALPROG = SY-REPID.
ls_log-OBJECT = IV_OBJECT.
ls_log-SUBOBJECT = IV_SUBOBJECT.
ls_log-DEL_BEFORE = 'X'.
IF NOT gf_log_handle IS INITIAL.
CALL FUNCTION 'BAL_LOG_DELETE'
EXPORTING _log_handle = gf_log_handle
EXCEPTIONS log_not_found = 0
OTHERS = 0.
ENDIF.
* create a log
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING: i_s_log = ls_log
IMPORTING: e_log_handle = gf_log_handle
EXCEPTIONS
LOG_HEADER_INCONSISTENT = 1
OTHERS = 2.
insert gf_log_handle into table p_log_handle.
* присвоение строками начальных значений
string1 = ''.
* Головная часть платежки
gjahr_clr = t_bkpf-gjahr.
belnr_clr = t_bkpf-belnr.
data_clr = t_bkpf-bldat.
sum = 0.
concatenate string1 data_clr+6(2) '.' data_clr+4(2)'.' gjahr_clr '++' belnr_clr into string1.
CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
EXPORTING
I_LOG_HANDLE = gf_log_handle
I_MSGTY = 'I'
I_TEXT = string1
EXCEPTIONS
LOG_NOT_FOUND = 1
MSG_INCONSISTENT = 2
OTHERS = 3.
* Содержимое позиций платежки кладется в таблицу itab
ii = 1.
loop at t_ausz3.
string1 = ''.
b_it-gjahr = t_ausz3-gjahr.
b_it-belnr = t_ausz3-belnr.
b_it-umskz = t_ausz3-umskz.
b_it-koart = t_ausz3-koart.
b_it-shkzg = t_ausz3-shkzg.
b_it-dmbtr = t_ausz3-dmbtr.
b_it-wrbtr = t_ausz3-wrbtr.
b_it-waers = t_ausz3-waers.
b_it-bukrs = t_ausz3-bukrs.
sum = sum + b_it-dmbtr.
CALL FUNCTION 'FI_DOC_TPR_ITEMS_FIND'
EXPORTING
I_COCODE = b_it-bukrs
* I_BUSAREA =
* I_VEND =
* I_XBLNR =
I_YEAR = b_it-gjahr
* I_MONTH =
I_DOCNR = b_it-belnr
* IMPORTING
* E_NO_ITEMS =
TABLES
T_FI_DOC_TPR_ITEMS = T_FI
EXCEPTIONS
NO_RECORD_FOUND = 1
WRONG_INPUT = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
string2 = 'Ошибка'.
CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
EXPORTING
I_LOG_HANDLE = gf_log_handle
I_MSGTY = 'I'
I_TEXT = string2
EXCEPTIONS
LOG_NOT_FOUND = 1
MSG_INCONSISTENT = 2
OTHERS = 3.
EXIT.
ENDIF.
read table t_fi index ii.
select single lfa1~name1 from lfa1
into lif_1
where lfa1~lifnr = t_fi-lifnr.
select single lfa1~name2 from lfa1
into lif_2
where lfa1~lifnr = t_fi-lifnr.
lif_3 = ''.
concatenate lif_1 lif_2 into lif_3 separated by ' '.
b_it-lifnr = t_fi-lifnr.
b_it-name1 = lif_3.
b_it-gsber = t_fi-gsber.
b_it-sgtxt = t_fi-sgtxt.
b_it-xblnr = t_fi-xblnr.
b_it-bldat = t_fi-bldat.
b_it-budat = t_fi-budat.
*loop at t_fi.
st_1 = b_it-dmbtr.
st_2 = b_it-wrbtr.
concatenate string1 '++' b_it-bukrs '++' b_it-gjahr '++' b_it-belnr '++' t_fi-waers '++' t_fi-lifnr '++' st_1 '++' st_2 '++' lif_3 '++' t_fi-gsber '++' into string1.
concatenate string2 '++' t_fi-sgtxt '++' t_fi-xblnr '++' b_it-shkzg '++' b_it-bldat+6(2) '.' b_it-bldat+4(2) '.' b_it-bldat(4) '++' b_it-budat+6(2) '.' b_it-budat+4(2) '.' b_it-budat(4) '++' into string2.
CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
EXPORTING
I_LOG_HANDLE = gf_log_handle
I_MSGTY = 'I'
I_TEXT = string1
EXCEPTIONS
LOG_NOT_FOUND = 1
MSG_INCONSISTENT = 2
OTHERS = 3.
CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
EXPORTING
I_LOG_HANDLE = gf_log_handle
I_MSGTY = 'I'
I_TEXT = string2
EXCEPTIONS
LOG_NOT_FOUND = 1
MSG_INCONSISTENT = 2
OTHERS = 3.
*endloop.
append b_it to itab.
string1 = ''.
string2 = ''.
ii = ii + 1.
endloop.
string2 = 'Общая сумма платежки'.
st_1 = sum.
concatenate string2 st_1 'Кредитор №' t_fi-lifnr lif_3 into string2 separated by ' '.
CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
EXPORTING
I_LOG_HANDLE = gf_log_handle
I_MSGTY = 'I'
I_TEXT = string2
EXCEPTIONS
LOG_NOT_FOUND = 1
MSG_INCONSISTENT = 2
OTHERS = 3.
string2 = sy-uname.
CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
EXPORTING
I_LOG_HANDLE = gf_log_handle
I_MSGTY = 'I'
I_TEXT = string2
EXCEPTIONS
LOG_NOT_FOUND = 1
MSG_INCONSISTENT = 2
OTHERS = 3.
*************************************************************************
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
I_T_LOG_HANDLE = p_log_handle
EXCEPTIONS
LOG_NOT_FOUND = 1
SAVE_NOT_ALLOWED = 2
NUMBERING_ERROR = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
EXIT.
ELSE.
COMMIT WORK.
ENDIF.
***********************************************************************
* Рассылка по почте
* data fl(1).
* data fl1(1).
* data zGSBER like itab-GSBER.
* data lt_doc_cont type standard table of soli with header line.
* data lt_doc_cont1 type standard table of soli with header line.
* data lt_receivers type standard table of swc_object.
*LOOP AT itab.
*CHECK
*T_FI_DOC_TPR_ITEMS1-BLART = 'KW' OR
*T_FI_DOC_TPR_ITEMS1-BLART = 'KV'.
*
* at new GSBER.
* zGSBER = itab-GSBER.
* refresh lt_doc_cont1.
* refresh lt_receivers.
* APPEND LINES OF lt_doc_cont TO lt_doc_cont1.
*
* fl = ''.
* fl1 = ''.
*
**- get dli для бизнес-сферы
* perform get_dli_from_obj using 'Z_BUS0003'
* zGSBER
* changing l_dli_id
* l_rcode.
* if l_rcode = 4.
**- problem within objlinks
* ls_message-msgid = 'SGOSMSG'.
* ls_message-msgty = 'E'.
* ls_message-msgno = '204'.
* perform receiver_error tables event_container
* using event
* rectype
* objtype
* objkey
* ls_message.
* exit.
* elseif l_rcode = 8.
**- no dli found for T_FI_DOC_TPR_ITEMS1-GSBER
** continue.
* elseif l_rcode = 0.
* fl = 'X'.
* endif.
*
**- get dli для отдельного кредитора
* perform get_dli_from_obj using 'Z_LFA1'
* itab-LIFNR
* changing l_dli_id1
* l_rcode.
* if l_rcode = 4.
**- problem within objlinks
* ls_message-msgid = 'SGOSMSG'.
* ls_message-msgty = 'E'.
* ls_message-msgno = '204'.
* perform receiver_error tables event_container
* using event
* rectype
* objtype
* objkey
* ls_message.
* exit.
* elseif l_rcode = 8.
**- no dli found for T_FI_DOC_TPR_ITEMS1-GSBER
** continue.
* elseif l_rcode = 0.
* fl1 = 'X'.
*
* endif.
*
*if l_dli_id IS INITIAL AND l_dli_id1 IS INITIAL.
*continue.
*endif.
*
**- create object that should be attached
* l_soxobj-objtype = objtype.
* l_soxobj-objkey = objkey.
* swc_create_object l_applobj l_soxobj-objtype l_soxobj-objkey.
* swc_get_property l_applobj space l_defattr.
*
** create main document
*
*
* swc_create_container lt_wf_cont.
* swc_set_element lt_wf_cont 'OBJTYPE' l_soxobj-objtype.
* swc_set_element lt_wf_cont 'OBJKEY' l_soxobj-objkey.
* swc_set_element lt_wf_cont 'ATTRIBUT' l_defattr.
* swc_set_element lt_wf_cont l_soxobj-objtype l_applobj.
*
*
* l_doc_nam = 'SUBSCRIBE'.
* l_doc_type = 'RAW'.
*
*
**- get customized text
**- get ls_sgosub from container, check fb filled it
*
** lt_doc_cont
** lt_objhead
** lt_wf_cont.
*
* swc_create_container container.
* swc_set_element container 'NO_DIALOG' 'X'.
* swc_set_element container 'DOCUMENTTITLE' l_doc_title.
* swc_set_element container 'DOCUMENTNAME' l_doc_nam.
* swc_set_element container 'DOCUMENTTYPE' l_doc_type.
* swc_set_table container 'DocumentHeader' lt_objhead.
* swc_set_table container 'DocumentContent' lt_doc_cont1.
* swc_create_object maindoc 'SOFM' space.
* swc_call_method maindoc 'CREATE' container.
*
**- create attaobj
**- send all the stuff
* swc_release_container container.
*
** create receiver
*
*IF fl ='X'.
* swc_create_object l_receiver 'ADDRESS' l_dli_id.
* append l_receiver to lt_receivers.
*endif.
*
*IF fl1 = 'X'.
* swc_create_object l_receiver 'ADDRESS' l_dli_id1.
* append l_receiver to lt_receivers.
*endif.
*
*
*
* swc_set_table container 'RECEIVERS' lt_receivers.
* swc_call_method maindoc 'SEND' container.
* if sy-subrc <> 0.
* ls_message-msgid = 'SO'.
* ls_message-msgty = 'E'.
* ls_message-msgno = '023'.
* perform receiver_error tables event_container
* using event
* rectype
* objtype
* objkey
* ls_message.
*
* endif.
*
* endat.
*
* ENDLOOP.
ENDFUNCTION.
Большое спасибо!
|
|