0% found this document useful (0 votes)
158 views

Opps Real Time Code

This document describes a SAP report program called ZSDR_BRANCH_ORDER_POST that provides branch-wise order details. It includes the program name, transaction code, description, modification history, and object-oriented ALV declarations. The program uses classes to fetch data from various tables, populate selection screens with F4 help, and display the results in an interactive ALV grid. It retrieves sales order information, items, customers, deliveries, and rolling quantities to generate a final table for display.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
158 views

Opps Real Time Code

This document describes a SAP report program called ZSDR_BRANCH_ORDER_POST that provides branch-wise order details. It includes the program name, transaction code, description, modification history, and object-oriented ALV declarations. The program uses classes to fetch data from various tables, populate selection screens with F4 help, and display the results in an interactive ALV grid. It retrieves sales order information, items, customers, deliveries, and rolling quantities to generate a final table for display.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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

You might also like