0% found this document useful (0 votes)
180 views18 pages

Oops Concept Alv Report Example

This document defines data types and tables to store customer stock information from material document movements. It selects data from various tables, including customer, material, and document tables, and stores it in a final table with additional fields for customer name, material description, sales order, and outbound delivery. It then displays the final table data in an ALV grid for analysis and reporting of customer stock levels.

Uploaded by

dhivya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
180 views18 pages

Oops Concept Alv Report Example

This document defines data types and tables to store customer stock information from material document movements. It selects data from various tables, including customer, material, and document tables, and stores it in a final table with additional fields for customer name, material description, sales order, and outbound delivery. It then displays the final table data in an ALV grid for analysis and reporting of customer stock levels.

Uploaded by

dhivya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 18

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

*& Report ZMM_STK_CUSTOMER_R


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZMM_STK_CUSTOMER_R.

*TYPE-POOLS SLIS.
TYPES: BEGIN OF TY_FINAL,
*
srno TYPE char40, " Storing the total text
KUNNR TYPE KNA1-KUNNR,
"Customer Number
NAME1 TYPE KNA1-NAME1,
"Customer Name
MATNR(30) TYPE C,
"Material number
MAKTX TYPE MAKT-MAKTX,
"Material description
MBLNR TYPE MSEG-MBLNR,
"Number of Material Document
MJAHR TYPE MSEG-MJAHR,
"Material Document Year
ZEILE TYPE MSEG-ZEILE,
"Item in Material Document
WERKS TYPE WERKS_D,
"Plant
LGORT TYPE LGORT_D,
"Storage Location
BUDAT TYPE MSEG-BUDAT_MKPF,"Posting Date in the Document
BWART TYPE MSEG-BWART,
"MOVEMENT TYPE
ORDER TYPE VBAK-VBELN,
"SALE ORDER
OUTBOUND TYPE VBAK-VBELN, "OUTBOUND
MENGE TYPE MSEG-MENGE,
MEINS TYPE MSEG-MEINS,
*
color(4),
END OF TY_FINAL.
DATA: TA_FINAL TYPE TABLE OF TY_FINAL,
WA_FINAL TYPE TY_FINAL.
TYPES: BEGIN OF TY_FINAL,
*
srno TYPE char40, " Storing the total text
KUNNR TYPE KNA1-KUNNR,
"Customer Number
NAME1 TYPE KNA1-NAME1,
"Customer Name
MATNR(30) TYPE C,
"Material number
MAKTX TYPE MAKT-MAKTX,
"Material description
MBLNR TYPE MSEG-MBLNR,
"Number of Material Document
MJAHR TYPE MSEG-MJAHR,
"Material Document Year
ZEILE TYPE MSEG-ZEILE,
"Item in Material Document
WERKS TYPE WERKS_D,
"Plant
LGORT TYPE LGORT_D,
"Storage Location
BUDAT TYPE MSEG-BUDAT_MKPF,"Posting Date in the Document
BWART TYPE MSEG-BWART,
"MOVEMENT TYPE
ORDER TYPE VBAK-VBELN,
"SALE ORDER

OUTBOUND TYPE VBAK-VBELN,


MENGE TYPE MSEG-MENGE,
MEINS TYPE MSEG-MEINS,
color(4),
END OF TY_FINAL.

"OUTBOUND

DATA: TA_FINAL TYPE TABLE OF TY_FINAL,


