Oops Concept Alv Report Example
Oops Concept Alv Report Example
*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
***ALV-oo declaration***
DATA: ta_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat,
wa_fieldcat TYPE lvc_s_fcat.
DATA:
data: wa_layout
data :
TYPE
lvc_s_layo.
FIELD-SYMBOLS: <ms_ct02>
<ws_ct02>
<fv_ct02>
<fK_ct02>
<fM_ct02>
type
type
type
type
type
STANDARD TABLE,
any,
any,
any,
any.
OR
OR
OR
OR
).
MBLNR
MJAHR
ZEILE
BWART
MATNR
WERKS
LGORT
KUNNR
KDAUF
KDPOS
WAERS
DMBTR
MENGE
MEINS
BUDAT_MKPF
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
*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.
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.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
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
.
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'.
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.
*
*
*
*
*
*
*
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.
**
*
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'.
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