Application Development and Automation 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: 
Read only

problem facing in USER COMMAND

Former Member
0 Likes
1,738

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.

14 REPLIES 14
Read only

Former Member
0 Likes
1,383

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

Read only

0 Likes
1,383

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

Read only

Former Member
0 Likes
1,383

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.

Read only

0 Likes
1,383

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

Read only

Former Member
0 Likes
1,383

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.

Read only

0 Likes
1,383

Hi lakshmi

i hv not right the actual code i hv just put an scenario regarding the problem that i m facing

regards

rajan

Read only

0 Likes
1,383

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.

Read only

0 Likes
1,383

hi laksmi

i hv put the actual code

FORM user command is at the last

kindly check it

Thanks & regards

rajan

Read only

Former Member
0 Likes
1,383

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

Read only

Former Member
0 Likes
1,383

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

Read only

0 Likes
1,383

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


Read only

0 Likes
1,383

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.

Read only

Former Member
0 Likes
1,383

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.

Read only

Former Member
0 Likes
1,383

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..