Application Development 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: 

Open Field in ALV Report

Former Member
0 Kudos

Hi all,

i have to develop a ALV report.

In that report i have to put a open quantity column , so that the user can enter values in that, and that value should get updated in the database.

So please suggest me how to develop such report with open field.

Thanks in advance,

Regards,

Pawan

4 REPLIES 4

Former Member
0 Kudos

Hello,

If the fieldcatalog of the field set the EDIT field.

wa_fieldcat-EDIT = 'X'.

Cheers,

Vasanth

0 Kudos

Hello Dear Vasanth,

thats ok with fieldcatalog....

But the main thing is that i have to update that value in database.

How will you do it....?????

Regards,

Pawan

Former Member
0 Kudos

Hi,

Try executing the below code


REPORT YMS_EDITBLOCKALV.

TABLES : rmmg1,MCHB, mkpf.
DATA: BEGIN OF t_mseg OCCURS 0,
zeile LIKE mseg-zeile,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
charg LIKE mseg-charg,
bwart LIKE mseg-bwart,
END OF t_mseg.

DATA:BEGIN OF t_mchb OCCURS 0.
INCLUDE STRUCTURE mchb.
data flag type c.

matnr LIKE mchb-matnr, 
charg LIKE mchb-charg, 
werks LIKE mchb-werks, 
clabs LIKE mchb-clabs, 
DATA END OF t_mchb.

TYPE-POOLS slis.
data: progname like sy-repid,
fieldcattab TYPE slis_t_fieldcat_alv WITH HEADER LINE.
data tabindex type i.
data wa_matnr LIKE mchb-matnr.
progname = sy-repid.

SELECTION-SCREEN BEGIN OF BLOCK b_b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_docno FOR mkpf-mblnr. " OBLIGATORY.
PARAMETERS p_docyr LIKE mkpf-mjahr. " OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b_b1.

START-OF-SELECTION.
SELECT zeile
menge
meins
matnr
werks
charg
bwart
FROM mseg
INTO TABLE t_mseg
WHERE mblnr IN s_docno AND mjahr = p_docyr.

CLEAR fieldcattab.
fieldcattab-col_pos = 1.
fieldcattab-fieldname = 'ZEILE'.
fieldcattab-tabname = 'T_MSEG'.
fieldcattab-fix_column = 'X'.
fieldcattab-seltext_l = 'Item'.
APPEND fieldcattab.

CLEAR fieldcattab.
fieldcattab-col_pos = 2.
fieldcattab-fieldname = 'MENGE'.
fieldcattab-tabname = 'T_MSEG'.
fieldcattab-seltext_l = 'Quantity'.
APPEND fieldcattab.

CLEAR fieldcattab.
fieldcattab-col_pos = 3.
fieldcattab-fieldname = 'MEINS'.
fieldcattab-tabname = 'T_MSEG'.
fieldcattab-seltext_l = 'Unit'.
APPEND fieldcattab.

CLEAR fieldcattab.
fieldcattab-col_pos = 4.
fieldcattab-fieldname = 'MATNR'.
fieldcattab-tabname = 'T_MSEG'.
fieldcattab-seltext_l = 'Material'.
APPEND fieldcattab.

CLEAR fieldcattab.
fieldcattab-col_pos = 5.
fieldcattab-fieldname = 'WERKS'.
fieldcattab-tabname = 'T_MSEG'.
fieldcattab-seltext_l = 'Plant'.
APPEND fieldcattab.

CLEAR fieldcattab.
fieldcattab-col_pos = 6.
fieldcattab-fieldname = 'CHARG'.
fieldcattab-tabname = 'T_MSEG'.
fieldcattab-seltext_l = 'Batch No'.
APPEND fieldcattab.

CLEAR fieldcattab.
fieldcattab-col_pos = 7.
fieldcattab-fieldname = 'BWART'.
fieldcattab-tabname = 'T_MSEG'.
fieldcattab-seltext_l = 'Inventory'.
fieldcattab-hotspot = 'X'.
APPEND fieldcattab.

end-of-selection.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING

I_INTERFACE_CHECK = ' ' 
I_BYPASSING_BUFFER = 
I_BUFFER_ACTIVE = ' ' 
I_CALLBACK_PROGRAM = PROGNAME

I_CALLBACK_PF_STATUS_SET = ' ' 
I_CALLBACK_USER_COMMAND = 'USERCOMMAND1'

I_CALLBACK_TOP_OF_PAGE = ' ' 
I_CALLBACK_HTML_TOP_OF_PAGE = ' ' 
I_CALLBACK_HTML_END_OF_LIST = ' ' 
I_STRUCTURE_NAME = 
I_BACKGROUND_ID = ' ' 
I_GRID_TITLE = 
I_GRID_SETTINGS = 
IS_LAYOUT = 
IT_FIELDCAT = fieldcattab[]

IT_EXCLUDING = 
IT_SPECIAL_GROUPS = 
IT_SORT = 
IT_FILTER = 
IS_SEL_HIDE = 
I_DEFAULT = 'X' 
I_SAVE = ' ' 
IS_VARIANT = 
IT_EVENTS = 
IT_EVENT_EXIT = 
IS_PRINT = 
IS_REPREP_ID = 
I_SCREEN_START_COLUMN = 0 
I_SCREEN_START_LINE = 0 
I_SCREEN_END_COLUMN = 0 
I_SCREEN_END_LINE = 0 
IT_ALV_GRAPHICS = 
IT_ADD_FIELDCAT = fieldcattab 
IT_HYPERLINK = 
IMPORTING 
E_EXIT_CAUSED_BY_CALLER = 
ES_EXIT_CAUSED_BY_USER = 
TABLES
t_outtab = t_mseg

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 usercommand1 USING r_ucomm LIKE sy-ucomm rs_selfield TYPE
slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
tabindex = rs_selfield-tabindex.
read table t_mseg INDEX tabindex.
select * from mchb into table t_mchb where matnr = t_mseg-matnr.