WA_FINAL TYPE TY_FINAL.
TYPES: BEGIN OF TY_MSEG,
MBLNR TYPE MSEG-MBLNR,
"Number of Material Document
MJAHR TYPE MSEG-MJAHR,
"Material Document Year
ZEILE TYPE MSEG-ZEILE,
"Item in Material Document
BWART TYPE MSEG-BWART,
"Movement Type (Inventory Management)
MATNR TYPE MATNR,
"Material Number
WERKS TYPE WERKS_D,
"Plant
LGORT TYPE LGORT_D,
"Storage Location
KUNNR TYPE KUNNR,
"Customer
KDAUF TYPE MSEG-KDAUF,
"Sales Order Number
KDPOS TYPE MSEG-KDPOS,
"Item Number in Sales Order
WAERS TYPE MSEG-WAERS,
"Currency Key
DMBTR TYPE MSEG-DMBTR,
"Amount in Local Currency
MENGE TYPE MSEG-MENGE,
"QUANTITY
MEINS TYPE MSEG-meins,
"uom
BUDAT TYPE MSEG-BUDAT_MKPF,"Posting Date in the Document
flag ,
END OF TY_MSEG.
DATA: TA_MSEG TYPE TABLE OF TY_MSEG,
WA_MSEG TYPE TY_MSEG.
TYPES: BEGIN OF TY_VBFA,
VBELV
TYPE VBFA-VBELN,
POSNV
TYPE VBFA-POSNV,
VBELN
TYPE VBFA-VBELN,
POSNN
TYPE VBFA-POSNN,
VBTYP_N TYPE VBFA-VBTYP_N,
VBTYP_V TYPE VBFA-VBTYP_V,
flag,
END OF TY_VBFA.
DATA: TA_VBFA TYPE TABLE OF TY_VBFA,
WA_VBFA TYPE TY_VBFA.
DATA: TA_VBFA1 TYPE TABLE OF TY_VBFA,
WA_VBFA1 TYPE TY_VBFA.
TYPES: BEGIN OF TY_MAKT,
MATNR TYPE MATNR,

MAKTX TYPE MAKTX,


SPRAS TYPE SPRAS,
END OF TY_MAKT.
DATA: TA_MAKT TYPE TABLE OF TY_MAKT,
WA_MAKT TYPE TY_MAKT.
TYPES: BEGIN OF TY_KNA1,
KUNNR TYPE KUNNR,
NAME1 TYPE KNA1-NAME1,
ort01 type kna1-ort01,
regio type kna1-regio,
ort02 type kna1-ort02,
END OF TY_KNA1.
DATA: TA_KNA1 TYPE TABLE OF TY_KNA1,
WA_KNA1 TYPE TY_KNA1.
TYPES: BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
AUART TYPE VBAK-AUART,
END OF TY_VBAK.
DATA: ta_vbak TYPE TABLE OF ty_vbak,
wa_vbak TYPE ty_vbak.
data: v_index type i.

***ALV-oo declaration***
DATA: ta_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat,
wa_fieldcat TYPE lvc_s_fcat.
DATA:

TA_SORT TYPE LVC_T_SORT ,


WA_SORT TYPE LVC_S_SORT.

DATA: ob_cont TYPE REF TO cl_gui_custom_container.


DATA: ob_grd TYPE REF TO cl_gui_alv_grid.
DATA: o_alv TYPE REF TO cl_salv_table.
** Declaration for Aggregate Function Settings
DATA : o_aggr
TYPE REF TO cl_salv_aggregations.
DATA : o_sort

TYPE REF TO cl_salv_sorts.

* Workarea for ALV layout

data: wa_layout

data :

TYPE

lvc_s_layo.

lv_totals TYPE REF TO data,


mt_ct02 type ref to data,
mt_ct01 type ref to data,
mt_ct03 type ref to data,
mt_ct04 type ref to data,
mt_ct05 type ref to data.

FIELD-SYMBOLS: <ms_ct02>
<ws_ct02>
<fv_ct02>
<fK_ct02>
<fM_ct02>

type
type
type
type
type

STANDARD TABLE,
any,
any,
any,
any.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-100.


