Skip to Content

How to Edit in ALV?

Hi Experts,

I am working on a BAPI for creating Requsition where i am taking one ref PR and then modifying required details and then creating a new PR.

Everything is working fine but before creating the new PR i want to display that data in the form of alv grid and where i can edit the values and save then a new PR will be created as per modification on alv.

check the sample code wht i hv done....

SELECT * FROM EBAN INTO CORRESPONDING FIELDS OF TABLE IT_EBAN WHERE

BANFN EQ S_BANFN.

LOOP AT IT_EBAN.

ENDLOOP.

LOOP AT IT_EBAN.

T_REQUISITION_ITEMS-DOC_TYPE = 'ZSD'.

MOVE IT_EBAN-BNFPO TO T_REQUISITION_ITEMS-PREQ_ITEM.

MOVE IT_EBAN-ERNAM TO T_REQUISITION_ITEMS-CREATED_BY.

MOVE IT_EBAN-AFNAM TO T_REQUISITION_ITEMS-PREQ_NAME.

MOVE IT_EBAN-BADAT TO T_REQUISITION_ITEMS-PREQ_DATE.

MOVE IT_EBAN-TXZ01 TO T_REQUISITION_ITEMS-SHORT_TEXT.

MOVE IT_EBAN-MATNR TO T_REQUISITION_ITEMS-MATERIAL.

MOVE IT_EBAN-EMATN TO T_REQUISITION_ITEMS-PUR_MAT.

T_REQUISITION_ITEMS-PLANT = '4000'.

T_REQUISITION_ITEMS-STORE_LOC = 'YRD1'.

T_REQUISITION_ITEMS-PUR_GROUP = 'JSD'.

MOVE IT_EBAN-MATKL TO T_REQUISITION_ITEMS-MAT_GRP.

MOVE IT_EBAN-MENGE TO T_REQUISITION_ITEMS-QUANTITY.

MOVE IT_EBAN-MEINS TO T_REQUISITION_ITEMS-UNIT.

T_REQUISITION_ITEMS-DELIV_DATE = '20080618'.

APPEND T_REQUISITION_ITEMS.

CALL FUNCTION 'BAPI_REQUISITION_CREATE'

  • EXPORTING

  • SKIP_ITEMS_WITH_ERROR =

IMPORTING

NUMBER = E_NUMBER

TABLES

REQUISITION_ITEMS = T_REQUISITION_ITEMS

*REQUISITION_ACCOUNT_ASSIGNMENT = T_REQ_ACCOUNT_ASSIGNMENT

  • REQUISITION_ITEM_TEXT =

  • REQUISITION_LIMITS =

  • REQUISITION_CONTRACT_LIMITS =

  • REQUISITION_SERVICES =

  • REQUISITION_SRV_ACCASS_VALUES =

RETURN = T_RETURN

  • REQUISITION_SERVICES_TEXT =

  • EXTENSIONIN =

  • REQUISITION_ADDRDELIVERY =

.

ENDLOOP.

IF NOT E_NUMBER IS INITIAL .

WRITE:/ 'REQ NO:' , E_NUMBER , 'CREATED'.

ELSE.

LOOP AT T_RETURN.

WRITE T_RETURN-MESSAGE.

ENDLOOP.

ENDIF.

what i want is before calling BAPI_REQUISITION_CREATE i need to display it_eban as alv and then where i can edit the values and save and that values will move to T_REQUISITION_ITEMS table. no need of hard cording Plant and purch. grop and storage location details. I know how to display the ALV grid just tell me how to edit in ALV and when i cllick save it shold move to BAPI_REQUISITION_CREATE.

its an urgent...

<b>points will be rewarded for useful answers</b>

Regards,

sunil kairam.

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

