Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9193

Re: Sum Button on Application toolbar

$
0
0

Hello Parag,

 

You have added a new button for download in the ALV display, right ?

 

Can you please tell me in which routine you have coded the action for that new ALV download button.

 

Refer to the below program for the same.

 

 

REPORT  zbmm_zar4021.

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

*  System Name  : SAP R/3

*  Category    : MM

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

* Program Name : ZBMM_ZAR4021

*

* Outline      : Deletion of Info records

*

* Transaction name : ZBMM_0462 - Deletion of Info records

*

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

*  History      :

* Date          Developer              Description

* 18.09.2013  Nikita Magoo          P130186 - Deletion of Info records

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

 

* Type Pools

TYPE-POOLS: slis.

 

* Constant Declaration used as a flag

CONSTANTS: ct_gc_flag TYPE c VALUE'X'.

 

* Global tables

DATA: itab_gt_data TYPESTANDARDTABLEOF zbmm_s0324,

      itab_gt_eina TYPESTANDARDTABLEOF eina,

      itab_gt_eine TYPESTANDARDTABLEOF eine,

      itab_gt_fieldcat TYPE slis_t_fieldcat_alv.

* Workarea

DATA: str_gs_eina TYPE eina,

      str_gs_eine TYPE eine,

      str_gs_layout TYPE slis_layout_alv.

 

*Selection screen

SELECTION-SCREENBEGINOFBLOCK b1 WITHFRAMETITLE text-001.

SELECT-OPTIONS: so_lifnr FOR str_gs_eina-lifnr NO INTERVALS,

                so_matnr FOR str_gs_eina-matnr NO INTERVALS,

                so_ekorg FOR str_gs_eine-ekorg NO INTERVALS,

                so_werks FOR str_gs_eine-werks NO INTERVALS,

                so_infnr FOR str_gs_eina-infnr NO INTERVALS,

                so_erdat FOR str_gs_eina-erdat,

                so_exprf FOR str_gs_eine-exprf NO INTERVALS,

                so_inco1 FOR str_gs_eine-inco1 NO INTERVALS.

PARAMETERS: pa_poflg TYPE ILOEE,

            pa_coflg TYPE ILOEA.

SELECTION-SCREENENDOFBLOCK b1.

 

INITIALIZATION.

*Create field catalog from dictionary structure or internal table

  PERFORM fm_fieldcat_init.

 

START-OF-SELECTION.

* Check authorization on transaction

  CALLFUNCTION'Z_ZBBC_AUTHORITY_TRANSACTION'

    EXPORTING

      i_tcode = 'ZBMM_0462'.

 

*Select data from tables

  PERFORM fm_select_data.

 

END-OF-SELECTION.

 

 

  IF itab_gt_data ISINITIAL.

*  No data found for Selection Criteria

    MESSAGE s999(zbmm_0001)WITH text-005.

  ELSE.

*    ALV Grid Display

    PERFORM fm_alv_display.

  ENDIF.

 

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

*&      Form  fm_fieldcat_init

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

*      text: Used for defining the structure of the ALV

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

 

FORM fm_fieldcat_init.

*  Building field catalog

 

  CALLFUNCTION'REUSE_ALV_FIELDCATALOG_MERGE'

    EXPORTING

      i_program_name        = sy-repid

      i_structure_name      = 'ZBMM_S0324'

      i_inclname            = sy-repid

    CHANGING

      ct_fieldcat          = itab_gt_fieldcat

    EXCEPTIONS

      inconsistent_interface = 1

      program_error        = 2

      OTHERS                = 3.

  IF sy-subrc <>0.

    MESSAGEID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

 

ENDFORM.                    "fm_fieldcat_init

 

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

*&      Form  fm_select_data

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

*      text: Used for filling respective data from itab_gt_eine and itab_gt_eina table into itab_gt_data table

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

 

FORM fm_select_data.

 

* Workarea

  DATA:  str_ls_data TYPE zbmm_s0324,

        str_ls_eina TYPE eina,

        str_ls_eine TYPE eine.

 

*  the data is selected from eine into itab_gt_eine.

  SELECT *

  FROM  eine

  INTOTABLE itab_gt_eine

  WHERE infnr IN so_infnr

    AND ekorg IN so_ekorg

    AND werks IN so_werks

    AND loekz EQ pa_poflg

    AND exprf IN so_exprf

    AND inco1 IN so_inco1.

 

  IF itab_gt_eine ISNOTINITIAL.

*  the data is selected from eina into itab_gt_eina on the basis of info record number in

*  internal table of eine(itab_gt_eine) and respective vendor a/c number, material number

