Sei sulla pagina 1di 30

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

*
I N F O R M A T I O N
*
************************************************************************
* Module
: SD
*
* Functional
: P.S.Rao
*
* Developer
: SOUMABHA CHATTERJEE
*
* Functional Spec#
:
*
* Date Of Creation
: 12.06.2015 19:10:07
*
* Transport Request# :
*
* Program Name
: ZSDR_BRANCH_ORDER_POST
*
* Transaction Code
: ZSDBOP
*
* Development class : ZSD
*
* Description
: Branch Wise Order Detail
*
*======================================================================*
* MODIFICATION HISTORY
*
*&---------------------------------------------------------------------*
*& Report ZSDR_BRANCH_ORDER_POST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT

zsdr_branch_order_post MESSAGE-ID zsd.

INCLUDE
INCLUDE
INCLUDE
INCLUDE

zsdr_branch_order_post_top.
zsdr_branch_order_post_ssc.
zsdr_branch_order_post_frm.
zsdr_branch_order_post_cls.

INITIALIZATION.
v_repid = sy-repid.
p_month = sy-datum+4(2).
AT SELECTION-SCREEN on p_month.
CREATE OBJECT ref_validate.
CALL METHOD ref_validate->valiadte_month
EXPORTING
p_month = g_month.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_ngb-low.
CREATE OBJECT ref_pf4.
CALL METHOD ref_pf4->populate_f4
CHANGING
lt_ngb = gt_ngb[].
CALL METHOD ref_pf4->display_f4
EXPORTING
lt_ngb = gt_ngb[].

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_month.


CREATE OBJECT ref_pf4.
CALL METHOD ref_pf4->month_f4
CHANGING
lt_month = gt_month[].
CALL METHOD ref_pf4->display_m_f4
EXPORTING
lt_month = gt_month[].
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_pqd-low.
CREATE OBJECT ref_pf4.
CALL METHOD ref_pf4->product_f4
CHANGING
lt_product = gt_product[].
CALL METHOD ref_pf4->display_p_f4
EXPORTING
lt_product = gt_product[].

START-OF-SELECTION.
CREATE OBJECT ref_datafetch.
CALL METHOD ref_datafetch->get_vbak
CHANGING
lt_vbak = gt_vbak[]
lt_tvv4t = gt_tvv4t[].
CALL METHOD ref_datafetch->get_vbap
EXPORTING
lt_vbak = gt_vbak[]
CHANGING
lt_vbap = gt_vbap[].
CALL METHOD ref_datafetch->get_cmo_mp
EXPORTING
lt_vbak
= gt_vbak[]
CHANGING
lt_cmo_mp = gt_cmo_mp[]
lt_quality = gt_quality[].
CALL METHOD ref_datafetch->get_vbpa
EXPORTING
lt_vbak = gt_vbak[]
CHANGING
lt_vbpa = gt_vbpa[].
CALL METHOD ref_datafetch->get_kna1
EXPORTING

lt_vbpa = gt_vbpa[]
CHANGING
lt_kna1 = gt_kna1[].
CALL METHOD ref_datafetch->get_do
EXPORTING
lt_vbak = gt_vbak[]
CHANGING
lt_do
= gt_do[].
CALL METHOD
EXPORTING
lt_vbak
CHANGING
lt_likp
lt_lips

ref_datafetch->get_delivery

CALL METHOD
EXPORTING
lt_vbak
lt_lips
CHANGING
lt_mska

ref_datafetch->get_rolqty

= gt_vbak[]
= gt_likp[]
= gt_lips[].

= gt_vbak[]
= gt_lips[]
= gt_mska[].

CALL METHOD ref_datafetch->p_final


EXPORTING
lt_vbak
= gt_vbak[]
lt_vbap
= gt_vbap[]
lt_cmo_mp = gt_cmo_mp[]
lt_vbpa
= gt_vbpa[]
lt_kna1
= gt_kna1[]
lt_do
= gt_do[]
lt_likp
= gt_likp[]
lt_lips
= gt_lips[]
lt_tvv4t
= gt_tvv4t[]
lt_quality = gt_quality[]
lt_mska
= gt_mska[]
CHANGING
lt_final
= gt_final[].
END-OF-SELECTION.
IF gt_final IS NOT INITIAL.
PERFORM display_data.
ELSE.
MESSAGE e001(zsd) WITH 'No Data Found' DISPLAY LIKE 'E'.
ENDIF.

INCLUDE zsdr_branch_order_post_top.
*&---------------------------------------------------------------------*
*& Include
ZSDR_BRANCH_ORDER_POST_TOP
*&---------------------------------------------------------------------*
INCLUDE <icon>.
INCLUDE <cl_alv_control>.
CLASS: lcl_event_receiver DEFINITION DEFERRED.
TYPES:BEGIN OF ty_ngb,
KVGR4 TYPE KVGR4,
BEZEI TYPE BEZEI20,
END OF ty_ngb.
TYPES: BEGIN OF ty_month,
month TYPE char2,
m_desc TYPE char10,
END OF ty_month.
types: begin of ty_product,
PRODUCT type ZPRODUCT,
PRODTXT type ZPRODTEXT,
end of ty_product.
types: begin of ty_tvv4t,
KVGR4 type KVGR4,
BEZEI type BEZEI20,
end of ty_tvv4t.
types: begin of ty_quality,
MATNR type matnr,
QUALITY type ZERPGRADE,
QLTTEXT type ZQLTTEXT,
end of ty_quality.

TYPES: BEGIN OF ty_vbak,


vbeln TYPE vbeln_va,
erdat TYPE erdat,
audat TYPE audat,
auart TYPE auart,
vtweg TYPE vtweg,
spart TYPE spart,
vsbed TYPE vsbed,
kvgr1 TYPE kvgr1,
kvgr4 TYPE kvgr4,
zzinno TYPE zmpinstallment_no,
zzpyear TYPE zmpplan_year,

zzpmonth TYPE zmpplan_month,