SELECT-OPTIONS: SO_KUNNR FOR WA_FINAL-KUNNR,
SO_MATNR FOR WA_FINAL-MATNR,
SO_BUDAT FOR WA_FINAL-BUDAT.
SELECTION-SCREEN END OF BLOCK B1.
class lcl_cus DEFINITION.
PUBLIC SECTION.
METHODS: get_data,
fieldcat,
set_pf CHANGING co_alv TYPE REF TO cl_salv_table.
ENDCLASS.
CLASS lcl_cus IMPLEMENTATION.
method: get_DATA.
SELECT vbeln
auart FROM vbak
INTO TABLE ta_vbak
WHERE
( auart = 'ZZRE'
auart = 'ZZR6'
auart = 'ZREP'
auart = 'ZFOC'
auart = 'ZTRI'
IF TA_VBAK IS NOT INITIAL.
SELECT VBELV
POSNV
VBELN
POSNN
VBTYP_N

OR
OR
OR
OR
).

VBTYP_V FROM VBFA


INTO TABLE TA_VBFA
FOR ALL ENTRIES IN TA_VBAK
WHERE VBELv = TA_vbak-vbeln AND
VBTYP_N = 'R'.
ENDIF.
IF TA_vbfa IS NOT INITIAL.
SELECT

MBLNR
MJAHR
ZEILE
BWART
MATNR
WERKS
LGORT
KUNNR
KDAUF
KDPOS
WAERS
DMBTR
MENGE
MEINS
BUDAT_MKPF

FROM MSEG INTO TABLE TA_MSEG


FOR ALL ENTRIES IN ta_vbfa
WHERE mblnr = ta_vbfa-vbeln and
KUNNR IN SO_KUNNR AND
MATNR IN SO_MATNR AND
BUDAT_MKPF IN SO_BUDAT AND
( BWART = '601' OR
BWART = '602' OR
BWART = '652' OR
BWART = '651' ).

endif.
if ta_vbfa is NOT INITIAL.

SELECT

VBELV
POSNV
VBELN
POSNN
VBTYP_N
VBTYP_V FROM VBFA
INTO TABLE TA_VBFA1
FOR ALL ENTRIES IN TA_VBFA

WHERE VBELv = TA_vbFA-vbelV AND


POSNV = TA_VBFA-POSNV AND
( VBTYP_n = 'J' OR
VBTYP_N = 'T' ).
endif.
*
*v_index = 1.
*loop at ta_vbfa INTO wa_vbfa.
* READ TABLE ta_vbak INTO wa_vbak with key vbeln = wa_vbfa-vbelv.
* if sy-subrc = 0.
*
wa_vbfa-flag = 'X'.
* else.
*
wa_vbfa-flag = ''.
* endif.
* modify ta_vbfa FROM wa_vbfa INDEX v_index TRANSPORTING flag.
* v_index = v_index + 1.
* clear wa_vbfa.
* clear wa_vbak.
*ENDLOOP.
*
*delete ta_vbfa WHERE flag <> 'X'.

*v_index = 1.
*LOOP at ta_mseg INTO wa_mseg.
* READ TABLE ta_vbfa INTO wa_vbfa with key vbeln = wa_mseg-mblnr.
* if sy-subrc = 0.
*
wa_mseg-flag = 'X'.
* else.
*
wa_mseg-flag = ''.
* endif.
* modify ta_mseg FROM wa_mseg INDEX v_index TRANSPORTING flag.
* v_index = v_index + 1.
* clear wa_mseg.
*ENDLOOP.
*
*delete ta_mseg WHERE flag <> 'X' .
*v_index = 1.
*LOOP at ta_vbfa1 INTO wa_vbfa1.
* READ TABLE ta_mseg INTO wa_mseg with key mblnr = wa_vbfa1-vbeln.
* if sy-subrc = 0.
*
wa_vbfa1-flag = 'X'.
* else.
*
wa_vbfa1-flag = ''.
* endif.
* modify ta_vbfa1 FROM wa_vbfa1 INDEX v_index TRANSPORTING flag.
* v_index = v_index + 1.

