‎2007 Jul 27 2:26 PM
hi,
these are steps..
Based on selection parameters first fetch the required fields data from VBRK and VBRP using join condition excluding cancelled invoices.
Fetch the description data from the following:
Customer Group Desc-T151T.
Material Group Desc-T028T.
Material Long Description-MAKT-MAKTX, SPRAS = EN.
Now for each line item the following needs to be done.
Check out the Display weight unit value in table MARM. If exist then calculate the Display weight quantity with the formula = (MARM-UMREZ* Item Sales qty)/ MARM-UMREN.
Similarly fetch the Pricing conditions for each line item using Standard FM and populate the appropriate Condition value in internal table.
After fetching all the data for items of table display the data in the specified format.
plz go ahead ur code but i need out like these....
Customer Group,
Customer Group Description,
Material group,
Material group Description,
Material,
Material Short Description,
Material Long Description,
Customer,
Customer Name,
Sales Quantity (Invoice Qty),
Unit of Measure(invoice Qty),
Quantity in Wt,
Unit of Measure(Quantity in Wt),
All Pricing Conditions.
REPORT ZTT.
TYPE-POOLS: SLIS.
TABLES : vbrk, " Billing Document Header
vbrp, " Billing Document Item
t151t," Customers: Customer groups
t023t," Material Group Descriptions
makt, " Material Descriptions
marm, " Units of Measure for Material
kna1. " Custmer Master (General Data)
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS: s_fkdat FOR vbrk-fkdat,
s_matkl FOR vbrp-matkl,
s_werks FOR vbrp-werks,
s_kunrg FOR vbrk-kunrg,
s_matnr FOR vbrp-matnr,
s_fkart FOR vbrk-fkart.
PARAMETERS : p_meins LIKE vbrp-meins DEFAULT 'TO'.
PARAMETERS : p_var LIKE disvariant-variant. " obligatory.
SELECTION-SCREEN END OF BLOCK b1.
CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA: BEGIN OF INV OCCURS 0,
vbeln TYPE vbrk-vbeln,
fkart TYPE vbrk-fkart,
kunrg TYPE vbrk-kunrg, " Customer
kdgrp TYPE vbrk-kdgrp, " Customer Group
matkl TYPE vbrp-matkl, " Material Group
matnr TYPE vbrp-matnr, " Material
meins TYPE vbrp-meins,
knumv TYPE vbrk-knumv,
arktx TYPE vbrp-arktx, " Material Short Description
vrkme TYPE vbrp-vrkme, " Sales Quantity Unit
fkimg TYPE vbrp-fkimg, " Sales Quantity
ktext TYPE t151t-ktext, " Customer Group Description
wgbez TYPE t023t-wgbez, " Material Group Description
maktx TYPE makt-maktx, " Material Long Description
name1 TYPE kna1-name1, " Customer Name
umrez TYPE marm-umrez,
umren TYPE marm-umren,
gewei TYPE marm-gewei,
meinh TYPE marm-meinh,
kschl1 TYPE konv-kschl,
kbetr1 TYPE konv-kbetr,
kwert1 TYPE konv-kwert,
kschl2 TYPE konv-kschl,
kbetr2 TYPE konv-kbetr,
kwert2 TYPE konv-kwert,
kschl3 TYPE konv-kschl,
kbetr3 TYPE konv-kbetr,
kwert3 TYPE konv-kwert,
kschl4 TYPE konv-kschl,
kbetr4 TYPE konv-kbetr,
kwert4 TYPE konv-kwert,
kschl5 TYPE konv-kschl,
kbetr5 TYPE konv-kbetr,
kwert5 TYPE konv-kwert,
W_QUANT TYPE VBRP-FKIMG,
P_QUANT LIKE VBRP-fkimg,
posnr type vbrp-posnr,
w_cond type n,
w_valu LIKE vbrp-fkimg,
END OF INV.
DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
HEADING TYPE SLIS_T_LISTHEADER,
LAYOUT TYPE SLIS_LAYOUT_ALV,
EVENTS TYPE SLIS_T_EVENT,
REPNAME LIKE SY-REPID,
F2CODE LIKE SY-UCOMM VALUE '&ETA',
G_SAVE(1) TYPE C,
G_EXIT(1) TYPE C,
G_VARIANT LIKE DISVARIANT,
GX_VARIANT LIKE DISVARIANT.
INITIALIZATION.
REPNAME = SY-REPID.
PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
PERFORM BUILD_EVENTTAB USING EVENTS[].
PERFORM BUILD_COMMENT USING HEADING[].
PERFORM INITIALIZE_VARIANT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VAR.
PERFORM F4_FOR_VARIANT.
AT SELECTION-SCREEN.
PERFORM PAI_OF_SELECTION_SCREEN.
START-OF-SELECTION.
PERFORM GET_T_FINAL.
PERFORM GET_T151T.
PERFORM GET_KNA1.
PERFORM GET_MARM.
PERFORM GET_MAKT.
PERFORM GET_T023T.
PERFORM GET_PRICE.
END-OF-SELECTION.
PERFORM BUILD_LAYOUT USING LAYOUT.
PERFORM WRITE_OUTPUT.
&----
*& Form INITIALIZE_FIELDCAT
&----
text
----
-->P_FIELDTAB[] text *
----
FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'INV'.
L_FIELDCAT-col_pos = 1.
L_FIELDCAT-fieldname = 'KDGRP'.
L_FIELDCAT-seltext_m = 'Customer Group'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 2.
L_FIELDCAT-fieldname = 'KTEXT'.
L_FIELDCAT-seltext_m = 'Cust Group Desc'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 3.
L_FIELDCAT-fieldname = 'MATKL'.
L_FIELDCAT-seltext_m = 'Material Group'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 4.
L_FIELDCAT-fieldname = 'WGBEZ'.
L_FIELDCAT-seltext_m = 'Material Group Desc'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 5.
L_FIELDCAT-fieldname = 'MATNR'.
L_FIELDCAT-seltext_m = 'Material'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 6.
L_FIELDCAT-fieldname = 'ARKTX'.
L_FIELDCAT-seltext_m = 'Material Short Desc'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 7.
L_FIELDCAT-fieldname = 'MAKTX'.
L_FIELDCAT-seltext_m = 'Material Long Desc'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 8.
L_FIELDCAT-fieldname = 'KUNRG'.
L_FIELDCAT-seltext_m = 'Customer'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 9.
L_FIELDCAT-fieldname = 'NAME1'.
L_FIELDCAT-seltext_m = 'Cust Name'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 10.
L_FIELDCAT-fieldname = 'FKIMG'.
L_FIELDCAT-seltext_m = 'Sales Qty'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 11.
L_FIELDCAT-fieldname = 'VRKME'.
L_FIELDCAT-seltext_m = 'Sales Unit'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 12.
L_FIELDCAT-fieldname = 'GEWEI'.
L_FIELDCAT-seltext_m = 'Weight Unit'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 13.
L_FIELDCAT-fieldname = 'MEINH'.
L_FIELDCAT-seltext_m = 'Unit of Mea'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 14.
L_FIELDCAT-fieldname = 'UMREZ'.
L_FIELDCAT-seltext_m = 'NBASE UOM'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 15.
L_FIELDCAT-fieldname = 'UMREN'.
L_FIELDCAT-seltext_m = 'DBASE UOM'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 16.
L_FIELDCAT-fieldname = 'W_QUANT'.
L_FIELDCAT-seltext_m = 'Quantity'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 17.
L_FIELDCAT-fieldname = 'KSCHL1'.
L_FIELDCAT-seltext_m = 'Pric Cond type1'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 18.
L_FIELDCAT-fieldname = 'KBETR1'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate1'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 19.
L_FIELDCAT-fieldname = 'KWERT1'.
L_FIELDCAT-seltext_m = 'Pric Cond Val1'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 20.
L_FIELDCAT-fieldname = 'KSCHL2'.
L_FIELDCAT-seltext_m = 'Pric Cond type2'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 21.
L_FIELDCAT-fieldname = 'KBETR2'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate2'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 22.
L_FIELDCAT-fieldname = 'KWERT2'.
L_FIELDCAT-seltext_m = 'Pric Cond Val2'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 23.
L_FIELDCAT-fieldname = 'KSCHL3'.
L_FIELDCAT-seltext_m = 'Pric Cond type3'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 24.
L_FIELDCAT-fieldname = 'KBETR3'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate3'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 25.
L_FIELDCAT-fieldname = 'KWERT3'.
L_FIELDCAT-seltext_m = 'Pric Cond Val3'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 26.
L_FIELDCAT-fieldname = 'KSCHL4'.
L_FIELDCAT-seltext_m = 'Pric Cond type4'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 27.
L_FIELDCAT-fieldname = 'KBETR4'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate4'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 28.
L_FIELDCAT-fieldname = 'KWERT4'.
L_FIELDCAT-seltext_m = 'Pric Cond Val4'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 29.
L_FIELDCAT-fieldname = 'KSCHL5'.
L_FIELDCAT-seltext_m = 'Pric Cond type5'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 30.
L_FIELDCAT-fieldname = 'KBETR5'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate5'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 31.
L_FIELDCAT-fieldname = 'KWERT5'.
L_FIELDCAT-seltext_m = 'Pric Cond Val5'.
APPEND L_FIELDCAT TO P_FIELDTAB.
fixed columns (obligatory)
L_FIELDCAT-SP_GROUP = 'A'.
L_FIELDCAT-DO_SUM = 'X'.
L_FIELDCAT-TABNAME = 'INV'.
L_FIELDCAT-FIX_COLUMN = 'X'.
L_FIELDCAT-NO_OUT = 'O'.
columns with different description
totalized columns
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'INV'.
L_FIELDCAT-SP_GROUP = 'A'.
L_FIELDCAT-DO_SUM = 'X'.
*
L_FIELDCAT-FIELDNAME = 'W_QUANT'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'GEWEI'.
APPEND L_FIELDCAT TO P_FIELDTAB.
*
L_FIELDCAT-FIELDNAME = 'UMREZ'.
APPEND L_FIELDCAT TO P_FIELDTAB.
*
L_FIELDCAT-FIELDNAME = 'UMREN'.
APPEND L_FIELDCAT TO P_FIELDTAB.
*
columns not displayed
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'INV'.
L_FIELDCAT-SP_GROUP = 'A'.
L_FIELDCAT-NO_OUT = 'X'.
L_FIELDCAT-FIELDNAME = 'VBELN'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'FKART'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'FKDAT'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'FKSTO'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'KNUMV'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'WERKS'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-FIELDNAME = 'POSNR'.
APPEND L_FIELDCAT TO P_FIELDTAB.
ENDFORM. " INITIALIZE_FIELDCAT
&----
*& Form BUILD_EVENTTAB
&----
text
----
-->P_EVENTS[] text *
----
FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_EVENTS.
READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO P_EVENTS.
ENDIF.
ENDFORM. " BUILD_EVENTTAB
&----
*& Form BUILD_COMMENT
&----
text
----
-->P_HEADING[] text *
----
FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
DATA: HLINE TYPE SLIS_LISTHEADER,
TEXT(60) TYPE C,
SEP(20) TYPE C.
CLEAR: HLINE, TEXT.
HLINE-TYP = 'H'.
WRITE: TEXT-101 TO TEXT+23.
HLINE-INFO = TEXT.
APPEND HLINE TO P_HEADING.
CLEAR TEXT.
WRITE: 'User: ' TO TEXT,
SY-UNAME TO TEXT+6,
'Date: ' TO TEXT+25,
SY-DATUM TO TEXT+31,
'Page: ' TO TEXT+50,
SY-PAGNO TO TEXT+56.
HLINE-INFO = TEXT.
APPEND HLINE TO P_HEADING.
ENDFORM. " BUILD_COMMENT
----
FORM TOP_OF_PAGE *
----
........ *
----
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEADING.
ENDFORM.
&----
**& Form INITIALIZE_VARIANT
&----
text
----
FORM INITIALIZE_VARIANT.
G_SAVE = 'A'.
CLEAR G_VARIANT.
G_VARIANT-REPORT = REPNAME.
GX_VARIANT = G_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VAR = GX_VARIANT-VARIANT.
ENDIF.
ENDFORM. " INITIALIZE_VARIANT
&----
*& Form F4_FOR_VARIANT
&----
text
----
FORM F4_FOR_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANT
I_SAVE = G_SAVE
IMPORTING
E_EXIT = G_EXIT
ES_VARIANT = GX_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.
IF G_EXIT = SPACE.
P_VAR = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
&----
*& Form PAI_OF_SELECTION_SCREEN
&----
text
----
FORM PAI_OF_SELECTION_SCREEN.
*
IF NOT P_VAR IS INITIAL.
MOVE G_VARIANT TO GX_VARIANT.
MOVE P_VAR TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT.
G_VARIANT = GX_VARIANT.
ELSE.
PERFORM INITIALIZE_VARIANT.
ENDIF.
ENDFORM. " PAI_OF_SELECTION_SCREEN
FORM GET_T_FINAL.
select a~vbeln
a~fkart
a~fkdat
a~kunrg
a~kdgrp
a~fksto
b~werks
b~matkl
b~matnr
b~fkimg
b~meins
b~arktx
b~vrkme
into corresponding fields of table INV
from vbrk as a
inner join vbrp as b
on a~vbeln = b~vbeln
where a~fkart in s_fkart and
a~fkdat in s_fkdat and
a~kunrg in s_kunrg and
b~matkl in s_matkl and
b~matnr in s_matnr and
b~werks in s_werks and
a~fksto eq space.
ENDFORM. " GET_MARD
FORM GET_T023T.
SELECT * INTO CORRESPONDING FIELDS OF TABLE INV
FROM t023t WHERE spras EQ sy-langu.
ENDFORM. " GET_MARC
FORM GET_KNA1.
SELECT * FROM kna1
INTO corresponding fields of TABLE INV
WHERE kunnr = INV-kunrg.
ENDFORM. " GET_EKPO
FORM GET_MARM.
SELECT * FROM marm
INTO corresponding fields of TABLE INV
WHERE matnr = INV-matnr.
ENDFORM. " GET_VBAP
FORM GET_T151T.
SELECT * INTO CORRESPONDING FIELDS OF TABLE INV
FROM t151t WHERE spras EQ sy-langu.
ENDFORM. " GET_UNIT_OF_MEASURE
&----
*& Form GET_OPEN
&----
text
----
FORM GET_MAKT.
SELECT * FROM makt
INTO corresponding fields of TABLE INV
WHERE matnr = INV-matnr.
ENDFORM. " GET_OPEN
FORM GET_PRICE ."USING S_MATNR P_VRKME P_QUANT.
DATA: UMREZ LIKE MARM-UMREZ,
UMREN LIKE MARM-UMREN,
FKIMG LIKE VBRP-FKIMG.
DATA :
W_QUANT LIKE VBRP-FKIMG.
SELECT SINGLE UMREZ UMREN
INTO (UMREZ, UMREN)
FROM MARM
WHERE MATNR EQ S_MATNR.
AND MEINH EQ P_VRKME.
IF SY-SUBRC EQ 0.
W_QUANT = ( FKIMG * UMREZ ) / UMREN.
ENDIF.
data:l_qty type fkimg,
l_konv LIKE konv OCCURS 0 WITH HEADER LINE,
l_case(2) type n,
l_cond type knumv,
l_cntr type sy-tabix,
l_check type c,
l_posnr type posnr,
l_kunmv type knumv.
data:l_chk type c,
l_count type sy-tabix value 1.
if not l_kunmv eq INV-knumv.
l_kunmv = INV-knumv.
elseif l_kunmv eq INV-knumv.
clear l_kunmv .
endif.
if not l_kunmv is initial.
clear l_konv. refresh l_konv.
CALL FUNCTION 'MRM_DBTAB_KONV_READ'
EXPORTING
i_knumve = INV-knumv
i_knumvl = '0000000000'
tables
t_konv = l_konv.
endif.
clear l_check.
l_count = 1.
loop at l_konv where kposn eq INV-posnr.
*clear sy-tabix.
if l_cond eq INV-knumv and l_posnr eq INV-posnr.
if l_chk = 'X'.
l_cntr = l_cntr + 1.
clear sy-tabix.
sy-tabix = l_cntr.
endif.
elseif not l_cond eq INV-knumv ."and l_posnr eq INV-posnr.
sy-tabix = 1.
l_cond = INV-knumv.
l_posnr = INV-posnr.
l_chk = 'X'.
l_cntr = sy-tabix.
elseif l_cond eq INV-knumv and not l_posnr eq INV-posnr.
if not l_check is initial.
l_count = l_count + 1.
sy-tabix = l_count.
endif.
if l_check is initial.
l_check = 'X'.
sy-tabix = 1.
endif.
endif.
case sy-tabix.
when '1' .
INV-kschl1 = l_konv-kschl.
INV-kbetr1 = l_konv-kbetr.
INV-kwert1 = l_konv-kwert.
when '2'.
INV-kschl2 = l_konv-kschl.
INV-kbetr2 = l_konv-kbetr.
INV-kwert2 = l_konv-kwert.
when '3'.
INV-kschl3 = l_konv-kschl.
INV-kbetr3 = l_konv-kbetr.
INV-kwert3 = l_konv-kwert.
when '4'.
INV-kschl4 = l_konv-kschl.
INV-kbetr4 = l_konv-kbetr.
INV-kwert4 = l_konv-kwert.
when '5'.
INV-kschl5 = l_konv-kschl.
INV-kbetr5 = l_konv-kbetr.
INV-kwert5 = l_konv-kwert.
endcase.
endloop.
ENDFORM.
&----
*& Form BUILD_LAYOUT
&----
text
----
-->P_LAYOUT text *
----
FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
P_LAYOUT-F2CODE = F2CODE.
P_LAYOUT-ZEBRA = 'X'.
P_LAYOUT-DETAIL_POPUP = 'X'.
ENDFORM. " BUILD_LAYOUT
&----
*& Form WRITE_OUTPUT
&----
text
----
FORM WRITE_OUTPUT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = REPNAME
I_INTERNAL_TABNAME = 'INV'
I_INCLNAME = REPNAME
CHANGING
CT_FIELDCAT = FIELDTAB.
IF SY-SUBRC <> 0.
WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'. ENDIF
.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPNAME
I_STRUCTURE_NAME = 'INV'
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FIELDTAB
I_DEFAULT = 'A'
I_SAVE = G_SAVE
IS_VARIANT = G_VARIANT
IT_EVENTS = EVENTS[]
TABLES
t_outtab = INV.
.
IF sy-subrc <> 0.
WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_GRID_DISPLAY'. ENDIF.
ENDFORM. " WRITE
Message was edited by:
kvg mca
Message was edited by:
kvg mca
Message was edited by:
kvg mca
Message was edited by:
kvg mca
Message was edited by:
kvg mca
‎2007 Jul 27 2:30 PM
‎2007 Jul 30 6:38 AM
hi,
its shows runtime error..ABAP program lines are wider than the internal table..
plz help me urgent....
regards,
kvg
‎2007 Jul 30 8:08 AM
This is a problem in SAP's ALV code... the ALV routines will "parse" data definitions from your program, but your program must be saved with the older style of 72 byes.
So go to SE38, then Utilities > Settings > ABAP Editor > and tick on the "Downward compatible Lne length (72)" option, and re-save / re-compile your program (you may have to fix your code a little as it may flow differently. For this reason, I always have my editor in 72 character mode.
‎2007 Jul 30 8:23 AM
hi,
Thanks for reply..
reg in field catalog code fixed columns, totalized columsn ..
my output like ...these
KDGRP,KTEXT,MATKL, WGBEZ,MATNR,
ARKTX,MAKTX,KUNRG,NAME1,FKIMG,
VRKME,Quantity in Wt,Unit of Measure (Quantity in Wt),
Pricing Condition1,Pricing Condition2,
in which fields are put in fixed columns, and totalized colums.
regards,
kvg
‎2007 Aug 02 12:14 AM
This is a seperate issue, but you are repeating column positions 17 through 19 for the repeated sets of fields. For example, KSCHL1 and KSCHL2 are both 17 etc.
The column positions should increase to ensure that the display appears as you expect.
>
> L_FIELDCAT-col_pos = 17.
> _FIELDCAT-fieldname = 'KSCHL1'.
> L_FIELDCAT-seltext_m = 'Pric Cond type1'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 18.
> _FIELDCAT-fieldname = 'KBETR1'.
> L_FIELDCAT-seltext_m = 'Pric Cond Rate1'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 19.
> _FIELDCAT-fieldname = 'KWERT1'.
> L_FIELDCAT-seltext_m = 'Pric Cond Val1'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
> L_FIELDCAT-col_pos = 17.
> _FIELDCAT-fieldname = 'KSCHL2'.
> L_FIELDCAT-seltext_m = 'Pric Cond type2'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 18.
> _FIELDCAT-fieldname = 'KBETR2'.
> L_FIELDCAT-seltext_m = 'Pric Cond Rate2'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 19.
> _FIELDCAT-fieldname = 'KWERT2'.
> L_FIELDCAT-seltext_m = 'Pric Cond Val2'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 17.
> IELDCAT-fieldname = 'KSCHL3'.
> L_FIELDCAT-seltext_m = 'Pric Cond type3'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 18.
> _FIELDCAT-fieldname = 'KBETR3'.
> L_FIELDCAT-seltext_m = 'Pric Cond Rate3'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 19.
> _FIELDCAT-fieldname = 'KWERT3'.
> L_FIELDCAT-seltext_m = 'Pric Cond Val3'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 17.
> IELDCAT-fieldname = 'KSCHL4'.
> L_FIELDCAT-seltext_m = 'Pric Cond type4'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 18.
> _FIELDCAT-fieldname = 'KBETR4'.
> L_FIELDCAT-seltext_m = 'Pric Cond Rate4'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 19.
> _FIELDCAT-fieldname = 'KWERT4'.
> L_FIELDCAT-seltext_m = 'Pric Cond Val4'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 17.
> IELDCAT-fieldname = 'KSCHL5'.
> L_FIELDCAT-seltext_m = 'Pric Cond type5'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 18.
> _FIELDCAT-fieldname = 'KBETR5'.
> L_FIELDCAT-seltext_m = 'Pric Cond Rate5'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
>
>
> L_FIELDCAT-col_pos = 19.
> _FIELDCAT-fieldname = 'KWERT5'.
> L_FIELDCAT-seltext_m = 'Pric Cond Val5'.
> APPEND L_FIELDCAT TO P_FIELDTAB.
‎2007 Aug 02 6:48 AM
hi,
its increase columns..but in the code i declared same positions 17 to 19...that is 17......31...reg fetch different condition types , condition rates and condition values...but before the fetch condition types calculate the quantity..quantity with the formula = (MARM-UMREZ* Item Sales qty)/ MARM-UMREN..
...awaiting for reply....
regards,
kvg
‎2007 Aug 02 8:24 AM
The ALV is like a spreadsheet and you are filling just one row at a time - so you can't have several data items in the same column.
‎2007 Aug 04 9:38 AM
Hi
This report is running for me
Is this the output you want????
http://img339.imageshack.us/my.php?image=sdn1wn5.jpg
http://img256.imageshack.us/my.php?image=untitled1vt6.jpg
What is the version presently you are using???
Try like this
*&---------------------------------------------------------------------*
*& Report ZSDN6 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ZSDN6 .
TYPE-POOLS: SLIS.
TABLES : vbrk, " Billing Document Header
vbrp, " Billing Document Item
t151t," Customers: Customer groups
t023t," Material Group Descriptions
makt, " Material Descriptions
marm, " Units of Measure for Material
kna1. " Custmer Master (General Data)
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS: s_fkdat FOR vbrk-fkdat,
s_matkl FOR vbrp-matkl,
s_werks FOR vbrp-werks,
s_kunrg FOR vbrk-kunrg,
s_matnr FOR vbrp-matnr,
s_fkart FOR vbrk-fkart.
PARAMETERS : p_meins LIKE vbrp-meins DEFAULT 'TO'.
PARAMETERS : p_var LIKE disvariant-variant. " obligatory.
SELECTION-SCREEN END OF BLOCK b1.
CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA: BEGIN OF INV OCCURS 0,
vbeln TYPE vbrk-vbeln,
fkart TYPE vbrk-fkart,
kunrg TYPE vbrk-kunrg, " Customer
kdgrp TYPE vbrk-kdgrp, " Customer Group
matkl TYPE vbrp-matkl, " Material Group
matnr TYPE vbrp-matnr, " Material
meins TYPE vbrp-meins,
knumv TYPE vbrk-knumv,
arktx TYPE vbrp-arktx, " Material Short Description
vrkme TYPE vbrp-vrkme, " Sales Quantity Unit
fkimg TYPE vbrp-fkimg, " Sales Quantity
ktext TYPE t151t-ktext, " Customer Group Description
wgbez TYPE t023t-wgbez, " Material Group Description
maktx TYPE makt-maktx, " Material Long Description
name1 TYPE kna1-name1, " Customer Name
umrez TYPE marm-umrez,
umren TYPE marm-umren,
gewei TYPE marm-gewei,
meinh TYPE marm-meinh,
kschl1 TYPE konv-kschl,
kbetr1 TYPE konv-kbetr,
kwert1 TYPE konv-kwert,
kschl2 TYPE konv-kschl,
kbetr2 TYPE konv-kbetr,
kwert2 TYPE konv-kwert,
kschl3 TYPE konv-kschl,
kbetr3 TYPE konv-kbetr,
kwert3 TYPE konv-kwert,
kschl4 TYPE konv-kschl,
kbetr4 TYPE konv-kbetr,
kwert4 TYPE konv-kwert,
kschl5 TYPE konv-kschl,
kbetr5 TYPE konv-kbetr,
kwert5 TYPE konv-kwert,
W_QUANT TYPE VBRP-FKIMG,
* P_QUANT LIKE VBRP-fkimg,
posnr type vbrp-posnr,
** w_cond type n,
* w_valu LIKE vbrp-fkimg,
END OF INV.
DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
HEADING TYPE SLIS_T_LISTHEADER,
LAYOUT TYPE SLIS_LAYOUT_ALV,
EVENTS TYPE SLIS_T_EVENT,
REPNAME LIKE SY-REPID,
F2CODE LIKE SY-UCOMM VALUE '&ETA',
G_SAVE(1) TYPE C,
G_EXIT(1) TYPE C,
G_VARIANT LIKE DISVARIANT,
GX_VARIANT LIKE DISVARIANT.
INITIALIZATION.
REPNAME = SY-REPID.
PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
PERFORM BUILD_EVENTTAB USING EVENTS[].
PERFORM BUILD_COMMENT USING HEADING[].
PERFORM INITIALIZE_VARIANT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VAR.
PERFORM F4_FOR_VARIANT.
AT SELECTION-SCREEN.
PERFORM PAI_OF_SELECTION_SCREEN.
START-OF-SELECTION.
PERFORM GET_T_FINAL.
PERFORM GET_T151T.
PERFORM GET_KNA1.
PERFORM GET_MARM.
PERFORM GET_MAKT.
PERFORM GET_T023T.
PERFORM GET_PRICE.
END-OF-SELECTION.
PERFORM BUILD_LAYOUT USING LAYOUT.
PERFORM WRITE_OUTPUT.
*&---------------------------------------------------------------------*
*& Form INITIALIZE_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FIELDTAB[] text *
*----------------------------------------------------------------------*
FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR L_FIELDCAT.
L_FIELDCAT-TABNAME = 'INV'.
L_FIELDCAT-col_pos = 1.
L_FIELDCAT-fieldname = 'KDGRP'.
L_FIELDCAT-seltext_m = 'Customer Group'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 2.
L_FIELDCAT-fieldname = 'KTEXT'.
L_FIELDCAT-seltext_m = 'Cust Group Desc'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 3.
L_FIELDCAT-fieldname = 'MATKL'.
L_FIELDCAT-seltext_m = 'Material Group'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 4.
L_FIELDCAT-fieldname = 'WGBEZ'.
L_FIELDCAT-seltext_m = 'Material Group Desc'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 5.
L_FIELDCAT-fieldname = 'MATNR'.
L_FIELDCAT-seltext_m = 'Material'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 6.
L_FIELDCAT-fieldname = 'ARKTX'.
L_FIELDCAT-seltext_m = 'Material Short Desc'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 7.
L_FIELDCAT-fieldname = 'MAKTX'.
L_FIELDCAT-seltext_m = 'Material Long Desc'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 8.
L_FIELDCAT-fieldname = 'KUNRG'.
L_FIELDCAT-seltext_m = 'Customer'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 9.
L_FIELDCAT-fieldname = 'NAME1'.
L_FIELDCAT-seltext_m = 'Cust Name'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 10.
L_FIELDCAT-fieldname = 'FKIMG'.
L_FIELDCAT-seltext_m = 'Sales Qty'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 11.
L_FIELDCAT-fieldname = 'VRKME'.
L_FIELDCAT-seltext_m = 'Sales Unit'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 12.
L_FIELDCAT-fieldname = 'GEWEI'.
L_FIELDCAT-seltext_m = 'Weight Unit'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 13.
L_FIELDCAT-fieldname = 'MEINH'.
L_FIELDCAT-seltext_m = 'Unit of Mea'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 14.
L_FIELDCAT-fieldname = 'UMREZ'.
L_FIELDCAT-seltext_m = 'NBASE UOM'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 15.
L_FIELDCAT-fieldname = 'UMREN'.
L_FIELDCAT-seltext_m = 'DBASE UOM'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 16.
L_FIELDCAT-fieldname = 'W_QUANT'.
L_FIELDCAT-seltext_m = 'Quantity'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 17.
L_FIELDCAT-fieldname = 'KSCHL1'.
L_FIELDCAT-seltext_m = 'Pric Cond type1'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 18.
L_FIELDCAT-fieldname = 'KBETR1'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate1'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 19.
L_FIELDCAT-fieldname = 'KWERT1'.
L_FIELDCAT-seltext_m = 'Pric Cond Val1'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 20.
L_FIELDCAT-fieldname = 'KSCHL2'.
L_FIELDCAT-seltext_m = 'Pric Cond type2'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 21.
L_FIELDCAT-fieldname = 'KBETR2'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate2'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 22.
L_FIELDCAT-fieldname = 'KWERT2'.
L_FIELDCAT-seltext_m = 'Pric Cond Val2'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 23.
L_FIELDCAT-fieldname = 'KSCHL3'.
L_FIELDCAT-seltext_m = 'Pric Cond type3'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 24.
L_FIELDCAT-fieldname = 'KBETR3'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate3'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 25.
L_FIELDCAT-fieldname = 'KWERT3'.
L_FIELDCAT-seltext_m = 'Pric Cond Val3'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 26.
L_FIELDCAT-fieldname = 'KSCHL4'.
L_FIELDCAT-seltext_m = 'Pric Cond type4'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 27.
L_FIELDCAT-fieldname = 'KBETR4'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate4'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 28.
L_FIELDCAT-fieldname = 'KWERT4'.
L_FIELDCAT-seltext_m = 'Pric Cond Val4'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 29.
L_FIELDCAT-fieldname = 'KSCHL5'.
L_FIELDCAT-seltext_m = 'Pric Cond type5'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 30.
L_FIELDCAT-fieldname = 'KBETR5'.
L_FIELDCAT-seltext_m = 'Pric Cond Rate5'.
APPEND L_FIELDCAT TO P_FIELDTAB.
L_FIELDCAT-col_pos = 31.
L_FIELDCAT-fieldname = 'KWERT5'.
L_FIELDCAT-seltext_m = 'Pric Cond Val5'.
APPEND L_FIELDCAT TO P_FIELDTAB.
* fixed columns (obligatory)
* L_FIELDCAT-SP_GROUP = 'A'.
* L_FIELDCAT-DO_SUM = 'X'.
* L_FIELDCAT-TABNAME = 'INV'.
* L_FIELDCAT-FIX_COLUMN = 'X'.
* L_FIELDCAT-NO_OUT = 'O'.
* columns with different description
** totalized columns
* CLEAR L_FIELDCAT.
* L_FIELDCAT-TABNAME = 'INV'.
* L_FIELDCAT-SP_GROUP = 'A'.
* L_FIELDCAT-DO_SUM = 'X'.
*
* L_FIELDCAT-FIELDNAME = 'W_QUANT'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
* L_FIELDCAT-FIELDNAME = 'GEWEI'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
*
* L_FIELDCAT-FIELDNAME = 'UMREZ'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
*
* L_FIELDCAT-FIELDNAME = 'UMREN'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
*
*** columns not displayed
* CLEAR L_FIELDCAT.
* L_FIELDCAT-TABNAME = 'INV'.
* L_FIELDCAT-SP_GROUP = 'A'.
* L_FIELDCAT-NO_OUT = 'X'.
* L_FIELDCAT-FIELDNAME = 'VBELN'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
* L_FIELDCAT-FIELDNAME = 'FKART'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
* L_FIELDCAT-FIELDNAME = 'FKDAT'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
* L_FIELDCAT-FIELDNAME = 'FKSTO'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
* L_FIELDCAT-FIELDNAME = 'KNUMV'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
* L_FIELDCAT-FIELDNAME = 'WERKS'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
* L_FIELDCAT-FIELDNAME = 'POSNR'.
* APPEND L_FIELDCAT TO P_FIELDTAB.
ENDFORM. " INITIALIZE_FIELDCAT
*&---------------------------------------------------------------------*
*& Form BUILD_EVENTTAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EVENTS[] text *
*----------------------------------------------------------------------*
FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_EVENTS.
READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO P_EVENTS.
ENDIF.
ENDFORM. " BUILD_EVENTTAB
*&---------------------------------------------------------------------*
*& Form BUILD_COMMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_HEADING[] text *
*----------------------------------------------------------------------*
FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
DATA: HLINE TYPE SLIS_LISTHEADER,
TEXT(60) TYPE C,
SEP(20) TYPE C.
CLEAR: HLINE, TEXT.
HLINE-TYP = 'H'.
WRITE: TEXT-101 TO TEXT+23.
HLINE-INFO = TEXT.
APPEND HLINE TO P_HEADING.
CLEAR TEXT.
WRITE: 'User: ' TO TEXT,
SY-UNAME TO TEXT+6,
'Date: ' TO TEXT+25,
SY-DATUM TO TEXT+31,
'Page: ' TO TEXT+50,
SY-PAGNO TO TEXT+56.
HLINE-INFO = TEXT.
APPEND HLINE TO P_HEADING.
ENDFORM. " BUILD_COMMENT
*---------------------------------------------------------------------*
* FORM TOP_OF_PAGE *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEADING.
ENDFORM.
*&---------------------------------------------------------------------*
**& Form INITIALIZE_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM INITIALIZE_VARIANT.
G_SAVE = 'A'.
CLEAR G_VARIANT.
G_VARIANT-REPORT = REPNAME.
GX_VARIANT = G_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VAR = GX_VARIANT-VARIANT.
ENDIF.
ENDFORM. " INITIALIZE_VARIANT
*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANT
I_SAVE = G_SAVE
IMPORTING
E_EXIT = G_EXIT
ES_VARIANT = GX_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.
IF G_EXIT = SPACE.
P_VAR = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
*&---------------------------------------------------------------------*
*& Form PAI_OF_SELECTION_SCREEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM PAI_OF_SELECTION_SCREEN.
*
IF NOT P_VAR IS INITIAL.
MOVE G_VARIANT TO GX_VARIANT.
MOVE P_VAR TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT.
G_VARIANT = GX_VARIANT.
ELSE.
PERFORM INITIALIZE_VARIANT.
ENDIF.
ENDFORM. " PAI_OF_SELECTION_SCREEN
FORM GET_T_FINAL.
select a~vbeln
a~fkart
a~fkdat
a~kunrg
a~kdgrp
a~fksto
b~werks
b~matkl
b~matnr
b~fkimg
b~meins
b~arktx
b~vrkme
into corresponding fields of table INV
from vbrk as a
inner join vbrp as b
on a~vbeln = b~vbeln
where a~fkart in s_fkart and
a~fkdat in s_fkdat and
a~kunrg in s_kunrg and
b~matkl in s_matkl and
b~matnr in s_matnr and
b~werks in s_werks and
a~fksto eq space.
ENDFORM. " GET_MARD
FORM GET_T023T.
SELECT * INTO CORRESPONDING FIELDS OF TABLE INV
FROM t023t WHERE spras EQ sy-langu.
ENDFORM. " GET_MARC
FORM GET_KNA1.
SELECT * FROM kna1
INTO corresponding fields of TABLE INV
WHERE kunnr = INV-kunrg.
ENDFORM. " GET_EKPO
FORM GET_MARM.
SELECT * FROM marm
INTO corresponding fields of TABLE INV
WHERE matnr = INV-matnr.
ENDFORM. " GET_VBAP
FORM GET_T151T.
SELECT * INTO CORRESPONDING FIELDS OF TABLE INV
FROM t151t WHERE spras EQ sy-langu.
ENDFORM. " GET_UNIT_OF_MEASURE
*&---------------------------------------------------------------------*
*& Form GET_OPEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM GET_MAKT.
SELECT * FROM makt
INTO corresponding fields of TABLE INV
WHERE matnr = INV-matnr.
ENDFORM. " GET_OPEN
FORM GET_PRICE ."USING S_MATNR P_VRKME P_QUANT.
DATA: UMREZ LIKE MARM-UMREZ,
UMREN LIKE MARM-UMREN,
FKIMG LIKE VBRP-FKIMG.
DATA :
W_QUANT LIKE VBRP-FKIMG.
SELECT SINGLE UMREZ UMREN
INTO (UMREZ, UMREN)
FROM MARM
WHERE MATNR EQ S_MATNR.
* AND MEINH EQ P_VRKME.
IF SY-SUBRC EQ 0.
W_QUANT = ( FKIMG * UMREZ ) / UMREN.
ENDIF.
data:l_qty type fkimg,
l_konv LIKE konv OCCURS 0 WITH HEADER LINE,
l_case(2) type n,
l_cond type knumv,
l_cntr type sy-tabix,
l_check type c,
l_posnr type posnr,
l_kunmv type knumv.
data:l_chk type c,
l_count type sy-tabix value 1.
if not l_kunmv eq INV-knumv.
l_kunmv = INV-knumv.
elseif l_kunmv eq INV-knumv.
clear l_kunmv .
endif.
if not l_kunmv is initial.
clear l_konv. refresh l_konv.
CALL FUNCTION 'MRM_DBTAB_KONV_READ'
EXPORTING
i_knumve = INV-knumv
i_knumvl = '0000000000'
tables
t_konv = l_konv.
endif.
clear l_check.
l_count = 1.
loop at l_konv where kposn eq INV-posnr.
*clear sy-tabix.
if l_cond eq INV-knumv and l_posnr eq INV-posnr.
if l_chk = 'X'.
l_cntr = l_cntr + 1.
clear sy-tabix.
sy-tabix = l_cntr.
endif.
elseif not l_cond eq INV-knumv ."and l_posnr eq INV-posnr.
sy-tabix = 1.
l_cond = INV-knumv.
l_posnr = INV-posnr.
l_chk = 'X'.
l_cntr = sy-tabix.
elseif l_cond eq INV-knumv and not l_posnr eq INV-posnr.
if not l_check is initial.
l_count = l_count + 1.
sy-tabix = l_count.
endif.
if l_check is initial.
l_check = 'X'.
sy-tabix = 1.
endif.
endif.
case sy-tabix.
when '1' .
INV-kschl1 = l_konv-kschl.
INV-kbetr1 = l_konv-kbetr.
INV-kwert1 = l_konv-kwert.
when '2'.
INV-kschl2 = l_konv-kschl.
INV-kbetr2 = l_konv-kbetr.
INV-kwert2 = l_konv-kwert.
when '3'.
INV-kschl3 = l_konv-kschl.
INV-kbetr3 = l_konv-kbetr.
INV-kwert3 = l_konv-kwert.
when '4'.
INV-kschl4 = l_konv-kschl.
INV-kbetr4 = l_konv-kbetr.
INV-kwert4 = l_konv-kwert.
when '5'.
INV-kschl5 = l_konv-kschl.
INV-kbetr5 = l_konv-kbetr.
INV-kwert5 = l_konv-kwert.
endcase.
endloop.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LAYOUT text *
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
P_LAYOUT-F2CODE = F2CODE.
P_LAYOUT-ZEBRA = 'X'.
P_LAYOUT-DETAIL_POPUP = 'X'.
ENDFORM. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form WRITE_OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM WRITE_OUTPUT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = REPNAME
I_INTERNAL_TABNAME = 'INV'
I_INCLNAME = REPNAME
CHANGING
CT_FIELDCAT = FIELDTAB.
IF SY-SUBRC <> 0.
WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'. ENDIF
.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPNAME
I_STRUCTURE_NAME = 'INV'
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FIELDTAB
I_DEFAULT = 'A'
I_SAVE = G_SAVE
IS_VARIANT = G_VARIANT
IT_EVENTS = EVENTS[]
TABLES
t_outtab = INV.
.
IF sy-subrc <> 0.
WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_GRID_DISPLAY'. ENDIF.
ENDFORM. " WRITEIf it is giving again any problem let me know as soon as possible
Reward all helpfull answers
Regards
Pavan
‎2007 Aug 06 6:39 AM
hi pavan,
i am working ECC6.0...that is executed but in the output only printed material material desc...remaining records not displayed..plz help me....here personal network stroage is filter i con't able ur thread....if any information mail me [email protected]
regards,
kvg
‎2007 Aug 02 3:29 AM
You seem to be repeatedly doing "INTO corresponding fields of TABLE INV" in your selections... your code needs to more along the lines of the following pseudo code:
clear: INV, INV[]. "start clear
perform fill_inv_from_datasource_1. "e.g. initially fill from FI/SD documents
perform fill_in_gaps_in_inv.
form fill_in_gaps_in_inv.
data:
l_tabix like sy-tabix.
loop at inv.
l_tabix = sy-tabix.
*" get customer and other data into INV for example
select single name1 name1 into corrresponding fields of INV
from kna1
where kunnr = INV-kunnr.
modify INV index l_tabix.
endloop
endform.