0% found this document useful (0 votes)
131 views55 pages

Task Text

This document describes an ALV report program called Z_OCR_INVOICE_WI_MONITOR that monitors and displays work items for OCR invoice workflows. The program was created in 2013, and later modified in 2015 to include additional document types in the reporting. It retrieves data from internal tables, builds the ALV display, and handles events like double-clicks to display invoice documents or work items.

Uploaded by

NarasimhaReddy
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
0% found this document useful (0 votes)
131 views55 pages

Task Text

This document describes an ALV report program called Z_OCR_INVOICE_WI_MONITOR that monitors and displays work items for OCR invoice workflows. The program was created in 2013, and later modified in 2015 to include additional document types in the reporting. It retrieves data from internal tables, builds the ALV display, and handles events like double-clicks to display invoice documents or work items.

Uploaded by

NarasimhaReddy
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 55

*&---------------------------------------------------------------------*

*& Copy From : ZMIRV000 (ZOCR03)


*
*& Copy Details: To improve the performance of the report
*
*&---------------------------------------------------------------------*
* Program Name: Z_OCR_INVOICE_WI_MONITOR
*
* Title
: OCR Invoice Work Item Monitoring Report
*
* Create Date : 12.07.2013
*
* Request
: ERI-PM11013174
*
* Author
: XDIPMUN - Dipin Munjal
*
* Description : Work Item monitoring report for OCR workflows
*
*&---------------------------------------------------------------------*
*{
INSERT
F08K990747
1
* Program Name: Z_OCR_INVOICE_WI_MONITOR
*
* Title
: OCR Invoice Work Item Monitoring Report
*
* Change Date : 04.15.2015
*
* Request
: D12K9A3OHE
*
* Author
: XBETCAM - Betsie Camoro
*
* Description : Work Item monitoring report for OCR workflows
*
*
Modified code to include AB documents in the reporting.*
*&---------------------------------------------------------------------**
*}
INSERT

REPORT

z_ocr_invoice_wi_monitor MESSAGE-ID 00.

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'.

AT SELECTION-SCREEN ON BLOCK sel1.


* Load companycodes for auth check
REFRESH: it_bukrs.
SELECT bukrs
INTO TABLE it_bukrs
FROM t001
WHERE bukrs IN s_bukrs.
* Check authorization for each comp code
LOOP AT it_bukrs INTO wa_bukrs.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

ID 'BUKRS' FIELD wa_bukrs-bukrs


ID 'ACTVT' FIELD '03'.
* Exit on first found bad comp code
IF sy-subrc <> 0.
MESSAGE e915
WITH text-m01 wa_bukrs-bukrs.
ENDIF.
ENDLOOP.

START-OF-SELECTION.

* Refresh the main Internal tables.


CLEAR: it_lista.
REFRESH: it_vbsegk,
it_rbkp.
**Begin of renu
LOOP AT p_blart.
MOVE-CORRESPONDING p_blart TO wa_blart.
IF p_blart-low NE 'KG' OR
p_blart-low NE 'Y2'.
APPEND wa_blart TO gt_blart.
CLEAR : wa_blart.
ENDIF.
ENDLOOP.
**End of renu
PERFORM select.

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'.

wa_fcat-reptext_ddic = 'PO Number'.


wa_fcat-ddic_outputlen = 10.
wa_fcat-fieldname = 'EBELN'.
wa_fcat-ref_tabname = 'EKKO'.
wa_fcat-intlen
= 10.
MODIFY gt_fieldcat FROM wa_fcat
TRANSPORTING seltext_s reptext_ddic ddic_outputlen fieldname
ref_tabname intlen
WHERE row_pos EQ 0 AND col_pos EQ 12.
* change text info for ZZFBDT
PERFORM comment_build USING gt_list_top_of_page[].
*"Display List
it_lista_old[] = it_lista[].
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program
= g_repid
i_callback_pf_status_set = g_status_set
i_callback_user_command = g_user_command
i_structure_name
= 'ZDUE_LIST_STRUC'
is_layout
= gs_layout
it_fieldcat
= gt_fieldcat
i_save
= g_save
is_variant
= gs_variant
it_events
= gt_events[]
TABLES
t_outtab
= it_lista.

*"
*"
*"
*"

*"

*"

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.

*"
*"

should not occur!


<do_Abnormal_End>.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ELSE.
*"Fatal error callin ALV
* MESSAGE AXXX(XY) WITH ...
ENDIF.
ELSE.
* added code to prepare list for download
NEW-PAGE LINE-SIZE 255 NO-HEADING.
WRITE: /01 'Doc.no.',
13 'Ty',
17 'Reference',
36 'Amt local curr',
52 'Due Paym',
64 'Vendor',
76 'Name 1',
108 'User Name',
122 'Complete Name',
203 'Task Text',
242 'PO Number'.
WRITE:

/01(235) sy-uline, sy-datum, sy-uzeit.

