Opps Real Time Code
Opps Real Time Code
*
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
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[].
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[].
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_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.
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.
*&---------------------------------------------------------------------*
*& 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
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'.
" USER_COMMAND_9000
INPUT
*&---------------------------------------------------------------------*
*& Include
ZSDR_BRANCH_ORDER_POST_CLS
*&---------------------------------------------------------------------*
CLASS:lcl_pf4 DEFINITION DEFERRED,
lcl_validate DEFINITION DEFERRED,
lcl_datafetch DEFINITION DEFERRED.
*
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
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
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
ENDMETHOD.
METHOD display_p_f4.
"product_f4
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,
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.
"get_vbak
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.
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.
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