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

alv

Former Member
0 Likes
773

Hi alv,

I displayed the output using alv grid display.

Here i want check box before the every row of the output.

Now after displaying the output i need to select some of the rows it means i need to check the check box for some rows.

Then those rows whose chechbox is checked are updated into a table.

Please tell me how to get the check box before every or the output and i need to check the check box after displaying the output i.e selecting some rows

thanks in advance

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
741

Hello,

USe this code which is developed similar to ur reequiremnt:


* Internal table to store the final data
DATA: BEGIN OF G_T_OUTTAB OCCURS 0,
        CHECK(1),
        LIFNR LIKE LFA1-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        MATNR LIKE MARA-MATNR,
        EBELN LIKE EKKO-EBELN,
        INFNR LIKE EKPO-INFNR,
        KBETR LIKE KONV-KBETR,
        KSCHL LIKE KONV-KSCHL,
        DATBI LIKE A016-DATBI,
        DATAB LIKE A016-DATAB,
        APLFZ LIKE EINE-APLFZ,
        AEDAT LIKE EKKO-AEDAT,
        STATUS(4),
      END OF G_T_OUTTAB.

FORM DISPLAY_DATA.

* Populating the field catalog to the alv list
  PERFORM FIELDCAT_POPULATION.

* Displaying report in ALV list format
  PERFORM ALV_DISPLAY.

ENDFORM.                    " DISPLAY_DATA

FORM FIELDCAT_POPULATION.

  DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.  " For column heading

  CLEAR : IT_FIELDCAT,
          IT_FIELDCAT[].
* Checkbox
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'CHECK'.
  L_FIELDCAT-SELTEXT_M = TEXT-003.
  L_FIELDCAT-INPUT   = 'X'.
  L_FIELDCAT-EDIT   = 'X'.
  L_FIELDCAT-CHECKBOX = 'X'.
  L_FIELDCAT-COL_POS   = 1.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Vendor
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'LIFNR'.
  L_FIELDCAT-SELTEXT_M = TEXT-002.
  L_FIELDCAT-COL_POS   = 2.
  L_FIELDCAT-KEY = 'X'.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Vendor Name
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'NAME1'.
  L_FIELDCAT-SELTEXT_M = TEXT-004.
  L_FIELDCAT-COL_POS   = 3.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Material
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'MATNR'.
  L_FIELDCAT-SELTEXT_M = TEXT-005.
  L_FIELDCAT-COL_POS   = 4.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Purchase Order
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'EBELN'.
  L_FIELDCAT-SELTEXT_M = TEXT-009.
  L_FIELDCAT-HOTSPOT   = 'X'.
  L_FIELDCAT-COL_POS   = 5.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Info record
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'INFNR'.
  L_FIELDCAT-SELTEXT_M = TEXT-010.
  L_FIELDCAT-COL_POS   = 6.
  L_FIELDCAT-HOTSPOT   = 'X'.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Condition
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'KSCHL'.
  L_FIELDCAT-SELTEXT_M = TEXT-011.
  L_FIELDCAT-COL_POS   = 7.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Prices
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'KBETR'.
  L_FIELDCAT-SELTEXT_M = TEXT-006.
  L_FIELDCAT-COL_POS   = 8.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Start date
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'DATAB'.
  L_FIELDCAT-SELTEXT_M = TEXT-007.
  L_FIELDCAT-COL_POS   = 9.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* End date
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'DATBI'.
  L_FIELDCAT-SELTEXT_M = TEXT-008.
  L_FIELDCAT-COL_POS   = 10.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Planned delivery time
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'APLFZ'.
  L_FIELDCAT-SELTEXT_M = TEXT-012.
  L_FIELDCAT-COL_POS   = 11.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Creation Date
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'AEDAT'.
  L_FIELDCAT-SELTEXT_M = TEXT-013.
  L_FIELDCAT-COL_POS   = 12.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Status
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'STATUS'.
  L_FIELDCAT-SELTEXT_M = TEXT-014.
  L_FIELDCAT-COL_POS   = 13.
  APPEND L_FIELDCAT TO IT_FIELDCAT.