LOOP AT it_lista INTO wa_lista.


CHECK NOT wa_lista-belnr IS INITIAL.
WRITE: /1 wa_lista-belnr,
13 wa_lista-blart,
17 wa_lista-xblnr,
35 wa_lista-dmbtr,
52 wa_lista-zzfbdt,
64 wa_lista-lifnr,
76 wa_lista-name1,
108 wa_lista-bname,
122 wa_lista-name_textc,
203 wa_lista-wi_rhtext,
242 wa_lista-ebeln.
HIDE: wa_lista-gjahr,
wa_lista-belnr,
wa_lista-inv_type.
ENDLOOP.

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.

READ TABLE rt_events INTO ls_event


WITH KEY name = slis_ev_top_of_page.
IF sy-subrc = 0.
MOVE g_top_of_page TO ls_event-form.
APPEND ls_event TO rt_events.
ENDIF.
ENDFORM.

"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'.

"Menu-button CHNG to change the user

* check if rows is marked to be changed


LOOP AT it_lista INTO wa_lista
WHERE NOT belnr IS INITIAL
AND NOT zsel IS INITIAL.
ADD 1 TO w_counter.
ENDLOOP.
IF w_counter EQ 0.
MESSAGE e609(00).

"Please make a selection

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'.

"dobbleclick call transaction FBV3/MIR4

READ TABLE it_lista INTO wa_lista


INDEX rs_selfield-tabindex.
* added code to dispaly work items
IF wa_lista-belnr IS INITIAL
AND NOT wa_lista-wi_id IS INITIAL.
CALL FUNCTION 'SWL_WI_DISPLAY'
EXPORTING
wi_id
= wa_lista-wi_id
extended_display = 'X'.
IF sy-subrc <> 0.
ENDIF.
ELSE.
* added code to dispaly work items
SET PARAMETER ID 'BUK' FIELD
* display invoices from both FI and MM

wa_lista-bukrs.

CHECK NOT wa_lista-belnr IS INITIAL.


CASE wa_lista-blart.
WHEN 'KR' OR 'KG' OR 'AB' OR 'Y1' OR 'Y2'.
l_ta = 'FBV3'.
"FI-invoices
SET PARAMETER ID 'BLP' FIELD wa_lista-belnr.
WHEN OTHERS.
l_ta = 'MIR4'.
SET PARAMETER ID 'RBN' FIELD

"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,

GJAHR TYPE GJAHR,


BUKRS TYPE BUKRS,
BUZEI TYPE BUZEI,
BSCHL TYPE BSCHL,
SHKZG TYPE SHKZG,
DMBTR TYPE DMBTR,
WRBTR TYPE WRBTR,
SGTXT TYPE SGTXT,
LIFNR TYPE LIFNR,
ZFBDT TYPE DZFBDT,
SWAER TYPE WAERS,
BLART TYPE BLART,
XBLNR TYPE XBLNR1,
XPRFG TYPE XPRFG,
ebeln TYPE rseg-ebeln,
wi_id TYPE swwwihead-wi_id,
END OF lty_vbsegk.
TYPES: BEGIN OF lty_swwihead,
wi_id
TYPE sww_wiid,
wi_text
TYPE sww_witext,
wi_rh_task TYPE sww_task,
wi_stat
TYPE sww_wistat,
END OF lty_swwihead.
TYPES: BEGIN OF lty_key,
bukrs LIKE vbsegk-bukrs,
belnr LIKE vbsegk-belnr,
gjahr LIKE vbsegk-gjahr,
END OF lty_key.
**&& WORK AREA DECLARATIONS &&**
DATA: lw_vbsegk
TYPE lty_vbsegk,
lw_rbkp
TYPE TY_RBKP,
lw_swwihead TYPE lty_swwihead,
lw_vbsegs
TYPE TY_VBSEGS,
lw_container TYPE swr_cont,
lw_total
TYPE lty_total,
lw_key
TYPE lty_key.

**&& INTERNAL TABLE DECLARATIONS &&**


DATA: lt_vbsegk
TYPE STANDARD TABLE
lt_rbkp
TYPE STANDARD TABLE
lt_vbsegs
TYPE STANDARD TABLE
lt_container TYPE STANDARD TABLE
lt_total
TYPE STANDARD TABLE

OF
OF
OF
OF
OF

ty_vbsegk,
TY_RBKP,
TY_VBSEGS,
swr_cont,
lty_total.

**&& VARIABLES DECLARATIONS &&**


