‎2008 Jun 26 6:35 AM
Hi
TYPES : BEGIN OF TY_MARA.
INCLUDE STRUCTURE MARA.
TYPES : MARK(1),
END OF TY_MARA.
data : it_mara type standard table of TY_MARA,
wa_mara type TY_MARA.
select * from mara into table it_mara up to 20 rows.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
* IT_FIELDCAT = IT_FIELDCAT[]
I_GRID_TITLE = TITLE
IS_LAYOUT = LAYOUT
I_CALLBACK_PF_STATUS_SET = C_PF_STAT
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_STRUCTURE_NAME = 'MARA'
TABLES
T_OUTTAB = IT_MARA
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
ENDIF.
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM USER_COMMAND USING RUCOMM TYPE SY-UCOMM
SELECT_FIELD TYPE SLIS_SELFIELD.
BREAK-POINT.
IF RUCOMM = 'SAVE'.
BREAK-POINT.
LOOP AT IT_FINAL INTO WA_FINAL WHERE MARK = 'X'.
APPEND WA_FINAL TO IT_FINAL_SAVE.
CLEAR WA_FINAL.
ENDLOOP.
* READ TABLE IT_FINAL INTO WA_FINAL INDEX SELECT_FIELD-TABINDEX .
PERFORM RESUSE_ALV_POPUP.
PERFORM DB_UPDATE.
ENDIF.
ENDFORM. " USER_COMMAND
HERE WHEN MY USER COMMAN FIRES
SUPPOSE I HAVE MARK 1 2 AND 4 LINE
I M NOT GETTING MARK FIELD WITH 'X'.
WHAT I WANT IS WAT EVER FROM THE ALV GRID IS MARK I WANT TO DISPLAY IN A ALV POP UP DISPLAY
BUT MY MARK FIELD IS NOT UPDATING WITH USER COMMAND SAVE.
pls help me in this
points will be definately rewarded
regards
rajan.
‎2008 Jun 26 6:43 AM
HI Friend,
To get selected rows in REUSE_ALV
Pass that field name (MARK) in BOX_FIELDNAME of layout, internal table name (ty_mara) BOX_TABNAME.
In user command you will get selected rows with that field nameu2019s value = u2018Xu2019.
Hope it will solve your problem.
Regards
Krishnendu
‎2008 Jun 26 6:57 AM
Hi Krishnendu
i have put box fieldname and box tabname but still its not working
i m not getting my mark field = 'X' though i mark few fields
points assured
Regards
rajan
‎2008 Jun 26 6:59 AM
in USER_COMMAND subroutine,
set SELECT_FIELD-REFRESH = 'X'.
Just above the BREAK-point.
No need to call PERFORM RESUSE_ALV_POPUP - if it is calling reuse_alv_grid_diaplay again.
Reward if useful.
‎2008 Jun 26 7:11 AM
HI RICHA
my requirement is like that i need to pop up the selected values i have implement the refresh
but still not getting...
pls help me on this
points assured
regards
rajan
‎2008 Jun 26 7:07 AM
Something is strange in your code.
You are passing IT_MARA as outtab.
You are checking for MARK in IT_FINAL. Please check this...
Regards,
Lakshmi.
‎2008 Jun 26 7:14 AM
Hi lakshmi
i hv not right the actual code i hv just put an scenario regarding the problem that i m facing
regards
rajan
‎2008 Jun 26 7:29 AM
Can you place your actual code here??
In layout Boxfieldname should be specified. If it is done, after selecting a row that field is marked as X.
Regards,
Lakshmi.
‎2008 Jun 26 7:39 AM
hi laksmi
i hv put the actual code
FORM user command is at the last
kindly check it
Thanks & regards
rajan
‎2008 Jun 26 7:08 AM
hi,
use in usercommand form.
rs_selfield-refresh = 'X'.
/* this makes the changes which are done in grid are reflected back in to internal table./*
Rgds.,
subash
‎2008 Jun 26 7:28 AM
Hi Friend,
It should work. Check the table name which you are passing in REUSE_ALV...and whcih are reading in user command...
Both are same or not.
Regards
Krishnendu
‎2008 Jun 26 7:38 AM
Hi Krishnendu
both is same at reuse alv and in user command
i m putting my actual code..
just check it out..
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Report ZREP_DCC
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZREP_DCCREC.
*=============== TYPE-POOLS
TYPE-POOLS : SLIS.
*=============== TABLES
TABLES : BKPF.
*==============================================================================
* DATA TYPE DECLARATION
*==============================================================================
TYPES: BEGIN OF TY_RBKP,
BELNR TYPE RBKP-BELNR,
GJAHR TYPE RBKP-GJAHR,
BLART TYPE RBKP-BLART,
BLDAT TYPE RBKP-BLDAT,
BUDAT TYPE RBKP-BUDAT,
USNAM TYPE RBKP-USNAM,
CPUDT TYPE RBKP-CPUDT,
CPUTM TYPE RBKP-CPUTM,
BUKRS TYPE RBKP-BUKRS,
LIFNR TYPE RBKP-LIFNR,
WAERS TYPE RBKP-WAERS,
KURSF TYPE RBKP-KURSF,
RMWWR TYPE RBKP-RMWWR,
WMWST1 TYPE RBKP-WMWST1,
RBSTAT TYPE RBKP-RBSTAT,
REINDAT TYPE RBKP-REINDAT,
NAME1 TYPE LFA1-NAME1,
MARK(1),
DEPARTMENT(40),
END OF TY_RBKP,
BEGIN OF TY_VBKPF,
BUKRS TYPE VBKPF-BUKRS,
BELNR TYPE VBKPF-BELNR,
GJAHR TYPE VBKPF-GJAHR,
BSTAT TYPE VBKPF-BSTAT,
BLART TYPE VBKPF-BLART,
BLDAT TYPE VBKPF-BLDAT,
BUDAT TYPE VBKPF-BUDAT,
CPUDT TYPE VBKPF-CPUDT,
CPUTM TYPE VBKPF-CPUTM,
USNAM TYPE VBKPF-USNAM,
TCODE TYPE VBKPF-TCODE,
XBLNR TYPE VBKPF-XBLNR,
WAERS TYPE VBKPF-WAERS,
KURSF TYPE VBKPF-KURSF,
REINDAT TYPE VBKPF-REINDAT,
END OF TY_VBKPF,
BEGIN OF TY_VBSEGK,
BELNR TYPE VBSEGK-BELNR,
GJAHR TYPE VBSEGK-GJAHR,
BZKEY TYPE VBSEGK-BZKEY,
BUKRS TYPE VBSEGK-BUKRS,
DMBTR TYPE VBSEGK-DMBTR,
WMWST TYPE VBSEGK-WMWST,
LIFNR TYPE VBSEGK-LIFNR,
END OF TY_VBSEGK,
BEGIN OF TY_USER_ADDR,
BNAME TYPE USR21-BNAME,
DEPARTMENT TYPE ADCP-DEPARTMENT,
END OF TY_USER_ADDR ,
BEGIN OF TY_LFA1,
LIFNR TYPE LFA1-LIFNR,
NAME1 TYPE LFA1-NAME1,
END OF TY_LFA1,
BEGIN OF TY_BSIK,
BUKRS TYPE BSIK-BUKRS,
LIFNR TYPE BSIK-LIFNR,
AUGBL TYPE BSIK-AUGBL,
GJAHR TYPE BSIK-GJAHR,
BELNR TYPE BSIK-BELNR,
BUZEI TYPE BSIK-BUZEI,
BUDAT TYPE BSIK-BUDAT,
BLDAT TYPE BSIK-BLDAT,
CPUDT TYPE BSIK-CPUDT,
WAERS TYPE BSIK-WAERS,
XBLNR TYPE BSIK-XBLNR,
BLART TYPE BSIK-BLART,
DMBTR TYPE BSIK-DMBTR,
WMWST TYPE BSIK-WMWST,
BSTAT TYPE BSIK-BSTAT,
END OF TY_BSIK,
BEGIN OF TY_BKPF,
BUKRS TYPE BKPF-BUKRS,
BELNR TYPE BKPF-BELNR,
GJAHR TYPE BKPF-GJAHR,
BLART TYPE BKPF-BLART,
BLDAT TYPE BKPF-BLDAT,
BUDAT TYPE BKPF-BUDAT,
CPUDT TYPE BKPF-CPUDT,
CPUTM TYPE BKPF-CPUTM,
USNAM TYPE BKPF-USNAM,
TCODE TYPE BKPF-TCODE,
XBLNR TYPE BKPF-XBLNR,
WAERS TYPE BKPF-WAERS,
KURSF TYPE BKPF-KURSF,
BSTAT TYPE BKPF-BSTAT,
AWKEY TYPE BKPF-AWKEY,
REINDAT TYPE BKPF-REINDAT,
END OF TY_BKPF.
*==============================================================================
* DATA OBJECT DECLARATION
*==============================================================================
DATA : IT_RBKP TYPE STANDARD TABLE OF TY_RBKP,
WA_RBKP TYPE TY_RBKP,
IT_RBKP_DEL TYPE STANDARD TABLE OF TY_RBKP,
WA_RBKP_DEL TYPE TY_RBKP,
IT_VBKPF TYPE STANDARD TABLE OF TY_VBKPF,
WA_VBKPF TYPE TY_VBKPF,
IT_VBSEGK TYPE STANDARD TABLE OF TY_VBSEGK,
WA_VBSEGK TYPE TY_VBSEGK,
IT_USER_ADDR TYPE STANDARD TABLE OF TY_USER_ADDR ,
WA_USER_ADDR TYPE TY_USER_ADDR ,
IT_LFA1 TYPE STANDARD TABLE OF TY_LFA1,
WA_LFA1 TYPE TY_LFA1,
IT_BSIK TYPE STANDARD TABLE OF TY_BSIK,
WA_BSIK TYPE TY_BSIK,
IT_BKPF TYPE STANDARD TABLE OF TY_BKPF,
WA_BKPF TYPE TY_BKPF,
IT_ZDCC_RST TYPE STANDARD TABLE OF ZDCC_RST,
WA_ZDCC_RST TYPE ZDCC_RST,
IT_FINAL TYPE STANDARD TABLE OF TY_RBKP,
WA_FINAL TYPE TY_RBKP,
IT_FINAL_SAVE TYPE STANDARD TABLE OF TY_RBKP,
WA_FINAL_SAVE TYPE TY_RBKP.
*==============================================================================
* DATA DECLARATION FOR ALV
*==============================================================================
DATA: G_REPID LIKE SY-REPID, " FOR PASSING REPORT ID
IT_HEADER TYPE SLIS_T_LISTHEADER, " FOR PASSING HEADER'
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, " FOR PASSING FIELDCAT VALUE
LAYOUT TYPE SLIS_LAYOUT_ALV,
C_PF_STAT TYPE SLIS_FORMNAME VALUE 'PF_STAT',
C_USER_CMD TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.
DATA: I_SELFIELD TYPE SLIS_SELFIELD,
W_EXIT(1) TYPE C.
*==============================================================================
* SELECTION CRITERIA
*==============================================================================
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TX_B1 .
SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(15) TX_BUKRS.
SELECT-OPTIONS : S_BUKRS FOR BKPF-BUKRS NO INTERVALS NO-EXTENSION OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(15) TX_BUDAT.
SELECT-OPTIONS : S_BUDAT FOR BKPF-BUDAT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
*==============================================================================
* INITIALIZATION
*==============================================================================
INITIALIZATION .
TX_B1 = 'Report Specification'.
TX_BUKRS = 'Company Code'.
TX_BUDAT = 'Posting Date'.
G_REPID = SY-REPID.
*==============================================================================
* START-OF-SELECTION.
*==============================================================================
START-OF-SELECTION.
PERFORM GET_DATA.
IF IT_FINAL IS NOT INITIAL.
PERFORM LAYOUT_FUNCTIONALITY USING LAYOUT.
PERFORM FIELD_CATALOG USING IT_FIELDCAT[].
PERFORM RESUSE_ALV_GRID_DISPLAY.
ELSE.
MESSAGE 'No Data To Display' TYPE 'S' .
LEAVE LIST-PROCESSING.
ENDIF.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
FORM GET_DATA .
CLEAR : IT_RBKP,
IT_RBKP_DEL,
IT_LFA1,
IT_ZDCC_RST,
IT_VBKPF,
IT_BKPF,
IT_BSIK,
IT_FINAL.
REFRESH : IT_RBKP,
IT_RBKP_DEL,
IT_LFA1,
IT_ZDCC_RST,
IT_VBKPF,
IT_BKPF,
IT_BSIK,
IT_FINAL.
*******************QUERY START FOR RBKP DOCUMENT*****************************
SELECT BELNR GJAHR BLART BLDAT BUDAT USNAM CPUDT CPUTM
BUKRS LIFNR WAERS KURSF RMWWR WMWST1 RBSTAT REINDAT
FROM RBKP INTO TABLE IT_RBKP
WHERE BUKRS IN S_BUKRS
AND BUDAT IN S_BUDAT
AND RBSTAT = 'A'.
**************QUERY END FOR RBKP DOCUMENT*********************************
**************QUERY START FOR IPMS DOCUMENT***************************
SELECT BUKRS BELNR GJAHR BSTAT BLART BLDAT BUDAT
CPUDT CPUTM USNAM TCODE XBLNR WAERS KURSF REINDAT
FROM VBKPF INTO TABLE IT_VBKPF
WHERE BUKRS IN S_BUKRS
AND BUDAT IN S_BUDAT
AND BSTAT = 'V'
AND USNAM = 'XI_RFC'
AND ( TCODE = 'FV60' OR TCODE = 'FV65' ).
* AND XBLNR <> ''.
IF IT_VBKPF IS NOT INITIAL.
SELECT BELNR GJAHR BZKEY BUKRS DMBTR WMWST LIFNR FROM VBSEGK
INTO TABLE IT_VBSEGK
FOR ALL ENTRIES IN IT_VBKPF
WHERE BELNR = IT_VBKPF-BELNR
AND GJAHR = IT_VBKPF-GJAHR
AND BUKRS = IT_VBKPF-BUKRS.
ENDIF.
***************QUERY END FOR IPMS DOCUMENT***************************
***************QUERY START FOR DOWN PAYMENT DOCUMENT*************************
SELECT BUKRS LIFNR AUGBL GJAHR BELNR BUZEI BUDAT BLDAT
CPUDT WAERS XBLNR BLART DMBTR WMWST BSTAT
FROM BSIK INTO TABLE IT_BSIK
WHERE BUKRS IN S_BUKRS
AND BUDAT IN S_BUDAT
AND BSTAT = 'S'.
IF IT_BSIK IS NOT INITIAL.
SELECT BUKRS BELNR GJAHR BLART BLDAT BUDAT CPUDT CPUTM USNAM
TCODE XBLNR WAERS KURSF BSTAT AWKEY REINDAT
FROM BKPF INTO TABLE IT_BKPF
FOR ALL ENTRIES IN IT_BSIK
WHERE BELNR = IT_BSIK-BELNR
AND GJAHR = IT_BSIK-GJAHR
AND BUKRS = IT_BSIK-BUKRS.
ENDIF.
***************QUERY END FOR DOWN PAYMENT DOCUMENT*************************
*********** FILLING THE FINAL TABLE
APPEND LINES OF IT_RBKP TO IT_FINAL.
LOOP AT IT_VBKPF INTO WA_VBKPF.
CLEAR WA_VBSEGK.
READ TABLE IT_VBSEGK INTO WA_VBSEGK WITH KEY BELNR = WA_VBKPF-BELNR
GJAHR = WA_VBKPF-GJAHR
BUKRS = WA_VBKPF-BUKRS.
IF SY-SUBRC = 0.
WA_FINAL-RMWWR = WA_VBSEGK-DMBTR + WA_VBSEGK-WMWST .
WA_FINAL-WMWST1 = WA_VBSEGK-WMWST.
WA_FINAL-LIFNR = WA_VBSEGK-LIFNR.
ENDIF.
WA_FINAL-BUKRS = WA_VBKPF-BUKRS .
WA_FINAL-BELNR = WA_VBKPF-BELNR .
WA_FINAL-GJAHR = WA_VBKPF-GJAHR .
WA_FINAL-RBSTAT = WA_VBKPF-BSTAT . " (V) 'A'."
WA_FINAL-BLART = WA_VBKPF-BLART .
WA_FINAL-BLDAT = WA_VBKPF-BLDAT .
WA_FINAL-BUDAT = WA_VBKPF-BUDAT .
WA_FINAL-CPUDT = WA_VBKPF-CPUDT .
WA_FINAL-CPUTM = WA_VBKPF-CPUTM .
WA_FINAL-USNAM = WA_VBKPF-USNAM .
* WA_FINAL-TCODE = WA_VBKPF-TCODE .
* WA_FINAL-XBLNR = WA_VBKPF-XBLNR .
WA_FINAL-WAERS = WA_VBKPF-WAERS .
WA_FINAL-KURSF = WA_VBKPF-KURSF .
WA_FINAL-REINDAT = WA_VBKPF-REINDAT.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDLOOP.
LOOP AT IT_BSIK INTO WA_BSIK.
CLEAR WA_BKPF.
READ TABLE IT_BKPF INTO WA_BKPF WITH KEY BUKRS = WA_BSIK-BUKRS
BELNR = WA_BSIK-BELNR
GJAHR = WA_BSIK-GJAHR.
IF SY-SUBRC = 0.
WA_FINAL-USNAM = WA_BKPF-USNAM .
WA_FINAL-CPUDT = WA_BKPF-CPUDT .
WA_FINAL-CPUTM = WA_BKPF-CPUTM .
WA_FINAL-KURSF = WA_BKPF-KURSF .
* WA_FINAL-RMWWR = WA_BKPF-RMWWR .
WA_FINAL-REINDAT = WA_BKPF-REINDAT.
ENDIF.
WA_FINAL-BELNR = WA_BSIK-BELNR.
WA_FINAL-GJAHR = WA_BSIK-GJAHR .
WA_FINAL-BLART = WA_BSIK-BLART .
WA_FINAL-BLDAT = WA_BSIK-BLDAT .
WA_FINAL-BUDAT = WA_BSIK-BUDAT .
WA_FINAL-BUKRS = WA_BSIK-BUKRS .
WA_FINAL-LIFNR = WA_BSIK-LIFNR .
WA_FINAL-WAERS = WA_BSIK-WAERS .
WA_FINAL-WMWST1 = WA_BSIK-WMWST.
WA_FINAL-RBSTAT = WA_BSIK-BSTAT.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDLOOP.
SORT IT_FINAL BY BELNR GJAHR.
IF IT_FINAL IS NOT INITIAL.
IT_RBKP_DEL[] = IT_FINAL[].
SORT IT_RBKP_DEL BY USNAM.
DELETE ADJACENT DUPLICATES FROM IT_RBKP_DEL COMPARING USNAM.
SELECT BNAME DEPARTMENT FROM USER_ADDR
INTO TABLE IT_USER_ADDR
FOR ALL ENTRIES IN IT_RBKP_DEL
WHERE BNAME = IT_RBKP_DEL-USNAM.
CLEAR IT_RBKP_DEL.
REFRESH IT_RBKP_DEL.
IT_RBKP_DEL[] = IT_FINAL[].
SORT IT_RBKP_DEL BY LIFNR.
DELETE ADJACENT DUPLICATES FROM IT_RBKP_DEL COMPARING LIFNR.
SELECT LIFNR NAME1 FROM LFA1
INTO TABLE IT_LFA1
FOR ALL ENTRIES IN IT_RBKP_DEL
WHERE LIFNR = IT_RBKP_DEL-LIFNR.
SELECT * FROM ZDCC_RST INTO TABLE IT_ZDCC_RST
FOR ALL ENTRIES IN IT_FINAL
WHERE BELNR = IT_FINAL-BELNR
AND GJAHR = IT_FINAL-GJAHR.
ENDIF.
LOOP AT IT_FINAL INTO WA_FINAL.
READ TABLE IT_ZDCC_RST INTO WA_ZDCC_RST WITH KEY BUKRS = WA_FINAL-BUKRS
BELNR = WA_FINAL-BELNR
GJAHR = WA_FINAL-GJAHR.
* LIFNR = WA_FINAL-LIFNR.
IF SY-SUBRC = 0.
DELETE IT_FINAL WHERE BUKRS = WA_FINAL-BUKRS
AND BELNR = WA_FINAL-BELNR
AND GJAHR = WA_FINAL-GJAHR . "AND LIFNR = WA_FINAL-LIFNR.
CLEAR : WA_RBKP , WA_ZDCC_RST,WA_FINAL.
ELSE.
READ TABLE IT_USER_ADDR INTO WA_USER_ADDR WITH KEY BNAME = WA_FINAL-USNAM.
IF SY-SUBRC = 0.
WA_FINAL-DEPARTMENT = WA_USER_ADDR-DEPARTMENT.
ENDIF.
READ TABLE IT_LFA1 INTO WA_LFA1 WITH KEY LIFNR = WA_FINAL-LIFNR.
IF SY-SUBRC = 0.
WA_FINAL-NAME1 = WA_LFA1-NAME1.
ENDIF.
MODIFY IT_FINAL FROM WA_FINAL TRANSPORTING NAME1 DEPARTMENT.
CLEAR : WA_RBKP ,WA_USER_ADDR,WA_LFA1, WA_ZDCC_RST,WA_FINAL.
ENDIF.
ENDLOOP.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form DB_UPDATE
*&---------------------------------------------------------------------*
FORM DB_UPDATE.
IF IT_FINAL_SAVE IS NOT INITIAL.
LOOP AT IT_FINAL_SAVE INTO WA_FINAL WHERE MARK = 'X'.
WA_ZDCC_RST-BELNR = WA_FINAL-BELNR .
WA_ZDCC_RST-GJAHR = WA_FINAL-GJAHR .
WA_ZDCC_RST-BLART = WA_FINAL-BLART .
WA_ZDCC_RST-BLDAT = WA_FINAL-BLDAT .
WA_ZDCC_RST-BUDAT = WA_FINAL-BUDAT .
WA_ZDCC_RST-USNAM = WA_FINAL-USNAM .
WA_ZDCC_RST-DEPARTMENT = WA_FINAL-DEPARTMENT.
WA_ZDCC_RST-CPUDT = WA_FINAL-CPUDT .
WA_ZDCC_RST-CPUTM = WA_FINAL-CPUTM .
WA_ZDCC_RST-BUKRS = WA_FINAL-BUKRS .
WA_ZDCC_RST-LIFNR = WA_FINAL-LIFNR .
WA_ZDCC_RST-WAERS = WA_FINAL-WAERS .
WA_ZDCC_RST-KURSF = WA_FINAL-KURSF .
WA_ZDCC_RST-RMWWR = WA_FINAL-RMWWR .
WA_ZDCC_RST-WMWST = WA_FINAL-WMWST1.
WA_ZDCC_RST-RBSTAT = WA_FINAL-RBSTAT.
WA_ZDCC_RST-REINDAT = WA_FINAL-REINDAT.
WA_ZDCC_RST-NAME1 = WA_FINAL-NAME1 .
WA_ZDCC_RST-RECEIVED = WA_FINAL-MARK.
WA_ZDCC_RST-REC_DATE = SY-DATUM.
WA_ZDCC_RST-REC_TIME = SY-UZEIT.
WA_ZDCC_RST-REC_UNAME = SY-UNAME.
* MODIFY ZDCC_RST FROM WA_ZDCC_RST.
INSERT ZDCC_RST FROM WA_ZDCC_RST.
COMMIT WORK.
CLEAR : WA_ZDCC_RST,
WA_FINAL.
ENDLOOP.
ELSE.
MESSAGE 'No Data Selected' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " DB_UPDATE
*&---------------------------------------------------------------------*
*& Form RESUSE_ALV_POPUP
*&---------------------------------------------------------------------*
FORM RESUSE_ALV_POPUP .
* DELETE IT_FINAL WHERE MARK <> 'X'.
IF IT_FINAL IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'Dashboard For DCC (Received Documents)'
* I_SELECTION = 'X'
* I_ALLOW_NO_SELECTION =
* I_ZEBRA = ' '
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
I_CHECKBOX_FIELDNAME = 'MARK'
* I_LINEMARK_FIELDNAME =
* I_SCROLL_TO_SEL_LINE = 'X'
I_TABNAME = 'IT_FINAL'
* I_STRUCTURE_NAME =
IT_FIELDCAT = IT_FIELDCAT[]
* IT_EXCLUDING =
* I_CALLBACK_PROGRAM =
* I_CALLBACK_USER_COMMAND =
* IS_PRIVATE =
IMPORTING
* ES_SELFIELD =
E_EXIT = W_EXIT
TABLES
T_OUTTAB = IT_FINAL_SAVE
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.
ENDIF.
ENDFORM. " RESUSE_ALV_POPUP
*&---------------------------------------------------------------------*
*& Form LAYOUT_FUNCTIONALITY
*&---------------------------------------------------------------------*
FORM LAYOUT_FUNCTIONALITY USING P_IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
LAYOUT-DETAIL_POPUP = 'X'.
LAYOUT-NO_VLINE = '1'.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LAYOUT-BOX_FIELDNAME = 'MARK'.
LAYOUT-BOX_TABNAME = 'IT_FINAL'.
ENDFORM. " LAYOUT_FUNCTIONALITY
*&---------------------------------------------------------------------*
*& Form field_catalog
*&---------------------------------------------------------------------*
FORM FIELD_CATALOG USING P_IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
WA_FIELDCAT-COL_POS = 1.
WA_FIELDCAT-FIELDNAME = 'BELNR'.
WA_FIELDCAT-SELTEXT_L = 'LIV NO'.
WA_FIELDCAT-REF_TABNAME = 'RBKP'.
WA_FIELDCAT-OUTPUTLEN = '20'.
WA_FIELDCAT-TABNAME = 'IT_FINAL'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 2.
WA_FIELDCAT-FIELDNAME = 'BUDAT'.
WA_FIELDCAT-SELTEXT_L = 'Date'.
WA_FIELDCAT-REF_TABNAME = 'RBKP'.
WA_FIELDCAT-OUTPUTLEN = '20'.
WA_FIELDCAT-TABNAME = 'IT_FINAL'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 3.
WA_FIELDCAT-FIELDNAME = 'NAME1'.
WA_FIELDCAT-SELTEXT_L = 'Beneficiary'.
WA_FIELDCAT-REF_TABNAME = 'LFA1'.
WA_FIELDCAT-OUTPUTLEN = '35'.
WA_FIELDCAT-TABNAME = 'IT_FINAL'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 4.
WA_FIELDCAT-FIELDNAME = 'DEPARTMENT'.
WA_FIELDCAT-SELTEXT_L = 'Department'.
WA_FIELDCAT-REF_TABNAME = 'RBKP'.
WA_FIELDCAT-OUTPUTLEN = '10'.
WA_FIELDCAT-TABNAME = 'IT_FINAL'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 5.
WA_FIELDCAT-FIELDNAME = 'MARK'.
WA_FIELDCAT-SELTEXT_L = 'Received'.
WA_FIELDCAT-CHECKBOX = 'X'.
WA_FIELDCAT-EDIT = 'X'.
WA_FIELDCAT-TABNAME = 'IT_FINAL'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " FIELD_CATALOG
*&---------------------------------------------------------------------*
*& Form ALV_GRID_DISPLAY
*&---------------------------------------------------------------------*
FORM RESUSE_ALV_GRID_DISPLAY.
DATA TITLE(70) TYPE C.
TITLE = 'Dashboard For DCC (Received Documents)'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
IT_FIELDCAT = IT_FIELDCAT[]
I_GRID_TITLE = TITLE
IS_LAYOUT = LAYOUT
I_CALLBACK_PF_STATUS_SET = C_PF_STAT
I_CALLBACK_USER_COMMAND = C_USER_CMD
* I_SAVE = G_SAVE
* IS_VARIANT = G_VARIANT
* IS_PRINT = ALV_PRINT
TABLES
T_OUTTAB = IT_FINAL
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. "RESUSE_ALV_GRID_DISPLAY
*&---------------------------------------------------------------------*
*& Form PF_STAT
*&---------------------------------------------------------------------*
FORM PF_STAT USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STATUS11'.
ENDFORM. "PF_STAT
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
FORM USER_COMMAND USING RUCOMM TYPE SY-UCOMM
SELECT_FIELD TYPE SLIS_SELFIELD.
SELECT_FIELD-REFRESH = 'X'.
BREAK-POINT.
IF RUCOMM = 'SAVE'.
LOOP AT IT_FINAL INTO WA_FINAL WHERE MARK = 'X'.
APPEND WA_FINAL TO IT_FINAL_SAVE.
CLEAR WA_FINAL.
ENDLOOP.
* READ TABLE IT_FINAL INTO WA_FINAL INDEX SELECT_FIELD-TABINDEX .
PERFORM RESUSE_ALV_POPUP.
PERFORM DB_UPDATE.
ENDIF.
ENDFORM. " USER_COMMAND
‎2008 Jun 26 7:45 AM
Box_fieldname logic will work only for standard selection available in ALV. If you are using checkbox field for selection it will not be updated by standard SAP.
Try selecting a row using the standard selection at the left side of ALV grid, The field MARK will be updated with X.
If you want to capture the checkbox changes, then you need to use funtion code &REFRESH. pass this fcode in EVENT_EXIT.
wa_event_exit-ucomm = '&REFRESH'.
wa_event_exit-after = 'X'.
APPEND wa_event_exit TO it_event_exit.
pass it_event_exit to the FM.
Then in user command, you will get the value X in the selected rows. This calls the standard refresh method and triggers the user_command. So changes will be available in your internal table. This is applicable for all editable fields in ALV using REUSE function module.
Regards,
Lakshmi.
‎2008 Jun 26 7:40 AM
Hi,
your requirement is : you want to pop up the window when mark field in the alv display is selected right?
so first u define that event.
constants: event_top_of_page type slis_formname value 'TOP_OF_PAGE',
event_ucomm type slis_formname value 'USER_COMMAND'.
perform build_ucomm using 'F_UCOMM_ALL_ITEMS'. "user command
then define that form:
form build_ucomm using formname type slis_formname.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = events.
read table events with key name = slis_ev_top_of_page
into ls_event.
if sy-subrc = 0.
move event_top_of_page to ls_event-form.
append ls_event to events.
endif.
read table events with key name = slis_ev_user_command----
> user command.
into ls_event.
if sy-subrc = 0.
move formname to ls_event-form.
append ls_event to events.
endif.
endform.
form f_ucomm_all_items using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
if r_ucomm = '&IC1' or r_ucomm = '&ETA'. "for double click
case rs_selfield-tabname.
when 'IT_OPEN'.
read table it_open index rs_selfield-tabindex.
set parameter id 'BLN' field it_open-belnr. "rs_selfield-value.
set parameter id 'BUK' field it_open-bukrs.
set parameter id 'GJR' field it_open-gjahr.
call transaction 'FB03' and skip first screen.
when 'IT_CLOSE'.
read table it_close index rs_selfield-tabindex.
set parameter id 'BLN' field it_close-belnr.
"rs_selfield-value.
set parameter id 'BUK' field it_close-bukrs.
set parameter id 'GJR' field it_close-gjahr.
call transaction 'FB03' and skip first screen.
endcase.
endif.
endform. "F_UCOMM_ALL_ITEMS
after appending into event itab, it ll be called automatically ,no need to give that in alv_grid_display.
use it..
regards,
diana.
‎2008 Jun 26 7:49 AM
Hi,
one more thing.
u declare mark(1) as checkbox.
then during runtime if u select or it is hardcoded then
if mark = 'X'.
append user command event. in the form
endif.
call that form if mark = 'X'.
check it..