ENDFORM.                    " FIELDCAT_POPULATION
*---------------------------------------------------------------------*
*       FORM user_command                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM
                        SELFIELD TYPE SLIS_SELFIELD.

  DATA: CODE LIKE SY-UCOMM.
  DATA: MODE VALUE 'N'.
  DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
  DATA: CHAR_DATE(8),
        LV_LINES TYPE I,L_FIELD(50),LV_TMP(8).
  DATA: LV_KBETR(13),
        LV_CHAR(2).
  DATA: WA_EINE LIKE EINE.
  DATA: WA_EINA LIKE EINA.
  DATA: LT_A017 LIKE A017 OCCURS 0 WITH HEADER LINE.
  DATA: LT_KONP LIKE Z48V_KONP_DATUM OCCURS 0 WITH HEADER LINE.
  DATA: L_VA_MATKL LIKE MARA-MATKL.

  CLEAR: CHAR_DATE,LT_A017,LV_LINES,L_VA_MATKL.
  REFRESH: LT_A017.


  CASE UCOMM.
    WHEN '&IC1'.   "doubleclick
      IF SELFIELD-FIELDNAME = 'EBELN'.
        READ TABLE G_T_OUTTAB INDEX SELFIELD-TABINDEX.
        IF SY-SUBRC = 0.
          SET PARAMETER ID 'BES' FIELD G_T_OUTTAB-EBELN.
          CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDIF.
      IF SELFIELD-FIELDNAME = 'INFNR'.
        READ TABLE G_T_OUTTAB INDEX SELFIELD-TABINDEX.

        READ TABLE G_T_EINA WITH KEY INFNR = G_T_OUTTAB-INFNR
                                             BINARY SEARCH.
        READ TABLE G_T_EINE WITH KEY INFNR = G_T_OUTTAB-INFNR
                                             BINARY SEARCH.
        READ TABLE G_T_EKKO WITH KEY EBELN = G_T_OUTTAB-EBELN
                                     LIFNR = G_T_OUTTAB-LIFNR
                                     EKORG = G_T_EINE-EKORG
                                     MATNR = G_T_OUTTAB-MATNR.

        SET PARAMETER ID 'LIF' FIELD G_T_OUTTAB-LIFNR.
        SET PARAMETER ID 'MAT' FIELD G_T_OUTTAB-MATNR.
        SET PARAMETER ID 'EKO' FIELD G_T_EINE-EKORG.
        SET PARAMETER ID 'WRK' FIELD G_T_EINE-WERKS.
        SET PARAMETER ID 'INF' FIELD G_T_OUTTAB-INFNR.

        CALL TRANSACTION 'ME13' AND SKIP FIRST SCREEN.

      ENDIF.

    WHEN 'UPDATE'.

      DATA REF1 TYPE REF TO CL_GUI_ALV_GRID.
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
           IMPORTING
                E_GRID = REF1.
      CALL METHOD REF1->CHECK_CHANGED_DATA.

      LOOP AT G_T_OUTTAB WHERE CHECK = 'X'.
        CLEAR: BDCDATA,MESSTAB,WA_EINA,WA_EINE,LT_KONP,L_VA_MATKL.
        REFRESH: BDCDATA,MESSTAB,LT_KONP.
        IF G_T_OUTTAB-STATUS EQ '@0V@'.
          MESSAGE I000(SU) WITH TEXT-015.
          CONTINUE.
        ENDIF.
        IF G_T_OUTTAB-KSCHL = 'PBXX'.
          G_T_OUTTAB-KSCHL = 'PB00'.
        ENDIF.

        READ TABLE G_T_EINA WITH KEY INFNR = G_T_OUTTAB-INFNR
                                       BINARY SEARCH.
        READ TABLE G_T_EINE WITH KEY INFNR = G_T_OUTTAB-INFNR
                                             BINARY SEARCH.
        READ TABLE G_T_EKKO WITH KEY EBELN = G_T_OUTTAB-EBELN
                                     LIFNR = G_T_OUTTAB-LIFNR
                                     EKORG = G_T_EINE-EKORG
                                     MATNR = G_T_OUTTAB-MATNR.
