Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

sap alv cell merge problem

Former Member
0 Kudos

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

6 REPLIES 6

JozsefSzikszai
Active Contributor
0 Kudos

instead of X try to add Y to cell_merge.

0 Kudos

Sorry Eric, it did not worked.

Thanks

Suneel

0 Kudos

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?

0 Kudos

&----


*& 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

0 Kudos

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

Former Member
0 Kudos

Solve by myself. Solution is on above thread.