‎2007 Jun 07 12:14 PM
while displaying alv report i have to display the heading and under it i have to display two headings(basically not but subheadings) how i can display it.Plz explain me.
‎2007 Jun 07 12:22 PM
Hi d,
while displaying the list, use menu sytem-list-list header. Put in as you want and save.
Regards,
Clemens
‎2007 Jun 07 12:24 PM
Hi manjula
I had developed a report in which u can find the same requirement
check this code
*&---------------------------------------------------------------------*
*& Report ZALVDEMO *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZALVDEMO.
TABLES : J_1IEXCHDR, " header table
J_1IEXCDTL, " item table
J_1IPART2, " Excise Part II details
LFA1, " vendor master table
J_1IMOVEND, " vendor excise details table
MSEG, " Document Segment: Material
MKPF, " Header: Material Document
DD07T, " domain text table
T001W. " Plant and Branch Details
DATA : BEGIN OF IT_CHDR OCCURS 100,
DOCNO LIKE J_1IEXCHDR-DOCNO,
DOCYR LIKE J_1IEXCHDR-DOCYR,
EXNUM LIKE J_1IEXCHDR-EXNUM,
EXDAT LIKE J_1IEXCHDR-EXDAT,
WERKS LIKE J_1IEXCHDR-WERKS,
EXBED LIKE J_1IEXCHDR-EXBED,
EXCCD LIKE J_1IEXCHDR-EXCCD,
ECS LIKE J_1IEXCHDR-ECS,
END OF IT_CHDR.
DATA : BEGIN OF IT_CDTL OCCURS 100,
DOCYR LIKE J_1IEXCDTL-DOCYR,
DOCNO LIKE J_1IEXCDTL-DOCNO,
EXNUM LIKE J_1IEXCDTL-EXNUM,
EXDAT LIKE J_1IEXCDTL-EXDAT,
LIFNR LIKE J_1IEXCDTL-LIFNR,
MATNR LIKE J_1IEXCDTL-MATNR,
MAKTX LIKE J_1IEXCDTL-MAKTX,
CHAPID LIKE J_1IEXCDTL-CHAPID,
EXBAS LIKE J_1IEXCDTL-EXBAS,
EXBED LIKE J_1IEXCDTL-EXBED,
ECS LIKE J_1IEXCDTL-ECS,
MENGE LIKE J_1IEXCDTL-MENGE,
MEINS LIKE J_1IEXCDTL-MEINS,
RDOC2 LIKE J_1IEXCDTL-RDOC2,
END OF IT_CDTL.
DATA TEXT(10).
DATA : BEGIN OF IT_OUT OCCURS 0,
SERIALNO LIKE J_1IPART2-SERIALNO,
TEXT1 LIKE TEXT,
EXNUM LIKE J_1IEXCDTL-EXNUM,
EXDAT LIKE J_1IEXCDTL-EXDAT,
NAME LIKE LFA1-NAME1,
DDTEXT LIKE DD07T-DDTEXT,
EXCCD LIKE J_1IEXCHDR-EXCCD,
BUDAT LIKE MKPF-BUDAT,
EXBAS LIKE IT_CDTL-EXBAS,
EXBED LIKE IT_CDTL-EXBED,
ECS LIKE IT_CDTL-ECS,
MATNR LIKE IT_CDTL-MATNR,
MAKTX LIKE IT_CDTL-MAKTX,
CHAPID LIKE IT_CDTL-CHAPID,
MENGE LIKE IT_CDTL-MENGE,
MEINS LIKE IT_CDTL-MEINS,
DEL_IND(1),
END OF IT_OUT.
DATA IT_PART2 LIKE J_1IPART2 OCCURS 0 WITH HEADER LINE.
DATA S_NO(4) .
DATA DB_CNT LIKE SY-TABIX.
DATA EBELN_T LIKE MSEG-EBELN .
*------------------------------------
TYPE-POOLS : SLIS.
DATA : AFIELD TYPE SLIS_FIELDCAT_ALV.
DATA : LIST_HEADER TYPE SLIS_T_LISTHEADER,
FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
LS_FTCAT TYPE LVC_S_FCAT,
SORTCAT TYPE SLIS_T_SORTINFO_ALV,
SORTCAT_LN LIKE LINE OF SORTCAT,
G_REPID LIKE SY-REPID,
G_BACK_GROUND(70), "like bapibds01-objkey,
GS_VARIANT LIKE DISVARIANT,
G_SAVE ,
GT_EVENTS TYPE SLIS_T_EVENT,
ALV_EVENT TYPE SLIS_ALV_EVENT,
EVENTCAT TYPE SLIS_T_EVENT,
EVENTCAT_LN LIKE LINE OF EVENTCAT,
LAYOUT_IN TYPE SLIS_LAYOUT_ALV,
LAYOUT_IN1 TYPE SLIS_LAYOUT_ALV.
CONSTANTS : GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE
'TOP_OF_PAGE',
GC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE
'USER_COMMAND',
GC_FORMNAME_BEFORE_OUTPUT TYPE SLIS_FORMNAME VALUE
'BEFORE_OUTPUT'.
* ALV_EVENT TYPE SLIS_ALV_EVENT,
*-------------------------------------
DATA EX_NO LIKE IT_CHDR-EXNUM VALUE 0.
DATA REGTYP_1 LIKE J_1IPART2-REGTYP.
SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME.
PARAMETERS WERKS TYPE J_1IEXCHDR-WERKS.
SELECT-OPTIONS : BUDAT FOR J_1IEXCHDR-EXDAT.
PARAMETERS : R1 RADIOBUTTON GROUP GRP DEFAULT 'X',
R2 RADIOBUTTON GROUP GRP.
SELECTION-SCREEN END OF BLOCK B.
INITIALIZATION.
G_REPID = SY-REPID.
G_SAVE = 'A'.
* PERFORM BUILD_EVENT USING GT_EVENTS[].
PERFORM ALV_EVENT_INIT.
AT SELECTION-SCREEN.
REFRESH LIST_HEADER.
PERFORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER.
START-OF-SELECTION.
* PERFORM ALV_EVENT_INIT.
G_REPID = SY-REPID.
G_BACK_GROUND = ' ' .
IF R1 = 'X'.
CLEAR R2. CLEAR : REGTYP_1.
REGTYP_1 = 'A'.
* set titlebar 'BALAJI' with DB_CNT.
ELSEIF R2 = 'X'.
CLEAR R1.CLEAR : REGTYP_1.
REGTYP_1 = 'C'.
* set titlebar 'BALAJI1' with DB_CNT.
ENDIF.
SELECT * FROM J_1IPART2
INTO CORRESPONDING FIELDS OF TABLE IT_PART2
WHERE REGTYP = REGTYP_1 AND
TRNTYP = 'GRPO' AND
BUDAT IN BUDAT.
* DOCYR = IT_CDTL-DOCYR AND
* DOCNO = IT_CDTL-DOCNO.
LOOP AT IT_PART2.
SELECT SINGLE * FROM J_1IEXCHDR
INTO CORRESPONDING FIELDS OF IT_CHDR
WHERE TRNTYP = 'GRPO' AND
DOCYR = IT_PART2-DOCYR AND
DOCNO = IT_PART2-DOCNO AND
WERKS = WERKS AND
exdat IN BUDAT.
* ORDER BY EXDAT.
IF SY-SUBRC = 0.
APPEND IT_CHDR.
ELSE.
CONTINUE.
ENDIF.
* IF SY-SUBRC <> 0.
* MESSAGE E084.
* ENDIF.
ENDLOOP.
LOOP AT IT_CHDR.
SELECT * FROM J_1IEXCDTL
INTO CORRESPONDING FIELDS OF IT_CDTL
* FOR ALL ENTRIES IN IT_CHDR
WHERE
TRNTYP = 'GRPO' AND
DOCNO = IT_CHDR-DOCNO AND
DOCYR = IT_CHDR-DOCYR AND
EXNUM = IT_CHDR-EXNUM AND
EXDAT = IT_CHDR-EXDAT AND
WERKS = IT_CHDR-WERKS.
IF SY-SUBRC = 0.
APPEND IT_CDTL.
ELSE.
CONTINUE.
ENDIF.
ENDSELECT.
ENDLOOP.
LOOP AT IT_CDTL.
CLEAR TEXT.
DB_CNT = DB_CNT + 1.
READ TABLE IT_CHDR WITH KEY EXNUM = IT_CDTL-EXNUM.
READ TABLE IT_PART2 WITH KEY DOCNO = IT_CDTL-DOCNO .
IT_OUT-SERIALNO = IT_PART2-SERIALNO.
SELECT SINGLE NAME1 FROM LFA1
INTO IT_OUT-NAME
WHERE LIFNR = IT_CDTL-LIFNR.
SELECT SINGLE * FROM LFA1
WHERE LIFNR = IT_CDTL-LIFNR.
IF LFA1-LAND1 EQ 'IN'.
TEXT = 'INVOICE'.
IT_OUT-TEXT1 = TEXT.
ELSE.
TEXT = 'BOE'.
IT_OUT-TEXT1 = TEXT.
ENDIF.
SELECT SINGLE * FROM J_1IMOVEND
WHERE LIFNR = IT_CDTL-LIFNR.
SELECT SINGLE * FROM DD07T
* INTO IT_OUT-DDTEXT
WHERE DOMNAME = 'J_1IVTYP' AND
DDLANGUAGE = 'EN' AND
DOMVALUE_L = J_1IMOVEND-J_1IVTYP.
IF DD07T-DDTEXT = 'First Stage Dealer of indigenous excisable goods'
OR
DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisablegoods'.
DD07T-DDTEXT = 'Dealer'.
ENDIF.
IT_OUT-DDTEXT = DD07T-DDTEXT.
* ELSEIF DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisable
*goods'.
* DD07T-DDTEXT =
CLEAR EBELN_T.
SELECT SINGLE LFBNR FROM MSEG
INTO EBELN_T
WHERE MBLNR = IT_CDTL-RDOC2 .
SELECT SINGLE * FROM MSEG
WHERE BWART = '106' AND
LFBNR = EBELN_T ."and
* ebeln = ebeln_t.
IF SY-SUBRC = 0.
IT_OUT-DEL_IND = 'X'.
ELSE.
IT_OUT-DEL_IND = ' '.
ENDIF.
SELECT SINGLE BUDAT FROM MKPF
INTO IT_OUT-BUDAT
WHERE MBLNR = EBELN_T ."MSEG-LFBNR.
IT_OUT-EXNUM = IT_CDTL-EXNUM.
IT_OUT-EXDAT = IT_CDTL-EXDAT.
IT_OUT-EXCCD = IT_CHDR-EXCCD.
IT_OUT-EXBAS = IT_CDTL-EXBAS.
IT_OUT-EXBED = IT_CDTL-EXBED.
IT_OUT-ECS = IT_CDTL-ECS.
IT_OUT-MATNR = IT_CDTL-MATNR.
IT_OUT-MAKTX = IT_CDTL-MAKTX.
IT_OUT-CHAPID = IT_CDTL-CHAPID.
IT_OUT-MENGE = IT_CDTL-MENGE.
IT_OUT-MEINS = IT_CDTL-MEINS.
APPEND IT_OUT.
* EX_NO = IT_CDTL-EXNUM.
ENDLOOP.
*--------------------------------------------------------
* Title Portion
IF REGTYP_1 = 'A'.
SET TITLEBAR 'BALAJI' WITH DB_CNT.
ELSEIF REGTYP_1 = 'C'.
SET TITLEBAR 'BALAJI1' WITH DB_CNT.
ENDIF.
*---------------------------------------------------------
AFIELD-COL_POS = 1.
AFIELD-FIELDNAME = 'SERIALNO'.
AFIELD-SELTEXT_L = 'INPUTS'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 2.
AFIELD-FIELDNAME = 'TEXT1'.
AFIELD-SELTEXT_L = 'TYPE OF DOC'.
AFIELD-JUST = 'L'.
AFIELD-DECIMALS_OUT = '0'.
AFIELD-NO_ZERO = 'X'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 3.
AFIELD-FIELDNAME = 'EXNUM'.
AFIELD-SELTEXT_L = 'DOC.NO'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 4.
AFIELD-FIELDNAME = 'EXDAT'.
AFIELD-SELTEXT_L = 'DOC.DATE'.
AFIELD-JUST = 'C'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 5.
AFIELD-FIELDNAME = 'NAME'.
AFIELD-SELTEXT_L = 'NAME OF THE SUPPLIER'.
AFIELD-NO_ZERO = 'X'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 6.
AFIELD-FIELDNAME = 'DDTEXT'.
AFIELD-SELTEXT_L = 'TYPE-OF-SUPPLIER'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 7.
AFIELD-FIELDNAME = 'EXCCD'.
AFIELD-SELTEXT_L = 'ECC OF THE SUPPLIER'.
AFIELD-NO_ZERO = 'X'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 8.
AFIELD-FIELDNAME = 'BUDAT'.
AFIELD-SELTEXT_L = 'INPUT RECV DATE'.
AFIELD-JUST = 'C'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 9.
AFIELD-FIELDNAME = 'EXBAS'.
AFIELD-SELTEXT_L = 'ASSESSABLE-VALUE'.
AFIELD-DO_SUM = 'X'.
AFIELD-JUST = 'R'.
AFIELD-DECIMALS_OUT = '2'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 10.
AFIELD-FIELDNAME = 'EXBED'.
AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN CENVAT'.
AFIELD-JUST = 'R'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 11.
AFIELD-FIELDNAME = 'ECS'.
AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN E-CESS'.
AFIELD-JUST = 'R'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 12.
AFIELD-FIELDNAME = 'MATNR'.
AFIELD-SELTEXT_L = 'MATERIAL-CODE'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 13.
AFIELD-FIELDNAME = 'MAKTX'.
AFIELD-SELTEXT_L = 'DESCRIPTION'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 14.
AFIELD-FIELDNAME = 'CHAPID'.
AFIELD-SELTEXT_L = 'TARIFF-ID'.
AFIELD-JUST = 'L'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 15.
AFIELD-FIELDNAME = 'MENGE'.
AFIELD-SELTEXT_L = 'QUANTITY'.
AFIELD-JUST = 'R'.
AFIELD-DO_SUM = ' '.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 16.
AFIELD-FIELDNAME = 'MEINS'.
AFIELD-SELTEXT_L = 'UOM'.
AFIELD-JUST = 'C'.
APPEND AFIELD TO FIELDCAT.
AFIELD-COL_POS = 17.
AFIELD-FIELDNAME = 'DEL_IND'.
AFIELD-SELTEXT_L = 'Deleted'.
AFIELD-JUST = 'C'.
APPEND AFIELD TO FIELDCAT.
* * LAYOUT FOR ZEBRA CATLOG
LAYOUT_IN-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT_IN-ZEBRA = 'X'.
LAYOUT_IN-GET_SELINFOS = 'X'.
LAYOUT_IN-CONFIRMATION_PROMPT = 'X'.
LAYOUT_IN-DETAIL_POPUP = 'X' .
* SORTCAT-decimals = '0'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_SAVE = G_SAVE
IS_VARIANT = GS_VARIANT
IT_FIELDCAT = FIELDCAT
IT_SORT = SORTCAT
IS_LAYOUT = LAYOUT_IN
IT_EVENTS = EVENTCAT
* I_BACKGROUND_ID = g_back_ground
TABLES
T_OUTTAB = IT_OUT.
*&--------------------------------------------------------------------*
*& Form TOP_OF_PAGE_LIST_HEADER
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->LIST_HEADERtext
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER TYPE SLIS_T_LISTHEADER.
DATA : HLINE TYPE SLIS_LISTHEADER,
TEXT(60) TYPE C.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
* WRITE 'ROOTS INDUSTRIES LTD' TO TEXT.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
SELECT SINGLE * FROM T001W WHERE WERKS = WERKS.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE 'PLANT :' TO TEXT.
WRITE WERKS TO TEXT+8.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE T001W-NAME1 TO TEXT.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE T001W-STRAS TO TEXT.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE T001W-ORT01 TO TEXT.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
CLEAR : HLINE,TEXT.
HLINE-TYP = 'H'.
WRITE 'DATE :' TO TEXT.
WRITE BUDAT-LOW TO TEXT+7.
IF BUDAT-HIGH NE ''.
WRITE 'TO' TO TEXT+18.
WRITE BUDAT-HIGH TO TEXT+22.
ENDIF.
HLINE-INFO = TEXT.
APPEND HLINE TO LIST_HEADER.
ENDFORM. "TOP_OF_PAGE_LIST_HEADER
*&--------------------------------------------------------------------*
*& Form ALV_EVENT_INIT
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM ALV_EVENT_INIT .
CLEAR ALV_EVENT.
ALV_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
ALV_EVENT-FORM = 'ALV_TOP_OF_PAGE'.
APPEND ALV_EVENT TO EVENTCAT.
CLEAR ALV_EVENT.
ALV_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
ALV_EVENT-FORM = 'ALV_TOP_OF_LIST'.
APPEND ALV_EVENT TO EVENTCAT.
* CLEAR ALV_EVENT.
* ALV_EVENT-NAME = SLIS_EV_END_OF_LIST.
* ALV_EVENT-FORM = 'ALV_END_OF_LIST'.
* APPEND ALV_EVENT TO GT_EVENTS.
* CLEAR ALV_EVENT.
* ALV_EVENT-NAME = SLIS_EV_END_OF_PAGE.
* ALV_EVENT-FORM = 'ALV_END_OF_PAGE'.
* APPEND ALV_EVENT TO GT_EVENTS.
ENDFORM. "ALV_EVENT_INIT
*&--------------------------------------------------------------------*
*& Form ALV_TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM ALV_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = LIST_HEADER
I_LOGO = 'ENJOYSAP_LOGO'.
ENDFORM. "ALV_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*& Form BUILD_EVENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EVENTS[] text
*----------------------------------------------------------------------*
FORM BUILD_EVENT USING P_EVENTS TYPE SLIS_T_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO
ALV_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_USER_COMMAND TO ALV_EVENT-FORM.
APPEND ALV_EVENT TO P_EVENTS.
ENDIF.
READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_BEFORE_LINE_OUTPUT INTO
ALV_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_BEFORE_OUTPUT TO ALV_EVENT-FORM.
APPEND ALV_EVENT TO P_EVENTS.
ENDIF.
ENDFORM. " BUILD_EVENTReward all helpfull answers
Regards
Pavan
‎2007 Jun 07 1:05 PM
Hi,
You can use the following FM's
REUSE_ALV_COMMENTARY_WRITE
REUSE_ALV_GRID_COMMENTARY_SET
to use these you need to define the User command & call this FM when you handle the user command.
Regards,
guarav
‎2007 Jun 07 1:09 PM
Hi Manjula
<b>If you have patience, this ALV will give the same requirement along with so many things on ALV.</b>
************************************************************************
Program Name : ZV30_WM_STOCK_OVERVIEW *
Author : M.Sreeram Kumar *
Date : 2006-12-15 *
Description : The purpose of this program is to get stock *
overview for the control of distribution activ *
ities in the warehouse. *
************************************************************************
Original Transport Number : I30K903365 *
************************************************************************
SYS id: SYS_30_0208_01_55_WM_Stock_Overview.doc *
TDS id: TDS_30_D_0208_01_55_WM_Stock_Overview.doc *
UT ID UTS_30_D_0208_01_55_WM_Stock_Overview.doc *
======================================================================
Change History *
----
Date | Change No | Name | Description *
----
yyyy/mm/dd | AAAYYYYMMDD | xxxxxxxxxxxx | *
************************************************************************
REPORT zv30_wm_stock_overview MESSAGE-ID zv30_sd
NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE zv30_wm_stock_overview_top. " Include for Variable Declarations and Section Secreens
INCLUDE zv30_wm_stock_overview_data. " Include for ALV Processing
&----
*& INITIALIZATION
&----
INITIALIZATION.
PERFORM f_initialize. " Perform to Initialize the Selection Parameters
&----
*& AT SELECTION-SCREEN
&----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_werks-low.
PERFORM search_help_werks. " Search Help for WERKS(PLANT)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lgort-low.
PERFORM search_help_lgort . " Search Help for LGORT(STORAGE LOCATION)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lgtyp-low.
PERFORM search_help_lgtyp . " Search Help for LGTYP(STORAGE TYPE)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lgtkz-low.
PERFORM search_help_lgtkz . " Search Help for LGTKZ(STORAGE TYPE INDICATOR FOR STOCK PLACEMENT)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lgtkz1-low.
PERFORM search_help_lgtkz1. " Search Help for LGTKZ1(STORAGE TYPE INDICATOR FOR STOCK REMOVAL)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lgbkz-low.
PERFORM search_help_lgbkz . " Search Help for LGBKZ(STORAGE SECTION INDICATOR)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_letyp-low.
PERFORM search_help_letyp . " Search Help for LETYP(STORAGE UNIT TYPE)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_spgru-low.
PERFORM search_help_spgru . " Search Help for SPGRU(BLOCKING REASON)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_lgpla-low.
PERFORM search_help_lgpla . " Search Help for LGPLA(STORAGE BIN)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_charg-low.
PERFORM search_help_charg . " Search Help for CHARG(BATCH)
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout. " CHECK FOR VARIANT
PERFORM alv_f4.
PERFORM top_of_page. " Perform for Header information of the ALV Report.
&----
*& START-OF-SELECTION.
&----
START-OF-SELECTION.
PERFORM data_retrieval. " Perform to fetch the data from database tables to Internal Tab
PERFORM build_table. " Perform to build the final Internal Table
PERFORM f_layout_display. " Perform to fill the FieldCatalog
PERFORM alv_event. " Perform for ALV Events
PERFORM fill_listheader. " Perform to fill the ALV List Header
PERFORM sort_alv. " Perform to sort the ALV Report
&----
*& END-OF-SELECTION.
&----
END-OF-SELECTION.
PERFORM alv_display. " Perform to display the data in ALV form
&----
*& Include ZV30_WM_STOCK_OVERVIEW_TOP
&----
Type pools
TYPE-POOLS: slis. " Global types for generic cunning components
Database tables
TABLES: lqua, " Quants
mcha, " Batch Data
lagp, " Storage bins
t300, " WM Warehouse Numbers
t001w, " Plants/Branches
t001l, " Storage Locations
t301, " WM Storage Types
mara, " General Material Data
t134, " Material Types
t305, " Storage Type Indicators
t304, " Storage Section Indicators
t330, " Blocking Reasons
t307, " Storage Unit Types
vtbbewe, " Flow Records in Cash Flow Calculator
mmim_rep_print. " Print Settings, Reporting MM-IM
&----
*& Types Declarations
&----
TYPES: BEGIN OF type_stock,
lgnum TYPE lqua-lgnum, " Warehouse Number
werks TYPE lqua-werks, " Plant
lgort TYPE lqua-lgort, " Storage Location
lgtyp TYPE lqua-lgtyp, " Storage Type
lgpla TYPE lqua-lgpla, " Storage Bin
matnr TYPE lqua-matnr, " Material number
maktx TYPE makt-maktx, " Material name
mtart TYPE mara-mtart, " Material Type
ltkze TYPE mlgn-ltkze, " Storage Type Indicator for Stock Placement
ltkza TYPE mlgn-ltkza, " Storage Type Indicator for Stock Removal
lgbkz TYPE mlgn-lgbkz, " Storage section Indicator
charg TYPE lqua-charg, " Batch
zustd TYPE mcha-zustd, " Batch Status
atwrt TYPE ausp-atwrt, " Batch Status Characteristic
hsdat TYPE mcha-hsdat, " Date of Manufacture
vfdat TYPE lqua-vfdat, " Expiry Date
bestq TYPE lqua-bestq, " Stock Type
bdatu TYPE lqua-bdatu, " Last Movement Date
date1 TYPE vtbbewe-atage, " Number of days since last goods receipt
wdatu TYPE lqua-wdatu, " Goods Receipt Date
date2 TYPE vtbbewe-atage, " Number of days since no movement
letyp TYPE lqua-letyp, " Storage Unit Type
lenum TYPE lqua-lenum, " Storage Unit Number
skzue TYPE lqua-skzue, " Put Away Block for Quant
skzua TYPE lqua-skzua, " Stock Removal Block for Quant
spgru TYPE lqua-spgru, " Blocking reason for Quant
skzue1 TYPE lagp-skzue, " Put Away Block
skzua1 TYPE lagp-skzua, " Stock Removal Block
spgru1 TYPE lagp-spgru, " Blocking reason
qplos TYPE lqua-qplos, " Inspection lot number
verme TYPE lqua-verme, " Quantity
meins TYPE lqua-meins, " Unit of measure
quan TYPE lqua-verme, " Value of stock
waers TYPE t001-waers, " Currency
END OF type_stock.
TYPES: BEGIN OF type_lqua,
lgnum TYPE lqua-lgnum, " Warehouse Number
werks TYPE lqua-werks, " Plant
matnr TYPE lqua-matnr, " Material number
lgtyp TYPE lqua-lgtyp, " Storage Type
lgpla TYPE lqua-lgpla, " Storage Bin
lgort TYPE lqua-lgort, " Storage Location
lenum TYPE lqua-lenum, " Storage Unit Number
letyp TYPE lqua-letyp, " Storage Unit Type
charg TYPE lqua-charg, " Batch
vfdat TYPE lqua-vfdat, " Expiry Date
bestq TYPE lqua-bestq, " Stock Type
verme TYPE lqua-verme, " Quantity
meins TYPE lqua-meins, " Unit of measure
bdatu TYPE lqua-bdatu, " Last Movement Date
wdatu TYPE lqua-wdatu, " Goods Receipt Date
skzue TYPE lqua-skzue, " Put Away Block for Quant
skzua TYPE lqua-skzua, " Stock Removal Block for Quant
spgru TYPE lqua-spgru, " Blocking reason
qplos TYPE lqua-qplos, " Inspection Lot Number
END OF type_lqua.
TYPES: BEGIN OF type_mara,
matnr TYPE mara-matnr, " Material number
mtart TYPE mara-mtart, " Material Type
END OF type_mara.
TYPES: BEGIN OF type_mcha,
matnr TYPE mcha-matnr, " Material number
werks TYPE mcha-werks, " Plant
charg TYPE mcha-charg, " Batch
zustd TYPE mcha-zustd, " Batch Status
hsdat TYPE mcha-hsdat, " Date of Manufacture
END OF type_mcha.
TYPES: BEGIN OF type_mlgn,
matnr TYPE mlgn-matnr, " matnr
lgnum TYPE mlgn-lgnum, " Warehouse Number
lgbkz TYPE mlgn-lgbkz, " Storage section Indicator
ltkze TYPE mlgn-ltkze, " Storage Type Indicator for Stock Placement
ltkza TYPE mlgn-ltkza, " Storage Type Indicator for Stock Removal
END OF type_mlgn.
TYPES: BEGIN OF type_lagp,
lgnum TYPE lagp-lgnum, " Warehouse Number
lgtyp TYPE lagp-lgtyp, " Storage Type
lgpla TYPE lagp-lgpla, " Storage Bin
skzua TYPE lagp-skzua, " Stock Removal Block
skzue TYPE lagp-skzue, " Put Away Block
spgru TYPE lagp-spgru, " Blocking reason
END OF type_lagp.
TYPES: BEGIN OF type_mbew,
matnr TYPE mbew-matnr, " Material Number
bwkey TYPE mbew-bwkey, " Valuation area
stprs TYPE mbew-stprs, " Standard price
END OF type_mbew.
TYPES: BEGIN OF type_t001k,
bwkey TYPE t001k-bwkey, " Valuation area
bukrs TYPE t001k-bukrs, " Company Code
END OF type_t001k.
TYPES: BEGIN OF type_t001,
bukrs TYPE t001-bukrs, " Company Code
waers TYPE t001-waers, " Currency Key
END OF type_t001.
TYPES: BEGIN OF type_makt,
matnr TYPE makt-matnr, " Material Number
spras TYPE makt-spras, " Language Key
maktx TYPE makt-maktx, " Material name
END OF type_makt.
TYPES: BEGIN OF type_ausp,
objek TYPE ausp-objek, " Key of object to be classified
atinn TYPE ausp-atinn, " Internal characteristic
klart TYPE ausp-klart, " Class Type
atwrt TYPE ausp-atwrt, " Characteristic Value
END OF type_ausp.
TYPES: BEGIN OF type_inob,
cuobj TYPE inob-cuobj, " Configuration (internal object number)
objek TYPE inob-objek, " Key of Object to be Classified
END OF type_inob.
RANGES: r_cuobj FOR inob-cuobj. " To filter the INOB Table
RANGES: r_wdatu FOR lqua-wdatu. " To Filter the No.of Days Since last Goods Receipt
DATA : t_return TYPE STANDARD TABLE OF ddshretval WITH HEADER LINE. " Retun Parameter of Searc Helps
&----
*& Internal tables and work area declarations
&----
DATA: itab_stock TYPE STANDARD TABLE OF type_stock, " Internal Table for final Output
wa_stock TYPE type_stock, " Workarea for Internal Table Stock
itab_lqua TYPE STANDARD TABLE OF type_lqua, " Internal Table for LQUA
wa_lqua TYPE type_lqua, " Workarea for Internal Table LQUA
itab_mara TYPE STANDARD TABLE OF type_mara, " Internal Table for MARA
wa_mara TYPE type_mara, " Workarea for Internal Table MARA
itab_mcha TYPE STANDARD TABLE OF type_mcha, " Internal Table for MCHA
wa_mcha TYPE type_mcha, " Workarea for Internal Table MCHA
itab_mlgn TYPE STANDARD TABLE OF type_mlgn, " Internal Table for MLGN
wa_mlgn TYPE type_mlgn, " Workarea for Internal Table MLGN
itab_lagp TYPE STANDARD TABLE OF type_lagp, " Internal Table for LAGP
wa_lagp TYPE type_lagp, " Workarea for Internal Table LAGP
itab_mbew TYPE STANDARD TABLE OF type_mbew, " Internal Table for MBEW
wa_mbew TYPE type_mbew, " Workarea for Internal Table MBEW
itab_t001k TYPE STANDARD TABLE OF type_t001k, " Internal Table for T001K
wa_t001k TYPE type_t001k, " Workarea for Internal Table T001K
itab_t001 TYPE STANDARD TABLE OF type_t001, " Internal Table for T001
wa_t001 TYPE type_t001, " Workarea for Internal Table T001
itab_makt TYPE STANDARD TABLE OF type_makt, " Internal Table for LQUA
wa_makt TYPE type_makt, " Workarea for Internal Table LQUA
itab_ausp TYPE STANDARD TABLE OF type_ausp, " Internal Table for AUSP
wa_ausp TYPE type_ausp, " Workarea for Internal table AUSP
itab_inob TYPE STANDARD TABLE OF type_inob, " Internal Table for INOB
wa_inob TYPE type_inob. " Workarea for Internal Table INOB
&----
*& Variable declarations
&----
DATA: g_pos TYPE i, " Column position in Fieldcatalog
g_repid TYPE sy-repid, " Program Name
g_date(10) TYPE c, " Processing date of Report
g_time(10) TYPE c. " Processing time of Report
DATA: v_temp1(50) TYPE c, " Variable for INOB-OBJEK
v_bdatu-low(10) TYPE c, " Variable for Last Movement Date
v_bdatu-high(10) TYPE c, " Variable for Last Movement Date
v_date-low(5) TYPE c, " variable for No.of days since last goods receipt
v_date-high(5) TYPE c, " variable for No.of days since last goods receipt
v_datet TYPE sy-datum, " Variable for Goods Receipt Date
v_wdatu-low(10) TYPE c, " Variable for Last Movement Date
v_datelow TYPE sy-datum, " Variable for Number of Days Since Last Goods Receipt
v_datehigh TYPE sy-datum, " Variable for Number of Days Since Last Goods Receipt
v_atinn(20) TYPE c. " Variable for Batch Status Characteristic
Variables to calcualte No.of Days Since last goods receipt & since no movement
DATA: v_days1 TYPE vtbbewe-atage,
v_days2 TYPE vtbbewe-atage,
v_date_from1 TYPE vtbbewe-dbervon,
v_date_to1 TYPE vtbbewe-dberbis,
v_date_from2 TYPE vtbbewe-dbervon,
v_date_to2 TYPE vtbbewe-dberbis.
&----
*& ALV data declarations
&----
DATA : itab_fcat TYPE slis_t_fieldcat_alv, " ALV Fieldcatalog
itab_layout TYPE slis_layout_alv, " ALV Layout
itab_listheader TYPE slis_t_listheader, " ListHeader
itab_event TYPE slis_t_event, " ALV Events
itab_sort TYPE slis_t_sortinfo_alv , " ALV Sort
wa_fcat TYPE slis_fieldcat_alv , " Workarea for Fieldcatalog
wa_listheader TYPE slis_listheader, " Workarea for Listheader
wa_event TYPE slis_alv_event, " Workarea for ALV Events
wa_sort TYPE slis_sortinfo_alv, " Workarea for ALV Sort
alv_keyinfo TYPE slis_keyinfo_alv, " ALV Key Info
alv_variant TYPE disvariant, " ALV Variant
alv_layout TYPE slis_layout_alv, " ALV Layout
alv_repid TYPE sy-repid, " ALV Program Name
alv_print TYPE slis_print_alv, " ALV Printing Parameters
alv_detail_func(30), " ALV Detail Function
alv_default_variant TYPE disvariant-variant, " ALV Default Variant
alv_colourize_fields TYPE mmim_rep_print-color. " ALV Color Parameters
&----
*& Selection Screen Declarations
&----
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_lgnum FOR t300-lgnum OBLIGATORY, " Warehouse Number
s_werks FOR t001w-werks, " Plant
s_lgort FOR t001l-lgort, " Storage Location
s_lgtyp FOR t301-lgtyp. " Storage Type
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS:
s_matnr FOR mara-matnr, " Material number
s_mtart FOR t134-mtart, " Material Type
s_charg FOR mcha-charg, " Batch
s_zustd FOR mcha-zustd, " Batch Status
s_lgtkz FOR t305-lgtkz, " Storage Type Indicator for Stock Placement
s_lgtkz1 FOR t305-lgtkz, " Storage Type Indicator for Stock Removal
s_lgbkz FOR t304-lgbkz. " Storage section indicator
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
SELECT-OPTIONS:
s_bestq FOR lqua-bestq, " Stock Type
s_letyp FOR t307-letyp, " Storage Unit Type
s_bdatu FOR lqua-bdatu, " Last Movement Date
s_date FOR vtbbewe-atage. " Number of days since last goods receipt
s_wdatu FOR lqua-wdatu," OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.
SELECT-OPTIONS:
s_lgpla FOR lagp-lgpla, " Storage bin
s_skzue FOR lagp-skzue, " Put Away Block
s_skzua FOR lagp-skzua, " Stock Removal Block
s_spgru FOR t330-spgru. " Blocking Reason
SELECTION-SCREEN END OF BLOCK b4.
SELECTION-SCREEN BEGIN OF BLOCK b5 WITH FRAME TITLE text-041.
PARAMETERS:
p_layout TYPE disvariant-variant. " Layout
SELECTION-SCREEN END OF BLOCK b5.
&----
*& Include ZV30_WM_STOCK_OVERVIEW_DATA
&----
&----
*& Form data_retrieval
&----
text
----
--> p1 text
<-- p2 text
----
FORM data_retrieval .
IF s_date IS NOT INITIAL.
r_wdatu-sign = s_date-sign.
r_wdatu-option = s_date-option.
v_datelow = s_date-low.
v_datehigh = s_date-high.
r_wdatu-low = sy-datum - v_datehigh .
r_wdatu-high = sy-datum - v_datelow.
APPEND r_wdatu.
ENDIF.
select data from LQUA table
SELECT lgnum werks matnr lgtyp lgpla lgort lenum letyp charg
vfdat bestq verme meins bdatu wdatu skzue skzua spgru qplos
FROM lqua
INTO TABLE itab_lqua
WHERE lgnum IN s_lgnum AND
werks IN s_werks AND
lgort IN s_lgort AND
lgtyp IN s_lgtyp AND
matnr IN s_matnr AND
bestq IN s_bestq AND
charg IN s_charg AND
wdatu IN r_wdatu AND
bdatu IN s_bdatu AND
lgpla IN s_lgpla AND
letyp IN s_letyp.
IF sy-subrc EQ 0.
SORT itab_lqua BY lgnum matnr werks charg.
ENDIF.
*select data from MARA Table
SELECT matnr mtart FROM mara
INTO TABLE itab_mara
FOR ALL ENTRIES IN itab_lqua
WHERE mtart IN s_mtart
AND matnr = itab_lqua-matnr.
IF sy-subrc EQ 0.
SORT itab_mara BY matnr.
ENDIF.
select data from MCHA table
SELECT matnr werks charg zustd hsdat FROM mcha
INTO TABLE itab_mcha
FOR ALL ENTRIES IN itab_lqua
WHERE zustd IN s_zustd
AND matnr EQ itab_lqua-matnr AND
werks EQ itab_lqua-werks AND
charg EQ itab_lqua-charg.
IF sy-subrc EQ 0.
SORT itab_mcha BY matnr werks charg.
ENDIF.
select data from MLGN table
SELECT matnr lgnum lgbkz ltkze ltkza FROM mlgn
INTO TABLE itab_mlgn
FOR ALL ENTRIES IN itab_lqua
WHERE ltkze IN s_lgtkz AND
ltkza IN s_lgtkz1 AND
lgbkz IN s_lgbkz AND
lgnum IN s_lgnum AND
matnr EQ itab_lqua-matnr.
IF sy-subrc EQ 0.
SORT itab_mlgn BY matnr.
ENDIF.
select data from LAGP table
SELECT lgnum lgtyp lgpla skzua skzue spgru FROM lagp
INTO TABLE itab_lagp
FOR ALL ENTRIES IN itab_lqua
WHERE skzua IN s_skzua AND
skzue IN s_skzue AND
spgru IN s_spgru AND
lgnum = itab_lqua-lgnum AND
lgtyp = itab_lqua-lgtyp AND
lgpla = itab_lqua-lgpla.
IF sy-subrc EQ 0.
SORT itab_lagp BY lgnum lgtyp lgpla.
ENDIF.
select data from MBEW table
SELECT matnr bwkey stprs FROM mbew
INTO TABLE itab_mbew
FOR ALL ENTRIES IN itab_lqua
WHERE matnr = itab_lqua-matnr
AND bwkey = itab_lqua-werks.
IF sy-subrc EQ 0.
SORT itab_mbew BY matnr bwkey.
ENDIF.
select data from T001K table
SELECT bwkey bukrs FROM t001k
INTO TABLE itab_t001k
FOR ALL ENTRIES IN itab_lqua
WHERE bwkey = itab_lqua-werks.
IF sy-subrc EQ 0.
SORT itab_t001k BY bwkey.
ENDIF.
select data from T001 table
SELECT bukrs waers FROM t001
INTO TABLE itab_t001
FOR ALL ENTRIES IN itab_t001k
WHERE bukrs = itab_t001k-bukrs.
IF sy-subrc EQ 0.
SORT itab_t001 BY bukrs.
ENDIF.
select data from MAKT table
SELECT matnr spras maktx FROM makt
INTO TABLE itab_makt
FOR ALL ENTRIES IN itab_lqua
WHERE matnr = itab_lqua-matnr
AND spras = 'EN'.
IF sy-subrc EQ 0.
SORT itab_makt BY matnr.
ENDIF.
select data from INOB table
SELECT cuobj objek FROM inob
INTO TABLE itab_inob
WHERE cuobj IN r_cuobj.
IF sy-subrc EQ 0.
SORT itab_inob BY objek.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
input = 'KERNEL_STATUS'
IMPORTING
output = v_atinn.
select data from AUSP table
SELECT objek atinn klart atwrt FROM ausp
INTO TABLE itab_ausp
WHERE atinn EQ v_atinn AND
klart EQ '022' .
IF sy-subrc EQ 0.
SORT itab_ausp BY objek.
ENDIF.
ENDFORM. " data_retrieval
&----
*& Form f_layout_display
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_layout_display .
PERFORM f_catalog USING :
'LGNUM' 'TYPE_STOCK' text-005,
'WERKS' 'TYPE_STOCK' text-006,
'LGORT' 'TYPE_STOCK' text-007,
'LGTYP' 'TYPE_STOCK' text-008,
'LGPLA' 'TYPE_STOCK' text-009,
'MATNR' 'TYPE_STOCK' text-010,
'MAKTX' 'TYPE_STOCK' text-011,
'MTART' 'TYPE_STOCK' text-012,
'LTKZE' 'TYPE_STOCK' text-013,
'LTKZA' 'TYPE_STOCK' text-014,
'LGBKZ' 'TYPE_STOCK' text-015,
'CHARG' 'TYPE_STOCK' text-016,
'ZUSTD' 'TYPE_STOCK' text-017,
'ATWRT' 'TYPE_STOCK' text-018,
'HSDAT' 'TYPE_STOCK' text-019,
'VFDAT' 'TYPE_STOCK' text-020,
'BESTQ' 'TYPE_STOCK' text-021,
'BDATU' 'TYPE_STOCK' text-022,
'DATE1' 'TYPE_STOCK' text-023,
'WDATU' 'TYPE_STOCK' text-024,
'DATE2' 'TYPE_STOCK' text-025,
'LETYP' 'TYPE_STOCK' text-026,
'LENUM' 'TYPE_STOCK' text-027,
'SKZUE' 'TYPE_STOCK' text-028,
'SKZUA' 'TYPE_STOCK' text-029,
'SPGRU' 'TYPE_STOCK' text-030,
'SKZUE1' 'TYPE_STOCK' text-031,
'SKZUA1' 'TYPE_STOCK' text-032,
'SPGRU1' 'TYPE_STOCK' text-033,
'QPLOS' 'TYPE_STOCK' text-034,
'VERME' 'TYPE_STOCK' text-035,
'MEINS' 'TYPE_STOCK' text-036,
'QUAN' 'TYPE_STOCK' text-037,
'WAERS' 'TYPE_STOCK' text-038.
ENDFORM. " f_layout_display
&----
*& Form alv_event
&----
text
----
--> p1 text
<-- p2 text
----
FORM alv_event .
Get ALV event
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = itab_event.
READ TABLE itab_event WITH KEY name = slis_ev_top_of_page INTO wa_event.
IF sy-subrc = 0.
MOVE 'TOP_OF_PAGE' TO wa_event-form.
APPEND wa_event TO itab_event.
ENDIF.
CLEAR wa_event.
ENDFORM. " alv_event
&----
*& Form fill_listheader
&----
text
----
--> p1 text
<-- p2 text
----
FORM fill_listheader .
CONCATENATE g_date6(2) '.' g_date4(2) '.' g_date+0(4) INTO g_date.
ALV Header Information
wa_listheader-typ = 'H'.
wa_listheader-info = text-039.
CONCATENATE text-039 ':' g_date INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
CLEAR wa_listheader.
wa_listheader-typ = 'H'.
wa_listheader-info = text-040.
CONCATENATE text-040 ':' g_time INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
CLEAR wa_listheader.
ALV Selection Criteria
IF s_lgnum IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-060 .
CONCATENATE text-060 ':' s_lgnum-low s_lgnum-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_werks IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-042.
CONCATENATE text-042 ':' s_werks-low s_werks-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_lgort IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-043.
CONCATENATE text-043 ':' s_lgort-low s_lgort-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_lgtyp IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-044.
CONCATENATE text-044 ':' s_lgtyp-low s_lgtyp-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_matnr IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-045.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = s_matnr-low
IMPORTING
output = s_matnr-low.
CONCATENATE text-045 ':' s_matnr-low s_matnr-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_mtart IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-046.
CONCATENATE text-046 ':' s_mtart-low s_mtart-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_charg IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-047.
CONCATENATE text-047 ':' s_charg-low s_charg-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_zustd[] IS NOT INITIAL AND s_zustd-low EQ ' '.
wa_listheader-typ = 'S'.
wa_listheader-info = text-048.
CONCATENATE text-048 ':' s_zustd-low s_zustd-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_lgtkz IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-049.
CONCATENATE text-049 ':' s_lgtkz-low s_lgtkz-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_lgtkz1 IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-050.
CONCATENATE text-050 ':' s_lgtkz1-low s_lgtkz1-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_lgbkz IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-051.
CONCATENATE text-051 ':' s_lgbkz-low s_lgbkz-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_bestq IS NOT INITIAL AND s_bestq EQ ' '.
wa_listheader-typ = 'S'.
wa_listheader-info = text-052.
CONCATENATE text-052 ':' s_bestq-low s_bestq-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_letyp IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-053.
CONCATENATE text-053 ':' s_letyp-low s_letyp-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
CONCATENATE s_bdatu-low6(2) '.' s_bdatu-low4(2) '.' s_bdatu-low+0(4) INTO v_bdatu-low.
CONCATENATE s_bdatu-high6(2) '.' s_bdatu-high4(2) '.' s_bdatu-high+0(4) INTO v_bdatu-high.
IF s_bdatu IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-054.
CONCATENATE text-054 ':' v_bdatu-low v_bdatu-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
v_date-low = s_date-low.
v_date-high = s_date-high.
IF s_date IS NOT INITIAL .
wa_listheader-typ = 'S'.
wa_listheader-info = text-055.
CONCATENATE text-055 ':' v_date-low v_date-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_lgpla IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-056.
CONCATENATE text-056 ':' s_lgpla-low s_lgpla-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_skzue IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-057.
CONCATENATE text-057 ':' s_skzue-low s_skzue-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_skzua IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-058.
CONCATENATE text-058 ':' s_skzua-low s_skzua-high ';' INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
IF s_spgru IS NOT INITIAL.
wa_listheader-typ = 'S'.
wa_listheader-info = text-059.
CONCATENATE text-059 ':' s_spgru-low s_spgru-high INTO wa_listheader-info SEPARATED BY space.
APPEND wa_listheader TO itab_listheader.
ENDIF.
CLEAR wa_listheader.
ENDFORM. " fill_listheader
&----
*& Form alv_display
&----
text
----
--> p1 text
<-- p2 text
----
FORM alv_display .
g_repid = sy-repid.
itab_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
is_layout = itab_layout
it_fieldcat = itab_fcat[]
it_sort = itab_sort
i_save = 'X'
is_variant = alv_variant
it_events = itab_event
TABLES
t_outtab = itab_stock
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE e017.
ENDIF.
REFRESH itab_stock.
ENDFORM. " alv_display
&----
*& Form f_initialize
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_initialize .
REFRESH: itab_lqua,itab_mara,itab_mcha,itab_mlgn,itab_lagp,itab_mbew,itab_t001k,itab_t001,itab_makt,itab_inob,itab_ausp,itab_stock.
g_date = sy-datum.
g_time = sy-uzeit.
ENDFORM. " f_initialize
&----
*& Form build_table
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_table .
LOOP AT itab_lqua INTO wa_lqua.
MOVE:
wa_lqua-lgnum TO wa_stock-lgnum,
wa_lqua-werks TO wa_stock-werks,
wa_lqua-matnr TO wa_stock-matnr,
wa_lqua-lgtyp TO wa_stock-lgtyp,
wa_lqua-lgpla TO wa_stock-lgpla,
wa_lqua-lgort TO wa_stock-lgort,
wa_lqua-lenum TO wa_stock-lenum,
wa_lqua-letyp TO wa_stock-letyp,
wa_lqua-charg TO wa_stock-charg,
wa_lqua-vfdat TO wa_stock-vfdat,
wa_lqua-bestq TO wa_stock-bestq,
wa_lqua-verme TO wa_stock-verme,
wa_lqua-meins TO wa_stock-meins,
wa_lqua-wdatu TO wa_stock-wdatu,
wa_lqua-bdatu TO wa_stock-bdatu,
wa_lqua-skzue TO wa_stock-skzue,
wa_lqua-skzua TO wa_stock-skzua,
wa_lqua-spgru TO wa_stock-spgru,
wa_lqua-qplos TO wa_stock-qplos.
v_date_from1 = wa_stock-wdatu.
v_date_to1 = sy-datum.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
i_date_from = v_date_from1
i_date_to = v_date_to1
IMPORTING
e_days = v_days1.
MOVE v_days1 TO wa_stock-date1.
v_date_from2 = wa_stock-bdatu.
v_date_to2 = sy-datum.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
i_date_from = v_date_from2
i_date_to = v_date_to2
IMPORTING
e_days = v_days2.
MOVE v_days2 TO wa_stock-date2.
READ TABLE itab_mbew INTO wa_mbew WITH KEY matnr = wa_stock-matnr
bwkey = wa_stock-werks BINARY SEARCH.
IF sy-subrc = 0.
wa_stock-quan = wa_stock-verme * wa_mbew-stprs.
ENDIF.
READ TABLE itab_t001k INTO wa_t001k WITH KEY bwkey = wa_lqua-werks BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE itab_t001 INTO wa_t001 WITH KEY bukrs = wa_t001k-bukrs BINARY SEARCH.
IF sy-subrc = 0.
MOVE: wa_t001-waers TO wa_stock-waers.
ENDIF.
ENDIF.
READ TABLE itab_makt INTO wa_makt WITH KEY matnr = wa_stock-matnr BINARY SEARCH.
IF sy-subrc = 0.
MOVE : wa_makt-maktx TO wa_stock-maktx.
ENDIF.
READ TABLE itab_mara INTO wa_mara WITH KEY matnr = wa_stock-matnr BINARY SEARCH.
IF sy-subrc = 0.
MOVE : wa_mara-mtart TO wa_stock-mtart.
ENDIF.
READ TABLE itab_mlgn INTO wa_mlgn WITH KEY matnr = wa_stock-matnr BINARY SEARCH.
IF sy-subrc = 0.
MOVE: wa_mlgn-ltkze TO wa_stock-ltkze,
wa_mlgn-ltkza TO wa_stock-ltkza,
wa_mlgn-lgbkz TO wa_stock-lgbkz.
ENDIF.
READ TABLE itab_lagp INTO wa_lagp WITH KEY lgnum = wa_stock-lgnum
lgtyp = wa_stock-lgtyp
lgpla = wa_stock-lgpla BINARY SEARCH.
IF sy-subrc = 0.
MOVE: wa_lagp-skzue TO wa_stock-skzue1,
wa_lagp-skzua TO wa_stock-skzua1,
wa_lagp-spgru TO wa_stock-spgru1.
ENDIF.
READ TABLE itab_mcha INTO wa_mcha WITH KEY matnr = wa_stock-matnr
werks = wa_stock-werks
charg = wa_stock-charg
BINARY SEARCH.
IF sy-subrc = 0.
CONCATENATE wa_mcha-matnr wa_mcha-werks wa_mcha-charg INTO v_temp1.
MOVE: wa_mcha-zustd TO wa_stock-zustd,
wa_mcha-hsdat TO wa_stock-hsdat.
READ TABLE itab_inob INTO wa_inob WITH KEY objek = v_temp1 BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE itab_ausp INTO wa_ausp WITH KEY objek = wa_inob-cuobj
atinn = v_atinn
klart = '022' BINARY SEARCH .
IF sy-subrc = 0.
MOVE: wa_ausp-atwrt TO wa_stock-atwrt.
ENDIF.
ENDIF."INOB
APPEND wa_stock TO itab_stock.
ENDIF."MCHA
ENDIF."LAGP
ENDIF."MLGN
ENDIF. "MARA
CLEAR wa_stock.
ENDLOOP.
ENDFORM. " build_table
&----
*& Form top_of_page
&----
text
----
--> p1 text
<-- p2 text
----
FORM top_of_page .
ALV commetry write function
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = itab_listheader.
ENDFORM. " top_of_page
*&----
**& Form f_catalog
*&----
text
*----
-->P_0403 text
-->P_0404 text
-->P_TEXT_005 text
*----
FORM f_catalog USING p_field TYPE any
p_table TYPE any
p_text TYPE any.
ADD 1 TO g_pos.
wa_fcat-row_pos = 1.
wa_fcat-col_pos = g_pos.
wa_fcat-fieldname = p_field.
wa_fcat-tabname = p_table.
wa_fcat-seltext_l = p_text.
APPEND wa_fcat TO itab_fcat.
CLEAR wa_fcat.
ENDFORM. " f_catalog
&----
*& Form sort_alv
&----
text
----
--> p1 text
<-- p2 text
----
FORM sort_alv .
PERFORM f_sort USING:
'1' 'LGNUM' ,
'2' 'WERKS' ,
'3' 'LGORT' ,
'4' 'LGTYP' ,
'5' 'LGPLA' ,
'6' 'MATNR' ,
'7' 'MAKTX' ,
'8' 'MTART' ,
'9' 'LTKZE' ,
'10' 'LTKZA' ,
'11' 'LGBKZ' ,
'12' 'CHARG' ,
'13' 'ZUSTD' ,
'14' 'ATWRT' ,
'15' 'HSADT' ,
'16' 'VFDAT' ,
'17' 'BESTQ' ,
'18' 'BDATU' ,
'19' 'DATE1' ,
'20' 'WDATU' ,
'21' 'DATE2' ,
'22' 'LETYP' ,
'23' 'LENUM' ,
'24' 'SKZUE' ,
'25' 'SKZUA' ,
'26' 'SPGRU' ,
'27' 'SKZUE1' ,
'28' 'SKZUA1' ,
'29' 'SPGRU1' ,
'30' 'QPLOS' ,
'31' 'VERME' ,
'32' 'MEINS' ,
'33' 'QUAN' ,
'34' 'WAERS' .
ENDFORM. " sort_alv
&----
*& Form f_sort
&----
text
----
-->P_1679 text
-->P_1680 text
----
FORM f_sort USING p_spos TYPE any
p_field TYPE any.
CLEAR wa_sort.
wa_sort-spos = p_spos.
wa_sort-fieldname = p_field.
APPEND wa_sort TO itab_sort.
ENDFORM. " f_sort
&----
*& Form search_help_werks
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_werks .
DATA: BEGIN OF itab_werks OCCURS 0,
werks TYPE t320-werks, " Plant
lgnum TYPE t320-lgnum, " Warehouse Number
END OF itab_werks.
SELECT awerks blgnum
INTO TABLE itab_werks
FROM t320 AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'WERKS'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_WERKS'
value_org = 'S'
TABLES
value_tab = itab_werks
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_werks INDEX 1. "transporting werks.
IF sy-subrc EQ 0.
MOVE itab_werks-werks TO s_werks-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_werks
&----
*& Form search_help_lgort
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_lgort .
DATA: BEGIN OF itab_lgort OCCURS 0,
lgort TYPE t320-lgort, " Storage Location
lgnum TYPE t320-lgnum, " Warehouse Number
END OF itab_lgort.
SELECT algort blgnum
INTO TABLE itab_lgort
FROM t320 AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LGORT'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_LGORT'
value_org = 'S'
TABLES
value_tab = itab_lgort
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_lgort INDEX 1. "transporting LGORT.
IF sy-subrc EQ 0.
MOVE itab_lgort-lgort TO s_lgort-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_lgort
&----
*& Form search_help_lgtyp
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_lgtyp .
DATA: BEGIN OF itab_lgtyp OCCURS 0,
lgtyp TYPE t301-lgtyp, " Storage Type
lgnum TYPE t301-lgnum, " Warehouse Number
END OF itab_lgtyp.
SELECT algtyp blgnum
INTO TABLE itab_lgtyp
FROM t301 AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LGTYP'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_LGTYP'
value_org = 'S'
TABLES
value_tab = itab_lgtyp
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_lgtyp INDEX 1. "transporting LGTYP.
IF sy-subrc EQ 0.
MOVE itab_lgtyp-lgtyp TO s_lgtyp-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_lgtyp
&----
*& Form search_help_lgtkz
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_lgtkz .
DATA: BEGIN OF itab_lgtkz OCCURS 0,
lgtkz TYPE t305-lgtkz, " Storage type indicator for Stock Placement
lgnum TYPE t305-lgnum, " Warehouse Number
END OF itab_lgtkz.
SELECT algtkz blgnum
INTO TABLE itab_lgtkz
FROM t305 AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LGTKZ'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_LGTKZ'
value_org = 'S'
TABLES
value_tab = itab_lgtkz
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_lgtkz INDEX 1. "transporting LGTKZ.
IF sy-subrc EQ 0.
MOVE itab_lgtkz-lgtkz TO s_lgtkz-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_lgtkz
&----
*& Form search_help_lgbkz
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_lgbkz .
DATA: BEGIN OF itab_lgbkz OCCURS 0,
lgbkz TYPE t304-lgbkz, " Storage section Indicator
lgnum TYPE t304-lgnum, " Warehouse Number
END OF itab_lgbkz.
SELECT algbkz blgnum
INTO TABLE itab_lgbkz
FROM t304 AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LGBKZ'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_LGBKZ'
value_org = 'S'
TABLES
value_tab = itab_lgbkz
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_lgbkz INDEX 1. "transporting LGBKZ.
IF sy-subrc EQ 0.
MOVE itab_lgbkz-lgbkz TO s_lgbkz-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_lgbkz
&----
*& Form search_help_letyp
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_letyp .
DATA: BEGIN OF itab_letyp OCCURS 0,
letyp TYPE t307-letyp, " Storage Unit Type
lgnum TYPE t307-lgnum, " Warehouse Number
END OF itab_letyp.
SELECT aletyp blgnum
INTO TABLE itab_letyp
FROM t307 AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LETYP'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_LETYP'
value_org = 'S'
TABLES
value_tab = itab_letyp
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_letyp INDEX 1. "transporting LETYP.
IF sy-subrc EQ 0.
MOVE itab_letyp-letyp TO s_letyp-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_letyp
&----
*& Form search_help_spgru
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_spgru .
DATA: BEGIN OF itab_spgru OCCURS 0,
spgru TYPE t330-spgru, " Blocking Reason
lgnum TYPE t330-lgnum, " Warehouse Number
END OF itab_spgru.
SELECT aspgru blgnum
INTO TABLE itab_spgru
FROM t330 AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'SPGRU'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_SPGRU'
value_org = 'S'
TABLES
value_tab = itab_spgru
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_spgru INDEX 1. "transporting SPGRU.
IF sy-subrc EQ 0.
MOVE itab_spgru-spgru TO s_spgru-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_spgru
&----
*& Form search_help_lgpla
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_lgpla .
DATA: BEGIN OF itab_lgpla OCCURS 0,
lgpla TYPE lagp-lgpla, " Storage Bin
lgtyp TYPE lagp-lgtyp, " Storage Type
lgnum TYPE lagp-lgnum, " Warehouse Number
END OF itab_lgpla.
SELECT algpla algtyp b~lgnum
INTO TABLE itab_lgpla
FROM lagp AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum AND
a~lgtyp IN s_lgtyp.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LGPLA'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_LGPLA'
value_org = 'S'
TABLES
value_tab = itab_lgpla
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_lgpla INDEX 1. "transporting SPGRU.
IF sy-subrc EQ 0.
MOVE itab_lgpla-lgpla TO s_lgpla-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_lgpla
&----
*& Form search_help_charg
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_charg .
DATA: BEGIN OF itab_charg OCCURS 0,
charg TYPE mchb-charg, " Batch
werks TYPE mchb-werks, " Plant
lgort TYPE mchb-lgort, " Storage Location
matnr TYPE mchb-matnr, " Material Number
END OF itab_charg.
SELECT acharg awerks algort amatnr
INTO TABLE itab_charg
FROM mchb AS a INNER JOIN t320 AS b
ON awerks EQ bwerks AND
algort EQ blgort
WHERE a~matnr IN s_matnr AND
b~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CHARG'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_CHARG'
value_org = 'S'
TABLES
value_tab = itab_charg
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_charg INDEX 1. "transporting CHARG.
IF sy-subrc EQ 0.
MOVE itab_charg-charg TO s_charg-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_charg
&----
*& Form search_help_lgtkz1
&----
text
----
--> p1 text
<-- p2 text
----
FORM search_help_lgtkz1 .
DATA: BEGIN OF itab_lgtkz OCCURS 0,
lgtkz TYPE t305-lgtkz, " Storage type indicator for Stock Removal
lgnum TYPE t305-lgnum, " Warehouse Number
END OF itab_lgtkz.
SELECT algtkz blgnum
INTO TABLE itab_lgtkz
FROM t305 AS a INNER JOIN t300 AS b
ON algnum EQ blgnum
WHERE a~lgnum IN s_lgnum.
IF sy-subrc NE 0.
MESSAGE s051(zv30_sd) .
ENDIF.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'LGTKZ'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'S_LGTKZ'
value_org = 'S'
TABLES
value_tab = itab_lgtkz
return_tab = t_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0.
READ TABLE itab_lgtkz INDEX 1. "transporting LGTKZ.
IF sy-subrc EQ 0.
MOVE itab_lgtkz-lgtkz TO s_lgtkz1-low.
ENDIF.
ENDIF.
ENDFORM. " search_help_lgtkz1
ALV Layouts
&----
*& Form alv_f4
&----
text
----
--> p1 text
<-- p2 text
----
FORM alv_f4 .
alv_repid = sy-repid.
alv_variant-report = alv_repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = alv_variant
i_save = 'A'
IMPORTING
es_variant = alv_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
p_layout = alv_variant-variant.
ENDIF.
ENDFORM. " alv_f4
&----
*& Form alv_check
&----
text
----
FORM alv_check.
SET CURSOR FIELD 'P_LAYOUT'.
alv_variant-report = alv_repid.
alv_variant-variant = p_layout.
IF NOT p_layout IS INITIAL.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = alv_variant
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE e321(m7) WITH p_layout alv_repid.
ENDIF.
ELSE.
the user wants no initial display variant
IF NOT alv_default_variant IS INITIAL.
but the SAP-LIST-VIEWER will apply the existing
initial display variant / emerge warning 393 ?
CALL FUNCTION 'ME_CHECK_T160M'
EXPORTING
i_arbgb = 'M7'
i_msgnr = '393'
EXCEPTIONS
nothing = 0
OTHERS = 1.
IF sy-subrc <> 0.
list will be created using the initial layout &
MESSAGE w393(m7) WITH alv_default_variant.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "alv_check
Regards,
Sree