zzorddate TYPE zord_dat,
zzrcode
TYPE zregion_code,
segd
TYPE char1,
END OF ty_vbak.
TYPES: BEGIN OF ty_vbap,
vbeln TYPE vbeln_va,
posnnr TYPE posnr_va,
matnr TYPE matnr,
arktx TYPE arktx,
route TYPE route,
kwmeng TYPE kwmeng,
BEDAE type BEDAE,
END OF ty_vbap.

TYPES:BEGIN OF ty_cmo_mp,
mpno
TYPE zmpno,
mpstatus TYPE zmpstatus,
product
TYPE zproduct,
quality_specific TYPE zquality_specific,
dimension_1 TYPE zdimension,
dimension_2 TYPE zdimension,
dimension_3 TYPE zdimension,
dimension_4 TYPE zdimension,
END OF ty_cmo_mp.
TYPES: BEGIN OF ty_vbpa,
vbeln TYPE vbeln,
posnr TYPE posnr,
parvw TYPE parvw,
kunnr TYPE kunnr,
END OF ty_vbpa.

TYPES: BEGIN OF ty_kna1,


kunnr TYPE kunnr,
name1 TYPE name1_gp,
regio TYPE regio,
END OF ty_kna1.
TYPES: BEGIN OF ty_do,
dono TYPE zdo,
doitm TYPE zdoitem,
vbeln TYPE vbeln_va,
doqty TYPE zdoqty,
END OF ty_do.

types: begin of ty_doh,


DONO type ZDO,
PRODUCT type ZPRODUCT,
STATUS type ZDOSTAT,
end of ty_doh.

TYPES: BEGIN OF ty_lips,


vbeln TYPE vbeln_vl,
posnr TYPE posnr_vl,
charg type charg_d,
lfimg TYPE lfimg,
vgbel TYPE vgbel,
vgpos TYPE vgpos,
curqty TYPE lfimg,
preqty TYPE lfimg,
END OF ty_lips.

TYPES: BEGIN OF ty_likp,


vbeln TYPE vbeln,
bldat TYPE bldat,
wadat_ist TYPE wadat_ist,
END OF ty_likp.
types: begin of ty_mska,
MATNR type MATNR,
WERKS type WERKS_D,
LGORT type LGORT_D,
CHARG type CHARG_D,
SOBKZ type SOBKZ,
VBELN type VBELN,
POSNR type POSNR,
KALAB type LABST,
KAINS type INSME,
ROLQTY type labst,
d_flg type char1,
end of ty_mska.
TYPES: BEGIN OF ty_final,
zzrcode TYPE zregion_code,
kvgr4 TYPE kvgr4,
bdesc type BEZEI20,
sotp
TYPE kunnr,
stpn
TYPE name1_gp,
shtp
TYPE kunnr,
shtpn TYPE name1_gp,
vbeln TYPE vbeln_va,
erdat TYPE erdat,

audat TYPE audat,


zzorddate TYPE zord_dat,
auart
type auart,
matnr TYPE matnr,
arktx TYPE arktx,
quality_specific TYPE zquality_specific,
QLTTEXT type ZQLTTEXT,
dimension_1 TYPE zdimension,
dimension_2 TYPE zdimension,
dimension_3 TYPE zdimension,
dimension_4 TYPE zdimension,
kvgr1 TYPE kvgr1,
route TYPE route,
vsbed TYPE vsbed,
r_desc type char10,
kwmeng TYPE kwmeng,
doqty TYPE kwmeng,
rolled TYPE kwmeng,
odqty TYPE lfimg,
ndqty TYPE lfimg,
bfr
TYPE kwmeng,
segd
type char1,
END OF ty_final.
DATA: v_kunnr TYPE kvgr4,
v_audat TYPE audat,
v_repid TYPE sy-repid,
v_pqd TYPE zproduct,
v_montg TYPE char2,
g_count type i,
p_cmonth type char6,
g_month
type char2.
TYPES: ty_ngb_t TYPE STANDARD TABLE OF ty_ngb,
ty_vbak_t TYPE STANDARD TABLE OF ty_vbak,
ty_vbap_t TYPE STANDARD TABLE OF ty_vbap,
ty_cmo_mp_t TYPE STANDARD TABLE OF ty_cmo_mp,
ty_vbpa_t TYPE STANDARD TABLE OF ty_vbpa,
ty_kna1_t TYPE STANDARD TABLE OF ty_kna1,
ty_do_t TYPE STANDARD TABLE OF ty_do,
ty_lips_t TYPE STANDARD TABLE OF ty_lips,
ty_likp_t TYPE STANDARD TABLE OF ty_likp,
ty_month_t TYPE STANDARD TABLE OF ty_month,
ty_final_t TYPE STANDARD TABLE OF ty_final,
ty_product_t type standard table of ty_product,
ty_tvv4t_t
type standard table of ty_tvv4t,
ty_quality_t
type standard table of ty_quality,
ty_mska_t type standard table of ty_mska,
ty_doh_t
type standard table of ty_do.

DATA: gt_ngb TYPE STANDARD TABLE OF ty_ngb,


gt_vbak TYPE STANDARD TABLE OF ty_vbak,
gs_vbak TYPE ty_vbak,
gt_tvv4t type standard table of ty_tvv4t,
gs_tvv4t type ty_tvv4t,
gt_quality type standard table of ty_quality,
gs_quality type ty_quality,
gt_vbap TYPE STANDARD TABLE OF ty_vbap,
gs_vbap TYPE ty_vbap,
gt_cmo_mp TYPE STANDARD TABLE OF ty_cmo_mp,
gs_cmo_mp TYPE ty_cmo_mp,
gt_vbpa TYPE STANDARD TABLE OF ty_vbpa,
gs_vbpa TYPE ty_vbpa,
gt_kna1 TYPE STANDARD TABLE OF ty_kna1,
gs_kna1 TYPE ty_kna1,
gt_do TYPE STANDARD TABLE OF ty_do,
gs_do TYPE ty_do,
gt_likp TYPE STANDARD TABLE OF ty_likp,
gs_likp TYPE ty_likp,
gt_lips TYPE STANDARD TABLE OF ty_lips,
gs_lips TYPE ty_lips,
gt_lips1 type standard table of ty_lips,
gs_lips1 type ty_lips,
gt_month TYPE STANDARD TABLE OF ty_month,
gs_month TYPE ty_month,
gt_product type standard table of ty_product,
gs_product type ty_product,
gt_mska
type standard table of ty_mska,
gs_mska
type ty_mska,
gt_doh
type standard table of ty_doh,
gs_doh
type ty_do,
gt_final TYPE STANDARD TABLE OF ty_final,
gs_final TYPE ty_final.