DATA: lv_awkey
TYPE awkey,
lv_gjahr
TYPE gjahr,
lv_ebeln
TYPE ebeln,
lv_wrbtr
TYPE wrbtr,
lv_retcode TYPE sy-subrc,
lv_loccurr TYPE waers,
lv_wi_id
TYPE sww_wiid,
lv_wi_id1 TYPE sww_wiid,
lv_tabix
TYPE sy-tabix,
lv_object TYPE swo_objtyp,
lv_objkey TYPE swo_typeid,
lv_fbdt LIKE vbsegk-zfbdt,
lv_dmbtr TYPE bseg-dmbtr.
*As container elements can not be read for DSP workitems using SWW_CONTOB tab
le, we are declaring the selection criteria
* tasks and reading the container elements for those using WAPI READ containe
r FM.
**&& RANGES DECLARATION &&**
* RANGES lr_task_sel FOR swwwihead-wi_rh_task.
by Dipin (XDIPMUN)

*Commented

*Start of Dipin (XDIPMUN)*


TYPES: BEGIN OF TY_SWWIHEAD_WI_RH_TASK,
SIGN TYPE CHAR1,
OPTION TYPE CHAR2,
LOW TYPE CHAR14,
HIGH TYPE CHAR14,
END OF TY_SWWIHEAD_WI_RH_TASK.
DATA: LR_TASK_SEL TYPE STANDARD TABLE OF TY_SWWIHEAD_WI_RH_TASK WITH HEADER
LINE,
wa_task_sel TYPE TY_SWWIHEAD_WI_RH_TASK.
LOOP AT s_bname.
WA_TASK_SEL-SIGN = s_bname-SIGN.
WA_TASK_SEL-OPTION = s_bname-OPTION.
WA_TASK_SEL-LOW = s_bname-LOW.
WA_TASK_SEL-HIGH = s_bname-HIGH.
APPEND WA_TASK_SEL TO LR_TASK_SEL.
CLEAR WA_TASK_SEL.
ENDLOOP.

*END of Dipin (XDIPMUN)*

DATA: itemlist LIKE

swwwihead OCCURS 0 WITH HEADER LINE.

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.

DATA: lt_taskfilter TYPE TABLE OF swr_task,


lw_taskfilter TYPE swr_task,
lt_worklist TYPE TABLE OF swr_wihdr,
lw_worklist TYPE swr_wihdr,
lt_receipients TYPE TABLE OF swragent,
lw_receipient TYPE swragent.
*******************************************************
* START OF LOGIC FOR "USER SEARCH" CRETERIA
*******************************************************
*****************************************************
*
TYPES DECLARATION
*****************************************************
TYPES: BEGIN OF ty_wi_ids,
user_id TYPE xubname,
wi_id TYPE sww_wiid,
END OF ty_wi_ids,
BEGIN OF ty_wi_ids1,
wi_id TYPE sww_wiid,
wi_task TYPE swwwihead-wi_rh_task,
END OF ty_wi_ids1,
BEGIN OF ty_objkey,
wi_id TYPE sww_wiid,
element TYPE swc_elem,
objkey TYPE swo_typeid,
END OF ty_objkey,

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

LIKE swr_cont OCCURS 0 WITH HEADER LINE,


LIKE swotobjid,
LIKE swotobjid,
"XSAMCHA
LIKE swwwihead OCCURS 0 WITH HEADER LINE,

gt_itemlist2 LIKE swwwihead OCCURS 0 WITH HEADER LINE,


gs_itemlist TYPE swwwihead.
DATA: itemlist1 LIKE

swwwihead OCCURS 0 WITH HEADER LINE.

DATA: z_vbsegs TYPE STANDARD TABLE OF TY_VBSEGS WITH HEADER LINE.

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.

IF LT_WI_IDS IS NOT INITIAL.


Select wi_id wi_chckwi
from swwwihead
into TABLE it_lv_wi_id
FOR ALL ENTRIES IN LT_WI_IDS
where wi_id = lt_wi_ids-wi_id.
ENDIF.
IF it_lv_wi_id IS NOT INITIAL.
Select wi_id wi_chckwi
from SWWWIHEAD
INTO TABLE IT_LV_WI_ID1
FOR ALL ENTRIES IN IT_LV_WI_ID
WHERE wi_id = it_lv_wi_id-wi_id
AND WI_RH_tASK = C_WS90200049.

ENDIF.
SORT it_lv_wi_id by wi_id.
SORT it_lv_wi_id1 by wi_id.

** END OF DIPIN (XDIPMUN).

LOOP AT lt_wi_ids INTO ls_wi_ids1


WHERE wi_task IN lr_task_sel.

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.

READ TABLE lt_container INTO lw_container


WITH KEY element = c_invoice.
IF sy-subrc IS INITIAL.
lt_objkey1-objkey = lw_container-value+20(14).
ENDIF.
ENDIF.
lt_objkey1-wi_id = ls_wi_ids1-wi_id.
lt_objkey1-element = c_invoice.
APPEND lt_objkey1.
REFRESH: lt_container.
ENDIF.
ENDLOOP.
APPEND LINES OF lt_objkey1 TO lt_objkey.
* Collect data for FI invoices, if "Include FI invoices" is selected.
IF s_fiinv = 'X'.
* Collect the invoice number,companycode and fiscal year details comparing wi
th the fiscal year and companycode input data provided.
LOOP AT lt_objkey INTO ls_objkey
WHERE objkey+0(4) IN s_bukrs
AND objkey+14(4) IN s_gjahr.
IF numofchar( ls_objkey-objkey ) = 18. "FI invoice
ls_fiinv-belnr
ls_fiinv-gjahr
ls_fiinv-bukrs
ls_fiinv-wi_id