* clear wa_vbfa1.
*ENDLOOP.
*
*delete ta_vbfa1 WHERE flag <> 'X'.
SELECT MATNR
MAKTX
SPRAS FROM MAKT
INTO TABLE TA_MAKT
FOR ALL ENTRIES IN TA_MSEG
WHERE MATNR = TA_MSEG-MATNR AND
SPRAS = SY-LANGU.
SELECT KUNNR
NAME1 FROM KNA1
INTO TABLE TA_KNA1
FOR ALL ENTRIES IN TA_MSEG
WHERE KUNNR = TA_MSEG-KUNNR.

LOOP AT TA_MSEG INTO WA_MSEG.


* wa_final-srno = 'Stock at customer(601+651-602-652) :'.
WA_FINAL-MBLNR = WA_MSEG-MBLNR.
WA_FINAL-MJAHR = WA_MSEG-MJAHR.
WA_FINAL-ZEILE = WA_MSEG-ZEILE.
WA_FINAL-WERKS = WA_MSEG-WERKS.
WA_FINAL-LGORT = WA_MSEG-LGORT.
WA_FINAL-BUDAT = WA_MSEG-BUDAT.
WA_FINAL-KUNNR = WA_MSEG-KUNNR.
WA_FINAL-MATNR = WA_MSEG-MATNR.
WA_FINAL-BWART = WA_MSEG-BWART.
WA_FINAL-MENGE = WA_MSEG-MENGE.
WA_FINAL-MEINS = WA_MSEG-MEINS.
READ TABLE TA_KNA1 INTO WA_KNA1 WITH KEY KUNNR = WA_FINAL-KUNNR.
IF SY-SUBRC = 0.
WA_FINAL-NAME1 = WA_KNA1-NAME1.
ENDIF.
READ TABLE TA_MAKT INTO WA_MAKT WITH KEY MATNR = WA_FINAL-MATNR.
IF SY-SUBRC = 0.
WA_FINAL-MAKTX = WA_MAKT-MAKTX.
ENDIF.
*
*

IF

WA_FINAL-BWART = '601' OR
WA_FINAL-BWART = '602' .
READ TABLE TA_VBFA INTO WA_VBFA WITH KEY VBELN = WA_FINAL-MBLNR.
IF SY-SUBRC = 0.

*
*
*
*
*

WA_FINAL-ORDER = WA_VBFA-VBELV.
else.
READ TABLE TA_VBFA INTO WA_VBFA WITH KEY VBELN = WA_FINAL-MBLNR
VBTYP_V = 'I' .
if sy-subrc = 0.
wa_final-order = wa_vbfa-vbelv.
endif.
ENDIF.

READ TABLE TA_VBFA1 INTO WA_VBFA1 WITH KEY VBELv = WA_FINAL-order.


IF SY-SUBRC = 0.
WA_FINAL-OUTBOUND = WA_VBFA1-VBELn.
ENDIF.
ENDIF.

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

IF

WA_FINAL-BWART = '651' OR
WA_FINAL-BWART = '652' .
READ TABLE TA_VBFA INTO WA_VBFA WITH KEY VBELN = WA_FINAL-MBLNR
VBTYP_V = 'H'.
IF SY-SUBRC = 0.
WA_FINAL-ORDER = WA_VBFA-VBELV.
ENDIF.
READ TABLE TA_VBFA1 INTO WA_VBFA1 WITH KEY VBELN = WA_FINAL-MBLNR
VBTYP_V = 'T'.
IF SY-SUBRC = 0.
WA_FINAL-OUTBOUND = WA_VBFA1-VBELV.
ENDIF.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT
= wa_final-matnr
IMPORTING
OUTPUT
= wa_final-matnr
.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'


EXPORTING
INPUT
= wa_final-kunnr
IMPORTING
OUTPUT
= wa_final-kunnr
.
APPEND WA_FINAL TO TA_FINAL.
CLEAR WA_FINAL.
clear: wa_vbfa1,

