10-16-2008 10:09 AM
Hi All experts,
I am facing very typical problem in alv. I have a requirement in alv that I have to merge the rows (records)whenever they have the same values for a particular column i.e. field. I tried both the fm's resue_alv_grid_display and resue_alv_grid_display_lvc but I could not succeed. I have filled the it_sort and is_layout before calling the above function modules. I have passed the value of cell_merge as x in the layout but it is still not working. I tried to search the sap notes also but of no use. I am using sap ecc 6.0 in which sap_basis is of version 7.0 and Level 0013.
Thanks & Regards,
Suneel Jadon
10-16-2008 10:11 AM
10-16-2008 10:15 AM
10-16-2008 10:37 AM
I have a program in which I use reuse_alv_grid_display, the output is sorted and in the layout I passed 'Y' for cell_merge and it works. Can you paste your code here?
10-16-2008 11:45 AM
&----
*& Report ZZZTEST
*&
&----
*&
*&
&----
REPORT zzztest.
TYPE-POOLS kkblo .
TYPE-POOLS : slis.
INCLUDE zzztest_top.
*PARAMETERS : rb_sip RADIOBUTTON GROUP rad0.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
SELECT-OPTIONS : invoice FOR vbrk-vbeln,
batch FOR ztr_slscls-batch.
SELECTION-SCREEN END OF BLOCK b2.
RANGES : auart FOR vbak-auart,
auartcr FOR vbak-auart,
auartcs FOR vbak-auart.
INCLUDE zzztest_f01.
START-OF-SELECTION.
PERFORM valid_data.
PERFORM get_data.
PERFORM process_data.
PERFORM filling_header_table.
PERFORM set_specific_field_attributes.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM sort_build USING gt_sort[].
PERFORM display_alv_report.
&----
*& Include ZZZTEST_TOP
&----
TABLES : vbak,
bseg_alv,
ztr_slscls,
vbrk,
ztr_paymethod,
ztr_sc_auart.
types : BEGIN OF tt_data,
$$BEGIN
tcsele, "Select
auart LIKE vbak-auart, "Doc Type
kunnr LIKE kna1-kunnr, "Customer
name1 LIKE kna1-name1, "Customer Name
vbeln LIKE vbak-vbeln, "Sales Order
vbeln_vl LIKE likp-vbeln, "Delivery
vbeln_vf LIKE vbrk-vbeln, "Invoice
augbl LIKE bsad-augbl, "Payment
paymethod LIKE ztr_slscls-paymethod, "Payment Method
bank_rec LIKE ztr_paymethod-banrec_ref, "Bank Recon Ref
cheque LIKE ztr_slscls-cheque, "Cheque No
netwr_vf LIKE vbrk-netwr, "Invoice Amt
waerk_vf LIKE vbrk-waerk, "Invoice Curr
pay_amt LIKE febmka-kwbtr, "Payment Amt
balance LIKE febmka-kwbtr, "Balance Amt
reason LIKE ztr_slscls-reason, "Reason
collinfo LIKE ztr_slscls-collinfo, "Collection Info
batch LIKE ztr_slscls-batch, "Batch No
pay_by LIKE sy-uname, "Payment User Id
pay_date LIKE sy-datum, "Payment Date
pay_time LIKE sy-uzeit, "Payment Time
ernam LIKE ztr_slscls-ernam, "User Id
erdat LIKE ztr_slscls-erdat, "Date
erzet LIKE ztr_slscls-erzet, "Time
celltab TYPE lvc_t_styl,
$$END
END OF tt_data.
DATA: it_data TYPE STANDARD TABLE OF tt_data,
wa_data LIKE LINE OF it_data.
DATA : BEGIN OF it_header OCCURS 0,
$$BEGIN
tcsele, "Select
auart LIKE vbak-auart, "Doc Type
kunnr LIKE kna1-kunnr, "Customer
name1 LIKE kna1-name1, "Customer Name
vbeln LIKE vbak-vbeln, "Sales Order
vbeln_vl LIKE likp-vbeln, "Delivery
vbeln_vf LIKE vbrk-vbeln, "Invoice
augbl LIKE bsad-augbl, "Payment
paymethod LIKE ztr_slscls-paymethod, "Payment Method
bank_rec LIKE ztr_paymethod-banrec_ref, "Bank Recon Ref
cheque LIKE ztr_slscls-cheque, "Cheque No
netwr_vf LIKE vbrk-netwr, "Invoice Amt
waerk_vf LIKE vbrk-waerk, "Invoice Curr
pay_amt LIKE febmka-kwbtr, "Payment Amt
balance LIKE febmka-kwbtr, "Balance Amt
reason LIKE ztr_slscls-reason, "Reason
collinfo LIKE ztr_slscls-collinfo, "Collection Info
batch LIKE ztr_slscls-batch, "Batch No
pay_by LIKE sy-uname, "Payment User Id
pay_date LIKE sy-datum, "Payment Date
pay_time LIKE sy-uzeit, "Payment Time
ernam LIKE ztr_slscls-ernam, "User Id
erdat LIKE ztr_slscls-erdat, "Date
erzet LIKE ztr_slscls-erzet, "Time
celltab TYPE lvc_t_styl,
$$END
END OF it_header.
DATA : BEGIN OF source OCCURS 0,
line(255),
END OF source.
DATA : BEGIN OF it_vbak OCCURS 0,
kunnr LIKE vbak-kunnr,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
vkgrp LIKE vbak-vkgrp,
spart LIKE vbap-spart,
name1 LIKE kna1-name1,
vbeln LIKE vbak-vbeln,
auart LIKE vbak-auart,
netwr LIKE vbak-netwr,
waerk LIKE vbak-waerk,
bukrs_vf LIKE vbak-bukrs_vf,
vdatu LIKE vbak-vdatu,
augru LIKE vbak-augru,
END OF it_vbak.
DATA : BEGIN OF it_knb1 OCCURS 0,
kunnr LIKE knb1-kunnr,
xcpdk LIKE kna1-xcpdk,
bukrs LIKE knb1-bukrs,
END OF it_knb1.
DATA : it_header_wa LIKE it_header,
it_vbfa LIKE vbfa OCCURS 0 WITH HEADER LINE,
it_ztr_slscls LIKE ztr_slscls OCCURS 0 WITH HEADER LINE,
it_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF it_vbrk OCCURS 0,
bukrs LIKE vbrk-bukrs,
vbeln LIKE vbrk-vbeln,
fksto LIKE vbrk-fksto,
netwr LIKE vbrk-netwr,
waerk LIKE vbrk-waerk,
fkdat LIKE vbrk-fkdat,
xblnr LIKE bsad-xblnr,
END OF it_vbrk.
DATA : BEGIN OF it_vbap OCCURS 0,
vbeln LIKE vbap-vbeln,
posnr LIKE vbap-vbeln,
abgru LIKE vbap-abgru,
netwr LIKE vbap-netwr,
mwsbp LIKE vbap-mwsbp,
kwmeng LIKE vbap-kwmeng,
kbmeng LIKE vbap-kbmeng,
END OF it_vbap.
DATA : BEGIN OF it_vbuk OCCURS 0,
vbeln LIKE vbuk-vbeln,
cmgst LIKE vbuk-cmgst,
gbstk LIKE vbuk-gbstk,
END OF it_vbuk.
DATA : BEGIN OF it_bkpf OCCURS 0,
belnr LIKE bkpf-belnr,
gjahr LIKE bkpf-gjahr,
cpudt LIKE bkpf-cpudt,
cputm LIKE bkpf-cputm,
usnam LIKE bkpf-usnam,
END OF it_bkpf.
DATA : BEGIN OF it_bsad OCCURS 0,
augbl LIKE bsad-augbl,
belnr LIKE bsad-belnr,
gjahr LIKE bsad-gjahr,
vbeln LIKE bsad-vbeln,
wrbtr LIKE bsad-wrbtr,
bukrs LIKE bsad-bukrs,
blart LIKE bsad-blart,
END OF it_bsad.
DATA : BEGIN OF it_bsid OCCURS 0,
vbeln LIKE bsid-vbeln,
belnr LIKE bsid-belnr,
wrbtr LIKE bsid-wrbtr,
blart LIKE bsid-blart,
gjahr LIKE bsid-gjahr,
bukrs LIKE bsid-bukrs,
END OF it_bsid.
DATA : BEGIN OF key_bkpf OCCURS 0,
bukrs LIKE bsid-bukrs,
belnr LIKE bsid-belnr,
gjahr LIKE bsid-gjahr,
wrbtr LIKE bsid-wrbtr,
vbeln LIKE bsid-vbeln,
END OF key_bkpf.
DATA : BEGIN OF it_vbeln OCCURS 0,
aubel LIKE vbrp-aubel,
END OF it_vbeln,
BEGIN OF pay_vbeln OCCURS 0,
vbeln LIKE vbak-vbeln,
END OF pay_vbeln.
DATA : BEGIN OF it_adrc,
name1 LIKE adrc-name1,
name2 LIKE adrc-name2,
name3 LIKE adrc-name3,
name4 LIKE adrc-name4,
city1 LIKE adrc-city1,
END OF it_adrc.
DATA : okcode_100 LIKE sy-ucomm,
read_table,
tmp_delivery LIKE likp-vbeln,
tmp_gi LIKE mseg-mblnr,
tmp_gi_year LIKE mseg-mjahr,
tmp_invoice LIKE vbrk-vbeln,
tmp_batch LIKE ztr_slscls-batch,
tmp_bukrs LIKE vbrk-bukrs,
number_range(10),
success TYPE i,
tmp_ind,
tmp_scm,
tmp_sip,
auth_scm,
auth_sip,
vbpa_adrnr LIKE vbpa-adrnr.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
nodata VALUE '/',
messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
wa_mode LIKE ctu_params-dismode,
progress_text TYPE string,
tmp_zuonr LIKE bseg-zuonr.
CONTROLS : tc_header TYPE TABLEVIEW USING SCREEN '100'.
DATA : wa_col LIKE LINE OF tc_header-cols,
tmp_screen_name LIKE wa_col-screen-name,
tmp_table LIKE dd08l-tabname,
tmp_field LIKE dd08l-fieldname,
startsign LIKE sy-repid VALUE '$$BEGIN',
endsign LIKE sy-repid VALUE '$$END',
start LIKE sy-tabix,
end LIKE sy-tabix,
gt_sort TYPE SLIS_T_SORTINFO_ALV . "LVC_T_SORT.
*ALV data declarations
types : ty_fieldcat_tab type standard table of slis_fieldcat_alv.
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: it_fieldcat TYPE ty_fieldcat_tab, "WITH HEADER LINE, "lvc_t_fcat
wa_fieldcat type slis_fieldcat_alv,
wa_fieldcat TYPE lvc_s_fcat,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE SLIS_LAYOUT_ALV, "lvc_s_layo, "slis_layout_alv
gd_repid LIKE sy-repid.
&----
*& Include ZZZTEST_F01
&----
&----
*& Form VALID_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM valid_data .
IF invoice[] IS INITIAL AND
batch[] IS INITIAL.
MESSAGE s398(00) WITH 'Please Fill in Invoice Number or'
'Batch Processing Ref. Number'.
STOP.
ENDIF.
ENDFORM. " VALID_DATA
&----
*& Form GET_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data .
REFRESH : auart,
auartcs,
auartcr.
fill in doc type cash.
auartcs-sign = auartcr-sign = 'I'.
auartcs-option = auartcr-option = 'EQ'.
SELECT * FROM ztr_sc_auart.
IF ztr_sc_auart-auart_type = '1'.
auartcr-low = ztr_sc_auart-auart.
APPEND auartcr.
ELSEIF ztr_sc_auart-auart_type = '2'.
auartcs-low = ztr_sc_auart-auart.
APPEND auartcs.
ENDIF.
ENDSELECT.
if rb_cash = 'X'.
auart[] = auartcs[].
elseif rb_cre = 'X'.
auart[] = auartcr[].
endif.
rb_sip = 'X'.
PERFORM get_data_vbak_sip.
SORT it_vbak BY vbeln.
DELETE ADJACENT DUPLICATES FROM it_vbak COMPARING vbeln.
READ TABLE it_vbak INDEX 1.
IF sy-subrc NE 0.
MESSAGE s398(00) WITH 'Sales Closure data not found'.
STOP.
ENDIF.
SELECT vbeln posnr abgru netwr mwsbp kwmeng kbmeng
INTO TABLE it_vbap FROM vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
SELECT vbeln cmgst gbstk INTO TABLE it_vbuk FROM vbuk
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
SELECT * INTO TABLE it_ztr_slscls FROM ztr_slscls
FOR ALL ENTRIES IN it_header
WHERE vbeln = it_header-vbeln.
SELECT akunnr axcpdk b~bukrs INTO TABLE it_knb1
FROM kna1 AS a INNER JOIN
knb1 AS b ON
bkunnr = akunnr
FOR ALL ENTRIES IN it_vbak
WHERE a~kunnr = it_vbak-kunnr.
PERFORM additional_check_closure.
READ TABLE it_vbak INDEX 1.
IF sy-subrc NE 0.
MESSAGE s398(00) WITH 'Sales Closure data not found'.
STOP.
ENDIF.
ENDFORM. " GET_DATA
&----
*& Form PROCESS_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM process_data .
select from table external
Agus change
*--
begin of autority-check company code
*--
LOOP AT it_vbak.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD it_vbak-bukrs_vf
ID 'ACTVT' FIELD '03'.
IF NOT sy-subrc EQ 0.
DELETE it_vbak.
ENDIF.
ENDLOOP.
REFRESH : it_header.
LOOP AT it_vbak.
CLEAR it_header.
MOVE-CORRESPONDING it_vbak TO it_header.
READ TABLE it_ztr_slscls WITH KEY vbeln = it_vbak-vbeln.
IF sy-subrc = 0.
SELECT SINGLE banrec_ref INTO it_header-bank_rec
FROM ztr_paymethod
WHERE bukrs = it_vbak-bukrs_vf AND
paymethod = it_ztr_slscls-paymethod.
ENDIF.
APPEND it_header.
ENDLOOP.
SORT it_header BY vbeln.
ENDFORM. " PROCESS_DATA
&----
*& Form ADDITIONAL_CHECK_CLOSURE
&----
text
----
--> p1 text
<-- p2 text
----
FORM additional_check_closure .
LOOP AT it_vbak.
only Order status A is allowed
READ TABLE it_vbuk WITH KEY vbeln = it_vbak-vbeln.
IF it_vbuk-cmgst = 'B'.
DELETE it_vbak.
ELSE.
only full delivery is allowed
LOOP AT it_vbap WHERE vbeln = it_vbak-vbeln.
IF it_vbap-kwmeng NE it_vbap-kbmeng.
DELETE it_vbak.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
LOOP AT it_vbap.
READ TABLE it_vbak WITH KEY vbeln = it_vbap-vbeln.
IF sy-subrc NE 0.
DELETE it_vbap.
ENDIF.
ENDLOOP.
ENDFORM. " ADDITIONAL_CHECK_CLOSURE
&----
*& Form GET_DATA_VBAK_SIP
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data_vbak_sip .
RANGES : ran_invoice FOR vbrk-vbeln.
DATA : BEGIN OF vbrk_vbeln OCCURS 0,
vbeln LIKE vbrk-vbeln,
END OF vbrk_vbeln.
REFRESH ran_invoice.
IF NOT batch[] IS INITIAL.
CLEAR ran_invoice.
SELECT vbeln INTO ran_invoice-low FROM ztr_slscls
WHERE batch IN batch.
ran_invoice-sign = 'I'.
ran_invoice-option = 'EQ'.
COLLECT ran_invoice.
ENDSELECT.
IF ran_invoice[] IS INITIAL.
MESSAGE s398(00) WITH 'Sales Closure data not found'.
STOP.
ENDIF.
SELECT vbeln INTO TABLE vbrk_vbeln FROM vbrp
WHERE aubel IN ran_invoice.
IF sy-subrc NE 0.
MESSAGE s398(00) WITH 'Sales Closure data not found'.
STOP.
ENDIF.
ENDIF.
ran_invoice[] = invoice[].
LOOP AT vbrk_vbeln.
ran_invoice-sign = 'I'.
ran_invoice-option = 'EQ'.
ran_invoice-low = vbrk_vbeln-vbeln.
COLLECT ran_invoice.
ENDLOOP.
SELECT aubel INTO TABLE it_vbeln FROM vbrp
WHERE vbeln IN ran_invoice.
IF sy-subrc = 0.
SELECT vbeln INTO TABLE pay_vbeln FROM ztr_slscls
FOR ALL ENTRIES IN it_vbeln
WHERE vbeln = it_vbeln-aubel.
IF sy-subrc = 0.
SELECT akunnr avkorg avtweg avkgrp b~spart
cname1 avbeln aauart anetwr awaerk abukrs_vf vdatu
INTO TABLE it_vbak
FROM vbak AS a INNER JOIN
vbap AS b ON
bvbeln = avbeln INNER JOIN
kna1 AS c ON
ckunnr = akunnr
FOR ALL ENTRIES IN pay_vbeln
WHERE a~vbeln = pay_vbeln-vbeln.
ENDIF.
ENDIF.
ENDFORM. " GET_DATA_VBAK_SIP
&----
*& Form CALL_SCREEN_ALV
&----
text
----
--> p1 text
<-- p2 text
----
FORM filling_header_table .
READ TABLE it_header INDEX 1.
IF sy-subrc NE 0.
MESSAGE s398(00) WITH 'Sales Closure data not found'.
STOP.
ENDIF.
read_table = 'X'.
PERFORM get_link_salesorder.
IF read_table = 'X'.
SELECT * INTO TABLE it_ztr_slscls FROM ztr_slscls
FOR ALL ENTRIES IN it_header
WHERE vbeln = it_header-vbeln.
ENDIF.
Input into It_Header.
LOOP AT it_header.
CLEAR : it_header-pay_by,
it_header-pay_date,
it_header-pay_time,
it_header-netwr_vf,
it_header-vbeln_vl,
it_header-vbeln_vf,
it_header-augbl.
LOOP AT it_vbfa WHERE vbelv = it_header-vbeln AND
( ( vbtyp_n = 'J' AND stufe = 0 ) OR
( vbtyp_n = 'M' AND stufe = 1 ) ).
Get Delivery
CASE it_vbfa-vbtyp_n.
WHEN 'J'.
it_header-vbeln_vl = it_vbfa-vbeln.
Get Invoice
WHEN 'M'.
it_header-vbeln_vf = it_vbfa-vbeln.
ENDCASE.
ENDLOOP.
Get Amount Invoice
it_header-waerk_vf = it_vbrk-waerk.
LOOP AT it_vbap WHERE vbeln = it_header-vbeln AND
abgru = space.
it_header-netwr_vf = it_header-netwr_vf +
it_vbap-netwr +
it_vbap-mwsbp.
ENDLOOP.
if rb_cre = 'X' and rb_scm = 'X'.
it_header-pay_amt = it_header-netwr_vf.
endif.
endif.
Get from table for initial
IF read_table = 'X'.
READ TABLE it_ztr_slscls WITH KEY vbeln = it_header-vbeln.
IF sy-subrc = 0.
it_header-paymethod = it_ztr_slscls-paymethod.
it_header-reason = it_ztr_slscls-reason.
it_header-pay_amt = it_ztr_slscls-wrbtr.
it_header-batch = it_ztr_slscls-batch.
it_header-cheque = it_ztr_slscls-cheque.
it_header-ernam = it_ztr_slscls-ernam.
it_header-erdat = it_ztr_slscls-erdat.
it_header-erzet = it_ztr_slscls-erzet.
it_header-collinfo = it_ztr_slscls-collinfo.
ENDIF.
ENDIF.
Get Incoming Payment
IF it_header-vbeln_vf NE space.
IF it_header-pay_amt < it_header-netwr_vf.
READ TABLE it_bsad WITH KEY vbeln = it_header-vbeln_vf
blart = 'DZ'.
ELSE.
READ TABLE it_bsad WITH KEY vbeln = it_header-vbeln_vf
blart = 'RV'.
ENDIF.
IF sy-subrc = 0.
it_header-augbl = it_bsad-augbl.
READ TABLE it_bkpf WITH KEY belnr = it_bsad-augbl
gjahr = it_bsad-gjahr.
IF sy-subrc = 0.
it_header-pay_by = it_bkpf-usnam.
it_header-pay_date = it_bkpf-cpudt.
it_header-pay_time = it_bkpf-cputm.
ENDIF.
ENDIF.
ENDIF.
Reason = blank if payment = invoice amount
IF it_header-pay_amt = it_header-netwr_vf.
it_header-reason = space.
ENDIF.
Balance Outstanding
it_header-balance = it_header-netwr_vf - it_header-pay_amt.
MODIFY it_header.
ENDLOOP.
Modify Reason if credit sales
LOOP AT it_header WHERE auart IN auartcr AND
reason = space AND
balance NE 0.
it_header-reason = 'CREDIT SALES'.
MODIFY it_header.
ENDLOOP.
Get only for Open Sales Order
if read_table = 'X' and rb_scm = 'X'.
delete it_header where vbeln_vf ne space.
endif.
CLEAR okcode_100.
ENDFORM. "
&----
*& Form GET_LINK_SALESORDER
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_link_salesorder .
get link for Sales Order
SELECT * INTO TABLE it_vbfa FROM vbfa
FOR ALL ENTRIES IN it_vbak
WHERE vbelv = it_vbak-vbeln AND
( vbtyp_n = 'J' OR
vbtyp_n = 'M' ).
READ TABLE it_vbfa INDEX 1.
IF sy-subrc = 0.
SELECT bukrs vbeln fksto netwr waerk fkdat INTO TABLE it_vbrk
FROM vbrk FOR ALL ENTRIES IN it_vbfa
WHERE vbeln = it_vbfa-vbeln AND
vbtyp = 'M'.
LOOP AT it_vbfa WHERE vbtyp_n = 'M'.
READ TABLE it_vbrk WITH KEY vbeln = it_vbfa-vbeln.
IF sy-subrc = 0 AND it_vbrk-fksto = 'X'.
DELETE it_vbfa.
ENDIF.
ENDLOOP.
DELETE it_vbrk WHERE fksto = 'X'.
READ TABLE it_vbrk INDEX 1.
IF sy-subrc = 0.
LOOP AT it_vbrk.
it_vbrk-xblnr = it_vbrk-vbeln.
MODIFY it_vbrk.
ENDLOOP.
get incoming payment
SELECT augbl belnr gjahr vbeln wrbtr bukrs blart INTO TABLE it_bsad
FROM bsad
FOR ALL ENTRIES IN it_vbrk
WHERE vbeln = it_vbrk-vbeln.
Get not yet payment or partial payment
SELECT vbeln belnr wrbtr blart gjahr bukrs INTO TABLE it_bsid
FROM bsid
FOR ALL ENTRIES IN it_vbrk
WHERE vbeln = it_vbrk-vbeln.
Get Partial Payment as close payment
LOOP AT it_bsad.
READ TABLE it_bsid WITH KEY vbeln = it_bsad-vbeln.
IF sy-subrc = 0.
DELETE it_bsad.
ENDIF.
ENDLOOP.
LOOP AT it_bsid WHERE blart = 'DZ'.
DELETE it_bsad WHERE vbeln = it_bsid-vbeln.
it_bsad-augbl = it_bsid-belnr.
it_bsad-vbeln = it_bsid-vbeln.
it_bsad-wrbtr = it_bsid-wrbtr.
it_bsad-gjahr = it_bsid-gjahr.
it_bsad-bukrs = it_bsid-bukrs.
it_bsad-blart = it_bsid-blart.
APPEND it_bsad.
DELETE it_bsid.
ENDLOOP.
Get time date user name
READ TABLE it_bsad INDEX 1.
IF sy-subrc = 0.
SELECT belnr gjahr cpudt cputm usnam INTO TABLE it_bkpf
FROM bkpf
FOR ALL ENTRIES IN it_bsad
WHERE bukrs = it_bsad-bukrs AND
belnr = it_bsad-augbl AND
gjahr = it_bsad-gjahr.
ENDIF.
Get Table for FI
REFRESH key_bkpf.
LOOP AT it_bsid WHERE blart = 'RV'.
key_bkpf-belnr = it_bsid-belnr.
key_bkpf-gjahr = it_bsid-gjahr.
key_bkpf-bukrs = it_bsid-bukrs.
key_bkpf-vbeln = it_bsid-vbeln.
key_bkpf-wrbtr = it_bsid-wrbtr.
APPEND key_bkpf.
ENDLOOP.
LOOP AT it_bsad WHERE blart = 'RV'.
key_bkpf-belnr = it_bsad-belnr.
key_bkpf-gjahr = it_bsad-gjahr.
key_bkpf-bukrs = it_bsad-bukrs.
key_bkpf-vbeln = it_bsad-vbeln.
key_bkpf-wrbtr = it_bsad-wrbtr.
APPEND key_bkpf.
ENDLOOP.
ENDIF.
ENDIF.
ENDFORM. " GET_LINK_SALESORDER
&----
*& Form SET_SPECIFIC_FIELD_ATTRIBUTES
&----
text
----
--> p1 text
<-- p2 text
----
FORM set_specific_field_attributes .
DATA: celltab TYPE lvc_t_styl,
index TYPE i.
Populate style variable (FIELD_STYLE) with style properties
*
The COLLINFO field/column has been set to editable in the fieldcatalog...
The following code sets it to be disabled(display only) if 'NETPR'
is gt than 10.
LOOP AT it_header INTO it_header_wa WHERE augbl NE space
OR netwr_vf = 0.
index = sy-tabix.
REFRESH celltab.
PERFORM fill_celltab CHANGING celltab.
INSERT LINES OF celltab INTO TABLE it_header_wa-celltab.
MODIFY it_header FROM it_header_wa INDEX index.
ENDLOOP.
ENDFORM. " SET_SPECIFIC_FIELD_ATTRIBUTES
&----
*& Form BUILD_FIELDCATALOG
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_fieldcatalog.
wa_fieldcat-fieldname = 'AUART'.
wa_fieldcat-seltext_m = 'SO Type'.
wa_fieldcat-col_pos = 1.
wa_fieldcat-outputlen = 4.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
*wa_fieldcat-cell_merge = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'KUNNR'.
wa_fieldcat-seltext_m = 'Customer No'.
wa_fieldcat-col_pos = 2.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
*wa_fieldcat-cell_merge = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-seltext_m = 'Customer Name'.
wa_fieldcat-col_pos = 3.
wa_fieldcat-outputlen = 35.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VBELN'.
wa_fieldcat-seltext_m = 'Sales Order'.
wa_fieldcat-col_pos = 4.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VBELN_VL'.
wa_fieldcat-seltext_m = 'Delivery'.
wa_fieldcat-col_pos = 5.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'VBELN_VF'.
wa_fieldcat-seltext_m = 'Invoice'.
wa_fieldcat-col_pos = 6.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'AUGBL'.
wa_fieldcat-seltext_m = 'Payment'.
wa_fieldcat-col_pos = 10.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'PAYMETHOD'.
wa_fieldcat-seltext_m = 'Payment Method'.
wa_fieldcat-col_pos = 11.
wa_fieldcat-outputlen = 10.
wa_fieldcat-edit = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'BANK_REC'.
wa_fieldcat-seltext_m = 'Bank Recon Ref'.
wa_fieldcat-col_pos = 12.
wa_fieldcat-outputlen = 15.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'CHEQUE'.
wa_fieldcat-seltext_m = 'Cheque No'.
wa_fieldcat-col_pos = 13.
wa_fieldcat-outputlen = 10.
wa_fieldcat-edit = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'NETWR_VF'.
wa_fieldcat-seltext_m = 'Invoice Amt'.
wa_fieldcat-col_pos = 7.
wa_fieldcat-outputlen = 20.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'WAERK_VF'.
wa_fieldcat-seltext_m = 'Invoice Curr'.
wa_fieldcat-col_pos = 8.
wa_fieldcat-outputlen = 5.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'PAY_AMT'.
wa_fieldcat-seltext_m = 'Payment Amt'.
wa_fieldcat-col_pos = 14.
wa_fieldcat-outputlen = 20.
wa_fieldcat-edit = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'BALANCE'.
wa_fieldcat-seltext_m = 'Balance Amt'.
wa_fieldcat-col_pos = 9.
wa_fieldcat-outputlen = 20.
wa_fieldcat-emphasize = 'X'.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'REASON'.
wa_fieldcat-seltext_m = 'Reason'.
wa_fieldcat-col_pos = 15.
wa_fieldcat-outputlen = 40.
wa_fieldcat-edit = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'COLLINFO'.
wa_fieldcat-seltext_m = 'Collection Info'.
wa_fieldcat-col_pos = 16.
wa_fieldcat-outputlen = 14.
wa_fieldcat-edit = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'BATCH'.
wa_fieldcat-seltext_m = 'Batch No'.
wa_fieldcat-col_pos = 17.
wa_fieldcat-outputlen = 20.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'PAY_BY'.
wa_fieldcat-seltext_m = 'Payment User Id'.
wa_fieldcat-col_pos = 18.
wa_fieldcat-outputlen = 12.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'PAY_DATE'.
wa_fieldcat-seltext_m = 'Payment Date'.
wa_fieldcat-col_pos = 19.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'PAY_TIME'.
wa_fieldcat-seltext_m = 'Payment Time'.
wa_fieldcat-col_pos = 20.
wa_fieldcat-outputlen = 10.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERNAM'.
wa_fieldcat-seltext_m = 'User Id'.
wa_fieldcat-col_pos = 21.
wa_fieldcat-outputlen = 12.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERDAT'.
wa_fieldcat-seltext_m = 'Date'.
wa_fieldcat-col_pos = 22.
wa_fieldcat-outputlen = 8.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'ERZET'.
wa_fieldcat-seltext_m = 'Time'.
wa_fieldcat-col_pos = 23.
wa_fieldcat-outputlen = 6.
wa_fieldcat-emphasize = 'X'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " BUILD_FIELDCATALOG
&----
*& Form BUILD_LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM build_layout .
Set layout field for field attributes(i.e. input/output)
gd_layout-stylefname = 'CELLTAB'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-cell_merge = 'Y'.
gd_layout-no_merging = space.
gd_layout-excp_fname = 'LIGHT'.
gd_layout-sel_mode = 'A'.
gd_layout-zebra = 'X'.
ENDFORM. " BUILD_LAYOUT
&----
*& Form DISPLAY_ALV_REPORT
&----
text
----
--> p1 text
<-- p2 text
----
FORM display_alv_report .
gd_repid = sy-repid.
it_data[] = it_header[].
sort it_data by auart kunnr.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = gd_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT = gd_layout
IT_FIELDCAT = it_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = gt_sort[]
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_data
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = gd_repid
i_callback_user_command = 'USER_COMMAND'
is_layout_lvc = gd_layout
it_fieldcat_lvc = it_fieldcat
IT_SORT_LVC = gt_sort
i_save = 'X'
TABLES
t_outtab = it_header
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DISPLAY_ALV_REPORT
&----
*& Form FILL_CELLTAB
&----
text
----
<--P_CELLTAB text
----
FORM fill_celltab CHANGING pt_celltab TYPE lvc_t_styl.
DATA: ls_celltab TYPE lvc_s_styl.
ls_celltab-fieldname = 'PAYMETHOD'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'CHEQUE'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'PAY_AMT'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'REASON'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'COLLINFO'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ENDFORM. " FILL_CELLTAB
&----
*& Form SORT_BUILD
&----
text
----
-->P_GT_SORT[] text
----
FORM sort_build USING E06_LT_SORT TYPE SLIS_T_SORTINFO_ALV. " LVC_T_SORT.
DATA: ls_sort TYPE slis_sortinfo_alv.
CLEAR ls_sort.
ls_sort-fieldname = 'AUART'.
ls_sort-spos = 1.
ls_sort-up = 'X'.
APPEND ls_sort TO e06_lt_sort.
ls_sort-fieldname = 'KUNNR'.
ls_sort-spos = 2.
ls_sort-up = 'X'.
APPEND ls_sort TO e06_lt_sort.
ENDFORM. " SORT_BUILD
10-16-2008 1:26 PM
Hi Eric,
I have found the mistake in my code. Actually while filling the field catalogue I have not filled the field catalogue table in serial manner.That is why cells were not merging.
Also I came to know that, cell merging only takes place when all the columns are in display mode. If any of the columns is in edit mode then also merging does not take place.
Lastly, merging is not possible for the column which contains amount field.
Hope you find my reply useful enough.
Thanks & Regards,
Suneel Jadon
10-16-2008 1:27 PM