clear fieldcattab.
CLEAR fieldcattab[].
fieldcattab-col_pos = 1.
fieldcattab-fieldname = 'FLAG'.
fieldcattab-tabname = 'T_MCHB'.
fieldcattab-fix_column = 'X'.
fieldcattab-seltext_l = 'Check Box'.
fieldcattab-input = 'X'.
fieldcattab-edit = 'X'.
fieldcattab-checkbox = 'X'.
APPEND fieldcattab.

clear fieldcattab.
fieldcattab-col_pos = 2.
fieldcattab-fieldname = 'MATNR'.
fieldcattab-tabname = 'T_MCHB'.
fieldcattab-fix_column = 'X'.
fieldcattab-seltext_l = 'Material'.
fieldcattab-emphasize = 'C1'.
fieldcattab-input = 'X'.
fieldcattab-edit = 'X'.

fieldcattab-checkbox = 'X'. 
APPEND fieldcattab.

clear fieldcattab.
fieldcattab-col_pos = 3.
fieldcattab-fieldname = 'CHARG'.
fieldcattab-tabname = 'T_MCHB'.
fieldcattab-seltext_l = 'Batch No'.
fieldcattab-emphasize = 'C2'.
fieldcattab-input = 'X'.
fieldcattab-edit = 'X'.
APPEND fieldcattab.

clear fieldcattab.
fieldcattab-col_pos = 4.
fieldcattab-fieldname = 'WERKS'.
fieldcattab-tabname = 'T_MCHB'.
fieldcattab-seltext_l = 'Plant'.
fieldcattab-emphasize = 'C30'.
fieldcattab-input = 'X'.
fieldcattab-edit = 'X'.
APPEND fieldcattab.

clear fieldcattab.
fieldcattab-col_pos = 5.
fieldcattab-fieldname = 'CLABS'.
fieldcattab-tabname = 'T_MCHB'.
fieldcattab-seltext_l = 'Stock'.
fieldcattab-emphasize = 'C601'.
fieldcattab-input = 'X'.
fieldcattab-edit = 'X'.
APPEND fieldcattab.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING

I_INTERFACE_CHECK = ' ' 
I_BYPASSING_BUFFER = 
I_BUFFER_ACTIVE = ' ' 
I_CALLBACK_PROGRAM = PROGNAME

I_CALLBACK_PF_STATUS_SET = ' ' 
I_CALLBACK_USER_COMMAND = 'USERCOMMAND2'

I_CALLBACK_TOP_OF_PAGE = ' ' 
I_CALLBACK_HTML_TOP_OF_PAGE = ' ' 
I_CALLBACK_HTML_END_OF_LIST = ' ' 
I_STRUCTURE_NAME = 
I_BACKGROUND_ID = ' ' 
I_GRID_TITLE = 
I_GRID_SETTINGS = 
IS_LAYOUT = 
IT_FIELDCAT = FIELDCATTAB[]

IT_EXCLUDING = 
IT_SPECIAL_GROUPS = 
IT_SORT = 
IT_FILTER = 
IS_SEL_HIDE = 
I_DEFAULT = 'X' 
I_SAVE = ' ' 
IS_VARIANT = 
IT_EVENTS = 
IT_EVENT_EXIT = 
IS_PRINT = 
IS_REPREP_ID = 
I_SCREEN_START_COLUMN = 0 
I_SCREEN_START_LINE = 0 
I_SCREEN_END_COLUMN = 0 
I_SCREEN_END_LINE = 0 
IT_ALV_GRAPHICS = 
IT_ADD_FIELDCAT = 
IT_HYPERLINK = 
IMPORTING 
E_EXIT_CAUSED_BY_CALLER = 
ES_EXIT_CAUSED_BY_USER = 
TABLES
t_outtab = t_mchb

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.

endcase.

endform.


FORM usercommand2 USING r_ucomm LIKE sy-ucomm rs_selfield TYPE
slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
IF rs_selfield-sel_tab_field = 'T_MCHB-MATNR'.



CALL FUNCTION 'ZALV2' 
EXPORTING 
CTU = 'X' 
MODE = 'E' 
UPDATE = 'A' 
GROUP = 
USER = 
KEEP = 
HOLDDATE = 
NODATA = '/' 
MATNR_001 = '200-200' 
KZSEL_01_002 = 'X' 
IMPORTING 
SUBRC = 
TABLES 
MESSTAB = 
. 
**
SET PARAMETER ID 'RID' FIELD RMMG1-MATNR.
CALL TRANSACTION 'MM03' and skip first screen.


ENDIF. 
ENDCASE. 
*

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
EXPORTING 
i_callback_program = progname 
i_callback_user_command = 'USERCOMMAND3' 
it_fieldcat = fieldcattab[] 
TABLES 
t_outtab = t_mchb 
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.
endcase.
ENDFORM.

Regards,

chandru

Former Member
0 Kudos

Hi...

Try to take one pushbutton named as UPDATE.

When you press that button, you can use follwing code to update the dataabse.

try to do this using checkbox.

wat ever the records you updated check those records, and upadate them in dataabse using folloeing code.

data : BEGIN OF it_tab,

"give your fields

check(1),

END OF it_tab

&----


*& Form AT_user_command

&----


FORM at_user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN 'UPDATE'.

PERFORM update.

ENDCASE.

ENDFORM. "AT_user_command

FORM update .

LOOP AT it_tab INTO wa_tab WHERE check = 'X'.

modify dbtab from wa_tab.

ENDLOOP.

ENDFORM.

Regards

Sandeep