=
=
=
=

ls_objkey-objkey+4(10).
ls_objkey-objkey+14(4).
ls_objkey-objkey+0(4).
ls_objkey-wi_id.

APPEND ls_fiinv TO lt_fiinv.


ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM lt_fiinv COMPARING belnr bukrs gjahr.
IF lt_fiinv[] IS NOT INITIAL.
****BEGIN OF Dipin********
TYPES: BEGIN OF ty_new_bkpf,

bukrs TYPE bukrs,


gjahr TYPE gjahr,
xblnr TYPE xblnr,
awkey TYPE awkey,
END OF ty_new_bkpf.
DATA: lt_awkey TYPE STANDARD TABLE OF ty_new_bkpf,
lv_awkey_1 TYPE ty_new_bkpf.

TYPES: BEGIN OF ty_new_bseg,


bukrs TYPE bukrs,
belnr TYPE belnr_d,
gjahr TYPE gjahr,
lifnr TYPE lifnr,
zfbdt TYPE dzfbdt,
END OF ty_new_bseg.
DATA: lt_bseg TYPE STANDARD TABLE OF ty_new_bseg,
lv_bseg TYPE ty_new_bseg.

*
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 ************

LOOP AT lt_vbsegs INTO lw_vbsegs.


MOVE-CORRESPONDING lw_vbsegs TO lw_vbsegk.
READ TABLE lt_awkey
INTO lv_awkey_1
WITH KEY bukrs = lw_vbsegs-bukrs
xblnr = lw_vbsegs-xblnr
gjahr = lw_vbsegs-gjahr.
lv_awkey = lv_awkey_1-awkey.
IF sy-subrc IS INITIAL.
lv_gjahr = lv_awkey+14(4).
READ TABLE lt_bseg
INTO lv_bseg
WITH KEY belnr = lw_vbsegs-xblnr
gjahr = lv_gjahr
bukrs = lw_vbsegs-bukrs.
lw_vbsegk-lifnr = lv_bseg-lifnr.
lw_vbsegk-zfbdt = lv_bseg-zfbdt.
ELSE.
READ TABLE lt_bseg
INTO lv_bseg
WITH KEY bukrs = lw_vbsegs-bukrs
belnr = lw_vbsegs-xblnr
gjahr = lw_vbsegs-gjahr.
lw_vbsegk-lifnr = lv_bseg-lifnr.
lw_vbsegk-zfbdt = lv_bseg-zfbdt.
ENDIF.
IF sy-subrc = 0.
APPEND lw_vbsegk TO lt_vbsegk.
ELSE.
lw_vbsegs-gjahr = lw_vbsegs-gjahr - 1.
READ TABLE lt_bseg
INTO lv_bseg
WITH KEY bukrs = lw_vbsegs-bukrs

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.

DELETE ADJACENT DUPLICATES FROM lt_vbsegk


COMPARING belnr bukrs gjahr.
*

Get work item text


SELECT wi_id
wi_rhtext
FROM swwwihead
INTO TABLE lt_witext
FOR ALL ENTRIES IN lt_fiinv
WHERE wi_id = lt_fiinv-wi_id.

ENDIF.
IF lt_vbsegk[] IS NOT INITIAL.
*

Get the vendor name


SELECT name1 lifnr
FROM lfa1
INTO TABLE lt_vendor
FOR ALL ENTRIES IN lt_vbsegk
WHERE lifnr = lt_vbsegk-lifnr.
ENDIF.

* Prepare output table


SORT lt_vendor BY lifnr.
SORT lt_witext BY wi_id.
SORT lt_fiinv BY bukrs belnr gjahr.
SORT lt_vbsegk BY bukrs belnr gjahr buzei.
LOOP AT lt_vbsegk INTO lw_vbsegk.
MOVE-CORRESPONDING lw_vbsegk TO wa_lista.
*

Pass user details to output table

MOVE: lv_bname
TO wa_lista-bname,
lv_name_textc TO wa_lista-name_textc.
*

Pass work item id and text to output table


READ TABLE lt_fiinv INTO ls_fiinv
WITH KEY bukrs = lw_vbsegk-bukrs
belnr = lw_vbsegk-belnr
gjahr = lw_vbsegk-gjahr
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE lt_witext INTO ls_witext
WITH KEY wi_id = ls_fiinv-wi_id
BINARY SEARCH.
IF sy-subrc = 0.
MOVE: ls_witext-wi_id
TO wa_lista-wi_id,
ls_witext-wi_text TO wa_lista-wi_rhtext.
ENDIF.
ENDIF.