************************************************************OOPS ALV Declarat


ion*********************************************
DATA: grid1 TYPE REF TO cl_gui_alv_grid,
gt_excld_func_grid1 TYPE ui_functions,
custom_container1 TYPE REF TO cl_gui_custom_container,
gt_fldcat
TYPE lvc_t_fcat,
gs_fldcat
TYPE lvc_s_fcat,
gs_layout
TYPE lvc_s_layo,
gt_sort
type LVC_t_SORT,

gs_sort
type LVC_S_SORT,
event_receiver TYPE REF TO lcl_event_receiver.
DATA: es_row_no
ls_row_id
ls_col_id
ls_row
ls_value
ls_col
ls_row_no

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

lvc_s_roid,
lvc_s_row,
lvc_s_col,
i,
c,
i,
lvc_s_roid.

DATA:gt_params TYPE TABLE OF rsparams.


DATA:gs_params TYPE rsparams.
*----------------------------------------------------------------------*
*
CLASS lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_user_command
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id
e_column_id
es_row_no sender.
ENDCLASS.
"lcl_event_receiver DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_user_command.
CALL METHOD grid1->get_current_cell
IMPORTING
e_row
= ls_row
e_value
= ls_value
e_col
= ls_col
es_row_id = ls_row_id
es_col_id = ls_col_id
es_row_no = es_row_no.
endmethod.
endclass.

*&---------------------------------------------------------------------*
*& Include
ZSDR_BRANCH_ORDER_POST_SSC
*&---------------------------------------------------------------------*
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_month TYPE char2.
SELECT-OPTIONS:s_ngb
FOR v_kunnr NO intervals,
s_pqd
FOR v_pqd NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN:END OF BLOCK b1.

*&---------------------------------------------------------------------*
*& Include
ZSDR_BRANCH_ORDER_POST_FRM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Form GET_MONTH
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_L_MONTH text
*
<--P_L_DESC text
*----------------------------------------------------------------------*
form GET_MONTH using
p_l_month type char2
changing p_l_desc.
IF
p_l_month = '01'.
p_l_desc = 'JAN'.
ENDIF.
IF p_l_month = '02'.
p_l_desc = 'FEB'.
ENDIF.
IF p_l_month = '03'.
p_l_desc = 'MAR'.
ENDIF.
IF p_l_month = '04'.
p_l_desc = 'APR'.
ENDIF.
IF p_l_month = '05'.
p_l_desc = 'MAY'.
ENDIF.
IF p_l_month = '06'.
p_l_desc = 'JUNE'.
ENDIF.
IF p_l_month = '07'.
p_l_desc = 'JULY'.
ENDIF.
IF p_l_month = '08'.
p_l_desc = 'AGU'.
ENDIF.
IF p_l_month = '09'.
p_l_desc = 'SEPT'.

ENDIF.
IF p_l_month = '10'.
p_l_desc = 'OCT'.
ENDIF.
IF p_l_month = '11'.
p_l_desc = 'NOV'.
ENDIF.
IF p_l_month = '12'.
p_l_desc = 'DEC'.
ENDIF.
endform.
" GET_MONTH
*&---------------------------------------------------------------------*
*&
Form DISPLAY_DATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form DISPLAY_DATA .
SET SCREEN 9000.
endform.
" DISPLAY_DATA
*&---------------------------------------------------------------------*
*&
Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module STATUS_9000 output.
SET PF-STATUS 'M_9000'.
SET TITLEBAR 'M_9000'.
data: l_text type char50.
l_text

= 'Branch Wise Order Position Report'.

IF custom_container1 IS INITIAL.
CREATE OBJECT custom_container1
EXPORTING
container_name = 'CONT1'.
CREATE OBJECT grid1
EXPORTING
i_parent = custom_container1.
gs_layout-CWIDTH_OPT = 'X'.
gs_layout-grid_title = l_text.
clear:gs_sort.
gs_sort-SPOS = 1.
gs_sort-FIELDNAME = 'ZZRCODE'.

gs_sort-down = 'X'.
append gs_sort to gt_sort.
clear:gs_sort.
gs_sort-SPOS = 2.
gs_sort-FIELDNAME = 'KVGR4'.
gs_sort-down = 'X'.
append gs_sort to gt_sort.
clear:gs_sort.
gs_sort-SPOS = 3.
gs_sort-FIELDNAME = 'VBELN'.
gs_sort-down = 'X'.
append gs_sort to gt_sort.
PERFORM sub_set_field_cat.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name
= 'TY_FINAL'
is_layout
= gs_layout
"it_toolbar_excluding = gt_excld_func_grid1
CHANGING
it_outtab
= gt_final
it_fieldcatalog
= gt_fldcat
it_sort
= gt_sort.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_user_command for grid1.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = grid1.
ENDIF.
endmodule.
" STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
Form SUB_SET_FIELD_CAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
form SUB_SET_FIELD_CAT .
REFRESH gt_fldcat[].
PERFORM prepare_field_cat USING: 'ZZRCODE' 'REGION' '',
'KVGR4'
'BRANCH CODE' '',
'BDESC'
'Branch Name' '',

