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

execute button in alv

Former Member
0 Likes
666

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.

3 REPLIES 3
Read only

Former Member
0 Likes
459

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

Read only

former_member191735
Active Contributor
0 Likes
459

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.

Read only

0 Likes
459

hi guys thanks for ur answer. let me try this and get back , and assign points.