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

Former Member
0 Likes
1,323

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

4 REPLIES 4
Read only

Former Member
0 Likes
731

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.

Read only

Former Member
0 Likes
731

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

Read only

0 Likes
731

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

Read only

Former Member
0 Likes
731

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.