Task Text
Task Text
REPORT
INCLUDE z_ocr_invoice_wi_monitor_top.
INITIALIZATION.
g_repid = sy-repid.
PERFORM layout_init USING gs_layout.
PERFORM eventtab_build USING gt_events[].
PERFORM build_fieldcat USING gt_fieldcat[].
gs_variant-report = g_repid.
g_save
= 'A'.
START-OF-SELECTION.
END-OF-SELECTION.
*"List Header for Top-Of-Page
IF s_file IS INITIAL.
NEW-PAGE LINE-SIZE 120 WITH-HEADING.
* change text info for ZZFBDT
wa_fcat-seltext_s = 'Due Paym'.
wa_fcat-reptext_ddic = 'Due Paym'.
wa_fcat-ddic_outputlen = 8.
MODIFY gt_fieldcat FROM wa_fcat
TRANSPORTING seltext_s reptext_ddic ddic_outputlen
WHERE row_pos EQ 0 AND col_pos EQ 11.
*->QSWEBAS
wa_fcat-seltext_s = 'PO Number'.
*"
*"
*"
*"
*"
*"
IF sy-subrc = 0.
IF g_exit_caused_by_caller = 'X'.
Forced Exit by calling program
<do_something>.
ELSE.
User left list via F3, F12 or F15
IF gs_exit_caused_by_user-back = 'X'.
"F3
<do_something>.
PERFORM check_changes.
ELSE.
IF gs_exit_caused_by_user-exit = 'X'.
"F15
<do_something>.
PERFORM check_changes.
ELSE.
IF gs_exit_caused_by_user-cancel = 'X'. "F12
<do_something>.
PERFORM check_changes.
ELSE.
*"
*"
ENDIF.
*&====================&*
AT LINE-SELECTION.
*&====================&*
SET PARAMETER ID 'GJR' FIELD
wa_lista-gjahr.
CASE wa_lista-inv_type.
WHEN 'FI'.
SET PARAMETER ID 'BLP' FIELD wa_lista-belnr.
CALL TRANSACTION 'FBV3' AND SKIP FIRST SCREEN.
WHEN 'MM'.
SET PARAMETER ID 'RBN' FIELD wa_lista-belnr.
CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.
WHEN OTHERS.
ENDCASE.
*---------------------------------------------------------------------*
*
FORM LAYOUT_INIT
*
*---------------------------------------------------------------------*
FORM layout_init USING rs_layout TYPE slis_layout_alv.
*"Build layout for list display
rs_layout-detail_popup
= 'X'.
rs_layout-box_fieldname = 'ZSEL'.
rs_layout-box_tabname = 'Z_LISTA'.
ENDFORM.
"layout_init
*---------------------------------------------------------------------*
*
FORM EVENTTAB_BUILD
*
*---------------------------------------------------------------------*
FORM eventtab_build USING rt_events TYPE slis_t_event.
*"Registration of events to happen during list display
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events
= rt_events.
"eventtab_build
*---------------------------------------------------------------------*
*
FORM TOP_OF_PAGE
*
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo
= 'ENJOYSAP_LOGO'
it_list_commentary = gt_list_top_of_page.
ENDFORM.
"top_of_page
*---------------------------------------------------------------------*
*
FORM COMMENT_BUILD
*
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
* --> LT_TOP_OF_PAGE
*
*---------------------------------------------------------------------*
FORM comment_build USING lt_top_of_page TYPE
slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = text-100.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ENDFORM.
"comment_build
*---------------------------------------------------------------------*
*
FORM USER_COMMAND
*
*---------------------------------------------------------------------*
*
Handling of user command from ALV
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
* DATA: L_TA(4) TYPE C VALUE 'FBV3'.
DATA: l_ta(4) TYPE c.
DATA: w_counter TYPE p.
DATA: user LIKE user_addr-bname.
DATA: text_table LIKE tline OCCURS 0 WITH HEADER LINE.
DATA: lin TYPE i.
DATA : BEGIN OF ld_workitem OCCURS 0,
wi_id TYPE swwwihead-wi_id,
END OF ld_workitem.
CASE r_ucomm.
*/Begin of Dipin/*
WHEN 'BACK'.
CALL SCREEN 0.
CLEAR r_ucomm.
*/End of Dipin/*
WHEN
'CHNG'.
ENDIF.
CHECK w_counter GT 0.
* check if rows is marked to be changed
CALL FUNCTION 'TR_POPUP_INPUT_SAPUSER'
EXPORTING
iv_check_user_existence = 'X'
CHANGING
cv_username
EXCEPTIONS
action_aborted_by_user
OTHERS
= user
= 1
= 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.
LOOP AT it_lista INTO wa_lista
WHERE NOT zsel IS INITIAL.
ld_workitem-wi_id = wa_lista-wi_id .
APPEND ld_workitem.
ENDLOOP.
CLEAR: wa_usrtab.
SELECT bname
name_textc
INTO wa_usrtab
FROM user_addr
WHERE bname = user.
ENDSELECT .
it_lista[] = it_lista_old[].
LOOP AT ld_workitem.
LOOP AT it_lista INTO wa_lista
WHERE wi_id = ld_workitem-wi_id.
wa_lista-bname
= wa_usrtab-bname.
wa_lista-name_textc = wa_usrtab-name_textc.
wa_lista-zsel
= ' '.
IF NOT wa_lista-xprfg IS INITIAL.
ENDIF.
MODIFY it_lista FROM wa_lista.
ENDLOOP.
ENDLOOP.
DESCRIBE TABLE text_table LINES lin.
rs_selfield-refresh = 'X'.
IF it_lista[] NE it_lista_old[].
PERFORM check_changes.
ENDIF.
IF lin > 0.
CALL FUNCTION 'COPO_POPUP_TO_DISPLAY_TEXTLIST'
EXPORTING
task
= 'DISPLAY'
titel
= text-200
TABLES
text_table = text_table.
ENDIF.
CLEAR r_ucomm.
WHEN '&IC1'.
wa_lista-bukrs.
"MM-invoices
wa_lista-belnr.
ENDCASE.
* display invoices from both FI and MM
SET PARAMETER ID 'GJR' FIELD wa_lista-gjahr.
CALL TRANSACTION l_ta AND SKIP FIRST SCREEN.
ENDIF.
CLEAR r_ucomm.
WHEN 'SAVE'.
IF it_lista[] NE it_lista_old[].
PERFORM save_changes.
ENDIF.
rs_selfield-refresh = 'X'.
CLEAR r_ucomm.
WHEN OTHERS.
ENDCASE.
ENDFORM.
"user_command
*----------------------------------------------------------------------*
FORM PF_STATUS_SET
*----------------------------------------------------------------------FORM pf_status_set USING extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD' EXCLUDING extab.
ENDFORM.
"pf_status_set
*&---------------------------------------------------------------------*
*&
Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
FORM build_fieldcat USING
gt_fieldcat TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
*
I_STRUCTURE_NAME = 'ZEDH_FORFALLODAGS_RAPP_STRUC'
i_structure_name = 'ZDUE_LIST_STRUC'
CHANGING
ct_fieldcat
= gt_fieldcat
EXCEPTIONS
OTHERS
= 0. "No need to handle
LOOP AT gt_fieldcat INTO struct_fieldcat.
CASE struct_fieldcat-fieldname.
WHEN 'GJAHR'.
struct_fieldcat-no_out = 'X'.
WHEN 'BUKRS'.
struct_fieldcat-no_out = 'X'.
WHEN 'LIFNR'.
struct_fieldcat-row_pos = 2.
WHEN 'NAME1'.
struct_fieldcat-row_pos = 2.
WHEN 'BNAME'.
struct_fieldcat-row_pos = 2.
WHEN 'NAME_TEXTC'.
struct_fieldcat-row_pos = 2.
struct_fieldcat-outputlen = 30.
WHEN 'WI_FILL80'.
struct_fieldcat-row_pos = 3.
WHEN 'WI_RHTEXT'.
struct_fieldcat-row_pos = 2.
struct_fieldcat-outputlen = 30.
struct_fieldcat-seltext_l = text-300.
struct_fieldcat-seltext_m = text-301.
struct_fieldcat-seltext_s = text-302.
WHEN 'WI_ID'.
struct_fieldcat-no_out = 'X'.
WHEN 'XPRFG'.
struct_fieldcat-no_out = 'X'.
WHEN OTHERS.
ENDCASE.
MODIFY gt_fieldcat FROM struct_fieldcat.
ENDLOOP.
ENDFORM.
"M001
"M001
" BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*&
Form CHECK_CHANGES
*&---------------------------------------------------------------------*
FORM check_changes.
DATA: lv_answer.
IF it_lista[] NE it_lista_old[].
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
diagnosetext1 = 'Changes made ...'
textline1
= 'Save changes ?'
titel
= ' '
cancel_display = ' '
IMPORTING
answer
= lv_answer.
IF lv_answer = 'J'.
PERFORM save_changes.
ELSE.
it_lista[] = it_lista_old[].
ENDIF.
ENDIF.
ENDFORM.
" CHECK_CHAN
*&---------------------------------------------------------------------*
*&
Form SAVE_CHANGES
*&---------------------------------------------------------------------*
FORM save_changes.
LOOP AT it_lista INTO wa_lista.
READ TABLE it_lista_old INTO wa_lista_old INDEX sy-tabix.
IF wa_lista-bname NE wa_lista_old-bname.
* Start of change M002
CLEAR swwwihead.
SELECT SINGLE *
FROM swwwihead
WHERE wi_id = wa_lista-wi_id.
IF swwwihead-wi_stat = 'READY'.
CALL FUNCTION 'SAP_WAPI_FORWARD_WORKITEM'
EXPORTING
workitem_id = wa_lista-wi_id
user_id
= wa_lista-bname.
ELSE.
CLEAR z_forward_agent.
REFRESH z_forward_agent.
CONCATENATE 'US' wa_lista-bname INTO z_forward_agent.
APPEND z_forward_agent.
CALL FUNCTION 'SWW_WI_FORWARD'
EXPORTING
current_user = wa_lista_old-bname
wi_id
= wa_lista-wi_id
do_commit
= 'X'
TABLES
new_agents
= z_forward_agent.
ENDIF.
ENDIF.
ENDLOOP.
it_lista_old[] = it_lista[].
ENDFORM.
" save_CHAN
*----------------------------------------------------------------------*
***INCLUDE ZZ_FORM_INCLUDE .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form SELECT
*&---------------------------------------------------------------------*
FORM select.
TYPES: BEGIN OF lty_total,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
dmbtr TYPE bseg-dmbtr,
END OF lty_total.
TYPES: BEGIN OF lty_vbsegk,
AUSBK TYPE AUSBK,
BELNR TYPE BELNR_D,
OF
OF
OF
OF
OF
ty_vbsegk,
TY_RBKP,
TY_VBSEGS,
swr_cont,
lty_total.
*Commented
DATA: lw_agents
TYPE swhactor,
lw_user_list TYPE swhactor.
DATA: lt_agents
TYPE STANDARD TABLE OF swhactor,
lt_user_list TYPE STANDARD TABLE OF swhactor.
BEGIN OF ty_fiinv,
belnr TYPE v_vbsegk-belnr,
bukrs TYPE bukrs,
xblnr TYPE xblnr1,
//Added this field xblnr for testing by Dipin
gjahr TYPE gjahr,
wi_id TYPE sww_wiid,
END OF ty_fiinv,
BEGIN OF ty_mminv,
belnr TYPE rbkp-belnr,
bukrs TYPE bukrs,
gjahr TYPE gjahr,
wi_id TYPE sww_wiid,
END OF ty_mminv,
BEGIN OF ty_witext,
wi_id TYPE sww_wiid,
wi_text TYPE sww_witext,
END OF ty_witext,
BEGIN OF ty_vendor,
name1 TYPE name1_gp,
lifnr TYPE lfa1-lifnr,
END OF ty_vendor.
**************************************************
*
DATA DECLARATION
**************************************************
DATA: lt_wi_ids1 TYPE TABLE OF ty_wi_ids,
lt_wi_ids TYPE TABLE OF ty_wi_ids1,
ls_wi_ids1 TYPE ty_wi_ids1,
lt_objkey TYPE TABLE OF ty_objkey,
ls_objkey TYPE ty_objkey,
lt_objkey1 LIKE ls_objkey OCCURS 0 WITH HEADER LINE,
lt_fiinv TYPE TABLE OF ty_fiinv,
ls_fiinv TYPE ty_fiinv,
ls_witext TYPE ty_witext,
lt_witext TYPE TABLE OF ty_witext,
ls_vendor TYPE ty_vendor,
lt_vendor TYPE TABLE OF ty_vendor,
lv_bname TYPE user_addr-bname,
lv_name_textc TYPE user_addr-name_textc,
lt_mminv TYPE TABLE OF ty_mminv,
ls_mminv TYPE ty_mminv,
ls_mmwitext TYPE ty_witext,
lt_mmwitext TYPE TABLE OF ty_witext,
ls_mmvendor TYPE ty_vendor,
lt_mmvendor TYPE TABLE OF ty_vendor.
DATA :
wi_cont_tab
fipp_id_old
fipp_id_arc
gt_itemlist1
REFRESH lr_task_sel[].
CLEAR lr_task_sel[].
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS90200363'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS90200364'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS90200365'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS90200367'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS90200368'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS90200370'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS90200307'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS97100014'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS97100016'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS90200220'.
APPEND lr_task_sel.
lr_task_sel-sign = 'I'.
lr_task_sel-option = 'EQ'.
lr_task_sel-low = 'TS97100007'.
APPEND lr_task_sel.
********************************************************
*
LOGIC
********************************************************
IF s_bname IS NOT INITIAL.
REFRESH: lt_wi_ids1,
lt_wi_ids,
lt_rbkp,
lt_objkey,
lt_objkey1,
lt_container,
lt_fiinv,
lt_mminv,
lt_vbsegk,
lt_vbsegs ,
lt_witext,
lt_vendor,
lt_mmvendor,
lt_mmwitext,
lt_mminv,lt_rbkp.
CLEAR: lw_rbkp,
ls_mminv,
ls_mmwitext,
ls_mmvendor,
ls_fiinv,
ls_witext,
ls_vendor,
ls_objkey,
ls_wi_ids1.
LOOP AT s_bname.
s_bname = s_bname+3(7).
* Get the work item ids for the user
SELECT user_id
wi_id
INTO TABLE lt_wi_ids1
FROM swwuserwi
WHERE user_id = s_bname
AND no_sel NE 'X'
AND no_execute NE 'X'.
*Start of Dipin (XDIPMUN)*
*Checking if the internal Table is Initial or not*
IF lt_wi_ids1[] IS NOT INITIAL.
*End of Dipin (XDIPMUN)*
*Remove the workitems which are completed or logically deleted
SELECT wi_id
wi_rh_task
FROM swwwihead
INTO TABLE lt_wi_ids
FOR ALL ENTRIES IN lt_wi_ids1
WHERE wi_id = lt_wi_ids1-wi_id
AND ( wi_stat = c_ready
OR wi_stat
= c_started
OR wi_stat
= c_selected
OR wi_stat
= c_committed ).
ENDIF.
SELECT SINGLE bname
name_textc
FROM user_addr
INTO (lv_bname, lv_name_textc)
WHERE bname = s_bname.
IF lt_wi_ids[] IS NOT INITIAL.
* Get the object keys for the work items in users inbox
SELECT wi_id
element
objkey
FROM sww_contob
INTO TABLE lt_objkey
FOR ALL ENTRIES IN lt_wi_ids
WHERE wi_id = lt_wi_ids-wi_id
AND ( element = c_invoice
OR element = c__wi_object_id
OR element = c__adhoc_objects
OR element = c_fippid ).
ELSE.
MESSAGE text-m02 TYPE 'I' .
EXIT.
ENDIF.
** Begin of Dipin (XDIPMUN).
TYPES: BEGIN OF TY_LV_WI_ID,
WI_ID TYPE SWW_WIID,
WI_CHCKWI TYPE SWW_CHCKWI,
END OF TY_LV_WI_ID.
TYPES: BEGIN OF TY_LV_WI_ID1,
WI_ID TYPE SWW_WIID,
WI_CHCKWI TYPE SWW_CHCKWI,
END OF TY_LV_WI_ID1.
DATA: IT_LV_WI_ID TYPE STANDARD TABLE OF TY_LV_WI_ID,
WA_LV_WI_ID TYPE TY_LV_WI_ID.
DATA: IT_LV_WI_ID1 TYPE STANDARD TABLE OF TY_LV_WI_ID1,
WA_LV_WI_ID1 TYPE TY_LV_WI_ID1.
ENDIF.
SORT it_lv_wi_id by wi_id.
SORT it_lv_wi_id1 by wi_id.
READ TABLE it_lv_wi_id into wa_lv_wi_id with key wi_id = ls_wi_ids1-wi_id BINA
RY SEARCH.
IF SY-SUBRC Eq 0.
READ TABLE IT_LV_WI_ID1 INTO WA_LV_WI_ID1 WITH KEY wi_id = ls_wi_ids1-wi_id BI
NARY SEARCH.
Endif.
IF sy-subrc = 0.
WA_LV_WI_ID-wi_chckwi = WA_LV_WI_ID1-wi_chckwi.
ENDIF.
CALL FUNCTION 'SAP_WAPI_READ_CONTAINER'
EXPORTING
workitem_id = WA_lv_wi_id-wi_chckwi
TABLES
simple_container = lt_container.
IF sy-subrc = 0.
IF ls_wi_ids1-wi_task = c_ts90200307.
READ TABLE lt_container INTO lw_container
WITH KEY element = c_fippid.
IF sy-subrc IS INITIAL.
lt_objkey1-objkey = lw_container-value+20(18).
ENDIF.
ELSE.
=
=
=
=
ls_objkey-objkey+4(10).
ls_objkey-objkey+14(4).
ls_objkey-objkey+0(4).
ls_objkey-wi_id.
*
Get FI invoice details
*
SELECT *
by Dipin on 02/01/2014 and added an updated query
Commented
SELECT AUSBK BELNR GJAHR BUKRS BUZEI BSCHL SHKZG DMBTR WRBTR SGTXT LIFNR ZFBDT
SWAER BLART XBLNR XPRFG
FROM v_vbsegk
INTO TABLE lt_vbsegk
FOR ALL ENTRIES IN lt_fiinv
WHERE belnr = lt_fiinv-belnr
AND
gjahr = lt_fiinv-gjahr
AND
bukrs = lt_fiinv-bukrs.
*
Get AB doc invoice details
*
SELECT *
Commented by
Dipin on 02/01/2014 and added an updated query
SELECT BELNR GJAHR BUKRS BUZEI DMBTR ZFBDT BLART CPUDT XBLNR XPRFG
FROM v_vbsegs
INTO TABLE lt_vbsegs
FOR ALL ENTRIES IN lt_fiinv
WHERE belnr = lt_fiinv-belnr
AND gjahr = lt_fiinv-gjahr
AND bukrs = lt_fiinv-bukrs
AND buzei EQ '001'
AND ( blart NE 'KR'
OR blart NE 'KG'
OR blart NE 'Y1'
OR blart NE 'Y2' ).
****** BEGIN OF Dipin ************
IF lt_vbsegs[] IS NOT INITIAL.
SELECT bukrs gjahr xblnr awkey
FROM bkpf
INTO TABLE lt_awkey
FOR ALL ENTRIES IN lt_vbsegs
WHERE bukrs EQ lt_vbsegs-bukrs
AND
xblnr EQ lt_vbsegs-xblnr
AND
gjahr EQ lt_vbsegs-gjahr.
TYPES: BEGIN OF ty_vbsegs_1,
bukrs TYPE bukrs,
xblnr TYPE belnr_d,
END OF ty_vbsegs_1.
DATA: lt_vbsegs_1 TYPE STANDARD TABLE OF ty_vbsegs_1,
lw_vbsegs_1 TYPE ty_vbsegs_1.
LOOP AT lt_vbsegs INTO lw_vbsegs.
lw_vbsegs_1-bukrs = lw_vbsegs-bukrs.
lw_vbsegs_1-xblnr = lw_vbsegs-xblnr.
APPEND lw_vbsegs_1 TO lt_vbsegs_1.
CLEAR: lw_vbsegs_1, lw_vbsegs.
ENDLOOP.
IF lt_vbsegs_1[] IS NOT INITIAL.
SELECT bukrs belnr gjahr lifnr zfbdt
FROM bseg
INTO TABLE lt_bseg
FOR ALL ENTRIES IN lt_vbsegs_1
WHERE bukrs EQ lt_vbsegs_1-bukrs
AND
belnr EQ lt_vbsegs_1-xblnr.
ENDIF.
ENDIF.
**** END OF Dipin ************
belnr = lw_vbsegs-xblnr
gjahr = lw_vbsegs-gjahr.
lw_vbsegk-lifnr = lv_bseg-lifnr.
lw_vbsegk-zfbdt = lv_bseg-zfbdt.
ENDIF.
APPEND lw_vbsegk TO lt_vbsegk.
ENDLOOP.
ENDIF.
IF lt_vbsegk[] IS NOT INITIAL.
*
MOVE: lv_bname
TO wa_lista-bname,
lv_name_textc TO wa_lista-name_textc.
*
CLEAR wa_lista.
ENDLOOP.
ENDIF.
* ------------------Begin of Dipin--------------TYPES: BEGIN OF ty_gjahr,
sign TYPE char1,
option TYPE char2,
low TYPE char4,
high TYPE char4,
END OF ty_gjahr.
DATA : lt_gjahr TYPE STANDARD TABLE OF ty_gjahr,
wa_gjahr TYPE ty_gjahr.
LOOP AT s_gjahr.
wa_gjahr-sign = s_gjahr-sign.
wa_gjahr-option = s_gjahr-option.
wa_gjahr-low = s_gjahr-low.
wa_gjahr-high = s_gjahr-high.
APPEND wa_gjahr To lt_gjahr.
CLEAR wa_gjahr.
ENDLOOP.
* * ------------------End of Dipin---------------
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM lt_mminv COMPARING belnr.
IF lt_mminv[] IS NOT INITIAL.
*
Get MM invoice deta ils
*
SELECT *
*Commented by Dipin
(XDIPMUN) on 06.01.2013
SELECT BELNR GJAHR BLART BLDAT BUDAT USNAM TCODE CPUDT CPUTM VGART XBLNR BUKRS
LIFNR WAERS KURSF RMWWR BEZNK MWSKZ1 ZTERM ZBD1T XRECH SAPRL LOGSYS IVTYP
RBSTAT ZFBDT NAME1
FROM rbkp
INTO TABLE lt_rbkp
FOR ALL ENTRIES IN lt_mminv
WHERE belnr = lt_mminv-belnr
AND gjahr = lt_mminv-gjahr.
LOOP AT z_vbsegs.
CLEAR: wa_vbsegk,
lv_gjahr.
MOVE-CORRESPONDING z_vbsegs TO wa_vbsegk.
IF NOT z_vbsegs-cpudt IS INITIAL
AND z_vbsegs-blart = c_ab .
lv_gjahr = z_vbsegs-cpudt(4).
SELECT SINGLE lifnr
zfbdt
FROM bseg
INTO (wa_vbsegk-lifnr, wa_vbsegk-zfbdt)
WHERE bukrs EQ z_vbsegs-bukrs
AND belnr EQ z_vbsegs-xblnr
AND gjahr EQ lv_gjahr
AND ( bschl EQ c_21
OR bschl EQ c_31 ).
IF sy-subrc NE 0.
lv_gjahr = lv_gjahr - 1.
SELECT SINGLE lifnr
zfbdt
FROM bseg
INTO (wa_vbsegk-lifnr, wa_vbsegk-zfbdt)
WHERE bukrs EQ z_vbsegs-bukrs
AND belnr EQ z_vbsegs-xblnr
AND gjahr EQ lv_gjahr
AND ( bschl EQ c_21
OR bschl EQ c_31 ).
ENDIF.
ELSE.
SELECT SINGLE lifnr
zfbdt
FROM bseg
INTO (wa_vbsegk-lifnr, wa_vbsegk-zfbdt)
WHERE bukrs EQ z_vbsegs-bukrs
AND belnr EQ z_vbsegs-xblnr
AND gjahr EQ z_vbsegs-gjahr.
* Check for the previous fiscal year of KR/KG doc
IF sy-subrc = 4.
z_vbsegs-gjahr = z_vbsegs-gjahr - 1.
IPMUN)
FROM bkpf
INTO z_vbsegs-gjahr
UP TO 1 ROWS
*
IPMUN)
ENDSELECT.
"Commented by Dipin (
IF sy-subrc = 0.
SELECT SINGLE lifnr
zfbdt
FROM bseg
INTO (wa_vbsegk-lifnr, wa_vbsegk-zfbdt)
WHERE bukrs EQ z_vbsegs-bukrs
AND belnr EQ z_vbsegs-xblnr
AND gjahr EQ z_vbsegs-gjahr.
ENDIF.
ENDIF.
ENDIF.
APPEND wa_vbsegk TO it_vbsegk.
ENDLOOP.
ENDIF.
ENDIF.
* added code to collect MM invoices as well ERONNYC 2003-05-23 - start
IF s_mminv = 'X'.
SELECT BELNR GJAHR BLART BLDAT BUDAT USNAM TCODE CPUDT CPUTM VGART XBLNR
BUKRS LIFNR WAERS KURSF RMWWR BEZNK MWSKZ1 ZTERM ZBD1T XRECH SAPRL LOGSYS IVTY
P RBSTAT ZFBDT NAME1
FROM rbkp
INTO TABLE it_rbkp
WHERE gjahr IN s_gjahr
AND blart IN p_blart
AND xblnr IN s_xblnr
AND bukrs IN s_bukrs
AND lifnr IN s_lifnr.
ENDIF.
** BEGIN OF DIPIN (XDIPMUN).
TYPES: BEGIN OF TY_RSEG_NEW,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
EBELN TYPE EBELN,
WRBTR TYPE WRBTR,
END OF TY_RSEG_NEW.
DATA: IT_TY_RSEG_NEW TYPE STANDARD TABLE OF TY_RSEG_NEW,
WA_TY_RSEG_NEW TYPE TY_RSEG_NEW.
IF IT_RBKP[] IS NOT INITIAL.
SELECT BELNR GJAHR EBELN WRBTR
FROM RSEG
INTO TABLE IT_TY_RSEG_NEW
FOR ALL ENTRIES IN IT_RBKP
WHERE BELNR EQ IT_RBKP-BELNR
AND
GJAHR EQ IT_RBKP-GJAHR.
ENDIF.
** END OF DIPIN (XDIPMUN).
SORT: IT_RBKP by BELNR,
IT_TY_RSEG_NEW by BELNR.
LOOP AT it_rbkp INTO wa_rbkp.
MOVE-CORRESPONDING wa_rbkp TO wa_vbsegk.
SELECT ebeln
wrbtr
INTO (lv_ebeln, w_wrbtr)
FROM rseg
WHERE belnr EQ wa_vbsegk-belnr
AND gjahr EQ wa_vbsegk-gjahr.
CLEAR WA_TY_RSEG_NEW.
ENDLOOP.
FREE it_rbkp.
* added code to collect MM invoices as well
SORT it_vbsegk.
DELETE it_vbsegk WHERE blart EQ 'KR' AND bschl NE '31'.
DELETE it_vbsegk WHERE blart EQ 'Y1' AND bschl NE '31'.
CLEAR: wa_lista,
lt_total,
lw_total.
** Begin Of Dipin (XDIPMUN).
TYPES: BEGIN OF TY_VBSEGK_NEW_ONE,
LIFNR TYPE LIFNR,
NAME1 TYPE NAME1_GP,
END OF TY_VBSEGK_NEW_ONE.
DATA: IT_TY_VBSEGK_NEW_ONE TYPE STANDARD TABLE OF TY_VBSEGK_NEW_ONE,
WA_TY_VBSEGK_NEW_ONE TYPE TY_VBSEGK_NEW_ONE.
If it_vbsegk[] IS NOT INITIAL.
SELECT LIFNR NAME1
FROM LFA1
INTO TABLE IT_TY_VBSEGK_NEW_ONE
FOR ALL ENTRIES IN IT_VBSEGK
WHERE LIFNR EQ IT_VBSEGK-LIFNR.
ENDIF.
=
=
=
=
wa_vbsegk-belnr.
wa_vbsegk-bukrs.
wa_vbsegk-gjahr.
lv_dmbtr.
IF wa_vbsegk-blart EQ 'AB'.
WRITE: lv_dmbtr TO wa_lista-dmbtr CURRENCY wa_vbsegk-swaer.
ENDIF.
wa_lista-zzfbdt = wa_vbsegk-zfbdt.
CHECK wa_lista-bldat IN s_idatum.
CHECK wa_lista-cpudt IN s_cpudat.
* added code to check invoice amounts
IF s_wrbtr-low NE 0.
CHECK wa_vbsegk-wrbtr GE s_wrbtr-low.
ENDIF.
IF s_wrbtr-high NE 0.
CHECK wa_vbsegk-wrbtr LE s_wrbtr-high.
ENDIF.
IF s_dmbtr-low NE 0.
CHECK wa_vbsegk-dmbtr GE s_dmbtr-low.
ENDIF.
IF s_dmbtr-high NE 0.
CHECK wa_vbsegk-dmbtr LE s_dmbtr-high.
ENDIF.
* get vendor names
*
SELECT SINGLE name1
*
FROM lfa1
*
INTO wa_lista-name1
*
WHERE lifnr = wa_vbsegk-lifnr.
"Commented by Dipin
** Begin of Insertion by DIPIN.
READ TABLE IT_TY_VBSEGK_NEW_ONE INTO WA_TY_VBSEGK_NEW_ONE
WITH KEY LIFNR = WA_VBSEGK-LIFNR
BINARY SEARCH.
** End Of Inertion by Dipin.
* calculate payment due date
PERFORM paym_due_date USING wa_lista-zzfbdt
wa_lista-zbd1t
wa_lista-zbd2t
wa_lista-zbd3t
lv_fbdt.
wa_lista-zzfbdt = lv_fbdt.
* calculate payment due date
CHECK wa_lista-zzfbdt IN s_fdatum.
lw_key-bukrs
lw_key-belnr
lw_key-gjahr
lv_objkey
=
=
=
=
wa_vbsegk-bukrs.
wa_vbsegk-belnr.
wa_vbsegk-gjahr.
lw_key.
itemlist = itemlist1.
CALL FUNCTION 'SWI_WORKITEMS_OF_OBJECT_GET'
EXPORTING
objtype = 'ZFIPP'
objkey
= lv_objkey
TABLES
itemlist = itemlist.
LOOP AT itemlist INTO gs_itemlist
WHERE wi_text = lc_text.
CALL FUNCTION 'SAP_WAPI_READ_CONTAINER'
EXPORTING
workitem_id
= gs_itemlist-wi_id
IMPORTING
return_code
= lv_retcode
TABLES
simple_container = wi_cont_tab.
READ TABLE wi_cont_tab WITH KEY element = 'FIPP_ID_ORIG' .
IF sy-subrc = 0.
fipp_id_old = wi_cont_tab-value.
ELSE.
READ TABLE wi_cont_tab WITH KEY element = 'FIPP_ID_OLD'.
IF sy-subrc = 0.
fipp_id_old = wi_cont_tab-value.
ENDIF.
READ TABLE wi_cont_tab WITH KEY element = '_ADHOC_OBJECTS'.
IF sy-subrc = 0.
fipp_id_arc = wi_cont_tab-value.
ENDIF.
ENDIF.
ENDLOOP.
CALL FUNCTION 'SWI_WORKITEMS_OF_OBJECT_GET'
EXPORTING
objtype = lv_object
objkey
= fipp_id_old-objkey
TABLES
itemlist = gt_itemlist1.
CALL FUNCTION 'SWI_WORKITEMS_OF_OBJECT_GET'
EXPORTING
objtype = lv_object
objkey
= fipp_id_arc-objkey
TABLES
itemlist = gt_itemlist2.
APPEND LINES OF gt_itemlist1 TO itemlist.
APPEND LINES OF gt_itemlist2 TO itemlist.
APPEND LINES OF itemlist1 TO itemlist.
CLEAR: fipp_id_old,
fipp_id_arc,
gt_itemlist2[],
wi_cont_tab[],
gt_itemlist1[],
itemlist1[].
SORT itemlist[].
DELETE ADJACENT DUPLICATES FROM itemlist.
* if header workitem exist for MM / EB Invoice, remove the line item
* related workitems from the list
CLEAR: lw_taskfilter.
REFRESH: lt_taskfilter, lt_worklist.
IF wa_lista-inv_type = 'MM'.
lw_taskfilter-wi_rh_task = 'TS90200303'.
APPEND lw_taskfilter TO lt_taskfilter.
lw_taskfilter-wi_rh_task = 'TS90200337'.
APPEND lw_taskfilter TO lt_taskfilter.
* OCR/WF Release Feedback
lw_taskfilter-wi_rh_task = 'TS90000152'.
APPEND lw_taskfilter TO lt_taskfilter.
CALL FUNCTION 'SAP_WAPI_WORKITEMS_TO_OBJECT'
EXPORTING
objtype
= lv_object
objkey
= lv_objkey
top_level_items = ''
TABLES
task_filter
= lt_taskfilter
worklist
= lt_worklist.
IF NOT lt_worklist[] IS INITIAL.
DELETE itemlist WHERE wi_rh_task = 'TS90200076'
OR wi_rh_task = 'TS90200098'.
* Check if the current user of workitem is EP2_REMOTE if yes, dont show it.
LOOP AT lt_worklist INTO lw_worklist.
CALL FUNCTION 'SAP_WAPI_WORKITEM_RECIPIENTS'
EXPORTING
workitem_id = lw_worklist-wi_id
TABLES
recipients = lt_receipients.
* read table lt_receipients index 1 into ls_receipient.
LOOP AT lt_receipients INTO lw_receipient.
IF lw_receipient-objid EQ 'EP2_REMOTE'.
DELETE itemlist WHERE wi_id EQ lw_worklist-wi_id.
ENDIF.
ENDLOOP.
CLEAR: lw_receipient,
lt_receipients.
REFRESH: lt_receipients.
ENDLOOP.
ENDIF.
ENDIF.
LOOP AT
WHERE
AND
OR
OR
OR
itemlist
wi_type =
( wi_stat
wi_stat =
wi_stat =
wi_stat =
'W'
= 'READY'
'SELECTED'
'STARTED'
'COMMITTED' ).
CLEAR: lv_item_count.
* If the selection to filter out and only show the shipment invoices is
* checked, we should check if the top-workflow is the shipment invoice
* mismatch workflow
IF s_shpinv = 'X' AND s_mminv = 'X'.
SELECT
FROM
INTO
WHERE
AND
AND
COUNT(*)
swwwihead
lv_item_count
wi_id
= itemlist-wi_chckwi
wi_type
= 'F'
wi_rh_task = c_ws90200115.
IF lv_item_count = 0.
CONTINUE.
ENDIF.
ENDIF.
CALL FUNCTION 'SWW_WI_AGENTS_READ'
EXPORTING
wi_id = itemlist-wi_id
TABLES
agents = lt_agents.
LOOP AT lt_agents INTO lw_agents.
* add also not selected work item into total list (if not userselection is de
fined)
IF lw_agents-otype IS INITIAL
AND s_bname-low IS INITIAL
AND lv_object NE 'FIPP'.
wa_lista-bname
wa_lista-name_textc
wa_lista-wi_id
wa_lista-wi_rhtext
=
=
=
=
'********'.
'?????????????'.
itemlist-wi_id.
itemlist-wi_rhtext.
ENDSELECT.
ENDLOOP.
ENDLOOP.
CLEAR wa_lista.
ENDLOOP.
ENDLOOP.
IF s_error2 = 'X'.
CLEAR: wa_lista.
SELECT wi_id
wi_text
FROM swwwihead
INTO lw_swwihead
WHERE wi_type = 'W'
AND ( wi_stat = 'READY'
OR
wi_stat = 'SELECTED'
OR
wi_stat = 'STARTED'
OR
wi_stat = 'COMMITTED' )
AND ( wi_rh_task = 'TS91600070'
OR
wi_rh_task = 'TS91600072'
OR
wi_rh_task = 'TS91600073'
OR
wi_rh_task = 'TS91600074'
OR
wi_rh_task = 'TS91600116'
OR
wi_rh_task = 'TS91600058'
OR
wi_rh_task = 'TS91600107'
OR
wi_rh_task = 'TS91600105'
OR
wi_rh_task = 'TS91600102'
OR
wi_rh_task = 'TS91600100'
OR
wi_rh_task = 'TS91600099'
OR
wi_rh_task = 'TS91600120'
OR
wi_rh_task = 'TS90200290'
OR
wi_rh_task = 'TS00200234'
OR
wi_rh_task = 'TS90200303'
OR
wi_rh_task = 'TS90200337'
OR
wi_rh_task = 'TS90000152'
OR
wi_rh_task = 'TS97100016'
OR
wi_rh_task = 'TS97100014'
OR
wi_rh_task = 'TS90200220'
OR
wi_rh_task = 'TS97100007' ).
CALL FUNCTION 'SWW_WI_AGENTS_READ'
EXPORTING
wi_id = lw_swwihead-wi_id
TABLES
agents = lt_agents.
LOOP AT lt_agents INTO lw_agents.
IF lw_agents-otype = 'S'.
** Convert agent from organisational to userid.
CALL FUNCTION 'ZSWI_GET_USERS_OF_ORG_UNIT'
EXPORTING
otype
objid
TABLES
user_list
EXCEPTIONS
not_found
no_active_plvar
OTHERS
= lw_agents-otype
= lw_agents-objid
= lt_user_list
= 1
= 2
= 3.
=
=
=
=
wa_usrtab-bname.
wa_usrtab-name_textc.
lw_swwihead-wi_id.
lw_swwihead-wi_text.
ENDFORM.
" SELECT
*&---------------------------------------------------------------------*
* calculate payment due date
*&---------------------------------------------------------------------*
*&
Form PAYM_DUE_DATE
*&---------------------------------------------------------------------*
FORM paym_due_date USING i_fbdt
i_fbdt1
i_fbdt2
i_fbdt3
o_fbdt.
o_fbdt = i_fbdt.
IF NOT o_fbdt IS INITIAL AND NOT i_fbdt3 IS INITIAL.
o_fbdt = o_fbdt + i_fbdt3.
ELSE.
IF NOT o_fbdt IS INITIAL AND NOT i_fbdt2 IS INITIAL.
o_fbdt = o_fbdt + i_fbdt2.
ELSE.
IF NOT o_fbdt IS INITIAL AND NOT i_fbdt1 IS INITIAL.
o_fbdt = o_fbdt + i_fbdt1.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
" PAYM_DUE_DATE
*----------------------------------------------------------------------*
* FORM LOCAL_CURR
*----------------------------------------------------------------------*
* Convert to local currency
*----------------------------------------------------------------------*
FORM local_curr USING ld_bldat
ld_waers
ld_kursf
ld_locurr
CHANGING ld_frgnamnt
ld_locamnt.
* convert foreign amount to local currency
CLEAR ld_locamnt.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
client
= sy-mandt
date
= ld_bldat
foreign_amount
= ld_frgnamnt
foreign_currency = ld_waers
local_currency
= ld_locurr
rate
= ld_kursf
type_of_rate
= 'M'
IMPORTING
local_amount
= ld_locamnt
EXCEPTIONS
no_rate_found
= 1
overflow
= 2
no_factors_found = 3
no_spread_found = 4
derived_2_times = 5
OTHERS
= 6.
ENDFORM.
"local_curr
**************************************************************************
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*&---------------------------------------------------------------------*
* Program Name: Z_OCR_INVOICE_WI_MONITOR_TOP
*
* Title
: OCR Invoice Work Item Monitoring Report TOP include
*
* Create Date : 26.07.2013
*
* Request
: ERI-PM11013174
*
* Author
: XDIPMUN- Dipin Munjal
(Modified)
* Description : Work Item monitoring report for OCR workflows
*
*&---------------------------------------------------------------------*
* alv data
TYPE-POOLS: slis.
******************************
* Includes
INCLUDE <icon>.
INCLUDE <symbol>.
TYPES: BEGIN OF ty_bukrs,
bukrs TYPE bukrs,
END OF ty_bukrs.
* Structure of Z_LISTA to split FI/MM-inv
TYPES: BEGIN OF ty_lista.
INCLUDE STRUCTURE zdue_list_struc1. "Due list
TYPES:
bldat
TYPE
cpudt
TYPE
Was Entered
zbd1t
TYPE
zbd2t
TYPE
zbd3t
TYPE
inv_type(2) TYPE
ebeln
TYPE
END OF ty_lista.
table structure
bldat,
cpudt,
dzbd1t,
dzbd2t,
dzbd3t,
c,
ebeln,
**Begin of Renu
TYPES : BEGIN OF gty_blart,
sign(1) TYPE c,
option(2) TYPE c,
low(24)
TYPE c,
high(24) TYPE c,
END OF gty_blart.
data : gt_blart TYPE STANDARD TABLE OF gty_blart,
wa_blart TYPE gty_blart.
**End of Renu
**&& WORK AREA DECLARATIONS &&**
DATA: wa_bukrs
TYPE ty_bukrs,
wa_lista
TYPE ty_lista,
wa_lista_old TYPE ty_lista,
wa_usrtab
TYPE ty_usrtab,
wa_vbsegk
TYPE ty_vbsegk,
wa_rbkp
TYPE TY_RBKP.
**&& INTERNAL TABLE DECLARATIONS
DATA: it_bukrs
TYPE STANDARD
it_lista
TYPE STANDARD
it_lista_old TYPE STANDARD
it_vbsegk
TYPE STANDARD
it_rbkp
TYPE STANDARD
&&**
TABLE
TABLE
TABLE
TABLE
TABLE
OF
OF
OF
OF
OF
ty_bukrs,
ty_lista,
ty_lista,
ty_vbsegk,
TY_RBKP.
** && CONSTANTS
CONSTANTS: c_21
c_31
c_ab
DECLARATIONS &&**
TYPE bschl VALUE '21',
TYPE bschl VALUE '31',
TYPE blart VALUE 'AB',
c_invoice
c__wi_object_id
c__ADHOC_OBJECTS
c_fippid
c_ready
c_selected
c_started
c_committed
c_WS90200049
rkflow for FI approval
c_TS90200307
r Invoice Authorization
c_WS90200115
F
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
swc_elem
swc_elem
swc_elem
swc_elem
sww_wistat
sww_wistat
sww_wistat
sww_wistat
sww_task
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
VALUE
'INVOICE',
'_WI_OBJECT_ID',
'_ADHOC_OBJECTS',
'FIPPID',
'READY',
'SELECTED',
'STARTED',
'COMMITTED',
'WS90200049',
"ZOCR FI sub wo
TYPE sww_task
VALUE 'TS90200307',
"ZOCR FI Manage
TYPE sww_task
VALUE 'WS90200115',
"Shipment Inv W
lc_text(50)
TYPE c
slis_t_event,
TYPE slis_t_listheader,
slis_formname VALUE 'PF_STATUS_SET',
slis_formname VALUE 'USER_COMMAND',
slis_formname VALUE 'TOP_OF_PAGE'.
*"Variants
DATA: gs_variant LIKE disvariant,
g_save.
TABLES:
zdue_list_struc1,
vbkpf,
"Document Header for Document Parking
v_vbsegk,
user_addr,
swwwihead. "Header Table for all Work Item Types
* new struct of Z_LISTA to split FI/MM-inv - ERONNYC 2003-05-23 - end
*->QSWEBAS
DATA: z_forward_agent LIKE swhactor OCCURS 0 WITH HEADER LINE.
DATA: w_wrbtr LIKE rseg-wrbtr.
"ERONNYC 2003-05-23
DATA: wa_fcat LIKE LINE OF gt_fieldcat.
"ERONNYC 2003-06-25
DATA: lv_item_count TYPE i.
"XBMMESA ST6550258
* selections parametrar
SELECTION-SCREEN BEGIN OF
SELECTION-SCREEN BEGIN OF
*PARAMETERS: P_BLART LIKE
SELECT-OPTIONS:
p_blart FOR vbkpf-blart
s_bukrs FOR vbkpf-bukrs
s_gjahr FOR vbkpf-gjahr