wa_vbfa,
wa_vbak,
wa_kna1,
wa_makt,
wa_mseg.
ENDLOOP.
DATA: LC_MSG TYPE REF TO CX_SALV_MSG.
TRY.
CALL METHOD CL_SALV_TABLE=>FACTORY
IMPORTING
R_SALV_TABLE = O_ALV
CHANGING
T_TABLE
= TA_FINAL.
CATCH CX_SALV_MSG INTO LC_MSG .
ENDTRY.
CALL METHOD FIELDCAT.
* CALL METHOD SET_PF
*
CHANGING
*
CO_ALV = O_ALV.
o_alv->set_screen_status( report = sy-repid
pfstatus = 'ZSTANDARD_FULLSCREE'
SET_FUNCTIONS = 2 ).
call SCREEN 9003.

ENDMETHOD.

METHOD: fieldcat.
clear wa_fieldcat.
refresh ta_fieldcat.
DATA: no type i value 0.
no = no + 1.
*
*
*
*
*
*
*
*

wa_fieldcat-col_pos = no.
wa_fieldcat-fieldname = 'SRNO'.
wa_fieldcat-tabname = 'TA_FINAL'.
wa_fieldcat-reptext = ' '.
wa_fieldcat-col_opt = 'X'.
APPEND wa_fieldcat to ta_fieldcat.
clear wa_fieldcat.
no = no + 1.
wa_fieldcat-col_pos = no.
wa_fieldcat-fieldname = 'KUNNR'.

wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

'TA_FINAL'.
'CUST NO'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'MATNR'.
'TA_FINAL'.
'MATERIAL NO'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'BWART'.
'TA_FINAL'.
'MOV TYPE'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos = no.
wa_fieldcat-fieldname = 'MENGE'.
wa_fieldcat-tabname = 'TA_FINAL'.
wa_fieldcat-reptext = 'QUANTITY'.
wa_fieldcat-col_opt = 'X'.
WA_FIELDCAT-DO_SUM = 'X'.
APPEND wa_fieldcat to ta_fieldcat.
clear wa_fieldcat.
no = no + 1.
wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'NAME1'.
'TA_FINAL'.
'CUST NAME'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos = no.
wa_fieldcat-fieldname = 'MAKTX'.
wa_fieldcat-tabname = 'TA_FINAL'.

wa_fieldcat-reptext = 'MATERIAL DESC'.


wa_fieldcat-col_opt = 'X'.
APPEND wa_fieldcat to ta_fieldcat.
clear wa_fieldcat.
no = no + 1.
wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'MBLNR'.
'TA_FINAL'.
'GRN NO'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'MJAHR'.
'TA_FINAL'.
'GRN YEAR'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'ZEILE'.
'TA_FINAL'.
'GRN ITEM'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'WERKS'.
'TA_FINAL'.
'PLANT'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.

no.
= 'LGORT'.
'TA_FINAL'.
'STO LOC'.
'X'.
ta_fieldcat.

no = no + 1.

*
*
**
*
**
**
**

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'BUDAT'.
'TA_FINAL'.
'POSTING DATE'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'ORDER'.
'TA_FINAL'.
'SALE ORDER'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'OUTBOUND'.
'TA_FINAL'.
'DELIVERY'.
'X'.
ta_fieldcat.

wa_fieldcat-col_pos =
wa_fieldcat-fieldname
wa_fieldcat-tabname =
wa_fieldcat-reptext =
wa_fieldcat-col_opt =
APPEND wa_fieldcat to
clear wa_fieldcat.
no = no + 1.

no.
= 'MEINS'.
'TA_FINAL'.
'UOM'.
'X'.
ta_fieldcat.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'


EXPORTING
I_BUFFER_ACTIVE
=
I_STRUCTURE_NAME
= 'WA_FINAL'
I_CLIENT_NEVER_DISPLAY
= 'X'
I_BYPASSING_BUFFER
=
I_INTERNAL_TABNAME
=

*
*
*
*
*
*
*

CHANGING
CT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE
PROGRAM_ERROR
OTHERS
.

= TA_fIELDCAT
= 1
= 2
= 3