'SOTP'
'Sold to Party' ' ',
'STPN'
'NAME Sold To Party' '',
'SHTP'
'Ship To Party' '',
'SHTPN'
'Name Ship to Party' '',
'VBELN'
'Order No' '',
'ZZORDDATE' 'Order Date' '' ,
'ERDAT'
'Order Creation' '' ,
'AUDAT'
'Validity Date' '',
'MATNR'
'Material No' '',
'ARKTX'
'Material Desc' '',
'QUALITY_SPECIFIC' 'Quality' ' ',
'QLTTEXT' 'Grade' '',
'DIMENSION_1' 'DIM1' '',
'DIMENSION_2' 'DIM2' ' ',
'DIMENSION_3' 'DIM3' ' ',
'DIMENSION_4' 'DIM4' ' ',
'KVGR1'
'CUST Type' '',
'ROUTE'
'ROUTE' '',
'AUART'
'Order Type' '',
'R_DESC'
'Mode Of despatch' '',
'KWMENG'
'Order Qty' '',
'DOQTY'
'DO Quantity' '' ,
'ODQTY'
'Old Del Qty' '',
'NDQTY'
'Current Del Qty' '',
'ROLLED'
'Rolled Quantity' ' ',
'BFR'
'BFR' '',
'SEGD'
'Segrication' 'X'.

endform.
" SUB_SET_FIELD_CAT
*&---------------------------------------------------------------------*
*&
Form PREPARE_FIELD_CAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_0185
text
*
-->P_0186
text
*
-->P_0187
text
*----------------------------------------------------------------------*
form PREPARE_FIELD_CAT using
p_fld1
p_fld2
p_noout.
g_count = g_count + 1.
gs_fldcat-col_pos
gs_fldcat-fieldname
gs_fldcat-coltext
gs_fldcat-no_out

=
=
=
=

g_count.
p_fld1.
p_fld2.
p_noout.

gs_fldcat-EMPHASIZE

= 'X'.

IF p_fld1 = 'ZZRCODE' and p_fld1 = 'KVGR4' and p_fld1 = 'BDESC'.


gs_fldcat-KEY_SEL = 'X'.
ENDIF.
APPEND gs_fldcat TO gt_fldcat.
CLEAR:gs_fldcat .
endform.
" PREPARE_FIELD_CAT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module USER_COMMAND_9000 input.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
CALL METHOD custom_container1->free.
WHEN 'CANCEL'.
LEAVE TO SCREEN 0.
CALL METHOD custom_container1->free.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
CALL METHOD custom_container1->free.
ENDCASE.
endmodule.

" USER_COMMAND_9000

INPUT

*&---------------------------------------------------------------------*
*& Include
ZSDR_BRANCH_ORDER_POST_CLS
*&---------------------------------------------------------------------*
CLASS:lcl_pf4 DEFINITION DEFERRED,
lcl_validate DEFINITION DEFERRED,
lcl_datafetch DEFINITION DEFERRED.

"ref_datafetch TYPE REF TO lcl_datafetch,


DATA: ref_pf4 TYPE REF TO lcl_pf4,
ref_validate TYPE REF TO lcl_validate,
ref_datafetch TYPE REF TO lcl_datafetch.
*----------------------------------------------------------------------*

*
CLASS lcl_pf4 DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_pf4 DEFINITION.
PUBLIC SECTION.
METHODS: populate_f4 CHANGING lt_ngb TYPE ty_ngb_t,
month_f4
CHANGING lt_month TYPE ty_month_t,
display_f4 IMPORTING lt_ngb TYPE ty_ngb_t,
display_m_f4 IMPORTING lt_month TYPE ty_month_t,
product_f4
CHANGING lt_product TYPE ty_product_t,
display_p_f4 IMPORTING lt_product TYPE ty_product_t.
ENDCLASS.

"lcl_pf4 DEFINITION

*----------------------------------------------------------------------*
*
CLASS lcl_validate DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_validate DEFINITION.
PUBLIC SECTION.
METHODS: valiadte_month IMPORTING p_month TYPE char2.
*
validate_ngb
importing s_ngb type kunnr,
**
validate_pqd
importing s_pqd type zproduct.
ENDCLASS.
"lcl_validate DEFINITION
*----------------------------------------------------------------------*
*
CLASS lcl_datafetch DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_datafetch DEFINITION.
PUBLIC SECTION.
METHODS: get_vbak CHANGING lt_vbak TYPE ty_vbak_t
lt_tvv4t TYPE ty_tvv4t_t,
get_vbap IMPORTING lt_vbak TYPE ty_vbak_t
CHANGING lt_vbap TYPE ty_vbap_t,
get_cmo_mp IMPORTING lt_vbak TYPE ty_vbak_t
CHANGING lt_cmo_mp TYPE ty_cmo_mp_t
lt_quality TYPE ty_quality_t,
get_vbpa IMPORTING lt_vbak TYPE ty_vbak_t
CHANGING lt_vbpa TYPE ty_vbpa_t,
get_kna1 IMPORTING lt_vbpa TYPE ty_vbpa_t
CHANGING lt_kna1 TYPE ty_kna1_t,

get_do

IMPORTING lt_vbak TYPE ty_vbak_t


CHANGING lt_do TYPE ty_do_t,

get_delivery IMPORTING lt_vbak TYPE ty_vbak_t


CHANGING lt_likp TYPE ty_likp_t
lt_lips TYPE ty_lips_t,
get_rolqty IMPORTING lt_vbak TYPE ty_vbak_t
lt_lips TYPE ty_lips_t
CHANGING lt_mska TYPE ty_mska_t,
p_final

IMPORTING lt_vbak
lt_vbap
lt_cmo_mp
lt_vbpa
lt_kna1
lt_do
lt_likp
lt_lips
lt_tvv4t
lt_quality
lt_mska
CHANGING lt_final

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

ty_vbak_t
ty_vbap_t
ty_cmo_mp_t
ty_vbpa_t
ty_kna1_t
ty_do_t
ty_likp_t
ty_lips_t
ty_tvv4t_t
ty_quality_t
ty_mska_t
ty_final_t.

ENDCLASS.
"lcl_datafetch DEFINITION
*----------------------------------------------------------------------*
*
CLASS lcl_pf4 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_pf4 IMPLEMENTATION.
METHOD populate_f4.
REFRESH lt_ngb.
SELECT kvgr4 bezei FROM tvv4t
INTO TABLE lt_ngb
WHERE spras = 'EN'.

ENDMETHOD.
METHOD month_f4.

"populate_f4

DATA: ls_month TYPE ty_month,


l_month TYPE char2,
l_month1 TYPE char2,
l_desc
TYPE char10.
REFRESH: lt_month.
l_month = sy-datum+4(2).

