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: 

ALV - selecting row

former_member246634
Active Participant
0 Kudos

Hi guys

I have a problem with adding row select option to my ALV.

Here's my code:


CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

   I_STRUCTURE_NAME  = 'ZDEF_INTRASTAT'

CHANGING

    CT_FIELDCAT  = lt_fcat[]

EXCEPTIONS

   INCONSISTENT_INTERFACE = 1

   PROGRAM_ERROR  = 2

   OTHERS   = 3.

  DATA: g_variant TYPE disvariant,

        g_layo TYPE slis_layout_alv.

        g_layo-info_fieldname = 'COLOR'.

        g_variant-report  = sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

   EXPORTING

    i_callback_program = sy-repid

    i_callback_user_command  = 'USER_COMMAND'

    i_callback_pf_status_set   = 'SUB_PF_STATUS'

    is_layout    = g_layo

    it_fieldcat   = lt_fcat

    i_save   = 'A'

    is_variant   = g_variant

    TABLES

      t_outtab   = gt_dane

EXCEPTIONS

   PROGRAM_ERROR = 1

   OTHERS   = 2.

FORM sub_pf_status USING rt_extab TYPE slis_t_extab..

  SET PF-STATUS 'ZSTANDARD'.

ENDFORM.

FORM user_command USING r_ucomm     LIKE sy-ucomm

                        rs_selfield TYPE slis_selfield.

     IF r_ucomm EQ 'CTR'.

       call TRANSACTION 'SM30'. "calling transaction sm30 with by button called CTR

     ENDIF.

ENDFORM.

and my table look like this:

If I add: "g_layo-box_fieldname = 'SELECT'." it looks like I would like it to be (select squares, marked red):

But if I press any button I some big error (I copied text to dump.txt file).

Can anyone help me with this error?

Best regards,

Bartlomiej

1 ACCEPTED SOLUTION

former_member246634
Active Participant
0 Kudos

So maybe I'll ask another question. What is the easiest way to get those select squares (like on second image)?

If I click on any cell in table from first image the whole row is highlighted, does it mean that it is also selected? I am asking, because I want to call transaction with my button and pass some values (or I will read a little about batch input).

Regards.

18 REPLIES 18

Former Member
0 Kudos

Hi

ZDEF_INTRASTAT has a field called SELECT?


Max

0 Kudos

No, it doesn't, that's whole code:

report  zdef_intrastat.

tables:

   veiav, makt.

type-pools: slis.

include:

         zdef_intrastat_data,

         zdef_intrastat_selscr,

         zdef_intrastat_events.


Everything connected to ALV (like previous code I posted) is in "zdef_intrastat_events"

0 Kudos

Hi

You've add this code line:


g_layo-box_fieldname = 'SELECT'.

That means the internal table (GT_DANE) used to show the data by ALV has to have a field called SELECT, this field will be used to save the selection.

I suppose the dump occur because your table hasn't that field

If you want to use it, you need to insert that field in your internal table.(GT_DANE)

So you need to decide how to add that field in GT_DANE, because I suppose it's defined as dictionary table (ZDEF_INTRASTAT), and I don't believe it's a good solution to change it.


Probably you can define a dictionary structure includes ZDEF_INTRASTAT and here you can add SELECT field


Of course if ZDEF_INTRASTAT is a structure you can try to change it

Max

former_member246634
Active Participant
0 Kudos

So maybe I'll ask another question. What is the easiest way to get those select squares (like on second image)?

If I click on any cell in table from first image the whole row is highlighted, does it mean that it is also selected? I am asking, because I want to call transaction with my button and pass some values (or I will read a little about batch input).

Regards.

0 Kudos

REPORT  zu_mm_mat_trf_post  NO STANDARD PAGE HEADING

                                  LINE-SIZE 256

                                  LINE-COUNT 60

                                  MESSAGE-ID zm.

************************************************************************

* Table Declaration                                                    *

************************************************************************

************************************************************************

* Constants Declaration                                                *

************************************************************************

CONSTANTS : c_yes  TYPE c VALUE '1' ,

             c_no   TYPE c VALUE '0' .

************************************************************************

* Data Types Declaraction                                              *

************************************************************************

TYPE-POOLS: slis.