*
IF SY-SUBRC = 0.
*
LOOP AT TA_fieldcat INTO wA_fieldCAT.
*
IF WA_FIELDCAT-fieldname = 'MENGE'.
*
WA_FIELDCAT-do_sum = 'X'.
*
MODIFY TA_Fieldcat FROM WA_FIELDCAT TRANSPORTING do_sum.
*
ENDIF.
*
IF WA_FIELDCAT-fieldname = 'SRNO'.
**
Hide this field so that it can display it's content i.e.
**
Total text in Subtotal level
*
WA_FIELDCAT-tech = 'X'.
*
WA_FIELDCAT-no_out = 'X'.
*
MODIFY TA_fieldcat FROM WA_FIELDCAT TRANSPORTING tech no_out.
*
ENDIF.
*
CLEAR WA_FIELDCAT.
*
ENDLOOP.
*ENDIF.

*
*
*
*
*

wa_sort-spos = 1.
wa_sort-fieldname = 'SRNO'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO TA_sort.

Wa_sort-SPOS = 01.
Wa_sort-FIELDNAME = 'KUNNR'.
Wa_sort-up = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO TA_SORT.
CLEAR WA_SORT.
Wa_sort-SPOS = 02.
Wa_sort-FIELDNAME = 'MATNR'.
Wa_sort-up = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO TA_SORT.
CLEAR WA_SORT.

Wa_sort-SPOS = 03.

Wa_sort-FIELDNAME = 'BWART'.
Wa_sort-up = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO TA_SORT.
CLEAR WA_SORT.
**
*

Hide the total line


wa_layout-no_totline = 'X'.
ENDMETHOD.
METHOD set_pf .

DATA: LO_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS_LIST.


* Default functions
LO_FUNCTIONS = CO_ALV->GET_FUNCTIONS( ).
LO_FUNCTIONS->SET_DEFAULT( ABAP_TRUE ).

ENDMETHOD.

ENDCLASS.
START-OF-SELECTION.
DATA: CUS TYPE REF TO LCL_CUS.
CREATE OBJECT CUS.
CALL METHOD CUS->GET_DATA.

*&---------------------------------------------------------------------*
*&
Module STATUS_9003 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE STATUS_9003 OUTPUT.
SET PF-STATUS 'ZSTANDARD_FULLSCREE'.

SET TITLEBAR 'ZMM_STK_CUST_R_TITLE'.


CREATE OBJECT OB_CONT
EXPORTING
CONTAINER_NAME
= 'CONTAINER'
*
STYLE
=
*
LIFETIME
= lifetime_default
*
REPID
=
*
DYNNR
=
*
NO_AUTODEF_PROGID_DYNNR
=
EXCEPTIONS
CNTL_ERROR
= 1
CNTL_SYSTEM_ERROR
= 2
CREATE_ERROR
= 3
LIFETIME_ERROR
= 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
others
= 6
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT OB_GRD
EXPORTING
*
I_SHELLSTYLE
= 0
*
I_LIFETIME
=
I_PARENT
= OB_CONT
*
I_APPL_EVENTS
= space
*
I_PARENTDBG
=
*
I_APPLOGPARENT
=
*
I_GRAPHICSPARENT =
*
I_NAME
=
*
I_FCAT_COMPLETE
= SPACE
* EXCEPTIONS
*
ERROR_CNTL_CREATE = 1
*
ERROR_CNTL_INIT
= 2
*
ERROR_CNTL_LINK
= 3
*
ERROR_DP_CREATE
= 4
*
others
= 5
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*wa_layout-NO_toolbar = 'X'.

CALL METHOD OB_GRD->SET_TABLE_FOR_FIRST_DISPLAY