*  and creation dates.

    SELECT *

    FROM  eina

    INTOTABLE itab_gt_eina

    FORALLENTRIESIN itab_gt_eine

    WHERE infnr = itab_gt_eine-infnr

      AND lifnr IN so_lifnr

      AND matnr IN so_matnr

      AND loekz EQ pa_coflg

      AND erdat IN so_erdat.

  ENDIF.

 

*  the data is stored into an internal table itab_gt_data from itab_gt_eina and itab_gt_eine.

  LOOPAT itab_gt_eina INTO str_ls_eina.

 

    READTABLE itab_gt_eine INTO str_ls_eine

    WITHKEY infnr = str_ls_eina-infnr.

    IF sy-subrc EQ0.

      MOVE: str_ls_eina-matnr TO str_ls_data-matnr,

            str_ls_eina-lifnr TO str_ls_data-lifnr,

            str_ls_eina-erdat TO str_ls_data-erdat,

            str_ls_eina-meins TO str_ls_data-meins,

            str_ls_eina-ernam TO str_ls_data-ernam,

            str_ls_eina-loekz TO str_ls_data-loekz_eina,

            str_ls_eina-infnr TO str_ls_data-infnr,

            str_ls_eine-ekorg TO str_ls_data-ekorg,

            str_ls_eine-werks TO str_ls_data-werks,

            str_ls_eine-esokz TO str_ls_data-esokz,

            str_ls_eine-loekz TO str_ls_data-loekz_eine,

            str_ls_eine-ekgrp TO str_ls_data-ekgrp,

            str_ls_eine-waers TO str_ls_data-waers,

            str_ls_eine-netpr TO str_ls_data-netpr,

            str_ls_eine-peinh TO str_ls_data-peinh,

            str_ls_eine-exprf TO str_ls_data-exprf,

            str_ls_eine-inco1 TO str_ls_data-inco1.

      APPEND str_ls_data TO itab_gt_data.

      CLEAR  str_ls_data.

    ENDIF.

  ENDLOOP.

ENDFORM.                    "fm_select_data

 

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

*&      Form  fm_alv_display

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

*      text: For displaying ALV by using table itab_gt_data and adding two buttons for deleting complete info record

*              or deleting purchase view info record from eina or eine table respectively.

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

FORM fm_alv_display .

 

*  Workarea

  DATA:str_ls_variant TYPE disvariant."for parameter IS_VARIANT

 

  str_ls_variant-report = sy-repid.

 

  PERFORM fm_populate_layout.

 

  CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program      = sy-repid

      i_callback_pf_status_set = 'FM_PFSTATUS'

      i_callback_user_command = 'FM_USERCOMMAND'

*      it_events                = gt_events[]

      is_layout              = str_gs_layout

      it_fieldcat            = itab_gt_fieldcat[]

      i_save                  = 'A'

      is_variant              = str_ls_variant

    TABLES

      t_outtab                = itab_gt_data

    EXCEPTIONS

      program_error          = 1

      OTHERS                  = 2.

  IF sy-subrc <>0.

    MESSAGEID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

 

ENDFORM.                    "fm_alv_display

 

 

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

*&      Form  FM_PFSTATUS

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

*      text: For declaring two buttons in GUI status for deleting complete info record

*              or deleting purchase view info record from eina or eine table respectively.

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

 

FORM fm_pfstatus USING rt_extab TYPE slis_t_extab.

  SETPF-STATUS'ZBMM_ZAR4021'.

ENDFORM.                    "FM_PFSTATUS

 

 

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

*&      Form  FM_USERCOMMAND

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

*      text: Form to react according to the user action.

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

*      -->LV_OKCODE  text: used to capture the function code

*                          of the user-defined push-buttons

*      -->L_SELFIELD text: Holding the lines that are selected.

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

FORM fm_usercommand USING c_lv_okcode TYPE sy-ucomm str_ls_selfield TYPE slis_selfield.

 

* Workarea

  DATA:  str_ls_data TYPE zbmm_s0324,

        str_ls_eina TYPE eina,

        str_ls_eine TYPE eine,

        str_ls_reg_eina TYPE eina,

        str_ls_eina_old TYPE eina,

        str_ls_eine_old TYPE eine,

        c_lv_count TYPE integer.

 

  CASE c_lv_okcode.

* when the info record is double clicked,

* then the transaction me12(change info record) will be called for that record

    WHEN'&IC1'.

      IF str_ls_selfield-fieldname = 'MATNR'.

        READTABLE itab_gt_data INTO str_ls_data INDEX str_ls_selfield-tabindex.

          IF sy-subrc EQ0.

            SETPARAMETERID'LIF'field str_ls_data-lifnr.

            SETPARAMETERID'MAT'field str_ls_data-matnr.

            SETPARAMETERID'EKO'field str_ls_data-ekorg.

            SETPARAMETERID'WRK'field str_ls_data-werks.

            SETPARAMETERID'INF'field str_ls_data-infnr.

            CALLTRANSACTION'ME12'ANDSKIPFIRSTSCREEN.

          ENDIF.

      ENDIF.

 