IF l_month = '01'.
l_month1 = '12'.
ELSE.
l_month1 = l_month - 1.
IF l_month1 NE '11'.
CONCATENATE'0' l_month1 INTO l_month1.
ENDIF.
ENDIF.
PERFORM get_month USING l_month CHANGING l_desc.
CLEAR: ls_month.
ls_month-month = l_month.
ls_month-m_desc = l_desc.
APPEND ls_month TO lt_month.
PERFORM get_month USING l_month1 CHANGING l_desc.
CLEAR: ls_month.
ls_month-month = l_month1.
ls_month-m_desc = l_desc.
APPEND ls_month TO lt_month.

ENDMETHOD.
METHOD display_f4.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
*
DDIC_STRUCTURE
= ' '
retfield
= 'KVGR4'
*
PVALKEY
= ' '
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
dynprofield
= 'S_NGB'
*
STEPL
= 0
*
WINDOW_TITLE
=
*
VALUE
= ' '
value_org
= 'S'
*
MULTIPLE_CHOICE
= ' '
*
DISPLAY
= ' '
*
CALLBACK_PROGRAM
= ' '
*
CALLBACK_FORM
= ' '
*
MARK_TAB
=
* IMPORTING
*
USER_RESET
=
TABLES
value_tab
= lt_ngb
*
FIELD_TAB
=
*
RETURN_TAB
=
*
DYNPFLD_MAPPING
=
EXCEPTIONS
parameter_error
= 1
no_values_found
= 2

"month_f4

OTHERS

= 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMETHOD.
METHOD display_m_f4.

"display_f4

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
*
DDIC_STRUCTURE
= ' '
retfield
= 'MONTH'
*
PVALKEY
= ' '
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
dynprofield
= 'S_NGB'
*
STEPL
= 0
*
WINDOW_TITLE
=
*
VALUE
= ' '
value_org
= 'S'
*
MULTIPLE_CHOICE
= ' '
*
DISPLAY
= ' '
*
CALLBACK_PROGRAM
= ' '
*
CALLBACK_FORM
= ' '
*
MARK_TAB
=
* IMPORTING
*
USER_RESET
=
TABLES
value_tab
= lt_month
*
FIELD_TAB
=
*
RETURN_TAB
=
*
DYNPFLD_MAPPING
=
EXCEPTIONS
parameter_error
= 1
no_values_found
= 2
OTHERS
= 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMETHOD.
"display_m_f4
METHOD product_f4.
SELECT product prodtxt FROM zsd_dimensions
INTO TABLE lt_product.
SORT lt_product BY product.
DELETE ADJACENT DUPLICATES FROM lt_product COMPARING product.

ENDMETHOD.
METHOD display_p_f4.

"product_f4

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
*
DDIC_STRUCTURE
= ' '
retfield
= 'PRODUCT'
*
PVALKEY
= ' '
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
dynprofield
= 'S_PQD'
*
STEPL
= 0
*
WINDOW_TITLE
=
*
VALUE
= ' '
value_org
= 'S'
*
MULTIPLE_CHOICE
= ' '
*
DISPLAY
= ' '
*
CALLBACK_PROGRAM
= ' '
*
CALLBACK_FORM
= ' '
*
MARK_TAB
=
* IMPORTING
*
USER_RESET
=
TABLES
value_tab
= lt_product
*
FIELD_TAB
=
*
RETURN_TAB
=
*
DYNPFLD_MAPPING
=
EXCEPTIONS
parameter_error
= 1
no_values_found
= 2
OTHERS
= 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDMETHOD.
"display_p_f4
ENDCLASS.
"lcl_pf4 IMPLEMENTATION
*----------------------------------------------------------------------*
*
CLASS lcl_validate IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_validate IMPLEMENTATION.
METHOD valiadte_month.
DATA: l_month TYPE char2,
l_month1 TYPE char2,

l_pmonth TYPE char2,


t_month TYPE char2.

CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'


EXPORTING
curr_report
= sy-repid
TABLES
selection_table = gt_params[].
READ TABLE gt_params INTO gs_params WITH KEY selname = 'P_MONTH'.
IF sy-subrc IS INITIAL.
t_month = gs_params-low.
ENDIF.
IF t_month IS NOT INITIAL.
l_month = sy-datum+4(2).
IF l_month EQ '01'.
l_month1 = '12'.
ELSE.
l_month1 = l_month - 1.
IF l_month1 NE '11'.
CONCATENATE '0' l_month1 INTO l_month1.
ENDIF.
ENDIF.
IF t_month EQ l_month OR t_month EQ l_month1.
ELSE.
MESSAGE e001(zsd) WITH 'Pls Insert Valid month' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDMETHOD.
"valiadte_month
ENDCLASS.
"lcl_validate IMPLEMENTATION
*----------------------------------------------------------------------*
*
CLASS lcl_datafetch IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_datafetch IMPLEMENTATION.
METHOD get_vbak.

DATA: p_date TYPE dats,


l_date TYPE dats,
pl_month TYPE char6,
c_month TYPE char2,
p_year TYPE char4.
FIELD-SYMBOLS: <fs_vbak> LIKE LINE OF lt_vbak.
c_month = sy-datum+4(2).

IF c_month = '01' AND p_month = '12'.


p_year = sy-datum+0(4) - 1.
CONCATENATE p_year p_month '01' INTO p_date.
CONCATENATE p_year p_month INTO p_cmonth.
ELSE.
CONCATENATE sy-datum+0(4) p_month '01' INTO p_date.
CONCATENATE sy-datum+0(4) p_month INTO p_cmonth.
ENDIF.
CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
EXPORTING
day_in
= p_date
IMPORTING
last_day_of_month = l_date.
break abaptest27.
SELECT vbeln
erdat
audat
auart
vtweg
spart
vsbed
kvgr1
kvgr4
zzinno
zzpyear
zzpmonth
zzorddate
zzrcode
FROM vbak
INTO TABLE lt_vbak
WHERE audat GE p_date
AND vbeln BETWEEN '1400000000' AND '1489999999'
AND vtweg IN ('11','12','14')
AND spart IN ('11','12','13')
AND zzinno NE '61'
AND kvgr4 IN s_ngb.

