‎2006 Jun 13 3:29 PM
hi ,
need and example for refreshing a column in an alv grid after commiting the data by FM 'BAPI_TRANSACTION_COMMIT' and code for selection of rows on the alv grid.
Many Thanks
‎2006 Jun 13 3:36 PM
1. For refreshing -
form SUB_USER_COMMAND using r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Call BAPI....
CALL BAPI_TRANSACTION_COMMIT.
MODIFY <internal table> according to your req.
Then do this: rs_selfield-refresh = 'X'.
endform.
2. For selection od rows, you have to have a checkbox in your internal table for output, like
DATA: Begin of t_out OCCCURS 0,
chkbox(1) type c,
icon type ICON_INT,
matnr type matnr,
matkl type matkl,
................
END OF t_out.
In the layout structure, populate:
w_layout-box_fieldname = 'CHKBOX'.
w_layout-box_tabname = 'T_OUT'.
Also populate field catalog.
‎2006 Jun 13 3:47 PM
Hi,
if you want to select the rows you can use either checkbox or Box fieldname.
and for editable grid you need user_command, in the user_command you have to save the data and call the commit. and then refresh the list.
REPORT ZTEST_ALV_CHECK message-id zz .
TYPE-POOLS: SLIS.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
L_LAYOUT type slis_layout_alv.
DATA: BEGIN OF ITAB OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
CHK(1),
END OF ITAB.
SELECT VBELN
POSNR
FROM VBAP
UP TO 20 ROWS
INTO TABLE ITAB.
X_FIELDCAT-FIELDNAME = 'CHK'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-CHECKBOX = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = L_LAYOUT
<b> I_CALLBACK_PF_STATUS_SET = 'STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'</b>
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = ITAB
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.
*&---------------------------------------------------------------------*
*& Form STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EXTAB text
*----------------------------------------------------------------------*
<b>FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
*- Pf status
SET PF-STATUS 'STATUS'.
ENDFORM. " STATUS</b>
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
<b>FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
case r_ucomm.
when 'UPDATE'.
...
call function 'BAPI_TRANSACTION_COMMIT'.
endcase.
RS_SELFIELD-refresh = 'X'.
ENDFORM. "USER_COMMAND</b>need to set the PF-status, look for Bold ones
Regards
vijay
‎2006 Jun 13 4:01 PM
Hi,
you can do this under user_command form.
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
Here you can write your code to write data to database.
If you used BAPI, you will get success or error infomation by BAPIRET2-TYPE.
If it 'S', then use BAPI_COMMIT_TRANSACTION. and refresh your ALV list using RS_SELFIELD-refresh = 'X'.
otherwise, do not refresh it.
ENDFORM. "USER_COMMAND
regards,
ram.
Pls award points if it is helpfull
‎2006 Jun 13 4:12 PM
Hi,
how is the alv grid called? ABAP (FM Reuse_ALV_List_display of FuGr SALV) or Objects (CL_GUI_ALV_GRID)?
In CL_GUI_ALV_GRID there's a method "refresh_table_display", which will send the current contents to the grid.
With FM Reuse_ALV_List_Display, just do a new call to refresh.