* Warengruppe holen
        SELECT SINGLE MATKL FROM MARA INTO L_VA_MATKL
          WHERE MATNR = G_T_OUTTAB-MATNR.
        CALL FUNCTION 'J_1A_ME_GET_INFORECORD_COND'
             EXPORTING
                  I_EKORG = G_T_EINE-EKORG
                  I_ESOKZ = '0'
                  I_INFNR = G_T_OUTTAB-INFNR
                  I_LIFNR = G_T_EINA-LIFNR
                  I_MATKL = L_VA_MATKL
                  I_MATNR = G_T_EINA-MATNR
                  I_WERKS = G_T_EINE-WERKS
             TABLES
                  TKONP   = LT_KONP.

        IF NOT LT_KONP[] IS INITIAL.
          READ TABLE LT_KONP WITH KEY KSCHL = G_T_OUTTAB-KSCHL.
          IF SY-SUBRC = 0.
          PERFORM BDC_DYNPRO      USING 'Z48M_UPD_COND_VALIDITY' '1000'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'PA_KNUMH'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=ONLI'.
            PERFORM BDC_FIELD       USING 'PA_MATNR'
                                          G_T_EINA-MATNR.
            PERFORM BDC_FIELD       USING 'PA_LIFNR'
                                          G_T_EINA-LIFNR.
            PERFORM BDC_FIELD       USING 'PA_EKORG'
                                          G_T_EINE-EKORG.
            PERFORM BDC_FIELD       USING 'PA_WERKS'
                                          G_T_EINE-WERKS.
            PERFORM BDC_FIELD       USING 'PA_ESOKZ'
                                          '0'.
            PERFORM BDC_FIELD       USING 'PA_KNUMH'
                                          LT_KONP-KNUMH.
            PERFORM BDC_DYNPRO      USING 'SAPMV13A' '0201'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=SICH'.
            WRITE G_T_EKKO-AEDAT TO CHAR_DATE.
            PERFORM BDC_FIELD       USING 'RV13A-DATAB'
                                          CHAR_DATE.
            WRITE G_T_EKKO-AEDAT TO CHAR_DATE.
            ADD 1 TO CHAR_DATE+4(4).
            PERFORM BDC_FIELD       USING 'RV13A-DATBI'
                                          CHAR_DATE.
            CONCATENATE 'KONP-KBETR( 'LT_KONP-KOPOS' )' INTO L_FIELD.
            WRITE: G_T_OUTTAB-KBETR TO LV_KBETR.
            PERFORM BDC_FIELD       USING L_FIELD
                                          LV_KBETR.
FORM ALV_DISPLAY.

* For storing the variant layout
  DATA: IT_VARIANT LIKE DISVARIANT.
* For storing the events
  DATA: IT_EVENTS TYPE SLIS_T_EVENT,
        WA_EVENTS LIKE LINE OF IT_EVENTS.
  REFRESH: IT_EVENTS.
  CLEAR: WA_EVENTS,IT_EVENTS.
  WA_EVENTS-NAME = 'PF_STATUS_SET'.
  WA_EVENTS-FORM = 'STATUS'.
  APPEND WA_EVENTS TO IT_EVENTS .
  CLEAR WA_EVENTS.
  WA_EVENTS-NAME = 'USER_COMMAND'.
  WA_EVENTS-FORM = 'USER_COMMAND'.
  APPEND WA_EVENTS TO IT_EVENTS .
  IT_VARIANT-REPORT  = SY-REPID.
  G_R_LAYOUT-BOX_FIELDNAME = 'CHECK'.

  CLEAR G_T_OUTTAB.
  SORT G_T_OUTTAB.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = IT_VARIANT-REPORT
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
            IT_FIELDCAT             = IT_FIELDCAT
            I_SAVE                  = 'A'
            IS_VARIANT              = IT_VARIANT
            IS_LAYOUT               = G_R_LAYOUT
            IT_EVENTS               = IT_EVENTS
       TABLES
            T_OUTTAB                = G_T_OUTTAB
       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.                    " ALV_DISPLAY