*  when the button "Deleting Complete Info Record" is selected,

*  the flag is created in LOEKZ feild of eina table for the respective info record number.

    WHEN'DCIR'.

      LOOPAT itab_gt_data INTO str_ls_data

        WHERE chk = ct_gc_flag.

          IF str_ls_data-loekz_eina EQ'X'.

            MESSAGE i610(ZBMM_0001)WITH str_ls_data-infnr.

            CONTINUE.

          ENDIF.

* Read inforecord from eina

        READTABLE itab_gt_eina INTO str_ls_eina

        WITHKEY infnr = str_ls_data-infnr.

        IF sy-subrc EQ0.

* Read inforecord from eine

          READTABLE itab_gt_eine INTO str_ls_eine

          WITHKEY infnr = str_ls_data-infnr.

          IF sy-subrc EQ0.

            MOVE str_ls_eina TO str_ls_eina_old.

            str_ls_eina-loekz = ct_gc_flag.

          ENDIF.

* Update LOEKZ field in eina

          CALLFUNCTION'ME_UPDATE_INFORECORD'INUPDATE TASK

            EXPORTING

              xeina  = str_ls_eina

              xeine  = str_ls_eine

              yeina  = str_ls_eina_old

              yeine  = str_ls_eine

              reg_eina = str_ls_reg_eina.

        ENDIF.

* docu: post conditions (RV_CONDITION_SAVE)

  CALLFUNCTION'RV_CONDITION_SAVE'.

  CALLFUNCTION'RV_CONDITION_RESET'

    EXPORTING

      free_memory = 'X'.

 

* docu:  general (EINA-texts, COMMIT_TEXT)

  CALLFUNCTION'COMMIT_TEXT'

    EXPORTING

      object = 'EINA'.

 

    COMMITWORK.

  IF sy-subrc EQ0AND str_ls_data-loekz_eina NE'X'.

    MESSAGE i608(ZBMM_0001)WITH str_ls_data-infnr.

  ENDIF.

 

      ENDLOOP.

 

*  when the button "Deleting Complete Purchase View Record" is selected,

*  the flag is created in LOEKZ feild of eine table for the respective info record number.

    WHEN'DPVIR'.

      LOOPAT itab_gt_data INTO str_ls_data

        WHERE chk = ct_gc_flag.

          IF str_ls_data-loekz_eine EQ'X'.

            MESSAGE i612(ZBMM_0001)WITH str_ls_data-infnr.

            CONTINUE.

          ENDIF.

* Read inforecord from eina

        READTABLE itab_gt_eina INTO str_ls_eina

        WITHKEY infnr = str_ls_data-infnr.

        IF sy-subrc EQ0.

* Read inforecord from eine

          READTABLE itab_gt_eine INTO str_ls_eine

          WITHKEY infnr = str_ls_data-infnr.

          IF sy-subrc EQ0.

            MOVE str_ls_eine TO str_ls_eine_old.

            str_ls_eine-loekz = ct_gc_flag.

          ENDIF.

* Update LOEKZ field in eine

          CALLFUNCTION'ME_UPDATE_INFORECORD'INUPDATE TASK

            EXPORTING

              xeina  = str_ls_eina

              xeine  = str_ls_eine

              yeina  = str_ls_eina

              yeine  = str_ls_eine_old

              reg_eina = str_ls_reg_eina.

 

        ENDIF.

* docu: post conditions (RV_CONDITION_SAVE)

  CALLFUNCTION'RV_CONDITION_SAVE'.

  CALLFUNCTION'RV_CONDITION_RESET'

    EXPORTING

      free_memory = 'X'.

 

* docu:      purchasing organization (EINE-texts, COMMIT_TEXT)

  CALLFUNCTION'COMMIT_TEXT'

    EXPORTING

      object = 'EINE'.

 

    COMMITWORK.

  IF sy-subrc EQ0AND str_ls_data-loekz_eina NE'X'.

    MESSAGE i609(ZBMM_0001)WITH str_ls_eine-infnr.

  ENDIF.

 

      ENDLOOP.

  ENDCASE.

 

ENDFORM.                    "FM_USERCOMMAND

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

*&      Form  FM_POPULATE_LAYOUT

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

*      text: For adding checkboxes in ALV to select multiple data.

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

 

FORM fm_populate_layout .

  str_gs_layout-box_fieldname = 'CHK'.

  str_gs_layout-box_tabname = 'ITAB_GT_DATA'.

ENDFORM.                    " FM_POPULATE_LAYOUT

Regards, Thanga


Viewing all articles
Browse latest Browse all 9193

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>