TYPES: BEGIN OF type_marc,

          matnr  LIKE marc-matnr,

          qty LIKE mseg-erfmg,

       END OF type_marc,

    BEGIN OF ty_final,

        check TYPE c,

        matnr TYPE  marc-matnr,

        maktx TYPE makt-maktx,

        werks TYPE vbap-werks,

*       menge TYPE mseg-erfmg,

        menge(10),

        meins TYPE mara-meins,

        menge1 TYPE mseg-menge,

        bal TYPE mseg-menge,

        field_style  TYPE lvc_t_styl, "FOR DISABLE

    END OF ty_final,

   BEGIN OF ty_mard,

        matnr TYPE mard-matnr,

        werks TYPE mard-werks,

        lgort TYPE mard-lgort,

        labst TYPE mard-labst,

   END OF ty_mard,

   BEGIN OF ty_ctu_params ,

   dismode TYPE ctu_params-dismode,

   updmode TYPE ctu_params-updmode,

   cattmode TYPE ctu_params-cattmode,

   defsize  TYPE ctu_params-defsize,

   racommit TYPE ctu_params-racommit,

   nobinpt  TYPE ctu_params-nobinpt,

   nobiend  TYPE ctu_params-nobiend,

   END OF ty_ctu_params.

DATA : it_final TYPE TABLE OF ty_final,

        it_mard TYPE TABLE OF ty_mard,

        it_final1 TYPE TABLE OF ty_final.

DATA : wa_final TYPE ty_final,

        wa_final1 TYPE ty_final,

        wa_mard TYPE ty_mard.

DATA: BEGIN OF stb OCCURS 1000.

         INCLUDE STRUCTURE stpox.

DATA: END OF stb.

DATA: BEGIN OF topmat.

         INCLUDE STRUCTURE cstmat.

DATA: END OF topmat.

DATA : dstst_flg LIKE csdata-xfeld.

DATA: BEGIN OF matcat OCCURS 50.

         INCLUDE STRUCTURE cscmat.

DATA: END OF matcat.

DATA : stlal LIKE stko-stlal,

        stlan LIKE stzu-stlan,

        date  LIKE stko-datuv.

DATA : t_ctu_params TYPE TABLE OF ty_ctu_params.

DATA : wa_ctu_params TYPE ctu_params .

DATA : l_file TYPE ibipparms-path,

        text1(100),

        ans.

************************************************************************

* Internal Tables Declaration                                          *

************************************************************************

* Batch input data of single transaction

DATA: bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE,

* Messages of call transaction

       msgtab LIKE bdcmsgcoll OCCURS WITH HEADER LINE,

       msgline(100).

DATA : it_marc TYPE TABLE OF type_marc,

        t_marc  TYPE type_marc ,

        wa_marc TYPE type_marc ,

        v_index(3) TYPE n,

        v_index1(2) TYPE n,

        v_fname LIKE bdcdata-fnam.

DATA : it_file  LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE.

DATA file_path LIKE  rlgrap-filename.

************************************************************************

*---------------------- ALV Declaration ----------------------------*

************************************************************************

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.

DATA: it_fieldcat TYPE lvc_t_fcat,     "slis_t_fieldcat_alv WITH HEADER LINE,

       wa_fieldcat TYPE lvc_s_fcat,

       gd_tab_group TYPE slis_t_sp_group_alv,

       gd_layout    TYPE lvc_s_layo, "slis_layout_alv,

       gd_repid     LIKE sy-repid,

       events  TYPE slis_t_event,

       wa_events TYPE slis_alv_event,

       v_rname TYPE sy-repid VALUE sy-repid.

************************************************************************

* Selection Screen Declaration                                         *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS : werks TYPE marc-werks OBLIGATORY DEFAULT '956' ,

              lgort TYPE mard-lgort OBLIGATORY,

              rgort TYPE mard-lgort OBLIGATORY DEFAULT 'RIP',

              refer TYPE mkpf-bktxt     OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

PARAMETERS : p_opt1 TYPE c RADIOBUTTON GROUP radi USER-COMMAND op1,

              p_opt2 TYPE c RADIOBUTTON GROUP radi DEFAULT 'X' .

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.

PARAMETERS : matnr TYPE mara-matnr OBLIGATORY MODIF ID op1,

              menge TYPE mseg-erfmg OBLIGATORY MODIF ID op1.