Hope this solves ur problem.#

Regards,

Vasanth

Hi alv,

I displayed the output using alv grid display.

Here i want check box before the every row of the output.

Now after displaying the output i need to select some of the rows it means i need to check the check box for some rows.

Then those rows whose chechbox is checked are updated into a table.

Please tell me how to get the check box before every or the output and i need to check the check box after displaying the output i.e selecting some rows

thanks in advance

5 REPLIES 5
Read only

Former Member
0 Likes
741

check the program BCALV_EDIT_05

Message was edited by:

Rajesh

Read only

Former Member
0 Likes
741

BCALV_EDIT_04

Modify your code like this.

ElseiF w_fcat1-fieldname = 'CHEK_BOX'.

w_fcat1-col_pos = 1.

w_fcat1-seltext_l = 'EDIT'.

w_fcat1-Checkbox = 'X'.

w_fcat1-EDIT = 'X'.

MODIFY t_fcat1 FROM w_fcat1.

Regards,

Santosh

Read only

Former Member
0 Likes
742

Hello,

USe this code which is developed similar to ur reequiremnt:


* Internal table to store the final data
DATA: BEGIN OF G_T_OUTTAB OCCURS 0,
        CHECK(1),
        LIFNR LIKE LFA1-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        MATNR LIKE MARA-MATNR,
        EBELN LIKE EKKO-EBELN,
        INFNR LIKE EKPO-INFNR,
        KBETR LIKE KONV-KBETR,
        KSCHL LIKE KONV-KSCHL,
        DATBI LIKE A016-DATBI,
        DATAB LIKE A016-DATAB,
        APLFZ LIKE EINE-APLFZ,
        AEDAT LIKE EKKO-AEDAT,
        STATUS(4),
      END OF G_T_OUTTAB.

FORM DISPLAY_DATA.

* Populating the field catalog to the alv list
  PERFORM FIELDCAT_POPULATION.

* Displaying report in ALV list format
  PERFORM ALV_DISPLAY.

ENDFORM.                    " DISPLAY_DATA

FORM FIELDCAT_POPULATION.

  DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.  " For column heading

  CLEAR : IT_FIELDCAT,
          IT_FIELDCAT[].