Pass vendor name to output table


READ TABLE lt_vendor INTO ls_vendor
WITH KEY lifnr = lw_vbsegk-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE ls_vendor-name1 TO wa_lista-name1.
ENDIF.

*Pass payment due date of the invoice to the list


MOVE lw_vbsegk-zfbdt TO wa_lista-zzfbdt.
* calculate payment due date
* Logic added to calculate the due payment date for FI invoices.
PERFORM paym_due_date USING wa_lista-zzfbdt
wa_lista-zbd1t
wa_lista-zbd2t
wa_lista-zbd3t
lv_fbdt.
wa_lista-zzfbdt = lv_fbdt.
APPEND wa_lista TO it_lista.

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---------------

* Collect data for MM invoices, if "Include MM invoices" is selected.


IF s_mminv = 'X'.
* Collect the invoice number and companycode details comparing with the fisca
l year input data provided.
LOOP AT lt_objkey INTO ls_objkey
WHERE objkey+10(4) IN lt_gjahr.
IF numofchar( ls_objkey-objkey ) = 14. "MM invoice
ls_mminv-belnr = ls_objkey-objkey+0(10).
ls_mminv-gjahr = ls_objkey-objkey+10(4).
ls_mminv-wi_id = ls_objkey-wi_id.
APPEND ls_mminv TO lt_mminv.

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.

Get work item text


SELECT wi_id wi_rhtext
FROM swwwihead
INTO TABLE lt_mmwitext
FOR ALL ENTRIES IN lt_mminv
WHERE wi_id = lt_mminv-wi_id.
ENDIF.
IF lt_rbkp[] IS NOT INITIAL.

Get the vendor name


SELECT name1
lifnr
FROM lfa1
INTO TABLE lt_mmvendor
FOR ALL ENTRIES IN lt_rbkp
WHERE lifnr = lt_rbkp-lifnr.
ENDIF.

Prepare output table


SORT lt_mmvendor BY lifnr.
SORT lt_mmwitext BY wi_id.
SORT lt_mminv BY belnr gjahr.

LOOP AT lt_rbkp INTO lw_rbkp


WHERE bukrs IN s_bukrs.
MOVE-CORRESPONDING lw_rbkp TO wa_lista.
*

Pass user details to output table


MOVE: lv_bname
TO wa_lista-bname,
lv_name_textc TO wa_lista-name_textc.

Pass work item id and text to output table


READ TABLE lt_mminv INTO ls_mminv
WITH KEY belnr = lw_rbkp-belnr
gjahr = lw_rbkp-gjahr
BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE lt_mmwitext INTO ls_mmwitext
WITH KEY wi_id = ls_mminv-wi_id
BINARY SEARCH.
IF sy-subrc = 0.
MOVE: ls_mmwitext-wi_id
TO wa_lista-wi_id,
ls_mmwitext-wi_text TO wa_lista-wi_rhtext.
ENDIF.
ENDIF.

Pass vendor name to output table


READ TABLE lt_mmvendor INTO ls_mmvendor
WITH KEY lifnr = lw_rbkp-lifnr
BINARY SEARCH.
IF sy-subrc = 0.
MOVE ls_mmvendor-name1 TO wa_lista-name1.
ENDIF.
CLEAR: lv_ebeln,
lv_wrbtr.
SELECT SINGLE ebeln
wrbtr
INTO (lv_ebeln,
lv_wrbtr)
FROM rseg
WHERE belnr EQ lw_rbkp-belnr

AND gjahr EQ lw_rbkp-gjahr.


* Get local currency of the companycode
SELECT SINGLE waers
INTO lv_loccurr
FROM t001
WHERE bukrs = lw_rbkp-bukrs.
* Convert invoice amount into local currency amount.
PERFORM local_curr USING lw_rbkp-bldat
lw_rbkp-waers
lw_rbkp-kursf
lv_loccurr
CHANGING lw_rbkp-rmwwr
lv_wrbtr.
WRITE: lv_wrbtr TO wa_lista-dmbtr CURRENCY lw_rbkp-waers.
*Pass payment due date & PO number of the invoice to the list
MOVE lw_rbkp-zfbdt TO wa_lista-zzfbdt.
MOVE lv_ebeln
TO wa_lista-ebeln.
* calculate payment due date
* Logic added to calculate the due payment date for MM invoices.
PERFORM paym_due_date USING wa_lista-zzfbdt
wa_lista-zbd1t
wa_lista-zbd2t
wa_lista-zbd3t
lv_fbdt.
wa_lista-zzfbdt = lv_fbdt.
APPEND wa_lista TO it_lista.
CLEAR wa_lista.
ENDLOOP.
ENDIF.
ENDLOOP.
* Sort the display list
SORT it_lista BY wi_id.
DELETE ADJACENT DUPLICATES FROM it_lista COMPARING wi_id.
ELSE.