LOOP AT lt_vbak ASSIGNING <fs_vbak>.


CONCATENATE <fs_vbak>-zzpyear <fs_vbak>-zzpmonth INTO pl_month.
IF <fs_vbak>-audat = l_date AND pl_month LT p_cmonth.
<fs_vbak>-segd = 'A'.
ENDIF.
IF ( <fs_vbak>-audat LT l_date AND <fs_vbak>-audat GE p_date ) AND pl_m
onth LT p_cmonth.
<fs_vbak>-segd = 'B'.

ENDIF.
IF <fs_vbak>-audat
<fs_vbak>-segd =
ENDIF.
IF <fs_vbak>-audat
<fs_vbak>-segd =
ENDIF.
IF <fs_vbak>-audat
<fs_vbak>-segd =
ENDIF.
IF <fs_vbak>-audat
<fs_vbak>-segd =
ENDIF.
ENDLOOP.

= l_date AND pl_month EQ p_cmonth.


'C'.
GT l_date AND pl_month LT p_cmonth.
'D'.
GT l_date AND pl_month EQ p_cmonth.
'E'.
GT l_date AND pl_month GT p_cmonth.
'F'.

IF lt_vbak IS NOT INITIAL.


SELECT kvgr4 bezei FROM tvv4t
INTO TABLE lt_tvv4t
FOR ALL ENTRIES IN lt_vbak
WHERE kvgr4 = lt_vbak-kvgr4.
ENDIF.
ENDMETHOD.
METHOD get_vbap.

"get_vbak

DATA: ls_vbap TYPE ty_vbap.


IF lt_vbak IS NOT INITIAL.
SELECT vbeln
posnr
matnr
arktx
route
kwmeng
BEDAE
FROM vbap
INTO TABLE lt_vbap
FOR ALL ENTRIES IN lt_vbak
WHERE vbeln = lt_vbak-vbeln.
ENDIF.

ENDMETHOD.
METHOD get_cmo_mp.
IF lt_vbak IS NOT INITIAL.
SELECT mpno
mpstatus
product
quality_specific

"get_vbap

dimension_1
dimension_2
dimension_3
dimension_4
FROM zsd_cmo_mp
INTO TABLE lt_cmo_mp
FOR ALL ENTRIES IN lt_vbak
WHERE mpno = lt_vbak-vbeln
AND mpstatus = 'A'
AND product IN s_pqd.
ENDIF.
IF lt_cmo_mp IS NOT INITIAL.
SELECT matnr quality qlttext FROM zsd_pqd
INTO TABLE lt_quality
FOR ALL ENTRIES IN lt_cmo_mp
WHERE quality = lt_cmo_mp-quality_specific.
ENDIF.
ENDMETHOD.
"get_cmo_mp
METHOD get_vbpa.
IF lt_vbak IS NOT INITIAL.
SELECT vbeln
posnr
parvw
kunnr
FROM vbpa
INTO TABLE lt_vbpa
FOR ALL ENTRIES IN lt_vbak
WHERE vbeln = lt_vbak-vbeln.
ENDIF.
ENDMETHOD.
"get_vbpa
METHOD get_kna1.
IF lt_vbpa IS NOT INITIAL.
SELECT kunnr
name1
regio
FROM kna1
INTO TABLE lt_kna1
FOR ALL ENTRIES IN lt_vbpa
WHERE kunnr = lt_vbpa-kunnr.
ENDIF.
ENDMETHOD.
METHOD get_do.
DATA: ls_do TYPE ty_do,
lt_do1 TYPE STANDARD TABLE OF ty_do,
ls_do1 TYPE ty_do,
l_tot TYPE kwmeng.
FIELD-SYMBOLS: <fs_do> LIKE LINE OF lt_do.
IF lt_vbak IS NOT INITIAL.

"get_kna1

SELECT dono
doitm
vbeln
doqty
FROM zsd_do_item
INTO TABLE lt_do
FOR ALL ENTRIES IN lt_vbak
WHERE vbeln EQ lt_vbak-vbeln.
ENDIF.
SORT lt_do BY vbeln.
lt_do1[] = lt_do[].
DELETE ADJACENT DUPLICATES FROM lt_do COMPARING vbeln.
SORT lt_do1[] BY vbeln.
LOOP AT lt_do ASSIGNING <fs_do>.
READ TABLE lt_do1 INTO ls_do1 WITH KEY vbeln = <fs_do>-vbeln BINARY SEAR
CH.
IF sy-subrc IS INITIAL.
LOOP AT lt_do1 INTO ls_do1 FROM sy-tabix.
IF ls_do1-vbeln EQ <fs_do>-vbeln.
l_tot = l_tot + ls_do1-doqty.
ELSE.
EXIT.
ENDIF.
ENDLOOP.
<fs_do>-doqty = l_tot.
CLEAR: l_tot.
ENDIF.
ENDLOOP.
ENDMETHOD.

"get_do

METHOD get_delivery.
DATA: lt_lips1 TYPE TABLE OF ty_lips,
l_pmonth TYPE char2,
d_month TYPE char6,
l_cur_qty TYPE lfimg,
l_pre_qty TYPE lfimg.
FIELD-SYMBOLS: <fs_lips> LIKE LINE OF lt_lips,
<fs_lips1> LIKE LINE OF lt_lips,
<fs_likp> LIKE LINE OF lt_likp.
IF lt_vbak IS NOT INITIAL.
SELECT vbeln

posnr
charg
lfimg
vgbel
vgpos
FROM lips
INTO TABLE lt_lips
FOR ALL ENTRIES IN lt_vbak
WHERE vgbel = lt_vbak-vbeln
%_HINTS ORACLE 'INDEX("LIPS" "LIPS~VGB")'.
ENDIF.
IF lt_lips IS NOT INITIAL.
SELECT vbeln
bldat
wadat_ist
FROM likp
INTO TABLE lt_likp
FOR ALL ENTRIES IN lt_lips
WHERE vbeln = lt_lips-vbeln.
ENDIF.