SELECTION-SCREEN END OF BLOCK b3.

SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-004.

PARAMETERS: p_file   LIKE rlgrap-filename  MODIF ID op2.

SELECTION-SCREEN END OF BLOCK b4.

AT SELECTION-SCREEN OUTPUT .

   LOOP AT SCREEN .

     IF screen-group1 = 'OP1' .

*      CLEAR : p_objky ,p_posex .

       IF p_opt1 = 'X' .

         screen-invisible = c_no .

         screen-active = c_yes .

       ELSE.

         screen-invisible = c_yes .

         screen-active = c_no .

       ENDIF.

       MODIFY SCREEN .

     ENDIF.

     IF screen-group1 = 'OP2' .

       IF p_opt2 = 'X' .

*        REFRESH : p_objky1.

         screen-invisible = c_no .

         screen-active = c_yes .

       ELSE.

         screen-invisible = c_yes .

         screen-active = c_no .

       ENDIF.

       MODIFY SCREEN .

     ENDIF.

   ENDLOOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

   PERFORM f4help USING p_file.

************************************************************************

* Start of Selection Declaration                                       *

************************************************************************

START-OF-SELECTION.

   PERFORM f_get_data.

   PERFORM fill_events_tab.

   PERFORM display_data.

************************************************************************

*&---------------------------------------------------------------------*

*&      Form  f_get_data

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM f_get_data .

   IF p_opt2 = 'X' .

*EXCEL TO INTERNAL TABLE

     CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

       EXPORTING

         filename                = l_file

         i_begin_col             = '1'

         i_begin_row             = '2'

         i_end_col               = '2'

         i_end_row               = '9999'

       TABLES

         intern                  = it_file

       EXCEPTIONS

         inconsistent_parameters = 1

         upload_ole              = 2

         OTHERS                  = 3.

     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_file.

       CASE it_file-col.

         WHEN '0001'.

           MOVE it_file-value TO wa_marc-matnr.

         WHEN '0002'.

           MOVE it_file-value TO wa_marc-qty.

       ENDCASE.

       AT END OF row.

         APPEND wa_marc TO it_marc .

         CLEAR wa_marc.

       ENDAT.

     ENDLOOP.

     LOOP AT it_marc INTO wa_marc.

       stlan = 3.

       stlal = 1.

       date = sy-datum .

*FM TO EXPLODE BOM TILL LAST LEVEL.

       CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

         EXPORTING

           capid                 = 'PP01'

           datuv                 = date

           mehrs                 = 'X'

           mtnrv                 = wa_marc-matnr

           stlal                 = stlal

           stlan                 = stlan

           werks                 = werks

         IMPORTING

           topmat                = topmat

           dstst                 = dstst_flg

         TABLES

           stb                   = stb

           matcat                = matcat

         EXCEPTIONS

           alt_not_found         = 1

           call_invalid          = 2

           material_not_found    = 3

           missing_authorization = 4

           no_bom_found          = 5

           no_plant_data         = 6

           no_suitable_bom_found = 7

           conversion_error      = 8

           OTHERS                = 9.

       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 stb.

         wa_final1-matnr = stb-idnrk .    "MATERIAL

         wa_final1-meins = stb-meins .    "QTY

         wa_final1-maktx = stb-ojtxp .    "DESC

         wa_final1-werks = stb-werks .    " PLANT

         wa_final1-menge = stb-menge .    "QTY

         APPEND wa_final1 TO it_final1.

       ENDLOOP.

*FOR QTY IN STORAGE LOC.

       SELECT matnr

              werks

              lgort

              labst

              FROM mard

              INTO TABLE it_mard

              FOR ALL ENTRIES IN it_final1

              WHERE matnr = it_final1-matnr AND

                    werks = it_final1-werks AND

                    lgort = lgort.

       LOOP AT it_final1 INTO wa_final1.

         READ TABLE it_mard INTO wa_mard WITH KEY matnr = wa_final1-matnr

                                                 werks = wa_final1-werks

                                                 lgort = lgort.

         IF sy-subrc = 0.

           wa_final1-menge1 = wa_mard-labst.

         ENDIF.