* Checkbox
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'CHECK'.
  L_FIELDCAT-SELTEXT_M = TEXT-003.
  L_FIELDCAT-INPUT   = 'X'.
  L_FIELDCAT-EDIT   = 'X'.
  L_FIELDCAT-CHECKBOX = 'X'.
  L_FIELDCAT-COL_POS   = 1.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Vendor
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'LIFNR'.
  L_FIELDCAT-SELTEXT_M = TEXT-002.
  L_FIELDCAT-COL_POS   = 2.
  L_FIELDCAT-KEY = 'X'.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Vendor Name
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'NAME1'.
  L_FIELDCAT-SELTEXT_M = TEXT-004.
  L_FIELDCAT-COL_POS   = 3.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Material
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'MATNR'.
  L_FIELDCAT-SELTEXT_M = TEXT-005.
  L_FIELDCAT-COL_POS   = 4.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Purchase Order
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'EBELN'.
  L_FIELDCAT-SELTEXT_M = TEXT-009.
  L_FIELDCAT-HOTSPOT   = 'X'.
  L_FIELDCAT-COL_POS   = 5.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Info record
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'INFNR'.
  L_FIELDCAT-SELTEXT_M = TEXT-010.
  L_FIELDCAT-COL_POS   = 6.
  L_FIELDCAT-HOTSPOT   = 'X'.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Condition
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'KSCHL'.
  L_FIELDCAT-SELTEXT_M = TEXT-011.
  L_FIELDCAT-COL_POS   = 7.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Prices
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'KBETR'.
  L_FIELDCAT-SELTEXT_M = TEXT-006.
  L_FIELDCAT-COL_POS   = 8.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Start date
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'DATAB'.
  L_FIELDCAT-SELTEXT_M = TEXT-007.
  L_FIELDCAT-COL_POS   = 9.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* End date
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'DATBI'.
  L_FIELDCAT-SELTEXT_M = TEXT-008.
  L_FIELDCAT-COL_POS   = 10.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Planned delivery time
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'APLFZ'.
  L_FIELDCAT-SELTEXT_M = TEXT-012.
  L_FIELDCAT-COL_POS   = 11.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Creation Date
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'AEDAT'.
  L_FIELDCAT-SELTEXT_M = TEXT-013.
  L_FIELDCAT-COL_POS   = 12.
  APPEND L_FIELDCAT TO IT_FIELDCAT.
* Status
  CLEAR L_FIELDCAT.
  L_FIELDCAT-TABNAME   = 'G_T_OUTTAB'.
  L_FIELDCAT-FIELDNAME = 'STATUS'.
  L_FIELDCAT-SELTEXT_M = TEXT-014.
  L_FIELDCAT-COL_POS   = 13.
  APPEND L_FIELDCAT TO IT_FIELDCAT.

ENDFORM.                    " FIELDCAT_POPULATION
*---------------------------------------------------------------------*
*       FORM user_command                                             *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM
                        SELFIELD TYPE SLIS_SELFIELD.

  DATA: CODE LIKE SY-UCOMM.
  DATA: MODE VALUE 'N'.
  DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
  DATA: CHAR_DATE(8),
        LV_LINES TYPE I,L_FIELD(50),LV_TMP(8).
  DATA: LV_KBETR(13),
        LV_CHAR(2).
  DATA: WA_EINE LIKE EINE.
  DATA: WA_EINA LIKE EINA.
  DATA: LT_A017 LIKE A017 OCCURS 0 WITH HEADER LINE.
  DATA: LT_KONP LIKE Z48V_KONP_DATUM OCCURS 0 WITH HEADER LINE.
  DATA: L_VA_MATKL LIKE MARA-MATKL.

  CLEAR: CHAR_DATE,LT_A017,LV_LINES,L_VA_MATKL.
  REFRESH: LT_A017.


  CASE UCOMM.
    WHEN '&IC1'.   "doubleclick
      IF SELFIELD-FIELDNAME = 'EBELN'.
        READ TABLE G_T_OUTTAB INDEX SELFIELD-TABINDEX.
        IF SY-SUBRC = 0.
          SET PARAMETER ID 'BES' FIELD G_T_OUTTAB-EBELN.
          CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDIF.
      IF SELFIELD-FIELDNAME = 'INFNR'.
        READ TABLE G_T_OUTTAB INDEX SELFIELD-TABINDEX.

        READ TABLE G_T_EINA WITH KEY INFNR = G_T_OUTTAB-INFNR
                                             BINARY SEARCH.
        READ TABLE G_T_EINE WITH KEY INFNR = G_T_OUTTAB-INFNR
                                             BINARY SEARCH.
        READ TABLE G_T_EKKO WITH KEY EBELN = G_T_OUTTAB-EBELN
                                     LIFNR = G_T_OUTTAB-LIFNR
                                     EKORG = G_T_EINE-EKORG
                                     MATNR = G_T_OUTTAB-MATNR.

        SET PARAMETER ID 'LIF' FIELD G_T_OUTTAB-LIFNR.
        SET PARAMETER ID 'MAT' FIELD G_T_OUTTAB-MATNR.
        SET PARAMETER ID 'EKO' FIELD G_T_EINE-EKORG.
        SET PARAMETER ID 'WRK' FIELD G_T_EINE-WERKS.
        SET PARAMETER ID 'INF' FIELD G_T_OUTTAB-INFNR.

        CALL TRANSACTION 'ME13' AND SKIP FIRST SCREEN.

      ENDIF.

    WHEN 'UPDATE'.

      DATA REF1 TYPE REF TO CL_GUI_ALV_GRID.
      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
           IMPORTING
                E_GRID = REF1.
      CALL METHOD REF1->CHECK_CHANGED_DATA.

      LOOP AT G_T_OUTTAB WHERE CHECK = 'X'.
        CLEAR: BDCDATA,MESSTAB,WA_EINA,WA_EINE,LT_KONP,L_VA_MATKL.
        REFRESH: BDCDATA,MESSTAB,LT_KONP.
        IF G_T_OUTTAB-STATUS EQ '@0V@'.
          MESSAGE I000(SU) WITH TEXT-015.
          CONTINUE.
        ENDIF.
        IF G_T_OUTTAB-KSCHL = 'PBXX'.
          G_T_OUTTAB-KSCHL = 'PB00'.
        ENDIF.

        READ TABLE G_T_EINA WITH KEY INFNR = G_T_OUTTAB-INFNR
                                       BINARY SEARCH.
        READ TABLE G_T_EINE WITH KEY INFNR = G_T_OUTTAB-INFNR
                                             BINARY SEARCH.
        READ TABLE G_T_EKKO WITH KEY EBELN = G_T_OUTTAB-EBELN
                                     LIFNR = G_T_OUTTAB-LIFNR
                                     EKORG = G_T_EINE-EKORG
                                     MATNR = G_T_OUTTAB-MATNR.