lt_lips1[] = lt_lips[].
gt_lips1[] = lt_lips1[].
SORT lt_lips BY vgbel.
DELETE ADJACENT DUPLICATES FROM lt_lips COMPARING vgbel.
"l_pmonth = p_cmonth - 1.
SORT lt_lips1 BY vgbel.
SORT lt_likp BY vbeln.

LOOP AT lt_lips ASSIGNING <fs_lips>.


READ TABLE lt_lips1 ASSIGNING <fs_lips1> WITH KEY vgbel = <fs_lips>vgbel BINARY SEARCH.
IF sy-subrc IS INITIAL.
LOOP AT lt_lips1 ASSIGNING <fs_lips1> FROM sy-tabix.
IF <fs_lips1>-vgbel = <fs_lips>-vgbel.
READ TABLE lt_likp ASSIGNING <fs_likp> WITH KEY vbeln = <fs_lips1>
-vbeln BINARY SEARCH.
IF sy-subrc IS INITIAL.
IF <fs_likp>-wadat_ist IS NOT INITIAL.
d_month = <fs_likp>-wadat_ist+0(6).
ELSEIF <fs_likp>-bldat IS NOT INITIAL.
d_month = <fs_likp>-bldat+0(6).
ENDIF.
IF d_month EQ p_cmonth.
l_cur_qty = l_cur_qty + <fs_lips1>-lfimg.
ENDIF.

IF d_month LT p_cmonth.
l_pre_qty = l_pre_qty + <fs_lips1>-lfimg.
ENDIF.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDLOOP.
<fs_lips>-curqty = l_cur_qty.
<fs_lips>-preqty = l_pre_qty.
CLEAR: l_cur_qty,l_pre_qty.
ENDIF.
ENDLOOP.
ENDMETHOD.
"get_delivery
METHOD get_rolqty.
DATA: lt_lips_2 TYPE STANDARD TABLE OF ty_lips,
lt_mska1 type standard table of ty_mska.
data: l_rollqty type kwmeng.
FIELD-SYMBOLS:<fs_lips1> LIKE LINE OF lt_lips,
<fs_mska> LIKE LINE OF lt_mska,
<fs_mska1> like line of lt_mska.
IF lt_vbak IS NOT INITIAL.
SELECT matnr
werks
lgort
charg
sobkz
vbeln
posnr
kalab
kains
FROM mska
INTO TABLE lt_mska
FOR ALL ENTRIES IN lt_vbak
WHERE vbeln = lt_vbak-vbeln
AND ( kalab > '0.00'
OR kains > '0.00' ).
lt_lips_2[] = lt_lips[].
SORT gt_lips1 BY charg.
lt_mska1[] = lt_mska[].
SORT lt_mska BY vbeln.
SORT lt_mska1 BY vbeln.
DELETE ADJACENT DUPLICATES FROM lt_mska COMPARING vbeln.
sort lt_mska by vbeln.

LOOP AT lt_mska ASSIGNING <fs_mska>.


READ TABLE lt_mska1 ASSIGNING <fs_mska1> WITH KEY vbeln = <fs_mska>vbeln BINARY SEARCH.
IF sy-subrc IS INITIAL.
LOOP AT lt_mska1 ASSIGNING <fs_mska1> FROM sy-tabix.
if <fs_mska1>-vbeln = <fs_mska>-vbeln.
<fs_mska1>-rolqty = <fs_mska1>-kalab + <fs_mska1>-kains.
READ TABLE gt_lips1 ASSIGNING <fs_lips1> WITH KEY charg = <fs_mska
1>-charg BINARY SEARCH.
IF sy-subrc IS INITIAL.
<fs_mska1>-d_flg = 'X'.
ENDIF.
if <fs_mska1>-d_flg ne 'X'.
l_rollqty = l_rollqty + <fs_mska1>-rolqty.
endif.
else.
exit.
endif.
ENDLOOP.
ENDIF.
<fs_mska>-rolqty = l_rollqty.
clear: l_rollqty.
ENDLOOP.
ENDIF.
DELETE lt_mska WHERE d_flg = 'X'.
REFRESH:lt_lips_2.
ENDMETHOD.
"get_rolqty
METHOD p_final.
DATA: ls_vbak TYPE ty_vbak,
lt_kna1_1 TYPE TABLE OF ty_kna1,
lt_vbpa_1 TYPE TABLE OF ty_vbpa,
lt_cmo_mp_1 TYPE TABLE OF ty_cmo_mp,
lt_vbap_1 TYPE TABLE OF ty_vbap,
lt_do_1 TYPE TABLE OF ty_do,
lt_lips_1 TYPE TABLE OF ty_lips,
lt_tvv4t_1 TYPE TABLE OF ty_tvv4t,
lt_quality_1 TYPE TABLE OF ty_quality,
lt_mska_1
TYPE TABLE OF ty_mska.
data: l_flag type Char1.
FIELD-SYMBOLS : <fs_vbak> LIKE LINE OF lt_vbak,
<fs_vbpa> LIKE LINE OF lt_vbpa,
<fs_kna1> LIKE LINE OF lt_kna1,
<fs_cmo_mp> LIKE LINE OF lt_cmo_mp,
<fs_vbap> LIKE LINE OF lt_vbap,
<fs_do> LIKE LINE OF lt_do,
<fs_lips> LIKE LINE OF lt_lips,

<fs_tvv4t> LIKE LINE OF lt_tvv4t,


<fs_quality> LIKE LINE OF lt_quality,
<fs_mska> LIKE LINE OF lt_mska.