* Select all preliminary postings for vendors


* check that FI-invoices is selected
IF s_fiinv = 'X'.
*
SELECT *
**C
ommented by Dipin (XDIPMUN) on 15.01.2014
SELECT AUSBK BELNR GJAHR BUKRS BUZEI BSCHL SHKZG DMBTR WRBTR SGTXT LIFNR ZFBDT
SWAER BLART XBLNR XPRFG
FROM v_vbsegk
INTO TABLE it_vbsegk
WHERE gjahr IN s_gjahr
AND bukrs IN s_bukrs
AND lifnr IN s_lifnr
AND blart IN p_blart
AND xblnr IN s_xblnr.
*If it is intercompany we need to chck V_VBSEGS instead.
*Note the vendor search will not work for GL parked docs
* Excluding KG documents from V_VBSEGS as it is already selected from v_vbseg
k
*
SELECT *
*cOMMENTED BY D
IPIN (XDIPMUN) ON 06/01/2013.
*{
REPLACE
F08K990747
1
*\SELECT BELNR GJAHR BUKRS BUZEI DMBTR ZFBDT BLART CPUDT XBLNR XPRFG
SELECT AUSBK
"added by XBETCAM 04/14/2015
BELNR
GJAHR
BUKRS
BUZEI
DMBTR
ZFBDT
BLART
CPUDT
XBLNR
XPRFG
*}
REPLACE
FROM v_vbsegs
INTO TABLE z_vbsegs
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND blart IN gt_blart
AND xblnr IN s_xblnr
AND buzei = '001'.
"This condition helps not to select all items
IF sy-subrc EQ 0.

"There are GL parked docs

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.

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.
IF wa_vbsegk-lifnr IS INITIAL
OR wa_vbsegk-zfbdt IS INITIAL.
SELECT SINGLE gjahr

"Updated by Dipin (XD

IPMUN)
FROM bkpf
INTO z_vbsegs-gjahr
UP TO 1 ROWS

*
IPMUN)

Commented by Dipin (XD

WHERE bukrs EQ z_vbsegs-bukrs


AND belnr EQ z_vbsegs-xblnr
AND blart EQ 'KR'.
*
XDIPMUN)

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.

MOVE wa_rbkp-waers TO wa_vbsegk-swaer.


CLEAR: wa_vbsegk-ausbk,
wa_vbsegk-wrbtr,
wa_vbsegk-dmbtr,
w_wrbtr,
lv_ebeln.
** BEGIN OF COMMENTING BY DIPIN (XDIPMUN).
*
*
*
*
*
*

SELECT ebeln
wrbtr
INTO (lv_ebeln, w_wrbtr)
FROM rseg
WHERE belnr EQ wa_vbsegk-belnr
AND gjahr EQ wa_vbsegk-gjahr.

** END OF COMMENTING BY DIPIN (XDIPMUN).


**Begin of Insertion of Dipin (XDIPMUN).
READ TABLE IT_TY_RSEG_NEW INTO WA_TY_RSEG_NEW WITH KEY BELNR = WA_VBSEGK-BELNR
GJAHR = WA_VBSEGK-GJAHR
BINARY SEARCH.
** End of Insertion by Dipin
ADD WA_TY_RSEG_NEW-wrbtr TO wa_vbsegk-wrbtr.
*

ENDSELECT. " Commented by Dipin


MOVE wa_vbsegk-wrbtr TO wa_vbsegk-dmbtr.
wa_vbsegk-ebeln = WA_TY_RSEG_NEW-ebeln.
APPEND wa_vbsegk TO it_vbsegk.

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.

SORT IT_TY_VBSEGK_NEW_ONE BY LIFNR.


** End Of Dipin.
LOOP AT it_vbsegk INTO wa_vbsegk.
*-----Prepare the Sum of amount to be displayed against each document
ON CHANGE OF wa_vbsegk-belnr
OR wa_vbsegk-bukrs
OR wa_vbsegk-gjahr.
lw_total-dmbtr = lv_dmbtr.
IF NOT lw_total-belnr IS INITIAL.
APPEND lw_total TO lt_total.
ENDIF.
CLEAR lv_dmbtr.
ENDON.
IF wa_vbsegk-shkzg EQ 'S'.

lv_dmbtr = lv_dmbtr + wa_vbsegk-dmbtr.


ENDIF.
MOVE-CORRESPONDING wa_vbsegk TO wa_lista.
WRITE: wa_vbsegk-dmbtr TO wa_lista-dmbtr CURRENCY wa_vbsegk-swaer.
CLEAR lw_total.
lw_total-belnr
lw_total-bukrs
lw_total-gjahr
lw_total-dmbtr

=
=
=
=

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.

* cocode for MM is cleared - leftjust


