‎2013 Oct 18 4:24 AM
Hi Gurus / Expert,
I'm facing a trouble with my ABAP Report.
I made a report for Goods Issue.
My user want, that the material document with reverse not appear in my report.
So how must i write the IF statement in my report ?
Please help me with this problem.
‎2013 Oct 18 10:05 AM
Hi All,
i have do all your suggestion but it still failed,
when i tried to make the reverse is OK but the value is still looks like not reverse. Just need 1 more step from you all. ^_^
‎2013 Oct 18 4:30 AM
Hello Ri Zaldy.
If you don't want the reversal documents, remove it from the internal table.
Based on the movement type, filter the internal table data. (Eg: 102, 262 etc).
Regards.
‎2013 Oct 18 4:44 AM
Hi,
The movement type table is T156 and field XSTBW in this table stores whether a movement type is Reversal or not. So in your report you need to filter out those documents whose movement type says T156-XSTBW = 'X'
Say IT_MATERIAL_DOC is your internal table of Mat Doc you need to select the movement type data from table T156 into an internal table say IT_T156.
So your code will be like as below -
Loop on IT_MATERIAL_DOC
read table IT_T156 where BWART = IT_MATERIAL_DOC-BWART.
if sy-subrc = 0 and IT_T156-XSTBW = 'X'.
delete IT_MATERIAL_DOC.
endif.
Endloop.
‎2013 Oct 18 5:35 AM
Hi Sabya,
For the example,
i made a goods issue 5 Qty,
then i reverse it 3 Qty.
now i need the 2 Qty and i must show it, how can we do that ?
‎2013 Oct 18 5:49 AM
Hi K.Arun
Thank you for your reply,
i need the last quantity of the goods issue, for example :
1. Goods issue = 5 qty
2. Reverse = 4 qty
3. (the last quantity is 1) i need it to be posting in my report.
‎2013 Oct 18 5:28 AM
Hi,
If you are selecting it from MSEG,build a range of riversal movement types , and use in where condition .
‎2013 Oct 18 5:38 AM
Hi Ri Zaldy ,
Why you need to use if statement... Delete data from internal table which are having
Reversal movement type.
Try like this
MSEG Table
You need not required 102 means Reversal movement type.
Code :
TABLES : mseg.
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)
END OF ty_mseg,
BEGIN OF ty_t156,
bwart TYPE t156-bwart, " Movement Type (Inventory Management)
xstbw TYPE t156-xstbw, " Reversal movement type
END OF ty_t156.
DATA : it_mseg TYPE TABLE OF ty_mseg,
it_t156 TYPE TABLE OF ty_t156,
wa_mseg TYPE ty_mseg,
wa_t156 TYPE ty_t156.
SELECT-OPTIONS : s_mblnr FOR mseg-mblnr,
s_mjahr FOR mseg-mjahr.
START-OF-SELECTION.
SELECT mblnr
mjahr
zeile
bwart
FROM mseg INTO TABLE it_mseg
WHERE mblnr IN s_mblnr
AND mjahr IN s_mjahr.
IF it_mseg IS NOT INITIAL.
SELECT bwart
xstbw
FROM t156 INTO TABLE it_t156
FOR ALL ENTRIES IN it_mseg
WHERE bwart = it_mseg-bwart
and xstbw ne 'X'.
SORT it_mseg BY mblnr mjahr.
SORT it_t156 BY bwart.
LOOP AT it_mseg INTO wa_mseg.
READ TABLE it_t156 INTO wa_t156 WITH KEY bwart = wa_mseg-bwart BINARY SEARCH.
IF sy-subrc NE 0.
DELETE it_mseg.
ENDIF.
ENDLOOP.
ENDIF.
CLEAR wa_mseg.
LOOP AT it_mseg INTO wa_mseg.
WRITE : / wa_mseg-mblnr,
wa_mseg-mjahr,
wa_mseg-zeile,
wa_mseg-bwart.
CLEAR wa_mseg.
ENDLOOP.
Input
Output
I think this will solves your problem.....
‎2013 Oct 18 5:50 AM
Hi Ramesh,
Your code is true but if i do that it will make my last quantity become chaos..
I need the last quantity between goods issue and reverse for example :
i do a goods issue 5 quantity and reverse 3 quantity. Now i need the last quantity (2 quantity) do you know how to do that ?
‎2013 Oct 18 6:04 AM
Hi,
Can you show us the output? May be you can do it with the help of amount (other field if any). Like:
Qty Amt
5 10000
3 -5000
--------------------
2 5000
--------------------
You can use the Collect statement based on Amt field. It may work for you. Try and do let us know.
Regards
Purnand
‎2013 Oct 18 6:17 AM
Hello Ri Zaldy ,
Every MOVEMENT type has got its REVERSE also , this for Reversing the Goods Movement Done.
So ,
You need to do Calculation based on this ,
Say a Material Document ( 560000001 ) for a Material X is made with BWART 561 and a Reverse Material Document Document ( 560000002 ) for that Same Material is made with BWART 562 , then Remaining Qty 560000001-MENGE - 560000002-MENGE.
So you need to know all the Relevant Pairs of Movement Type along with its Reversal Types .
See the Below eg : code
IF WA_MSEG-BWART EQ '131'. " production
WA_FINAL-PRODMENGE = WA_FINAL-PRODMENGE + WA_MSEG-MENGE.
WA_FINAL-PRODWERT = WA_FINAL-PRODWERT + WA_MSEG-DMBTR.
MENGE_FLAG03 = MENGE_FLAG03 + WA_MSEG-MENGE.
ELSEIF WA_MSEG-BWART EQ '132'.
WA_FINAL-PRODMENGE = WA_FINAL-PRODMENGE - WA_MSEG-MENGE.
WA_FINAL-PRODWERT = WA_FINAL-PRODWERT - WA_MSEG-DMBTR.
MENGE_FLAG03 = MENGE_FLAG03 - WA_MSEG-MENGE.
ENDIF.
‎2013 Oct 18 6:35 AM
Hi Ri Zaldy,
Can you share your code for clear understanding of your requirement...
‎2013 Oct 18 7:33 AM
Hi Ramesh,
*&---------------------------------------------------------------------*
*& Report ZTEST3
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZMATCONS.
* Global ALV Data Declarations
type-pools: slis.
* Internal Tables
data: begin of itab occurs 0,
matnr type mseg-matnr,
maktx type makt-maktx,
bwart TYPE mseg-bwart,
lgort TYPE mseg-lgort,
werks TYPE mseg-werks,
bwtar TYPE mseg-bwtar,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
kostl TYPE mseg-kostl,
budat TYPE mkpf-budat,
mblnr TYPE mkpf-mblnr,
ltext TYPE cskt-ltext,
end of itab.
DATA: begin OF wa_itab,
matnr TYPE mseg-matnr,
maktx TYPE makt-maktx,
bwart TYPE mseg-bwart,
lgort TYPE mseg-lgort,
werks TYPE mseg-werks,
bwtar TYPE mseg-bwtar,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
kostl TYPE mseg-kostl,
budat TYPE mkpf-budat,
mblnr TYPE mkpf-mblnr,
ltext TYPE cskt-ltext,
END OF wa_itab.
DATA: it_mseg TYPE TABLE OF mseg,
wa_mseg TYPE STANDARD TABLE OF mseg WITH HEADER LINE,
it_mkpf TYPE TABLE OF mkpf,
wa_mkpf TYPE STANDARD TABLE OF mkpf WITH HEADER LINE,
it_cskt TYPE TABLE OF cskt,
wa_cskt TYPE STANDARD TABLE OF cskt WITH HEADER LINE.
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR wa_mseg-matnr.
SELECT-OPTIONS : s_bwart FOR wa_mseg-bwart.
SELECT-OPTIONS : s_budat FOR wa_mkpf-budat.
SELECTION-SCREEN END OF BLOCK b1.
start-of-selection.
perform get_data.
perform call_alv.
*********************************************************************
* Form GET_DATA
*********************************************************************
form get_data.
SELECT mseg~matnr makt~maktx mkpf~budat mkpf~mblnr cskt~ltext
mseg~bwart
mseg~lgort
mseg~werks
mseg~bwtar
mseg~menge
mseg~meins
mseg~kostl
into corresponding fields of table itab
from mseg
inner join makt
on mseg~matnr = makt~matnr
inner join mkpf
on mseg~mblnr = mkpf~mblnr
inner join cskt
on mseg~kostl = cskt~kostl
where mseg~matnr IN s_matnr AND mseg~bwart IN s_bwart AND mkpf~budat IN s_budat.
loop at itab into wa_itab.
if wa_itab-bwart = '201' and wa_itab-menge > 0.
wa_itab-menge = wa_itab-menge * -1.
modify itab from wa_itab.
endif.
clear wa_itab.
endloop.
endform.
************************************************************************
* CALL_ALV
************************************************************************
form call_alv.
data: ifc type slis_t_fieldcat_alv.
data: xfc type slis_fieldcat_alv.
data: repid type sy-repid.
repid = sy-repid.
clear xfc. refresh ifc.
clear xfc.
xfc-reptext_ddic = 'Material Number'.
xfc-fieldname = 'MATNR'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '10'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Material Description'.
xfc-fieldname = 'MAKTX'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '40'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Mov. Type'.
xfc-fieldname = 'BWART'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '10'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'S. Loc'.
xfc-fieldname = 'LGORT'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '8'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Plant'.
xfc-fieldname = 'WERKS'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '8'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Val. Type'.
xfc-fieldname = 'BWTAR'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '12'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Qty'.
xfc-fieldname = 'MENGE'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '8'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'UoM'.
xfc-fieldname = 'MEINS'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '8'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Cost Center'.
xfc-fieldname = 'KOSTL'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '12'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Pos. Date'.
xfc-fieldname = 'BUDAT'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '10'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Cost Center Description'.
xfc-fieldname = 'LTEXT'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '20'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Doc. Numb'.
xfc-fieldname = 'MBLNR'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '10'.
append xfc to ifc.
* Call ABAP List Viewer (ALV)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repid
i_callback_user_command = 'HANDLE_USER_COMMAND'
it_fieldcat = ifc
TABLES
t_outtab = itab.
endform.
***********************************************************************
* FORM handle_User_Command *
***********************************************************************
form handle_user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'.
case rs_selfield-FIELDNAME.
when 'MATNR'.
set parameter id 'MAT' field rs_selfield-value.
call transaction 'MD04' and skip first screen.
endcase.
endcase.
endform.
‎2013 Oct 18 7:51 AM
SELECT mseg~matnr makt~maktx mkpf~budat mkpf~mblnr cskt~ltext
mseg~bwart
mseg~lgort
mseg~werks
mseg~bwtar
mseg~menge
mseg~meins
mseg~kostl
mseg~SMBLN
mseg-smblp
mseg-zeile
into corresponding fields of table itab
from mseg
inner join makt
on mseg~matnr = makt~matnr
inner join mkpf
on mseg~mblnr = mkpf~mblnr
inner join cskt
on mseg~kostl = cskt~kostl
where mseg~matnr IN s_matnr AND mseg~bwart IN s_bwart AND mkpf~budat IN s_budat.
data : it_tab1 like itab,
wa_itab1 like wa_itab.
data : index TYPE sy-tabix.
data : index1 TYPE sy-tabix.
it_tab1[] = itab[].
loop at itab into wa_itab.
index = sy-tabix.
read table it_tab1 into wa_itab1 with key smbln = wa_itab-mblnr smblp = wa_itab-zeile.
index1 = sy-tabix.
if sy-subrc eq 0.
wa_itab-flag = 'X'.
wa_itab1-flag = 'X'.
MODIFY itab FROM wa_itab INDEX index TRANSPORTING flag.
MODIFY it_tab1 FROM wa_itab1 INDEX index1 TRANSPORTING flag.
ENDIF.
ENDLOOP.
delete itab where flag eq 'X'.
delete it_tab1 where flag eq 'X'.
loop at itab into wa_itab.
index = sy-tabix.
read table it_tab1 into wa_itab1 with key mblnr = wa_itab-mblnr zeile = wa_itab-zeile.
index1 = sy-tabix.
if sy-subrc eq 0.
wa_itab-flag = 'X'.
wa_itab1-flag = 'X'.
MODIFY itab FROM wa_itab INDEX index TRANSPORTING flag.
MODIFY it_tab1 FROM wa_itab1 INDEX index1 TRANSPORTING flag.
ENDIF.
ENDLOOP.
delete it_itab where flag ne 'X'.
delete it_itab1 where flag ne 'X'.
Make changes as bold letters.
‎2013 Oct 18 8:19 AM
Hi Purnand,
yeah you are right, it almost like that but w/o amount. can you do that ?
‎2013 Oct 18 8:26 AM
‎2013 Oct 18 8:33 AM
No No ,
That's a particular case.
Each movement type has their OWN Purpose .
Say for Eg. 561 for Initial Upload ( 562 for reversing any Initial Upload )
similarly 131 for Production ( 132 for Reversing Production )
and the list goes on ...
Better Ask your Functional Consultant ( MM ) for further clarification on Movement types with their individual Reversal Movement types.
‎2013 Oct 18 8:46 AM
Hi Sijin,
yeah i was asked my MM consultant and they know about that. And then what is the function of
WA_FINAL-PRODWERT = WA_FINAL-PRODWERT + WA_MSEG-DMBTR.
MENGE_FLAG03 = MENGE_FLAG03 + WA_MSEG-MENGE.
ELSEIF WA_MSEG-BWART EQ '132'.
WA_FINAL-PRODMENGE = WA_FINAL-PRODMENGE - WA_MSEG-MENGE.
WA_FINAL-PRODWERT = WA_FINAL-PRODWERT - WA_MSEG-DMBTR.
MENGE_FLAG03 = MENGE_FLAG03 - WA_MSEG-MENGE.
ENDIF.
Please help me Sijin
‎2013 Oct 18 9:28 AM
Hi Ramesh,
if we do this, it will make the goods issue value not reverse. for example
goods issue 5
( we are not appear the reverse movement type)
in my report it will still 5
‎2013 Oct 18 10:05 AM
IF WA_MSEG-BWART EQ '131'. " production
WA_FINAL-PRODMENGE = WA_FINAL-PRODMENGE + WA_MSEG-MENGE.
WA_FINAL-PRODWERT = WA_FINAL-PRODWERT + WA_MSEG-DMBTR.
MENGE_FLAG03 = MENGE_FLAG03 + WA_MSEG-MENGE.
ELSEIF WA_MSEG-BWART EQ '132'.
WA_FINAL-PRODMENGE = WA_FINAL-PRODMENGE - WA_MSEG-MENGE.
WA_FINAL-PRODWERT = WA_FINAL-PRODWERT - WA_MSEG-DMBTR.
MENGE_FLAG03 = MENGE_FLAG03 - WA_MSEG-MENGE.
ENDIF.
This is a piece of Code from a ZREPORT present in my system , to clarify you with the Logic.
In the above report a Set of Material Documents is fetched based on Selections Provided and later they are segregated for Each Material.
Say a Material has following MATERIAL DOCUMENTS :
MBLNR MATNR BWART MENGE UOM
500001 XYZ 131 30 KG
500002 XYZ 131 40 KG
500003 XYZ 131 50 KG
500004 XYZ 132 50 KG
Now according the Code pasted you can see,
If BWART = 131 ,
Then , field WA_FINAL-PRODMENGE will be added with Corresponding MENGE
else if BWART = 132 ( reverse of 131 )
Then , field WA_FINAL-PRODMENGE will be subtracted with Corresponding MENGE.
So in the End after whole processing you will get Quantity for Material XYZ as
70 Kgs ( 30 + 40 + 50 - 50 )
So a similar type Logic need to written for your requirement .
‎2013 Oct 18 6:55 AM
Hello Zaldy,
i was facing the same problem when develop material purchase history report then i fought should solutions, just follow below code.
data : it_mseg1 like it_mseg.
data : wa_mseg1 like wa_mseg.
data : index TYPE sy-tabix.
data : index1 TYPE sy-tabix.
it_mseg1[] = it_mseg[].
loop at it_mseg into wa_mseg.
index = sy-tabix.
read table it_mseg1 into wa_mseg1 with key smbln = wa_mseg-mblnr smblp = wa_mseg-zeile.
index1 = sy-tabix.
if sy-subrc eq 0.
wa_mseg-flag = 'X'.
wa_mseg1-flag = 'X'.
MODIFY it_mseg FROM wa_mseg INDEX index TRANSPORTING flag.
MODIFY it_mseg1 FROM wa_mseg1 INDEX index1 TRANSPORTING flag.
ENDIF.
ENDLOOP.
delete it_mseg where flag eq 'X'.
delete it_mseg1 where flag eq 'X'.
loop at it_mseg into wa_mseg.
index = sy-tabix.
read table it_mseg1 into wa_mseg1 with key mblnr = wa_mseg-mblnr zeile = wa_mseg-zeile.
index1 = sy-tabix.
if sy-subrc eq 0.
wa_mseg-flag = 'X'.
wa_mseg1-flag = 'X'.
MODIFY it_mseg FROM wa_mseg INDEX index TRANSPORTING flag.
MODIFY it_mseg1 FROM wa_mseg1 INDEX index1 TRANSPORTING flag.
ENDIF.
ENDLOOP.
delete it_mseg where flag ne 'X'.
delete it_mseg1 where flag ne 'X'.
‎2013 Oct 18 8:32 AM
Hi im sorry in my code there is
loop at itab into wa_itab.
if wa_itab-bwart = '201' and wa_itab-menge > 0.
wa_itab-menge = wa_itab-menge * -1.
modify itab from wa_itab.
endif.
clear wa_itab.
endloop.
the right one is not 201 but 202
‎2013 Oct 18 10:05 AM
Hi All,
i have do all your suggestion but it still failed,
when i tried to make the reverse is OK but the value is still looks like not reverse. Just need 1 more step from you all. ^_^
‎2013 Oct 18 10:42 AM
Hi Ri Zaldy
* global alv data declarations
TYPE-POOLS: slis.
* Internal Tables
DATA: BEGIN OF itab OCCURS 0,
matnr TYPE mseg-matnr,
maktx TYPE makt-maktx,
bwart TYPE mseg-bwart,
lgort TYPE mseg-lgort,
werks TYPE mseg-werks,
bwtar TYPE mseg-bwtar,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
kostl TYPE mseg-kostl,
budat TYPE mkpf-budat,
mblnr TYPE mkpf-mblnr,
ltext TYPE cskt-ltext,
END OF itab.
DATA: BEGIN OF wa_itab,
matnr TYPE mseg-matnr,
maktx TYPE makt-maktx,
bwart TYPE mseg-bwart,
lgort TYPE mseg-lgort,
werks TYPE mseg-werks,
bwtar TYPE mseg-bwtar,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
kostl TYPE mseg-kostl,
budat TYPE mkpf-budat,
mblnr TYPE mkpf-mblnr,
ltext TYPE cskt-ltext,
END OF wa_itab.
TYPES : BEGIN OF ty_t156,
bwart TYPE t156-bwart, " Movement Type (Inventory Management)
xstbw TYPE t156-xstbw, " Reversal movement type
END OF ty_t156.
DATA : it_t156 TYPE TABLE OF ty_t156,
wa_t156 TYPE ty_t156.
DATA: it_mseg TYPE TABLE OF mseg,
wa_mseg TYPE STANDARD TABLE OF mseg WITH HEADER LINE,
it_mkpf TYPE TABLE OF mkpf,
wa_mkpf TYPE STANDARD TABLE OF mkpf WITH HEADER LINE,
it_cskt TYPE TABLE OF cskt,
wa_cskt TYPE STANDARD TABLE OF cskt WITH HEADER LINE.
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_matnr FOR wa_mseg-matnr.
SELECT-OPTIONS : s_bwart FOR wa_mseg-bwart.
SELECT-OPTIONS : s_budat FOR wa_mkpf-budat.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_data.
PERFORM call_alv.
*********************************************************************
* Form GET_DATA
*********************************************************************
FORM get_data.
SELECT mseg~matnr makt~maktx mkpf~budat mkpf~mblnr cskt~ltext
mseg~bwart
mseg~lgort
mseg~werks
mseg~bwtar
mseg~menge
mseg~meins
mseg~kostl
INTO CORRESPONDING FIELDS OF TABLE itab
FROM mseg
INNER JOIN makt ON mseg~matnr = makt~matnr
INNER JOIN mkpf ON mseg~mblnr = mkpf~mblnr
INNER JOIN cskt ON mseg~kostl = cskt~kostl
WHERE mseg~matnr IN s_matnr
AND mseg~bwart IN s_bwart
AND mkpf~budat IN s_budat
AND makt~spras = 'EN'
AND cskt~spras = 'EN'.
IF itab[] IS NOT INITIAL.
SELECT bwart
xstbw
FROM t156 INTO TABLE it_t156
FOR ALL ENTRIES IN itab
WHERE bwart = itab-bwart
AND xstbw NE 'X'.
SORT itab BY mblnr bwart.
SORT it_t156 BY bwart.
LOOP AT itab INTO wa_itab.
READ TABLE it_t156 INTO wa_t156 WITH KEY bwart = wa_itab-bwart BINARY SEARCH.
IF sy-subrc NE 0.
wa_itab-menge = wa_itab-menge * -1.
MODIFY itab FROM wa_itab.
ENDIF.
CLEAR : wa_itab, wa_t156.
ENDLOOP.
endif.
ENDFORM. "get_data
************************************************************************
* CALL_ALV
************************************************************************
FORM call_alv.
DATA: ifc TYPE slis_t_fieldcat_alv.
DATA: xfc TYPE slis_fieldcat_alv.
DATA: repid TYPE sy-repid.
repid = sy-repid.
CLEAR xfc. REFRESH ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Material Number'.
xfc-fieldname = 'MATNR'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '10'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Material Description'.
xfc-fieldname = 'MAKTX'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '40'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Mov. Type'.
xfc-fieldname = 'BWART'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '10'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'S. Loc'.
xfc-fieldname = 'LGORT'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '8'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Plant'.
xfc-fieldname = 'WERKS'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '8'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Val. Type'.
xfc-fieldname = 'BWTAR'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '12'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Qty'.
xfc-fieldname = 'MENGE'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '8'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'UoM'.
xfc-fieldname = 'MEINS'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '8'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Cost Center'.
xfc-fieldname = 'KOSTL'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '12'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Pos. Date'.
xfc-fieldname = 'BUDAT'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '10'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Cost Center Description'.
xfc-fieldname = 'LTEXT'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '20'.
APPEND xfc TO ifc.
CLEAR xfc.
xfc-reptext_ddic = 'Doc. Numb'.
xfc-fieldname = 'MBLNR'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '10'.
APPEND xfc TO ifc.
* Call ABAP List Viewer (ALV)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repid
i_callback_user_command = 'HANDLE_USER_COMMAND'
it_fieldcat = ifc
TABLES
t_outtab = itab.
ENDFORM. "call_alv
***********************************************************************
* FORM handle_User_Command *
***********************************************************************
FORM handle_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
CASE rs_selfield-fieldname.
WHEN 'MATNR'.
SET PARAMETER ID 'MAT' FIELD rs_selfield-value.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM. "handle_user_command
‎2013 Oct 18 1:21 PM
‎2013 Oct 19 4:46 AM