EXPORTING
*
I_BUFFER_ACTIVE
=
*
I_BYPASSING_BUFFER
=
*
I_CONSISTENCY_CHECK
=
*
I_STRUCTURE_NAME
=
*
IS_VARIANT
=
I_SAVE
= 'X'
*
I_DEFAULT
= 'X'
IS_LAYOUT
= WA_LAYOUT
*
IS_PRINT
=
*
IT_SPECIAL_GROUPS
=
*
IT_TOOLBAR_EXCLUDING
=
*
IT_HYPERLINK
=
*
IT_ALV_GRAPHICS
=
*
IT_EXCEPT_QINFO
=
*
IR_SALV_ADAPTER
=
CHANGING
IT_OUTTAB
= TA_FINAL
IT_FIELDCATALOG
= TA_FIELDCAT
IT_SORT
= ta_sort
*
IT_FILTER
=
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR
= 2
TOO_MANY_LINES
= 3
others
= 4
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

CALL METHOD ob_grd->get_subtotals


IMPORTING
ep_collect00 = lv_totals
ep_collect01 = mt_ct01
ep_collect02 = mt_ct02
ep_collect03 = mt_ct03
ep_collect04 = mt_ct04
ep_collect05 = mt_ct05.
assign mt_ct02->* to <ms_ct02>.
loop at <ms_ct02> ASSIGNING <ws_ct02>.
ASSIGN COMPONENT 'MENGE' of STRUCTURE <ws_ct02> to <fv_ct02>.
ASSIGN COMPONENT 'KUNNR' of STRUCTURE <ws_ct02> to <fK_ct02>.
ASSIGN COMPONENT 'MATNR' of STRUCTURE <ws_ct02> to <fM_ct02>.
SORT TA_FINAL BY KUNNR MATNR BWART .

CLEAR <FV_CT02>.
CLEAR <FM_CT02>.
LOOP AT TA_FINAL INTO WA_FINAL WHERE KUNNR = <FK_CT02> AND
MATNR = <FM_CT02>.

CASE WA_FINAL-BWART.
WHEN '601'.
<FV_CT02> = <FV_CT02> + WA_FINAL-MENGE.
WHEN '602'.
<FV_CT02> = <FV_CT02> - WA_FINAL-MENGE.
WHEN '651'.
<FV_CT02> = <FV_CT02> - WA_FINAL-MENGE.
WHEN '652'.
<FV_CT02> = <FV_CT02> + WA_FINAL-MENGE.
ENDCASE.
*
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
*
EXPORTING
*
INPUT
= <FM_CT02>
*
IMPORTING
*
OUTPUT
= <FM_CT02>
*
.
ENDLOOP.
CONCATENATE 'CUS-STK:' <FM_CT02> INTO <FM_CT02> SEPARATED BY SPACE.
modify <ms_ct02> FROM <ws_ct02>.
* CLEAR <FV_CT02>.
ENDLOOP.
*if ob_cont is NOT INITIAL.
* CALL METHOD ob_cont->free.
*
*ENDIF.
*
*
CALL METHOD ob_grd->free.
CALL METHOD OB_GRD->REFRESH_TABLE_DISPLAY
EXPORTING
*
IS_STABLE
=
I_SOFT_REFRESH = 'X'
EXCEPTIONS
FINISHED
= 1
others
= 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
*
*CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
** EXPORTING
**
IR_SALV_FULLSCREEN_ADAPTER
=

* IMPORTING
**
ET_EXCLUDING
**
E_REPID
**
E_CALLBACK_PROGRAM
**
E_CALLBACK_ROUTINE
*
E_GRID
**
ET_FIELDCAT_LVC
**
ER_TRACE
**
E_FLG_NO_HTML
**
ES_LAYOUT_KKBLO
**
ES_SEL_HIDE
**
ET_EVENT_EXIT
**
ER_FORM_TOL
**
ER_FORM_EOL
*
.

=
=
=
=
= ob_grd
=
=
=
=
=
=
=
=

ENDMODULE.
" STATUS_9003 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_9003 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9003 INPUT.
case sy-ucomm.
when '&F03'.
LEAVE TO SCREEN 0.
WHEN '&F15'.
LEAVE TO SCREEN 0.
WHEN '&F12'.
LEAVE TO SCREEN 0
.
ENDCASE.
ENDMODULE.
" USER_COMMAND_9003 INPUT

You might also like