ZHR003
ZHR003
ZHR003
TYPE-POOLS: vrm.
END OF lty_ZVMME400_GET.
METHODS:
get_data,
generate_ouptut.
ENDCLASS.
METHOD jabringan.
ENDMETHOD.
METHOD get_data.
IF wedus = '2022'.
WITH +f AS (
SELECT
'DOMESTIC' AS market,
left( hanturimba~maktx,3 ) AS product,
odh~wadat_ist AS dodt,
( coalesce( bomz~cbnw00,0 ) + coalesce( zod~cbnw00,0 ) )
AS domestic
FROM AS odd
lips
JOIN likp AS odh ON odd~vbeln = odh~vbeln
INNER
INNER JOIN kna1 AS sot ON sot~kunnr = odh~kunag
INNER JOIN kna1 AS sht ON sht~kunnr = odh~kunnr
INNER JOIN makt AS mdes ON mdes~matnr = odd~matnr
LEFT JOIN ztmme411b AS zod ON odd~vbeln = zod~vbeln AND odd~
posnr = zod~posnr
INNER JOIN vbap AS sod ON odd~vgbel = sod~vbeln AND odd~vgpos
= sod~posnr
INNER JOIN vbak AS soh ON sod~vbeln = soh~vbeln
INNER JOIN tvakt AS styp ON styp~auart = soh~auart
LEFT JOIN ztmmi401a AS pac ON zod~cbpack = pac~apf_cbpack
LEFT JOIN lips AS bomd ON odd~vbeln = bomd~vbeln AND odd~pos
nr = bomd~uepos AND bomd~pstyv = 'ZTAE'
LEFT JOIN ztmme411b AS bomz ON bomz~vbeln = bomd~vbeln AND b
omz~posnr = bomd~posnr
LEFT JOIN ztmmi401a AS bompac ON bomz~cbpack = bompac~apf_cbp
ack
LEFT JOIN AS hanturimba ON coalesce( bomz~cbp
zCDS_mme400_get
ack , zod~cbpack ) = hanturimba~apf_cbpack
WHERE odh~wadat_ist BETWEEN '20220101' AND '20221231'
AND soh~auart IN ('ZO01','ZO02','ZO03','ZO04','ZO05','ZO06') "
di remark sementara ZFC1
AND odd~pstyv IN ('ZTA1','ZTA2','ZTA3','ZTA4','ZTA5','ZTA6','ZTA
7','ZTA8','ZTAQ','ZTA9')
AND odh~wbstk = 'C'
AND styp~spras = 'E'
AND sod~vstel = '1100' AND ( zod~cblotm <> '' OR bomz~cblot
m <>'' )
ORDER BY odh~wadat_ist ASCENDING
) , +f1 AS (
SELECT
'EXPORT' AS market,
left( hanturimba~maktx,3 ) AS product,
odh~wadat_ist AS dodt,
( coalesce( bomz~cbnw00,0 ) + coalesce( zod~cbnw00,0 )
) AS domestic
FROM lips AS odd
INNER JOIN likp AS odh ON odd~vbeln = odh~vbeln
INNER JOIN kna1 AS sot ON sot~kunnr = odh~kunag
INNER JOIN kna1 AS sht ON sht~kunnr = odh~kunnr
INNER JOIN makt AS mdes ON mdes~matnr = odd~matnr
LEFT JOIN ztmme411b AS zod ON odd~vbeln = zod~vbeln AND od
d~posnr = zod~posnr
INNER JOIN vbap AS sod ON odd~vgbel = sod~vbeln AND odd~vgp
os = sod~posnr
INNER JOIN vbak AS soh ON sod~vbeln = soh~vbeln
INNER JOIN tvakt AS styp ON styp~auart = soh~auart
LEFT JOIN ztmmi401a AS pac ON zod~cbpack = pac~apf_cbpack
LEFT JOIN lips AS bomd ON odd~vbeln = bomd~vbeln AND odd~p
osnr = bomd~uepos AND bomd~pstyv = 'ZTAE'
LEFT JOIN ztmme411b AS bomz ON bomz~vbeln = bomd~vbeln AND
bomz~posnr = bomd~posnr
LEFT JOIN ztmmi401a AS bompac ON bomz~cbpack = bompac~apf_c
bpack
LEFT JOIN zCDS_mme400_get AS hanturimba ON coalesce( bomz~c
bpack , zod~cbpack) = hanturimba~apf_cbpack
WHERE odh~wadat_ist BETWEEN '20220101' AND '20221231'
AND soh~auart IN ( 'ZOR2','ZOR4','ZOR6' ) " di remark
sementara ZFC2
AND odd~pstyv IN ('ZTA1','ZTA2','ZTA3','ZTA4','ZTA5','ZTA6',
'ZTA7','ZTA8','ZTAQ','ZTA9')
AND odh~wbstk = 'C'
AND styp~spras = 'E'
AND sod~vstel = '1100' AND ( zod~cblotm <> '' OR bomz~c
blotm <>'' )
ORDER BY odh~wadat_ist ASCENDING
, +f2 AS (
SELECT
'SAMPLE' AS market,
left( hanturimba~maktx,3 ) AS product,
odh~wadat_ist AS dodt,
( coalesce( bomz~cbnw00,0 ) + coalesce( zod~cbnw00,0 )
) AS domestic
FROM lips AS odd
JOIN likp AS odh ON odd~vbeln = odh~vbeln
INNER
INNER JOIN kna1 AS sot ON sot~kunnr = odh~kunag
INNER JOIN kna1 AS sht ON sht~kunnr = odh~kunnr
INNER JOIN makt AS mdes ON mdes~matnr = odd~matnr
LEFT JOIN ztmme411b AS zod ON odd~vbeln = zod~vbeln AND od
d~posnr = zod~posnr
INNER JOIN vbap AS sod ON odd~vgbel = sod~vbeln AND odd~vgp
os = sod~posnr
INNER JOIN vbak AS soh ON sod~vbeln = soh~vbeln
INNER JOIN tvakt AS styp ON styp~auart = soh~auart
LEFT JOIN ztmmi401a AS pac ON zod~cbpack = pac~apf_cbpack
LEFT JOIN lips AS bomd ON odd~vbeln = bomd~vbeln AND odd~p
osnr = bomd~uepos AND bomd~pstyv = 'ZTAE'
LEFT JOIN ztmme411b AS bomz ON bomz~vbeln = bomd~vbeln AND
bomz~posnr = bomd~posnr
LEFT JOIN ztmmi401a AS bompac ON bomz~cbpack = bompac~apf_c
bpack
LEFT JOIN AS hanturimba ON coalesce( bomz~c
zCDS_mme400_get
bpack , zod~cbpack ) = hanturimba~apf_cbpack
WHERE odh~wadat_ist BETWEEN '20220101' AND '20221231'
AND soh~auart IN ( 'ZFC1' , 'ZFC2' )
* AND odd~pstyv IN ('ZTA1','ZTA2','ZTA3','ZTA4','Z
TA5','ZTA6','ZTA7','ZTA8','ZTAQ','ZTA9')
AND odh~wbstk =
'C'
AND styp~spras = 'E'
AND sod~vstel = '1100' AND ( zod~cblotm <> '' OR bomz~c
blotm <>'' )
ORDER BY odh~wadat_ist ASCENDING
, +f3 AS (
SELECT
'INTERCO' AS market,
left( hanturimba~maktx,3 ) AS product,
odh~wadat_ist AS dodt,
( coalesce( bomz~cbnw00,0 ) + coalesce( zod~cbnw00,0 )
) AS domestic
FROM lips AS odd
JOIN likp AS odh ON odd~vbeln = odh~vbeln
INNER
INNER JOIN kna1 AS sot ON sot~kunnr = odh~kunag
INNER JOIN kna1 AS sht ON sht~kunnr = odh~kunnr
INNER JOIN makt AS mdes ON mdes~matnr = odd~matnr
LEFT JOIN ztmme411b AS zod ON odd~vbeln = zod~vbeln AND od
d~posnr = zod~posnr
INNER JOIN vbap AS sod ON odd~vgbel = sod~vbeln AND odd~vgp
os = sod~posnr
INNER JOIN vbak AS soh ON sod~vbeln = soh~vbeln
INNER JOIN tvakt AS styp ON styp~auart = soh~auart
LEFT JOIN ztmmi401a AS pac ON zod~cbpack = pac~apf_cbpack
LEFT JOIN lips AS bomd ON odd~vbeln = bomd~vbeln AND odd~p
osnr = bomd~uepos AND bomd~pstyv = 'ZTAE'
LEFT JOIN ztmme411b AS bomz ON bomz~vbeln = bomd~vbeln AND
bomz~posnr = bomd~posnr
LEFT JOIN ztmmi401a AS bompac ON bomz~cbpack = bompac~apf_c
bpack
LEFT JOIN AS hanturimba ON coalesce( bomz~c
zCDS_mme400_get
bpack , zod~cbpack ) = hanturimba~apf_cbpack
WHERE odh~wadat_ist BETWEEN '20220101' AND '20221231'
AND soh~auart = 'ZO07'
AND odh~wbstk = 'C'
AND styp~spras = 'E'
AND sod~vstel = '1100' AND ( zod~cblotm <> '' OR bomz~c
blotm <>'' )
ORDER BY odh~wadat_ist ASCENDING
SELECT
market,product
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '01' THEN do
mestic ELSE 0 END ) AS januari
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '02' THEN do
mestic ELSE 0 END ) AS februari
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '03' THEN do
mestic ELSE 0 END ) AS maret
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '04' THEN do
mestic ELSE 0 END ) AS april
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '05' THEN do
mestic ELSE 0 END ) AS mei
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '06' THEN do
mestic ELSE 0 END ) AS juni
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '07' THEN do
mestic ELSE 0 END ) AS juli
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '08' THEN do
mestic ELSE 0 END ) AS agustus
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '09' THEN do
mestic ELSE 0 END ) AS september
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '10' THEN do
mestic ELSE 0 END ) AS oktober
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '11' THEN do
mestic ELSE 0 END ) AS nopember
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '12' THEN do
mestic ELSE 0 END ) AS desember
FROM +f WHERE product NE 'CHP'
GROUP BY market,product
UNION ALL
SELECT
market,product
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '01' THEN do
mestic ELSE 0 END ) AS januari
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '02' THEN do
mestic ELSE 0 END ) AS februari
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '03' THEN do
mestic ELSE 0 END ) AS maret
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '04' THEN do
mestic ELSE 0 END ) AS april
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '05' THEN do
mestic ELSE 0 END ) AS mei
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '06' THEN do
mestic ELSE 0 END ) AS juni
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '07' THEN do
mestic ELSE 0 END ) AS juli
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '08' THEN do
mestic ELSE 0 END ) AS agustus
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '09' THEN do
mestic ELSE 0 END ) AS september
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '10' THEN do
mestic ELSE 0 END ) AS oktober
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '11' THEN do
mestic ELSE 0 END ) AS nopember
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '12' THEN do
mestic ELSE 0 END ) AS desember
FROM +f1 WHERE product NE 'CHP'
GROUP BY market,product
UNION ALL
SELECT
market,product
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '01' THEN do
mestic ELSE 0 END ) AS januari
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '02' THEN do
mestic ELSE 0 END ) AS februari
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '03' THEN do
mestic ELSE 0 END ) AS maret
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '04' THEN do
mestic ELSE 0 END ) AS april
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '05' THEN do
mestic ELSE 0 END ) AS mei
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '06' THEN do
mestic ELSE 0 END ) AS juni
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '07' THEN do
mestic ELSE 0 END ) AS juli
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '08' THEN do
mestic ELSE 0 END ) AS agustus
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '09' THEN do
mestic ELSE 0 END ) AS september
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '10' THEN do
mestic ELSE 0 END ) AS oktober
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '11' THEN do
mestic ELSE 0 END ) AS nopember
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '12' THEN do
mestic ELSE 0 END ) AS desember
FROM +f2 WHERE product NE 'CHP'
GROUP BY market,product
UNION ALL
SELECT
market,product
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '01' THEN do
mestic ELSE 0 END ) AS januari
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '02' THEN do
mestic ELSE 0 END ) AS februari
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '03' THEN do
mestic ELSE 0 END ) AS maret
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '04' THEN do
mestic ELSE 0 END ) AS april
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '05' THEN do
mestic ELSE 0 END ) AS mei
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '06' THEN do
mestic ELSE 0 END ) AS juni
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '07' THEN do
mestic ELSE 0 END ) AS juli
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '08' THEN do
mestic ELSE 0 END ) AS agustus
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '09' THEN do
mestic ELSE 0 END ) AS september
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '10' THEN do
mestic ELSE 0 END ) AS oktober
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '11' THEN do
mestic ELSE 0 END ) AS nopember
,SUM( CASE WHEN right( left( dodt,6 ),2 ) = '12' THEN do
mestic ELSE 0 END ) AS desember
FROM +f3 WHERE product NE 'CHP'
GROUP BY market,product
ORDER BY product DESCENDING
ENDMETHOD.
METHOD generate_ouptut.
TRY.
IMPORT data = me->gt_ZVMME400_GET FROM MEMORY ID sy-cprog.
FREE MEMORY ID sy-cprog.
CHECK me->gt_ZVMME400_GET IS NOT INITIAL.
DATA(lo_dock) = NEW cl_gui_docking_container( repid = sy-cp
rog
dynnr = sy-dynnr
ratio = 80
side = cl_gui_doc
king_container=>dock_at_bottom
name = 'DOCK_CONT
').
cl_salv_table=>factory(
EXPORTING
list_display = if_salv_c_bool_sap=>false
r_container = CAST #( lo_dock )
container_name = 'DOCK_CONT'
IMPORTING
r_salv_table = DATA(lo_alv)
CHANGING
t_table = me->gt_ZVMME400_GET ).
DATA(events) = lo_alv->get_event( ).
SET HANDLER jabringan FOR events.
* DATA(events) = lo_alv->get_event( ).
* SET HANDLER handle_double_click FOR events.
CATCH cx_salv_msg.
MESSAGE 'Ini Tipe Pallet' TYPE 'I'
DISPLAY LIKE 'E'.
ENDTRY.
lr_aggregations = lo_alv->get_aggregations( ).
lr_aggregations->clear( ).
lr_group = lo_alv->get_sorts( ).
lr_group->clear( ).
TRY.
lr_group->add_sort(
columnname = 'MARKET'
position = 1
subtotal = abap_true
sequence = if_salv_c_sort=>sort_up ).
TRY.
lr_aggregations->add_aggregation( columnname = 'JANUARI' ).
lr_aggregations->add_aggregation( columnname = 'FEBRUARI' ).
lr_aggregations->add_aggregation( columnname = 'MARET' ).
lr_aggregations->add_aggregation( columnname = 'APRIL' ).
lr_aggregations->add_aggregation( columnname = 'MEI' ).
lr_aggregations->add_aggregation( columnname = 'JUNI' ).
lr_aggregations->add_aggregation( columnname = 'JULI' ).
lr_aggregations->add_aggregation( columnname = 'AGUSTUS' ).
lr_aggregations->add_aggregation( columnname = 'SEPTEMBER' ).
lr_aggregations->add_aggregation( columnname = 'OKTOBER' ).
lr_aggregations->add_aggregation( columnname = 'NOPEMBER' ).
lr_aggregations->add_aggregation( columnname = 'DESEMBER' ).
* lr_aggregations->add_aggregation( columnname = 'APF_CBBO
XE' ).
CATCH cx_salv_not_found cx_salv_data_error cx_salv_existing.
ENDTRY.
gr_columns = lo_alv->get_columns( ).
*
gr_column ?= gr_columns->get_column( 'MARKET' ).
gr_column->set_long_text( '::MARKET::' ).
gr_column->set_medium_text( 'Market' ).
gr_column->set_short_text( 'Market' ).
gr_column->set_optimized( ).
gr_column ?= gr_columns->get_column('APRIL' ).
gr_column->set_long_text( 'April.' ).
gr_column->set_medium_text( 'April' ).
gr_column->set_short_text( 'April' ).
gr_column->set_optimized( ).
lo_alv->display( ).
ENDMETHOD.
ENDCLASS.
AT SELECTION-SCREEN OUTPUT.
* wa_val-key = 'ITY'.
* wa_val-text = 'ITY'.
* APPEND wa_val TO it_val.
* CLEAR wa_val.
*
*
* wa_val-key = 'POY'.
* wa_val-text = 'POY'.
* APPEND wa_val TO it_val.
* CLEAR wa_val.
*
* wa_val-key = 'SDY'.
* wa_val-text = 'SDY'.
* APPEND wa_val TO it_val.
* CLEAR wa_val.
*
* wa_val-key = 'DTY'.
* wa_val-text = 'DTY'.
* APPEND wa_val TO it_val.
* CLEAR wa_val.
* name = 'wedus'.
* value-key = '1'.
*
*
*
* wa_val-key = 'POY'.
* wa_val-text = 'POY'.
* APPEND wa_val TO it_val.
* CLEAR wa_val.
*
*
*
* CALL FUNCTION 'VRM_SET_VALUES'
* EXPORTING
* id = 'wedus'
* values = it_val
* EXCEPTIONS
* OTHERS=1.
wa_val-key = '2022'.
wa_val-text = '2022'.
APPEND wa_val TO it_val.
* wa_val-key = 'SDY'.
* wa_val-text = 'SDY'.
* APPEND wa_val TO it_val.
*
* wa_val-key = 'DTY'.
* wa_val-text = 'DTY'.
* APPEND wa_val TO it_val.
*
* wa_val-key = 'ITY'.
* wa_val-text = 'ITY'.
* APPEND wa_val TO it_val.
*
* wa_val-key = 'ALL'.
* wa_val-text = 'ALL'.
* APPEND wa_val TO it_val.
wa_val2-key =
'DOM'.
wa_val2-text = 'DOM'.
APPEND wa_val2 TO it_val2.
wa_val2-key =
'EXP'.
wa_val2-text = 'EXP'.
APPEND wa_val2 TO it_val2.
IF sy-subrc <>
0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
INITIALIZATION.
aaa = 'Indicator Sales Year On Year Dom-Exp ! STOP QUITE FIR
ING. '.
* s_date = sy-datum - 1.
* s_date-low = sy-datum - 1.
* s_date-low = sy-datum .
** s_date-high = sy-datum.
*
* s_date-low = sy-datum - 1 .
* s_date-high = sy-datum.
* APPEND s_date.
CREATE OBJECT lo_report.
lo_report->generate_ouptut( ).
*FORM checkDate.
* CLEAR: month_year, prev_year, prev_mth.
** month_year = sy-datum.
** month_year = s_date.
* month_year = s_date-low.
* curr_year = month_year-year.
* prev_year = month_year-year.
* curr_month = month_year-month.
* prev_mth = month_year-month - 1.
* IF prev_mth = '12'.
* prev_year = month_year-year - 1.
* ELSEIF curr_month = '1'.
* prev_mth = '12'.
* curr_year = month_year-year - 1 .
* ENDIF.
*ENDFORM.
START-OF-SELECTION.
* PERFORM checkdate.
lo_report->get_data( ).