IF wa_vbsegk-ausbk IS INITIAL.
SHIFT lv_objkey LEFT BY 4 PLACES.
lv_object = 'BUS2081'.
wa_lista-inv_type = 'MM'.
ELSE.
lv_object = 'FIPP'.
wa_lista-inv_type = 'FI'.
ENDIF.
CLEAR: itemlist.
REFRESH: itemlist.
CALL FUNCTION 'SWI_WORKITEMS_OF_OBJECT_GET'
EXPORTING
objtype = lv_object
objkey
= lv_objkey
TABLES

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.

APPEND wa_lista TO it_lista.


CLEAR wa_lista.
ENDIF.
* add also not selected work item into total list (if not userselection is de
fined)
IF lw_agents-otype = 'S'.

** Convert agent from organisational to userid.


CALL FUNCTION 'ZSWI_GET_USERS_OF_ORG_UNIT'
EXPORTING
otype
= lw_agents-otype
objid
= lw_agents-objid
TABLES
user_list
= lt_user_list
EXCEPTIONS
not_found
= 1
no_active_plvar = 2
OTHERS
= 3.
READ TABLE lt_user_list INTO lw_user_list INDEX 1.
lw_agents-objid = lw_user_list-objid.
REFRESH lt_user_list.
CLEAR lw_user_list.
ENDIF.
CHECK lw_agents-objid IN s_bname.
SELECT SINGLE bname
name_textc
INTO wa_usrtab
FROM user_addr
WHERE bname = lw_agents-objid.
WA_LISTA-NAME1 = WA_TY_VBSEGK_NEW_ONE-NAME1.
wa_lista-bname
= wa_usrtab-bname.
wa_lista-name_textc = wa_usrtab-name_textc.
wa_lista-wi_id
= itemlist-wi_id.
wa_lista-wi_rhtext = itemlist-wi_rhtext.
APPEND wa_lista TO it_lista.
*

ENDSELECT.
ENDLOOP.
ENDLOOP.
CLEAR wa_lista.
ENDLOOP.

APPEND lw_total TO lt_total.

* free internal table and delete duplicates


FREE it_vbsegk.
SORT it_lista[].
DELETE ADJACENT DUPLICATES FROM it_lista[]
COMPARING bukrs
belnr
gjahr
lifnr
name1
blart
xblnr
wi_id
bname.
*Do not display workitems with EP2_REMOTE as agent.
DELETE it_lista[] WHERE bname EQ 'EP2_REMOTE'.

LOOP AT it_lista INTO wa_lista


WHERE blart EQ 'AB'.
lv_tabix = sy-tabix.
IF NOT lt_total[] IS INITIAL.
READ TABLE lt_total INTO lw_total
WITH KEY bukrs = wa_lista-bukrs
belnr = wa_lista-belnr
gjahr = wa_lista-gjahr.
IF sy-subrc EQ 0.
WRITE: lw_total-dmbtr TO wa_lista-dmbtr CURRENCY wa_vbsegk-swaer.
MODIFY it_lista FROM wa_lista INDEX lv_tabix.
ENDIF.
ELSE.
WRITE: lv_dmbtr TO wa_lista-dmbtr CURRENCY wa_vbsegk-swaer.
MODIFY it_lista FROM wa_lista INDEX lv_tabix.
ENDIF.

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.

READ TABLE lt_user_list INTO lw_user_list INDEX 1.


lw_agents-objid = lw_user_list-objid.
REFRESH lt_user_list.
CLEAR lt_user_list.
ENDIF.
CHECK lw_agents-objid IN s_bname.
SELECT bname
name_textc
INTO wa_usrtab
FROM user_addr
WHERE bname = lw_agents-objid.
wa_lista-bname
wa_lista-name_textc
wa_lista-wi_id
wa_lista-wi_fill80

=
=
=
=

wa_usrtab-bname.
wa_usrtab-name_textc.
lw_swwihead-wi_id.
lw_swwihead-wi_text.

APPEND wa_lista TO it_lista.


CLEAR wa_lista.
ENDSELECT.
ENDLOOP.
ENDSELECT.
ENDIF.
SORT it_lista BY wi_id.
DELETE ADJACENT DUPLICATES FROM it_lista COMPARING wi_id.
ENDIF.

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,

"Document Date in Document


"Day On Which Accounting Document

dzbd1t,
dzbd2t,
dzbd3t,
c,
ebeln,

"Cash discount days 1


"Cash discount days 2
"Net Payment Terms Period
"Invoice type MM/FI
"Purchasing Document Number

TYPES: BEGIN OF ty_usrtab,


