{"id":517,"date":"2013-04-28T15:40:23","date_gmt":"2013-04-28T14:40:23","guid":{"rendered":"http:\/\/oprsteny.cz\/?p=517"},"modified":"2013-04-30T10:48:46","modified_gmt":"2013-04-30T09:48:46","slug":"alv-tutorial-10-pushbuttons-and-hyperlinks-in-cells","status":"publish","type":"post","link":"https:\/\/oprsteny.cz\/?p=517","title":{"rendered":"ALV tutorial 10 &#8211; Pushbuttons and Hyperlinks in cells"},"content":{"rendered":"<p>Pushbuttons and hyperlinks in ALV fields<!--more--><\/p>\n<pre lang=\"abap\">REPORT  z_alv_demo_10.\r\nTYPES: BEGIN OF ty_data.\r\n        INCLUDE STRUCTURE sflight.\r\nTYPES:  cell_table TYPE lvc_t_styl,             \" field to hold the info about pushbutton\r\n        hl_fname   TYPE int4,                   \" field to hold the hyperlink handle\r\n       END OF ty_data.\r\n\r\nDATA: gt_data TYPE TABLE OF ty_data,\r\n      g_grid TYPE REF TO cl_gui_alv_grid,\r\n      gs_layout TYPE lvc_s_layo,\r\n      gt_fieldcat TYPE lvc_t_fcat,\r\n      gt_hypetab TYPE lvc_t_hype.\r\n\r\nCONSTANTS:\r\n  c_max_rows TYPE i VALUE 100.\r\n\r\nCALL SCREEN 100.\r\n\r\n*&---------------------------------------------------------------------*\r\n*&      Form  read_data\r\n*&---------------------------------------------------------------------*\r\n*       text\r\n*----------------------------------------------------------------------*\r\nFORM read_data.\r\n  DATA ls_styl TYPE lvc_s_styl.\r\n\r\n  FIELD-SYMBOLS:\r\n    <fs_data> TYPE ty_data.\r\n\r\n  PERFORM get_hyperlinks.\r\n\r\n  SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_data\r\n    FROM sflight\r\n    UP TO c_max_rows ROWS.\r\n\r\n  ls_styl-style = cl_gui_alv_grid=>mc_style_button.\r\n\r\n  LOOP AT gt_data ASSIGNING <fs_data>.\r\n* Display pushbutton in case a travel class is not full so new booking can be made\r\n    IF <fs_data>-seatsocc < <fs_data>-seatsmax.\r\n      ls_styl-fieldname = 'SEATSOCC'.\r\n      APPEND ls_styl TO <fs_data>-cell_table.\r\n\r\n      <fs_data>-hl_fname = '1'.                  \" Assign the hyperlink handle\r\n    ENDIF.\r\n\r\n    IF <fs_data>-seatsocc_b < <fs_data>-seatsmax_b.\r\n      ls_styl-fieldname = 'SEATSOCC_B'.\r\n      APPEND ls_styl TO <fs_data>-cell_table.\r\n\r\n      <fs_data>-hl_fname = 2.                    \" Assign the hyperlink handle\r\n    ENDIF.\r\n\r\n    IF <fs_data>-seatsocc_f < <fs_data>-seatsmax_f.\r\n      ls_styl-fieldname = 'SEATSOCC_F'.\r\n      APPEND ls_styl TO <fs_data>-cell_table.\r\n\r\n      <fs_data>-hl_fname = 1.                    \" Assign the hyperlink handle\r\n    ENDIF.\r\n  ENDLOOP.\r\nENDFORM.                    \"read_data\r\n\r\n*&---------------------------------------------------------------------*\r\n*&      Form  display_grid\r\n*&---------------------------------------------------------------------*\r\n*       text\r\n*----------------------------------------------------------------------*\r\nFORM display_grid.\r\n  PERFORM get_layout.\r\n  PERFORM get_fieldcat.\r\n\r\n  CREATE OBJECT g_grid\r\n    EXPORTING\r\n      i_parent = cl_gui_container=>default_screen.\r\n\r\n  CALL METHOD g_grid->set_table_for_first_display\r\n    EXPORTING\r\n      i_structure_name              = 'SFLIGHT'\r\n      is_layout                     = gs_layout\r\n      it_hyperlink                  = gt_hypetab           \" Attach table with hyperlink handles\r\n    CHANGING\r\n      it_outtab                     = gt_data\r\n      it_fieldcatalog               = gt_fieldcat\r\n    EXCEPTIONS\r\n      invalid_parameter_combination = 1\r\n      program_error                 = 2\r\n      too_many_lines                = 3\r\n      OTHERS                        = 4.\r\n  IF sy-subrc <> 0.\r\n    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno\r\n               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.\r\n  ENDIF.\r\nENDFORM.                    \"display_grid\r\n*&---------------------------------------------------------------------*\r\n*&      Module  STATUS_0100  OUTPUT\r\n*&---------------------------------------------------------------------*\r\n*       text\r\n*----------------------------------------------------------------------*\r\nMODULE status_0100 OUTPUT.\r\n  SET PF-STATUS 'MAIN'.\r\n  SET TITLEBAR 'ALV_EXAMPLES'.\r\nENDMODULE.                 \" STATUS_0100  OUTPUT\r\n*&---------------------------------------------------------------------*\r\n*&      Module  DISPLAY_GRID  OUTPUT\r\n*&---------------------------------------------------------------------*\r\n*       text\r\n*----------------------------------------------------------------------*\r\nMODULE display_grid OUTPUT.\r\n  PERFORM read_data.\r\n  PERFORM display_grid.\r\nENDMODULE.                 \" DISPLAY_GRID  OUTPUT\r\n*&---------------------------------------------------------------------*\r\n*&      Module  USER_COMMAND_0100  INPUT\r\n*&---------------------------------------------------------------------*\r\n*       text\r\n*----------------------------------------------------------------------*\r\nMODULE user_command_0100 INPUT.\r\n*   to react on oi_custom_events:\r\n  CALL METHOD cl_gui_cfw=>dispatch.\r\n  CASE sy-ucomm.\r\n    WHEN 'BACK' OR\r\n         'EXIT' OR\r\n         'CANCEL'.\r\n      LEAVE PROGRAM.\r\n    WHEN OTHERS.\r\n*     do nothing\r\n  ENDCASE.\r\nENDMODULE.                 \" USER_COMMAND_0100  INPUT\r\n*&---------------------------------------------------------------------*\r\n*&      Form  GET_LAYOUT\r\n*&---------------------------------------------------------------------*\r\n*       text\r\n*----------------------------------------------------------------------*\r\n*  -->  p1        text\r\n*  <--  p2        text\r\n*----------------------------------------------------------------------*\r\nFORM get_layout .\r\n  gs_layout-zebra = 'X'.\r\n  gs_layout-stylefname = 'CELL_TABLE'.\r\nENDFORM.                    \" GET_LAYOUT\r\n*&#038;---------------------------------------------------------------------*\r\n*&#038;      Form  GET_HYPERLINKS\r\n*&#038;---------------------------------------------------------------------*\r\n*       text\r\n*----------------------------------------------------------------------*\r\n*  -->  p1        text\r\n*  <--  p2        text\r\n*----------------------------------------------------------------------*\r\nFORM get_hyperlinks .\r\n  DATA: ls_hype TYPE lvc_s_hype.\r\n\r\n  ls_hype-handle = '1'.\r\n  ls_hype-href = 'http:\/\/google.com'.\r\n  APPEND ls_hype TO gt_hypetab.\r\n\r\n  ls_hype-handle = '2'.\r\n  ls_hype-href = 'http:\/\/yahoo.com'.\r\n  APPEND ls_hype TO gt_hypetab.\r\nENDFORM.                    \" GET_HYPERLINKS\r\n*&#038;---------------------------------------------------------------------*\r\n*&#038;      Form  GET_FIELDCAT\r\n*&#038;---------------------------------------------------------------------*\r\n*       text\r\n*----------------------------------------------------------------------*\r\n*  -->  p1        text\r\n*  <--  p2        text\r\n*----------------------------------------------------------------------*\r\nFORM get_fieldcat .\r\n  FIELD-SYMBOLS: <fs_fcat> TYPE lvc_s_fcat.\r\n\r\n  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'\r\n    EXPORTING\r\n      i_structure_name       = 'SFLIGHT'\r\n    CHANGING\r\n      ct_fieldcat            = gt_fieldcat\r\n    EXCEPTIONS\r\n      inconsistent_interface = 1\r\n      program_error          = 2\r\n      OTHERS                 = 3.\r\n  CHECK sy-subrc = 0.\r\n\r\n  \" Attach the hyperlink to PLANETYPE field\r\n  READ TABLE gt_fieldcat ASSIGNING <fs_fcat> WITH KEY fieldname = 'PLANETYPE'.\r\n  CHECK sy-subrc = 0.\r\n  <fs_fcat>-web_field = 'HL_FNAME'.\r\n\r\nENDFORM.                    \" GET_FIELDCAT<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Pushbuttons and hyperlinks in ALV fields<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"ALV tutorial 10 - Pushbuttons and Hyperlinks in cells http:\/\/wp.me\/p3nYbe-8l","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[16,136,9],"tags":[446,447,127,125,126,17],"class_list":["post-517","post","type-post","status-publish","format-standard","hentry","category-abap","category-alv-tutorial","category-development","tag-abap","tag-alv","tag-button","tag-hyperlink","tag-pushbutton","tag-sap"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3nYbe-8l","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/posts\/517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=517"}],"version-history":[{"count":7,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/posts\/517\/revisions"}],"predecessor-version":[{"id":560,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=\/wp\/v2\/posts\/517\/revisions\/560"}],"wp:attachment":[{"href":"https:\/\/oprsteny.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oprsteny.cz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}