‎2007 Nov 28 7:54 PM
hi i have a requirement , where we are using interactive alv. when the basic alv list shows , we need to have a checkbox , other output columns , and an execute button.
when the ouput shows , the user would click the checkbox for the entry he wants and then presss execute button which would trigger some action.
i figured out the checkbox part, but how to display the execute button in alv , and the catch the action.
‎2007 Nov 28 7:58 PM
Hi
Check this program if it helps..
&----
*& Report ZLAXMI_TESTPAPER *
*& *
&----
*& *
*& *
&----
REPORT ZLAXMI_TESTPAPER MESSAGE-ID ZZ .
*TABLES
TABLES: MARA, T001W.
*variable declaration.
DATA: V_WERKS TYPE T001W-WERKS,
V_MEINS TYPE MARA-MEINS,
V_NTGEW TYPE MARA-NTGEW,
V_BRGEW TYPE MARA-BRGEW,
V_GEWEI TYPE MARA-GEWEI,
V_VOLUM TYPE MARA-VOLUM,
V_VOLEH TYPE MARA-VOLEH.
DATA: IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
V_MSG(200) TYPE C..
*INTERNAL TABLE DECLARATION
DATA: BEGIN OF IT_T001W OCCURS 0,
WERKS LIKE T001W-WERKS,
NAME1 LIKE T001W-NAME1,
LAND1 LIKE T001W-LAND1,
END OF IT_T001W.
DATA: BEGIN OF IT_MARC OCCURS 0,
MATNR LIKE MARC-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF IT_MARC.
DATA: BEGIN OF IT_PLANT OCCURS 0,
WERKS TYPE MARC-WERKS,
PSTAT TYPE MARC-PSTAT,
PRCTR TYPE MARC-PRCTR,
MINLS TYPE MARC-MINLS,
MAXLS TYPE MARC-MAXLS,
NAME1 TYPE T001W-NAME1,
END OF IT_PLANT.
DATA: BEGIN OF IT_TRANS OCCURS 0,
MATNR_001(018),
MEINS_004(003),
BRGEW_007(017),
GEWEI_008(003),
NTGEW_009(017),
VOLUM_010(017),
VOLEH_011(003),
END OF IT_TRANS.
*SELECTION SCREEN
SELECT-OPTIONS: S_MATNR FOR IT_MARC-MATNR.
*START OF SELECTION
START-OF-SELECTION.
PERFORM GET_PLANT_DETAILS USING IT_T001W.
*AT LINE SELECTION
AT LINE-SELECTION.
IF SY-LSIND = '1'.
SET PF-STATUS 'FF'.
PERFORM GET_MAT_DETAILS USING IT_T001W-WERKS.
PERFORM WRITE_MAT_DETAILS.
ENDIF.
IF SY-LSIND = '2'.
SELECT SINGLE MATNR
MTART
MEINS
NTGEW
BRGEW
GEWEI
VOLUM
VOLEH
ERSDA FROM MARA
INTO CORRESPONDING FIELDS OF MARA
WHERE MATNR = IT_MARC-MATNR.
V_MEINS = MARA-MEINS.
V_NTGEW = MARA-NTGEW.
V_BRGEW = MARA-BRGEW.
V_GEWEI = MARA-GEWEI.
V_VOLUM = MARA-VOLUM.
V_VOLEH = MARA-VOLEH.
CALL SCREEN '100'.
ENDIF.
*end of selection
END-OF-SELECTION.
PERFORM PLANT_DETAILS USING IT_T001W.
&----
*& Form GET_PLANT_DETAILS
&----
text
----
-->P_IT_T001W text
----
FORM GET_PLANT_DETAILS USING P_IT_T001W.
IT_T001W = P_IT_T001W.
SELECT WERKS
NAME1
LAND1
FROM T001W
INTO TABLE IT_T001W.
ENDFORM. " GET_PLANT_DETAILS
&----
*& Form GET_MAT_DETAILS
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_MAT_DETAILS USING P_IT_T001W-WERKS. .
IT_T001W-WERKS = P_IT_T001W-WERKS.
SELECT MARC~MATNR
MAKT~MAKTX
INTO
TABLE
IT_MARC
FROM
MARC JOIN MAKT ON
MARCMATNR = MAKTMATNR
WHERE MARC~WERKS = IT_T001W-WERKS.
ENDFORM. " GET_MAT_DETAILS
&----
*& Form WRITE_MAT_DETAILS
&----
text
----
--> p1 text
<-- p2 text
----
FORM WRITE_MAT_DETAILS .
WRITE:/1(10) 'PLANT NO',
(30) 'PLANT NAME'.
SKIP.
WRITE:/1(10) IT_T001W-WERKS,
(30) IT_T001W-NAME1.
*SKIP.
WRITE:/1(18) 'MATERIAL NO',
(40) 'MATERIAL DESCRIPTION'.
SKIP.
LOOP AT IT_MARC.
WRITE:/1(18) IT_MARC-MATNR HOTSPOT ON,
(40) IT_MARC-MAKTX HOTSPOT ON.
HIDE: IT_MARC-MATNR,IT_MARC-MATNR.
ENDLOOP.
ENDFORM. " WRITE_MAT_DETAILS
&----
*& Form plant_details
&----
text
----
-->P_IT_T001W text
----
FORM PLANT_DETAILS USING P_IT_T001W.
IT_T001W = P_IT_T001W.
WRITE:/1(10) 'PLANT NO',
(30) 'PLANT NAME',
(10) 'COUNTRY'.
LOOP AT IT_T001W.
WRITE:/1(10) IT_T001W-WERKS HOTSPOT ON,
(30) IT_T001W-NAME1 HOTSPOT ON,
(10) IT_T001W-LAND1 HOTSPOT ON.
HIDE: IT_T001W-WERKS,IT_T001W-NAME1.
ENDLOOP.
ENDFORM. " plant_details
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STAT1'.
SET TITLEBAR 'TT'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'G1'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'PRINT'.
PERFORM GET_FORM_DETAILS.
PERFORM SCRIPTS.
WHEN 'CHANGE'.
IF V_MEINS <> MARA-MEINS OR
V_NTGEW <> MARA-NTGEW OR
V_BRGEW <> MARA-BRGEW OR
V_GEWEI <> MARA-GEWEI OR
V_VOLUM <> MARA-VOLUM OR
V_VOLEH <> MARA-VOLEH.
ENDIF.
IT_TRANS-MATNR_001 = MARA-MATNR.
IT_TRANS-MEINS_004 = MARA-MEINS.
IT_TRANS-BRGEW_007 = MARA-BRGEW.
IT_TRANS-GEWEI_008 = MARA-GEWEI.
IT_TRANS-NTGEW_009 = MARA-NTGEW.
IT_TRANS-VOLUM_010 = MARA-VOLUM.
IT_TRANS-VOLEH_011 = MARA-VOLEH.
APPEND IT_TRANS.
LOOP AT IT_TRANS.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RMMG1-AENNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_FIELD USING 'RMMG1-MATNR'
IT_TRANS-MATNR_001.
PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BU'.
PERFORM BDC_FIELD USING 'MARA-MEINS'
IT_TRANS-MEINS_004.
PERFORM BDC_FIELD USING 'MARA-BRGEW'
IT_TRANS-BRGEW_007.
PERFORM BDC_FIELD USING 'MARA-GEWEI'
IT_TRANS-GEWEI_008.
PERFORM BDC_FIELD USING 'MARA-NTGEW'
IT_TRANS-NTGEW_009.
PERFORM BDC_FIELD USING 'MARA-VOLUM'
IT_TRANS-VOLUM_010.
PERFORM BDC_FIELD USING 'MARA-VOLEH'
IT_TRANS-VOLEH_011.
CALL TRANSACTION 'MM02' USING IT_BDCDATA MODE 'A' UPDATE 'S'
MESSAGES INTO IT_MESSAGES.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
LOOP AT IT_MESSAGES.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = 'EN'
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = V_MSG
EXCEPTIONS
NOT_FOUND = 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.
WRITE:/ V_MSG.
ENDLOOP.
ENDLOOP.
CLEAR IT_TRANS.
REFRESH IT_TRANS.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Form GET_FORM_DETAILS
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_FORM_DETAILS .
SELECT MARC~WERKS
MARC~PSTAT
MARC~PRCTR
MARC~MINLS
MARC~MAXLS
T001W~NAME1 INTO TABLE
IT_PLANT FROM MARC JOIN T001W
ON MARCWERKS = T001WWERKS
WHERE MARC~MATNR IN S_MATNR.
ENDFORM. " GET_FORM_DETAILS
&----
*& Form BDC_DYNPRO
&----
text
----
-->P_0470 text
-->P_0471 text
----
FORM BDC_DYNPRO USING VALUE(P_0470)
VALUE(P_0471).
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = P_0470.
IT_BDCDATA-DYNPRO = P_0471.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM. " BDC_DYNPRO
&----
*& Form BDC_FIELD
&----
text
----
-->P_0475 text
-->P_0476 text
----
FORM BDC_FIELD USING VALUE(P_0475)
VALUE(P_0476).
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = P_0475.
IT_BDCDATA-FVAL = P_0476.
APPEND IT_BDCDATA.
ENDFORM. " BDC_FIELD
&----
*& Form SCRIPTS
&----
text
----
--> p1 text
<-- p2 text
----
FORM SCRIPTS .
DATA : LV_TABIX TYPE SY-TABIX.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
APPLICATION = 'TX'
ARCHIVE_INDEX =
ARCHIVE_PARAMS =
DEVICE = 'PRINTER'
DIALOG = 'X'
FORM = 'ZLAXMI_TESTPAPER'
LANGUAGE = SY-LANGU
OPTIONS =
MAIL_SENDER =
MAIL_RECIPIENT =
MAIL_APPL_OBJECT =
RAW_DATA_INTERFACE = '*'
SPONUMIV =
IMPORTING
LANGUAGE =
NEW_ARCHIVE_PARAMS =
RESULT =
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
MAIL_OPTIONS = 6
ARCHIVE_ERROR = 7
INVALID_FAX_NUMBER = 8
MORE_PARAMS_NEEDED_IN_BATCH = 9
SPOOL_ERROR = 10
CODEPAGE = 11
OTHERS = 12
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'START_FORM'
EXPORTING
ARCHIVE_INDEX =
FORM = 'ZLAXMI_TESTPAPER'
LANGUAGE = SY-LANGU
STARTPAGE = 'PAGE1'
PROGRAM = ' '
MAIL_APPL_OBJECT =
IMPORTING
LANGUAGE =
EXCEPTIONS
FORM = 1
FORMAT = 2
UNENDED = 3
UNOPENED = 4
UNUSED = 5
SPOOL_ERROR = 6
CODEPAGE = 7
OTHERS = 8
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'HEADER'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_PLANT.
*LV_TABIX = SY-TABIX.
*IF LV_TABIX = 1.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = ' '
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'WIN1'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = ' '
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'WIN2'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = ' '
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'WIN3'
IMPORTING
PENDING_LINES =
EXCEPTIONS
ELEMENT = 1
FUNCTION = 2
TYPE = 3
UNOPENED = 4
UNSTARTED = 5
WINDOW = 6
BAD_PAGEFORMAT_FOR_PRINT = 7
SPOOL_ERROR = 8
CODEPAGE = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
CALL FUNCTION 'CLOSE_FORM'
IMPORTING
RESULT =
RDI_RESULT =
TABLES
OTFDATA =
EXCEPTIONS
UNOPENED = 1
BAD_PAGEFORMAT_FOR_PRINT = 2
SEND_ERROR = 3
SPOOL_ERROR = 4
CODEPAGE = 5
OTHERS = 6
.
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. " SCRIPTS
&----
*& Module EXIT INPUT
&----
text
----
MODULE EXIT INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " EXIT INPUT
Regards,
Laxmi
‎2007 Nov 28 8:19 PM
create an extra field in your internal table. This field should 4 char field and assign
icon_execute_object value to the field.
for example: new field is ACTION in your internal table.
itab-action = action = icon_execute_object. This will give you the icon execute.
After building field catalog.... Use
READ TABLE it_fieldcat ASSIGNING <fcat>
WITH KEY fieldname = 'ACTION'.
<fcat>-icon = c_on.
<fcat>-hotspot = c_on.
in your hotspot method.
IF e_column_id-fieldname = 'ACTION'.
READ TABLE itab ASSIGNING <output> INDEX e_row_id.
IF <output>-action <> icon_execute_object.
MESSAGE s000 WITH 'this row cannot be processed'.
ELSE.
Process your code here.
endif.
endif.
Get back to me if you need further clarification.
‎2007 Nov 28 9:20 PM
hi guys thanks for ur answer. let me try this and get back , and assign points.