*     req qty = req qty / base qty * qty of the bom.

         wa_final1-menge = ( wa_marc-qty /  topmat-bmeng * wa_final1-menge.

         wa_final1-bal = wa_final1-menge1 - wa_final1-menge .

         MODIFY it_final1 FROM  wa_final1 .

         CLEAR : wa_final1 .

       ENDLOOP.

       APPEND LINES OF it_final1 TO it_final.

       CLEAR : wa_final1.

       REFRESH it_final1 .

     ENDLOOP.

   ENDIF.

   IF p_opt1 = 'X'.

     stlan = 3.

     stlal = 1.

     date = sy-datum .

     CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

       EXPORTING

         capid                 = 'PP01'

         datuv                 = date

         mehrs                 = 'X'

         mtnrv                 = matnr

         stlal                 = stlal

         stlan                 = stlan

         werks                 = werks

       IMPORTING

         topmat                = topmat

         dstst                 = dstst_flg

       TABLES

         stb                   = stb

         matcat                = matcat

       EXCEPTIONS

         alt_not_found         = 1

         call_invalid          = 2

         material_not_found    = 3

         missing_authorization = 4

         no_bom_found          = 5

         no_plant_data         = 6

         no_suitable_bom_found = 7

         conversion_error      = 8

         OTHERS                = 9.

     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 stb.

       wa_final-matnr = stb-idnrk .

       wa_final-meins = stb-meins .

       wa_final-maktx = stb-ojtxp .

       wa_final-werks = stb-werks .

       wa_final-menge = stb-menge .

       APPEND wa_final TO it_final.

     ENDLOOP.

     SELECT matnr

            werks

            lgort

            labst

            FROM mard

            INTO TABLE it_mard

            FOR ALL ENTRIES IN it_final

            WHERE matnr = it_final-matnr AND

                  werks = it_final-werks AND

                   lgort = lgort.

     LOOP AT it_final INTO wa_final.

       READ TABLE it_mard INTO wa_mard WITH KEY matnr = wa_final-matnr

                                               werks = wa_final-werks

                                               lgort = lgort.

       IF sy-subrc = 0.

         wa_final-menge1 = wa_mard-labst.

       ENDIF.

* req qty = req qty / base qty * qty of the bom.

       wa_final-menge = ( menge /  topmat-bmeng * wa_final-menge.

       wa_final-bal = wa_final-menge1 - wa_final-menge .

       MODIFY it_final FROM  wa_final.

       CLEAR : wa_final .

     ENDLOOP.

   ENDIF.

ENDFORM.                    "f_get_data

*&--------------------------------------------------------------------*

*&      Form  fill_events_tab

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

* FOR HANDELING PFSTATUS AND COMMANDS

FORM fill_events_tab.

   CLEAR wa_events.

   wa_events-name = 'USER_COMMAND'.

   wa_events-form = 'VALIDATE_COMMAND'.

   APPEND wa_events TO events.

   CLEAR wa_events.

   wa_events-name = 'PF_STATUS_SET'.

   wa_events-form = 'ATTACH_STATUS'.

   APPEND wa_events TO events.

ENDFORM.                    "fill_events_tab

*&--------------------------------------------------------------------*

*&      Form  ATTACH_STATUS

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM attach_status USING ex_tab TYPE slis_t_extab.

   SET PF-STATUS 'ZMM_MAT_TRF_POSTSTAT' EXCLUDING ex_tab .

ENDFORM.                    "ATTACH_STATUS

*&--------------------------------------------------------------------*

*&      Form  VALIDATE_COMMAND

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM validate_command USING ucomm LIKE sy-ucomm

                                    sel_det TYPE slis_selfield.

   CASE ucomm .

     WHEN '&UPLOAD'.

       DATA: ref1 TYPE REF TO cl_gui_alv_grid.

       CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'

         IMPORTING

           e_grid = ref1.

       CALL METHOD ref1->check_changed_data.

****to refresh alv display*************

       wa_ctu_params-defsize = 'X'.

       wa_ctu_params-dismode = 'N'.

       wa_ctu_params-updmode = 'X'.

       REFRESH bdcdata.

       PERFORM populate.

       CALL TRANSACTION 'MB1B' USING bdcdata  OPTIONS FROM wa_ctu_params MESSAGES INTO

       msgtab .

       LOOP AT msgtab.

         CALL FUNCTION 'MASS_MESSAGE_GET'

           EXPORTING

*              SPRSL                   = SY-LANGU

            arbgb                   = msgtab-msgid

            msgnr                   = msgtab-msgnr

            msgv1                   = msgtab-msgv1

            msgv2                   msgtab-msgv2

            msgv3                   msgtab-msgv3

            msgv4                   msgtab-msgv4

          IMPORTING

            msgtext                 text1.

*            EXCEPTIONS

*              MESSAGE_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.

         CALL FUNCTION 'POPUP_FOR_INTERACTION'

           EXPORTING

             headline             = 'DOCUMENT INFORMATION'

             text1                = text1

*   TEXT2                = ' '

*   TEXT3                = ' '

*   TEXT4                = ' '

*   TEXT5                = ' '

*   TEXT6                = ' '

*   TICON                = 'I'

             button_1             = 'OK'

             button_2             = 'Leave Program'

*   BUTTON_3             = ' '

          IMPORTING

            button_pressed       = ans

                   .

         IF ans = 1.

*LEAVE PROGRAM.

*perform display_data.

           DELETE it_final WHERE check EQ 'X'.

           sel_det-refresh    = 'X'.

           sel_det-col_stable = 'X' .

           sel_det-row_stable = 'X' .

         ENDIF.

         IF ans = 2.

           LEAVE PROGRAM.

         ENDIF.

       ENDLOOP.

       PERFORM message-custom.

       REFRESH msgtab.

       CLEAR msgtab.

     WHEN '&SELECT'.

       LOOP AT it_final INTO wa_final WHERE bal GE 0.

         wa_final-check = 'X'.

         MODIFY it_final FROM wa_final.

         sel_det-refresh    = 'X'.

         sel_det-col_stable = 'X' .

         sel_det-row_stable = 'X' .

       ENDLOOP.

     WHEN '&DSELECT'.

       LOOP AT it_final INTO wa_final WHERE bal GE 0.

         wa_final-check = ' '.

         MODIFY it_final FROM wa_final.

         sel_det-refresh    = 'X'.

         sel_det-col_stable = 'X' .

         sel_det-row_stable = 'X' .

       ENDLOOP.

     WHEN OTHERS .

   ENDCASE.

ENDFORM.                    "VALIDATE_COMMAND

*&--------------------------------------------------------------------*

*&      Form  display_data

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM display_data .

   PERFORM set_specific_field_attributes.

   PERFORM build_layout.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'CHECK'.

   wa_fieldcat-scrtext_m = 'Checkbox'.

   wa_fieldcat-checkbox = 'X'.

   wa_fieldcat-edit = 'X'.

   wa_fieldcat-col_pos = 1.

   wa_fieldcat-outputlen = '15'.

   APPEND wa_fieldcat TO it_fieldcat.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MATNR'.

   wa_fieldcat-scrtext_m = 'Material'.

   wa_fieldcat-outputlen = '10'.

   wa_fieldcat-col_pos = 2.

   APPEND wa_fieldcat TO it_fieldcat.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MAKTX'.

   wa_fieldcat-scrtext_m = 'DESCRIPTION'.

   wa_fieldcat-outputlen = '15'.

   wa_fieldcat-col_pos = 3.

   APPEND wa_fieldcat TO it_fieldcat.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MENGE'.

*  wa_fieldcat-edit = 'X'.

   wa_fieldcat-scrtext_m = 'REQ. QTY'.

   wa_fieldcat-outputlen = '15'.

   wa_fieldcat-col_pos = 4.

   APPEND wa_fieldcat TO it_fieldcat.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MEINS'.

   wa_fieldcat-scrtext_m = 'UNIT'.

   wa_fieldcat-outputlen = '15'.

   wa_fieldcat-col_pos = 5.

   APPEND wa_fieldcat TO it_fieldcat.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'MENGE1'.

   wa_fieldcat-scrtext_m = 'Stock on StL'.

   wa_fieldcat-outputlen = '15'.

   wa_fieldcat-col_pos = 6.

   APPEND wa_fieldcat TO it_fieldcat.

   CLEAR wa_fieldcat.

   wa_fieldcat-fieldname = 'BAL'.

   wa_fieldcat-scrtext_m = 'BALANCE'.

   wa_fieldcat-outputlen = '15'.

   wa_fieldcat-col_pos = 7.

   APPEND wa_fieldcat TO it_fieldcat.

*  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

*    EXPORTING

*      i_callback_program = v_rname

**      i_grid_title       = 'report name'

**      is_layout          = layout

*      it_fieldcat        = it_fieldcat

*      it_events          = events

*    TABLES

*      t_outtab           = it_final

*    EXCEPTIONS

*      program_error      = 1

*      OTHERS             = 2.

*

   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

          EXPORTING

              i_callback_program      = v_rname

*            i_callback_user_command = 'USER_COMMAND'

              is_layout_lvc          = gd_layout

              it_fieldcat_lvc        = it_fieldcat

              it_events              = events

              i_save                 = 'X'

          TABLES

               t_outtab               = it_final

          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.

ENDFORM.                    "display_data

*&--------------------------------------------------------------------*

*&      Form  populate

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM populate.

   PERFORM bdc_dynpro USING 'SAPMM07M' '0400'.

   PERFORM bdc_field  USING 'BDC_CURSOR'

                             'XFULL'.

   PERFORM bdc_field  USING 'BDC_OKCODE'

                           '/00'.

   PERFORM bdc_field  USING 'MKPF-BKTXT'

                             refer.

   PERFORM bdc_field  USING 'RM07M-BWARTWA'

                             '313'.

   PERFORM bdc_field  USING 'RM07M-WERKS'

                             werks.

   PERFORM bdc_field  USING 'RM07M-LGORT'

                             lgort.

   PERFORM bdc_field  USING 'XFULL'

                             ' '.

   PERFORM bdc_field  USING 'RM07M-WVERS2'

                            'X'.

   PERFORM bdc_dynpro USING 'SAPMM07M' '0421'.

   PERFORM bdc_field  USING 'BDC_CURSOR'

                            'MSEG-ERFME(01)'.

   PERFORM bdc_field  USING 'MSEGK-UMLGO'

                             rgort.

*  DELETE it_final WHERE check NE 'X'.

   LOOP AT it_final INTO wa_final WHERE check ='X'.

     v_index = v_index + 1.

     IF v_index = '008'.

       PERFORM bdc_field  USING 'BDC_SUBSCR'

                               'SAPMM07M'.

       PERFORM bdc_field  USING 'BDC_SUBSCR'

                                'SAPLKACB'.

       PERFORM bdc_dynpro USING 'SAPMM07M'

                                '0421'.

       PERFORM bdc_field  USING 'BDC_OKCODE'

                                '=NLE'.

       PERFORM bdc_field  USING 'BDC_SUBSCR'

                                'SAPMM07M'.

       PERFORM bdc_field  USING 'BDC_SUBSCR'

                                'SAPLKACB'.

       PERFORM bdc_dynpro USING 'SAPMM07M'

                                '0421'.

       CLEAR v_index.

       v_index = v_index + 1.

     ENDIF.

     PERFORM bdc_field  USING 'BDC_OKCODE'

                              '/00'.

     CONCATENATE 'MSEG-MATNR(' v_index ')' INTO v_fname.

     PERFORM bdc_field  USING v_fname

                              wa_final-matnr.

     CLEAR v_fname.

     CONCATENATE 'MSEG-ERFMG(' v_index ')' INTO v_fname.

     PERFORM bdc_field  USING v_fname

                              wa_final-menge.

     CLEAR v_fname.

     CONCATENATE 'MSEG-ERFME(' v_index ')' INTO v_fname.

     PERFORM bdc_field  USING v_fname

                            wa_final-meins.

     CLEAR v_fname.

   ENDLOOP.

   PERFORM bdc_field  USING 'BDC_OKCODE'

                            '/00'.

   PERFORM bdc_dynpro USING 'SAPMM07M'

                            '0421'.

   PERFORM bdc_field  USING 'BDC_CURSOR'

                            'MSEG-ERFME(01)'.

   PERFORM bdc_field  USING 'BDC_OKCODE'

                            '=BU'.

   CLEAR :v_index .

ENDFORM.                    "populate

*----------------------------------------------------------------------*

*        Start new screen                                              *

*----------------------------------------------------------------------*

FORM bdc_dynpro USING program dynpro.

   CLEAR bdcdata.

   bdcdata-program  = program.

   bdcdata-dynpro   = dynpro.

   bdcdata-dynbegin = 'X'.

   APPEND bdcdata.

ENDFORM.                    "BDC_DYNPRO

*----------------------------------------------------------------------*

*        Insert field                                                  *

*----------------------------------------------------------------------*

FORM bdc_field USING fnam fval.

   CLEAR bdcdata.

   bdcdata-fnam = fnam.

   bdcdata-fval = fval.

   APPEND bdcdata.

ENDFORM.                    "BDC_FIELD

*&--------------------------------------------------------------------*

*&      Form  message-custom

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM message-custom.

ENDFORM .                    "message-custom

*&--------------------------------------------------------------------*

*&      Form  f4help

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

*      -->T_FILE     text

*---------------------------------------------------------------------*

FORM f4help USING t_file.

*GO GET FILE NAME

   CALL FUNCTION 'F4_FILENAME'

* EXPORTING

*   PROGRAM_NAME        = SYST-CPROG

*   DYNPRO_NUMBER       = SYST-DYNNR

*   FIELD_NAME          = ' '

     IMPORTING

       file_name           = l_file.

   t_file = l_file.

ENDFORM.                                                    "f4help

*&--------------------------------------------------------------------*

*&      Form  set_specific_field_attributes

*&--------------------------------------------------------------------*

*       text

*---------------------------------------------------------------------*

FORM set_specific_field_attributes .

   DATA ls_stylerow TYPE lvc_s_styl .

   DATA lt_styletab TYPE lvc_t_styl .

   LOOP AT it_final INTO wa_final.

     IF wa_final-bal LE 0.

       ls_stylerow-fieldname = 'CHECK' .

       ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.

       "set field to disabled

       APPEND ls_stylerow  TO wa_final-field_style.

       MODIFY it_final FROM wa_final.

     ENDIF.

   ENDLOOP.

ENDFORM.                    "set_specific_field_attributes

*&---------------------------------------------------------------------*

*&      Form  BUILD_LAYOUT

*&---------------------------------------------------------------------*

*       Build layout for ALV grid report

*----------------------------------------------------------------------*

FORM build_layout.

* Set layout field for field attributes(i.e. input/output)

   gd_layout-stylefname = 'FIELD_STYLE'.

   gd_layout-zebra             = ' '.

ENDFORM.                    " BUILD_LAYOU




this code may help you .  here i am using check box and then using call txn method for selected records .

0 Kudos

Hi

You should post how GT_DANE is defined in your program,


for example of your defination is like this:



DATA GT_DANE LIKE STANDARD TABLE OF ZDEF_INTRASTAT.

or equivalent definitions:



DATA GT_DANE LIKE ZDEF_INTRASTAT OCCURS 0.


You can try to replace it with this definition:


DATA: BEGIN OF GT_DANE 0CCURS 0.

                 INCLUDE STRUCTURE ZDEF_INTRASTAT.

DATA:      SELECT TYPE FLAG,

           END     OF GT_DANE 0CCURS 0.


In this way now the internal table GT_DANE has a field caled SELECT to be used for marker in ALV GRID

Max

0 Kudos

Thanks, Max, your solution worked and I didn't have to change my code a lot.

nikolayevstigneev
Contributor
0 Kudos

Hi, Bartlomiej!

What is the easiest way to get those select squares (like on second image)?

One option for you is using checkboxes in a 1st field (as Mahesh suggested) so that user can select the necessary records. But I don't like that style because if you have 50 records on screen and you need to select 30 of them it's much easier to use a "built-in" solution instead of ticking every row. Just add the next line for your layout:

g_layo-sel_mode = 'A'.
And you'll get standard selection buttons to the left of your ALV table.

0 Kudos

I tried this before, but I got error:


The data object "G_LAYO" has no component called "SEL_MODE". but there is a component called "EDIT_MODE".

0 Kudos

Ah, sorry, I didn't notice you are using 'REUSE_ALV_GRID_DISPLAY'. I guess, in that case you'll have to add SELECT column in your outtab as Max suggested.

But you can try to use 'REUSE_ALV_GRID_DISPLAY_LVC' instead. Then you'll be able to set g_layo-sel_mode (it's of type LVC_S_LAYO there).

former_member202818
Active Contributor
0 Kudos

Hi Bartlomiej,

Refer this link...

Regards

Sreekanth

Former Member
0 Kudos

Hi Bartlomiej,

lf ur layout g_layo is define as following

DATA: g_layo TYPE lvc_s_layo.

Then you can easily achieve your requirement of selection of records from the alv grid display just by adding the one line in your code.

g_layo-sel_mode   =  'A'.

With the above line you can solve your issue.

Regards,

Chakradhar.

0 Kudos

So I changed this:


g_layo TYPE slis_layout_alv.

to this:   


g_layo TYPE lvc_s_layo,

Then I called function 'REUSE_ALV_GRID_DISPLAY_LVC' instead of 'REUSE_ALV_GRID_DISPLAY'.I also had to change type of "lt_fcat" from  SLIS_T_FIELDCAT_ALV to LVC_T_FCAT.

Now I can't use 'REUSE_ALV_FIELDCATALOG_MERGE' because of "lt_fcat's" wrong type.

I also get dump: "NO_FIELDCATALOG_AVAILABLE".

My task is to select one row from my ALV, then press my button and get the edit screen which you can access by opening transaction SM30, fill necessary fieds, get table select one row, press "Details" (crtl+shift+2) and get that final screen.

0 Kudos

Hi

As I've suggested you you need to update the definition of your internal table: that's all?

Have you done it?

Can you post how you defined your internal table?

Max

0 Kudos

If you stll want to see it:

     gt_dane TYPE STANDARD TABLE OF ZDEF_INTRASTAT.

And I changed it like you suggested.

Thank you one more time.

former_member246634
Active Participant
0 Kudos

I have next question, but it doesn't have to be solved. Here's my code:


     PERFORM bdc_dynpro USING 'SAPMSVMA' '0100'.

     PERFORM bdc_field USING 'BDC_CURSOR' 'VIMDYNFLDS-LTD_DTA_AR'.

     PERFORM bdc_field USING 'BDC_OKCODE' '=UPD'.

     PERFORM bdc_field USING 'VIEWNAME' 'VEIAV'.

     PERFORM bdc_field USING 'VIMDYNFLDS-LTD_DTA_NO' ''.

     PERFORM bdc_field USING 'VIMDYNFLDS-LTD_DTA_AR' 'X'.

     PERFORM bdc_dynpro USING 'SAPLSVIX' '0210'.

     PERFORM bdc_field USING 'BDC_CURSOR' 'MARK_CHECKBOX(11)'.

     PERFORM bdc_field USING 'BDC_OKCODE' '=OKAY'.

     PERFORM bdc_field USING 'MARK_CHECKBOX(01)' 'X'.

     PERFORM bdc_field USING 'MARK_CHECKBOX(11)' 'X'.

     PERFORM bdc_dynpro USING 'SAPLSVIX' '0100'.

     PERFORM bdc_field USING 'BDC_CURSOR' 'D0100_FIELD_TAB-LOWER_LIMIT(02)'.

     PERFORM bdc_field USING 'BDC_OKCODE' '=OKAY'.

     PERFORM bdc_field USING 'D0100_FIELD_TAB-LOWER_LIMIT(01)' lv_datumjahr.

     PERFORM bdc_field USING 'D0100_FIELD_TAB-LOWER_LIMIT(02)' lv_belegnumr.

     PERFORM bdc_dynpro USING 'SAPLVINT' '0150'.

     PERFORM bdc_field USING 'BDC_CURSOR' 'VEIAV-BELEGIDEN'.

In my program I choose a row from table, press my buton and it takes me to wanted edit mode.

Let's say that screen with my table is number 1, "edit mode" is 4th, two screens are ommited (selection screen for view VEIAV and the result of this selection screen).

Is there any possibilty to press back or exit button (esc, F3, whatever) and take user from screen 4 directly to screen 1?

Regards.

0 Kudos

Hi

Try to use fm VIEW_MAINTENANCE_CALL instead of a BDC based on SM30 or a SUBMIT of RVEXVEF1 program

Max

0 Kudos

Hi

Try to use FM VIEW_MAINTENANCE_CALL.

Regards,

Chakradhar.