sap alv example - РУЧНАЯ РАБОТА

 https://www.youtube.com/watch?v=jYopvudn8wY&list=PL-9XBzq-UEp4OBpdluj4NIoDqurXErLmk&index=63


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

*& Report ZUPDATE_ALV
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zupdate_alv.

TYPE-POOLSvimty.

TYPES:
  BEGIN OF ty_mod,
    row TYPE i,
  END OF ty_mod.

DATA:
  g_container        TYPE scrfname VALUE 'CUSTOM_CONTAINER',
  grid1              TYPE REF TO cl_gui_alv_grid,
  g_custom_container TYPE REF TO cl_gui_custom_container.

DATA:
  i_table TYPE REF TO  data,
  wa_all  TYPE REF TO data.

DATA:
  org_crit_inst     TYPE vimty_oc_type,
  old_rc            LIKE sy-subrc,
  act_level         LIKE authb-actvt,
  only_show_allowed TYPE c,
  i_exclude         TYPE ui_functions.





DATA:
  i_mod TYPE STANDARD TABLE OF ty_mod,
  i_del TYPE STANDARD TABLE OF ty_mod.

FIELD-SYMBOLS:
  <i_itab> TYPE table,
  <wa_tab> TYPE any.

DATABEGIN OF header OCCURS 1.
        INCLUDE STRUCTURE vimdesc.
      DATAEND OF header.

DATABEGIN OF namtab OCCURS 50.
        INCLUDE STRUCTURE vimnamtab.
      DATAEND OF namtab.

DATAvim_wheretab LIKE vimwheretb OCCURS 10.

DATAdba_sellist LIKE vimsellist OCCURS 10.

"selection screen
SELECTION-SCREEN BEGIN OF BLOCK bb WITH FRAME TITLE TEXT-100.
PARAMETERSviewname TYPE tvdir-tabname.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 20(10)  TEXT-101 USER-COMMAND b1"display
SELECTION-SCREEN PUSHBUTTON 36(10)  TEXT-102 USER-COMMAND b2"change /modif
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK bb.

AT SELECTION-SCREEN.
  CASE sy-ucomm.
    WHEN 'B1'.
      SET PF-STATUS 'ALV'.
      CALL SCREEN 9001.
    WHEN 'B2'.
      SET PF-STATUS 'ALV1'.
      CALL SCREEN 9001.
    WHEN OTHERS.
  ENDCASE.

CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
    METHODShandle_data_changed
                FOR EVENT data_changed OF cl_gui_alv_grid
      IMPORTING er_data_changed.

ENDCLASS.

CLASS lcl_event_handler IMPLEMENTATION.
  METHOD handle_data_changed.
    PERFORM handle_data_changed USING er_data_changed.
  ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& Form HANDLE_DATA_CHANGED
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> ER_DATA_CHANGED
*&---------------------------------------------------------------------*
FORM handle_data_changed  USING    p_er_data_changed.

ENDFORM.

INCLUDE zupdate_alv_status_9001o01.

INCLUDE zupdate_alv_user_comand_9001.
*&---------------------------------------------------------------------*
*& Form EXCLUDE_TB_FUNCTIONS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- I_EXCLUDE
*&---------------------------------------------------------------------*
FORM exclude_tb_functions  CHANGING p_i_exclude.

ENDFORM.


"""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""""""""""""""""""""""""""""""""""""""""""""""""""

*----------------------------------------------------------------------*
***INCLUDE ZUPDATE_ALV_STATUS_9001O01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
  DATA:
        gr_event_handler TYPE REF TO lcl_event_handler.

  DATA:
    lh_norec     TYPE i,
    lh_total(5)  TYPE c,
    lh_succ(40)  TYPE c,
    lwa_del      TYPE ty_mod,
    lwa_mod      TYPE ty_mod,
    lh_totdel    TYPE i,
    lh_flag      TYPE c,
    li_fieldcat  TYPE lvc_t_fcat,
    lwa_fieldcat TYPE lvc_s_fcat.

* create instance for event handler
  CREATE OBJECT gr_event_handler.
  TRY.
      CREATE DATA i_table TYPE TABLE OF (viewname).
      ASSIGN i_table->TO <i_itab>.
      CREATE DATA wa_all LIKE LINE OF <i_itab>.
      ASSIGN wa_all->TO <wa_tab>.
      "select data dinamically
      SELECT FROM (viewnameINTO TABLE <i_itab>.
      "build the fieldcatalog
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name       viewname
        CHANGING
          ct_fieldcat            li_fieldcat
        EXCEPTIONS
          inconsistent_interface 1
          program_error          2
          OTHERS                 3.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
        WITH sy-msgv1  sy-msgv3 sy-msgv4 sy-msgv2.
      ENDIF.
*      "Making the field editable except for the key fields
*      IF sy-subrc = 'UPD' OR sy-ucomm EQ 'CHANGE' .
*        LOOP AT li_fieldcat INTO lwa_fieldcat .
*          IF lwa_fieldcat-key EQ space.
*            lwa_fieldcat-edit = 'X'.
*            MODIFY li_fieldcat FROM lwa_fieldcat.
*          ENDIF.
*        ENDLOOP.
*      ENDIF.
      "making fields editable
      IF sy-ucomm EQ 'NEW'.
        LOOP AT li_fieldcat INTO lwa_fieldcat.
          lwa_fieldcat-edit 'X'.
          MODIFY li_fieldcat FROM lwa_fieldcat.
        ENDLOOP.
        lh_flag 'X'.
        clear <i_itab>.
        do 100 times.
          append <wa_tab> to <i_itab>.
         enddo.
      ENDIF.
      "exclude buttons
      perform exclude_tb_functions changing i_exclude.
      IF g_custom_container is initial.
         create OBJECT g_custom_container
         EXPORTING
           container_name =  g_container.
                CREATE OBJECT grid1
                  EXPORTING
                    i_parent          g_custom_container.
      ENDIF.
      "making all fields non editable
      IF sy-ucomm eq 'SHOW'.
        LOOP AT li_fieldcat into lwa_fieldcat.
          lwa_fieldcat-edit ' '.
          modify li_fieldcat from lwa_fieldcat.
        ENDLOOP.
      ENDIF.
      IF sy-ucomm eq 'SAVE'..
        LOOP AT li_fieldcat into lwa_fieldcat.
          IF lwa_fieldcat-key space.
            lwa_fieldcat-edit space.
             MODIFY li_fieldcat from lwa_fieldcat.
          ENDIF.
        ENDLOOP.
      ENDIF.
      "displaying the alv grid
      CALL METHOD grid1->set_table_for_first_display
        EXPORTING
         i_structure_name              viewname
         it_toolbar_excluding          i_exclude
        CHANGING
          it_outtab                     <i_itab>
         it_fieldcatalog               li_fieldcat.
      IF sy-subrc <> 0.
       exit.
      ENDIF.
        "getting changed data
        set HANDLER gr_event_handler->handle_data_changed for grid1.
      CATCH cx_sy_create_data_error.
    ENDTRY.
ENDMODULE.

"""""""""""""""""""""""""""""""""""""""""""""""""""""

"""""""""""""""""""""""""""""""""""""""""""""""""""""

*----------------------------------------------------------------------*
***INCLUDE ZUPDATE_ALV_USER_COMAND_9001.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
"" not copy

ENDMODULE.

Comments

Popular posts from this blog

sap abap import from excell to table (transparent table)

sap abap Import from excell to internal table that works 100%