* Warengruppe holen
        SELECT SINGLE MATKL FROM MARA INTO L_VA_MATKL
          WHERE MATNR = G_T_OUTTAB-MATNR.
        CALL FUNCTION 'J_1A_ME_GET_INFORECORD_COND'
             EXPORTING
                  I_EKORG = G_T_EINE-EKORG
                  I_ESOKZ = '0'
                  I_INFNR = G_T_OUTTAB-INFNR
                  I_LIFNR = G_T_EINA-LIFNR
                  I_MATKL = L_VA_MATKL
                  I_MATNR = G_T_EINA-MATNR
                  I_WERKS = G_T_EINE-WERKS
             TABLES
                  TKONP   = LT_KONP.

        IF NOT LT_KONP[] IS INITIAL.
          READ TABLE LT_KONP WITH KEY KSCHL = G_T_OUTTAB-KSCHL.
          IF SY-SUBRC = 0.
          PERFORM BDC_DYNPRO      USING 'Z48M_UPD_COND_VALIDITY' '1000'.
            PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                                          'PA_KNUMH'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=ONLI'.
            PERFORM BDC_FIELD       USING 'PA_MATNR'
                                          G_T_EINA-MATNR.
            PERFORM BDC_FIELD       USING 'PA_LIFNR'
                                          G_T_EINA-LIFNR.
            PERFORM BDC_FIELD       USING 'PA_EKORG'
                                          G_T_EINE-EKORG.
            PERFORM BDC_FIELD       USING 'PA_WERKS'
                                          G_T_EINE-WERKS.
            PERFORM BDC_FIELD       USING 'PA_ESOKZ'
                                          '0'.
            PERFORM BDC_FIELD       USING 'PA_KNUMH'
                                          LT_KONP-KNUMH.
            PERFORM BDC_DYNPRO      USING 'SAPMV13A' '0201'.
            PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                                          '=SICH'.
            WRITE G_T_EKKO-AEDAT TO CHAR_DATE.
            PERFORM BDC_FIELD       USING 'RV13A-DATAB'
                                          CHAR_DATE.
            WRITE G_T_EKKO-AEDAT TO CHAR_DATE.
            ADD 1 TO CHAR_DATE+4(4).
            PERFORM BDC_FIELD       USING 'RV13A-DATBI'
                                          CHAR_DATE.
            CONCATENATE 'KONP-KBETR( 'LT_KONP-KOPOS' )' INTO L_FIELD.
            WRITE: G_T_OUTTAB-KBETR TO LV_KBETR.
            PERFORM BDC_FIELD       USING L_FIELD
                                          LV_KBETR.