lt_kna1_1[] = lt_kna1[].
lt_vbpa_1[] = lt_vbpa[].
lt_cmo_mp_1[] = lt_cmo_mp[].
lt_vbap_1[] = lt_vbap[].
lt_do_1[] = lt_do[].
lt_lips_1[] = lt_lips[].
lt_tvv4t_1[] = lt_tvv4t[].
lt_quality_1[] = lt_quality[].
lt_mska_1[] = lt_mska[].
*sort lt_vbak by vbeln.
SORT lt_vbpa_1 BY vbeln parvw.
SORT lt_kna1_1 BY kunnr.
SORT lt_cmo_mp_1 BY mpno.
SORT lt_vbap_1 BY vbeln .
SORT lt_do_1 BY vbeln.
SORT lt_lips_1 BY vgbel.
SORT lt_tvv4t_1 BY kvgr4.
SORT lt_quality_1 BY quality.
SORT lt_mska_1 BY vbeln.
break abaptest27.
LOOP AT lt_vbak ASSIGNING <fs_vbak>.
gs_final-zzrcode = <fs_vbak>-zzrcode.
gs_final-kvgr4 = <fs_vbak>-kvgr4.
gs_final-vbeln = <fs_vbak>-vbeln.
gs_final-erdat = <fs_vbak>-erdat.
gs_final-audat = <fs_vbak>-audat.
gs_final-zzorddate = <fs_vbak>-zzorddate.
gs_final-kvgr1 = <fs_vbak>-kvgr1.
gs_final-vsbed = <fs_vbak>-vsbed.
IF gs_final-vsbed = '01'.
gs_final-r_desc = 'ROAD'.
ELSE.
gs_final-r_desc = 'RAIL'.
ENDIF.
gs_final-auart = <fs_vbak>-auart.
READ TABLE lt_cmo_mp_1 ASSIGNING <fs_cmo_mp> WITH KEY mpno = <fs_vbak>vbeln BINARY SEARCH.
IF sy-subrc IS INITIAL.

gs_final-quality_specific = <fs_cmo_mp>-quality_specific.
gs_final-dimension_1 = <fs_cmo_mp>-dimension_1.
gs_final-dimension_2 = <fs_cmo_mp>-dimension_2.
gs_final-dimension_3 = <fs_cmo_mp>-dimension_3.
gs_final-dimension_4 = <fs_cmo_mp>-dimension_4.
READ TABLE lt_quality_1 ASSIGNING <fs_quality> WITH KEY quality = <fs_
cmo_mp>-quality_specific BINARY SEARCH.
IF sy-subrc IS INITIAL.
gs_final-qlttext = <fs_quality>-qlttext.
ENDIF.
READ TABLE lt_vbpa_1 ASSIGNING <fs_vbpa> WITH KEY vbeln = <fs_vbak>vbeln
parvw = 'AG' BINARY SE
ARCH.
IF sy-subrc IS INITIAL.
gs_final-sotp = <fs_vbpa>-kunnr.
READ TABLE lt_kna1_1 ASSIGNING <fs_kna1> WITH KEY kunnr = <fs_vbpa>kunnr BINARY SEARCH.
IF sy-subrc IS INITIAL.
gs_final-stpn = <fs_kna1>-name1.
ENDIF.
ENDIF.
READ TABLE lt_tvv4t_1 ASSIGNING <fs_tvv4t> WITH KEY kvgr4 = <fs_vbak>kvgr4 BINARY SEARCH.
IF sy-subrc IS INITIAL.
gs_final-bdesc = <fs_tvv4t>-bezei.
ENDIF.
READ TABLE lt_vbpa_1 ASSIGNING <fs_vbpa> WITH KEY vbeln = <fs_vbak>vbeln
parvw = 'WE' BINARY SE
ARCH.
IF sy-subrc IS INITIAL.
gs_final-shtp = <fs_vbpa>-kunnr.
READ TABLE lt_kna1_1 ASSIGNING <fs_kna1> WITH KEY kunnr = <fs_vbpa>kunnr BINARY SEARCH.
IF sy-subrc IS INITIAL.
gs_final-shtpn = <fs_kna1>-name1.
ENDIF.
ENDIF.
READ TABLE lt_vbap_1 ASSIGNING <fs_vbap> WITH KEY vbeln = <fs_vbak>vbeln BINARY SEARCH.
IF sy-subrc IS INITIAL.
gs_final-route = <fs_vbap>-route.
gs_final-matnr = <fs_vbap>-matnr.
gs_final-arktx = <fs_vbap>-arktx.
gs_final-kwmeng = <fs_vbap>-kwmeng.
IF <fs_vbap>-BEDAE = 'ZKSV'.

l_flag = 'X'.
ENDIF.
ENDIF.
READ TABLE lt_do_1 ASSIGNING <fs_do> WITH KEY vbeln = <fs_vbak>-vbeln
BINARY SEARCH.
IF sy-subrc IS INITIAL.
gs_final-doqty = <fs_do>-doqty.
ENDIF.
READ TABLE lt_lips ASSIGNING <fs_lips> WITH KEY vgbel = <fs_vbak>vbeln BINARY SEARCH.
IF sy-subrc IS INITIAL.
gs_final-odqty = <fs_lips>-preqty.
gs_final-ndqty = <fs_lips>-curqty.
ENDIF.
READ TABLE lt_mska_1 ASSIGNING <fs_mska> WITH KEY vbeln = <fs_vbak>vbeln BINARY SEARCH.
IF sy-subrc IS INITIAL.
gs_final-rolled = <fs_mska>-rolqty.
ENDIF.
IF <fs_vbak>-segd = 'A' OR <fs_vbak>-segd = 'B' OR <fs_vbak>-segd = 'C
' OR <fs_vbak>-segd = 'D' OR <fs_vbak>-segd = 'E'.
gs_final-kwmeng = gs_final-kwmeng - gs_final-odqty.
ELSEIF <fs_vbak>-segd = 'F'.
gs_final-kwmeng = '0.000'.
ENDIF.
gs_final-segd = <fs_vbak>-segd.
gs_final-bfr = ( gs_final-kwmeng - gs_final-ndqty ) - gs_final-rolled.
IF gs_final-bfr < '0.000' or l_flag = 'X'.
gs_final-bfr = '0.000'.
ENDIF.
APPEND gs_final TO gt_final.
CLEAR: gs_final,l_flag.
ENDIF.
ENDLOOP.
delete gt_final where segd = 'F'
and ndqty = '0.000'.
ENDMETHOD.
"p_final
ENDCLASS.
"lcl_datafetch IMPLEMENTATION

Potrebbero piacerti anche