4 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Jun 18, 2008 at 06:07 AM

    Hi,

    For the field which is to be edited ,make sure that you pass the parameter EDIT = 'X' in the fieldcatalog.

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Jun 18, 2008 at 06:07 AM

    hi,

    For your requirement refer to the demo programs

    BCALV_EDIT_01

    BCALV_EDIT_02

    BCALV_EDIT_03

    BCALV_EDIT_04

    BCALV_EDIT_05

    BCALV_EDIT_06

    BCALV_EDIT_07

    BCALV_EDIT_08

    Regards,

    Veeresh

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jun 18, 2008 at 06:09 AM

    hi,

    In order to make the grid Editable use.

    slis_t_layout_alv.

    In this, pass EDIT = 'X'.

    Rgds.,

    subash

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Jun 18, 2008 at 06:06 AM

    Check this editable alv report...

    REPORT zjay_edit_alv.
    
    *******************************************************************
    * TYPE-POOLS *
    *******************************************************************
    TYPE-POOLS: slis.
    
    *******************************************************************
    * INTERNAL TABLES/WORK AREAS/VARIABLES
    *******************************************************************
    DATA: i_fieldcat TYPE slis_t_fieldcat_alv,
    i_index TYPE STANDARD TABLE OF i WITH HEADER LINE,
    w_field TYPE slis_fieldcat_alv,
    p_table LIKE dd02l-tabname,
    dy_table TYPE REF TO data,
    dy_tab TYPE REF TO data,
    dy_line TYPE REF TO data.
    
    *******************************************************************
    * FIELD-SYMBOLS *
    *******************************************************************
    FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
    <dyn_wa> TYPE ANY,
    <dyn_field> TYPE ANY,
    <dyn_tab_temp> TYPE STANDARD TABLE.
    
    *******************************************************************
    * SELECTION SCREEN *
    *******************************************************************
    PARAMETERS: tabname(30) TYPE c DEFAULT 'MARA',
    lines(5) TYPE n DEFAULT 7.
    
    *******************************************************************
    * START-OF-SELECTION *
    *******************************************************************
    START-OF-SELECTION.
    
    * Storing table name
    p_table = tabname.
    
    * Create internal table dynamically with the stucture of table name
    * entered in the selection screen
    CREATE DATA dy_table TYPE STANDARD TABLE OF (p_table).
    ASSIGN dy_table->* TO <dyn_table>.
    IF sy-subrc <> 0.
    MESSAGE i000(z_zzz_ca_messages) WITH ' No table found'.
    
    LEAVE TO LIST-PROCESSING.
    ENDIF.
    * Create workarea for the table
    CREATE DATA dy_line LIKE LINE OF <dyn_table>.
    ASSIGN dy_line->* TO <dyn_wa>.
    
    * Create another temp. table
    CREATE DATA dy_tab TYPE STANDARD TABLE OF (p_table).
    ASSIGN dy_tab->* TO <dyn_tab_temp>.
    
    SORT i_fieldcat BY col_pos.
    
    * Select data from table
    SELECT * FROM (p_table)
    INTO TABLE <dyn_table>
    UP TO lines ROWS.
    
    REFRESH <dyn_tab_temp>.
    
    * Display report
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    i_callback_program = sy-repid
    i_structure_name = p_table
    i_callback_user_command = 'USER_COMMAND'
    i_callback_pf_status_set = 'SET_PF_STATUS'
    TABLES
    t_outtab = <dyn_table>
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    
    IF sy-subrc <> 0.
    
    ENDIF.
    
    *&-----------------------------------------------------------------*
    *& Form SET_PF_STATUS
    *&-----------------------------------------------------------------*
    * Setting custom PF-Status
    *------------------------------------------------------------------*
    * -->RT_EXTAB Excluding table
    *------------------------------------------------------------------*
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
    
    SET PF-STATUS 'ZSTANDARD'. "copy it from SALV func group standard
    
    ENDFORM. "SET_PF_STATUS
    
    *&----------------------------------------------------------------*
    *& Form user_command
    *&-----------------------------------------------------------------*
    * Handling custom function codes
    *------------------------------------------------------------------*
    * -->R_UCOMM Function code value
    * -->RS_SELFIELD Info. of cursor position in ALV
    *------------------------------------------------------------------*
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    
    * Local data declaration
    DATA: li_tab TYPE REF TO data,
    l_line TYPE REF TO data.
    
    * Local field-symbols
    FIELD-SYMBOLS:<l_tab> TYPE table,
    <l_wa> TYPE ANY.
    
    * Create table
    CREATE DATA li_tab TYPE STANDARD TABLE OF (p_table).
    ASSIGN li_tab->* TO <l_tab>.
    
    * Create workarea
    CREATE DATA l_line LIKE LINE OF <l_tab>.
    ASSIGN l_line->* TO <l_wa>.
    
    CASE r_ucomm.
    
    * When a record is selected
    WHEN '&IC1'.
    
    * Read the selected record
    READ TABLE <dyn_table> ASSIGNING <dyn_wa> INDEX
    rs_selfield-tabindex.
    
    IF sy-subrc = 0.
    
    * Store the record in an internal table
    APPEND <dyn_wa> TO <l_tab>.
    
    * Fetch the field catalog info
    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
    i_program_name = sy-repid
    i_structure_name = p_table
    CHANGING
    ct_fieldcat = i_fieldcat
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.
    IF sy-subrc = 0.
    
    * Make all the fields input enabled except key fields
    w_field-input = 'X'.
    
    MODIFY i_fieldcat FROM w_field TRANSPORTING input
    WHERE key IS INITIAL.
    
    ENDIF.
    
    * Display the record for editing purpose
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    i_callback_program = sy-repid
    i_structure_name = p_table
    it_fieldcat = i_fieldcat
    i_screen_start_column = 10
    i_screen_start_line = 15
    i_screen_end_column = 200
    i_screen_end_line = 20
    TABLES
    t_outtab = <l_tab>
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    
    IF sy-subrc = 0.
    
    * Read the modified data
    READ TABLE <l_tab> INDEX 1 INTO <l_wa>.
    
    * If the record is changed then track its index no.
    * and populate it in an internal table for future
    * action
    IF sy-subrc = 0 AND <dyn_wa> <> <l_wa>.
    <dyn_wa> = <l_wa>.
    i_index = rs_selfield-tabindex.
    APPEND i_index.
    ENDIF.
    ENDIF.
    
    ENDIF.
    
    * When save button is pressed
    WHEN 'SAVE'.
    
    * Sort the index table
    SORT i_index.
    
    * Delete all duplicate records
    DELETE ADJACENT DUPLICATES FROM i_index.
    
    LOOP AT i_index.
    
    * Find out the changes in the internal table
    * and populate these changes in another internal table
    READ TABLE <dyn_table> ASSIGNING <dyn_wa> INDEX i_index.
    IF sy-subrc = 0.
    APPEND <dyn_wa> TO <dyn_tab_temp>.
    ENDIF.
    
    ENDLOOP.
    
    * Lock the table
    CALL FUNCTION 'ENQUEUE_E_TABLE'
    EXPORTING
    mode_rstable = 'E'
    tabname = p_table
    EXCEPTIONS
    foreign_lock = 1
    system_failure = 2
    OTHERS = 3.
    
    IF sy-subrc = 0.
    
    * Modify the database table with these changes
    MODIFY (p_table) FROM TABLE <dyn_tab_temp>.
    
    REFRESH <dyn_tab_temp>.
    
    * Unlock the table
    CALL FUNCTION 'DEQUEUE_E_TABLE'
    EXPORTING
    mode_rstable = 'E'
    tabname = p_table.
    
    ENDIF.
    ENDCASE.
    
    rs_selfield-refresh = 'X'.
    
    ENDFORM. "user_command

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.