FORM ALV_DISPLAY.

* For storing the variant layout
  DATA: IT_VARIANT LIKE DISVARIANT.
* For storing the events
  DATA: IT_EVENTS TYPE SLIS_T_EVENT,
        WA_EVENTS LIKE LINE OF IT_EVENTS.
  REFRESH: IT_EVENTS.
  CLEAR: WA_EVENTS,IT_EVENTS.
  WA_EVENTS-NAME = 'PF_STATUS_SET'.
  WA_EVENTS-FORM = 'STATUS'.
  APPEND WA_EVENTS TO IT_EVENTS .
  CLEAR WA_EVENTS.
  WA_EVENTS-NAME = 'USER_COMMAND'.
  WA_EVENTS-FORM = 'USER_COMMAND'.
  APPEND WA_EVENTS TO IT_EVENTS .
  IT_VARIANT-REPORT  = SY-REPID.
  G_R_LAYOUT-BOX_FIELDNAME = 'CHECK'.

  CLEAR G_T_OUTTAB.
  SORT G_T_OUTTAB.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = IT_VARIANT-REPORT
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
            IT_FIELDCAT             = IT_FIELDCAT
            I_SAVE                  = 'A'
            IS_VARIANT              = IT_VARIANT
            IS_LAYOUT               = G_R_LAYOUT
            IT_EVENTS               = IT_EVENTS
       TABLES
            T_OUTTAB                = G_T_OUTTAB
       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.                    " ALV_DISPLAY

Hope this solves ur problem.#

Regards,

Vasanth

Read only

Former Member
0 Likes
741

Hi!

You have to add a new field (type char1) to the structure you use for your ALV display, and in the ALV's layout structure, you can set this field to be displayed as a checkbox and allow its modification.

Regards,

Zoltan

Read only

Former Member
0 Likes
741

Hi Shweta,

YOu have to have a single character dummy field at the start of the fields in the main internal table that needs to be displayed.

Then you should populate the field catalog for that field as follows:

    WA_FIELDCAT-SELTEXT_L = 'Selection'.
    WA_FIELDCAT-FIELDNAME = 'DUMMY'.
    WA_FIELDCAT-TABNAME = 'IT_FINAL'.
    WA_FIELDCAT-COL_POS    = 1.
    WA_FIELDCAT-CHECKBOX   = 'X'.
    WA_FIELDCAT-INPUT   = 'X'.
    WA_FIELDCAT-OUTPUTLEN = 8.

Once you dispaly the gri, and if you want the records that are checked, then do something like this:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
    I_CALLBACK_PROGRAM                = W_REPID
    I_CALLBACK_PF_STATUS_SET          = 'PF_STATUS'
    I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
 
 
FORM USER_COMMAND USING P_UCOMM TYPE SY-UCOMM
                        P_SELFLD TYPE SLIS_SELFIELD.
case p_ucomm.
 
 when '<FCODE for some button>'.
 
  Data ref1 type ref to cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = ref1.
call method ref1->check_changed_data
 
 
* Your internal table will have the updated values
loop at itab where dummy = 'X'.
endloop.
 
endcase.
ENDFORM.

Regards,

Ravi