bname
LIKE user_addr-bname,
name_textc LIKE user_addr-name_textc,
END OF ty_usrtab.
** BEGIN OF DIPIN(XDIPMUN)
TYPES : BEGIN OF TY_RBKP,
BELNR TYPE RE_BELNR,
GJAHR TYPE GJAHR,
BLART TYPE BLART,
BLDAT TYPE BLDAT,
BUDAT TYPE BUDAT,
USNAM TYPE USNAM,
TCODE TYPE TCODE,
CPUDT TYPE CPUDT,
CPUTM TYPE CPUTM,
VGART TYPE M8VGA,
XBLNR TYPE XBLNR1,
BUKRS TYPE BUKRS,
LIFNR TYPE LIFRE,
WAERS TYPE WAERS,
KURSF TYPE KURSF,
RMWWR TYPE RMWWR,
BEZNK TYPE BEZNK,
MWSKZ1 TYPE MWSKZ_MRM1,
ZTERM TYPE DZTERM,

ZBD1T TYPE DZBD1T,


XRECH TYPE XRECH,
SAPRL TYPE SAPRL,
LOGSYS TYPE LOGSYS,
IVTYP TYPE IVTYP,
RBSTAT TYPE RBSTAT,
ZFBDT TYPE DZFBDT,
NAME1 TYPE NAME1_GP,
END OF TY_RBKP.
TYPES: BEGIN OF TY_VBSEGS,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
BUKRS TYPE BUKRS,
BUZEI TYPE BUZEI,
DMBTR TYPE DMBTR,
ZFBDT TYPE DZFBDT,
BLART TYPE BLART,
CPUDT TYPE CPUDT,
XBLNR TYPE XBLNR1,
XPRFG TYPE XPRFG,
END OF TY_VBSEGS.

TYPES: BEGIN OF ty_vbsegk,


AUSBK TYPE AUSBK,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
BUKRS TYPE BUKRS,
BUZEI TYPE BUZEI,
BSCHL TYPE BSCHL,
SHKZG TYPE SHKZG,
DMBTR TYPE DMBTR,
WRBTR TYPE WRBTR,
SGTXT TYPE SGTXT,
LIFNR TYPE LIFNR,
ZFBDT TYPE DZFBDT,
SWAER TYPE WAERS,
BLART TYPE BLART,
XBLNR TYPE XBLNR1,
XPRFG TYPE XPRFG.
** END OF DIPIN(XDIPMUN).
*
INCLUDE STRUCTURE v_vbsegk.
TYPES: ebeln LIKE rseg-ebeln,
wi_id TYPE swwwihead-wi_id,
END OF ty_vbsegk.

**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.

** && VARIABLE DECLARATIONS &&**

** && 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

VALUE 'Document Parking Ericsson'.

*&&&&&&&&&& MANJU &&&&&&& END *******


DATA: gs_layout TYPE slis_layout_alv,
g_exit_caused_by_caller,
gs_exit_caused_by_user TYPE slis_exit_by_user,
g_repid LIKE sy-repid.
DATA: gt_fieldcat
TYPE slis_t_fieldcat_alv,
struct_fieldcat TYPE slis_fieldcat_alv.
*"Callback
DATA:
gt_events
TYPE
gt_list_top_of_page
g_status_set
TYPE
g_user_command TYPE
g_top_of_page TYPE

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

BLOCK head WITH FRAME.


BLOCK sel1 WITH FRAME TITLE text-f01.
VBKPF-BLART DEFAULT 'KR'.
MEMORY ID bar,"ERONNYC 2003-05-23
OBLIGATORY MEMORY ID buk,
OBLIGATORY MEMORY ID gjr.

SELECTION-SCREEN END OF BLOCK sel1.


SELECTION-SCREEN BEGIN OF BLOCK sel2 WITH FRAME TITLE text-f02.
SELECT-OPTIONS:
s_fdatum FOR zdue_list_struc1-zzfbdt,
s_lifnr FOR v_vbsegk-lifnr,
s_xblnr FOR v_vbsegk-xblnr,
s_bname FOR user_addr-bname,
s_dmbtr FOR v_vbsegk-dmbtr,
s_idatum FOR v_vbsegk-bldat,
s_cpudat FOR v_vbsegk-cpudt,
s_wrbtr FOR v_vbsegk-wrbtr.
*PARAMETERS:
"M003
* S_ERROR1 AS CHECKBOX,
"M003
* S_ERROR2 AS CHECKBOX.
"M003
SELECTION-SCREEN END OF BLOCK sel2.
* selection to list FI- and/or MM-invoices - ERONNYC 2003-05-23 - start
SELECTION-SCREEN BEGIN OF BLOCK sel3 WITH FRAME TITLE text-f03.
PARAMETERS:
s_fiinv AS CHECKBOX DEFAULT 'X',
s_mminv AS CHECKBOX DEFAULT 'X',
* START-OF-INSERT, XBMMESA ST6550224
s_shpinv AS CHECKBOX,
* END-OF-INSERT, XBMMESA ST6550224
s_error2 AS CHECKBOX,
s_file AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK sel3.
* selection to list FI- and/or MM-invoices - ERONNYC 2003-05-23 - end
SELECTION-SCREEN END OF BLOCK head.

You might also like