SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Список приложений из GOS



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Submit a new program | Новые материалы, программы для сайта
View previous topic :: View next topic  
Author Message
John Doe
Модератор
Модератор


Age: 45
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Thu Nov 18, 2010 11:07 am    Post subject: Список приложений из GOS Reply with quote

Преамбула: Файлики, подцепленные к объектам через GOS, в моей системе сохраняются в БД, а не на контент-сервере. Пользователи сканируют хаотично, не придерживаясь рекомендаций IT, размер файлов не контролируется, вследствие чего имеем общее увеличение времени на бэкап БД.

Фабула: Найти большие файлы для дальнейшей оптимизации (пересканирования либо конвертации). Для этой цели создается отчет для вывода списка объектов системы с приложенными файлами. Реализуется возможность проваливаться на уровень приложения из списка.

Code:
TYPE-POOLS: slis.

DATA: t_atta TYPE TABLE OF srgbtbrel WITH HEADER LINE.
DATA: g_object TYPE bapiborid,
      lt_relat TYPE TABLE OF bapirellk,
      fcat TYPE lvc_t_fcat,
      hcat TYPE lvc_s_fcat.

DATA: t_obj TYPE HASHED TABLE OF rpybobs WITH UNIQUE KEY objtype
        WITH HEADER LINE.

DATA: BEGIN OF obj,
        objtp   TYPE so_obj_tp,
        objyr   TYPE so_obj_yr,
        objno   TYPE so_obj_no,
      END OF obj.

DATA: otype TYPE rpybobs-objtype,
      length LIKE sood-objlen.

DATA: BEGIN OF outtab OCCURS 0,
        objtype LIKE rpybobs-objtype,
        shorttext LIKE rpybobs-shorttext,
        objnum LIKE srgbtbrel-instid_a,
        attnum TYPE i,
        length TYPE p DECIMALS 3,
        uname TYPE sy-uname,
      END OF outtab.

PARAMETERS: p_size TYPE i.    " Допустимый размер файла в кБ

START-OF-SELECTION.
  SELECT * FROM srgbtbrel INTO TABLE t_atta
    WHERE reltype = 'ATTA'.
  IF sy-subrc <> 0.
    MESSAGE 'Нет загруженных приложений'(001) TYPE 'S' DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

  LOOP AT t_atta.
    CLEAR outtab.

    READ TABLE t_obj WITH TABLE KEY objtype = t_atta-typeid_a.
    IF sy-subrc <> 0.
      MOVE t_atta-typeid_a TO otype.
      CALL FUNCTION 'RPY_OBJECTTYPE_READ'
        EXPORTING
          objecttype_id   = otype
        IMPORTING
          objecttype_info = t_obj.
      IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      INSERT t_obj INTO TABLE t_obj.
    ENDIF.
    outtab-objtype = t_atta-typeid_a.
    outtab-shorttext = t_obj-shorttext.
    outtab-objnum = t_atta-instid_a.
    outtab-attnum = 1.

    obj = t_atta-instid_b+17(17).

    SELECT SINGLE objlen cronam FROM sood INTO (length, outtab-uname)
      WHERE objtp = obj-objtp
      AND   objyr = obj-objyr
      AND   objno = obj-objno.

    outtab-length = length / 1024.
    CHECK outtab-length > p_size.

    COLLECT outtab.

  ENDLOOP.

END-OF-SELECTION.
  CLEAR hcat.
  hcat-col_pos = 1.
  hcat-fieldname = 'SHORTTEXT'.
  hcat-scrtext_m = hcat-coltext = 'Тип объекта'(002).
  hcat-outputlen = 20.
  APPEND hcat TO fcat.
  CLEAR hcat.
  hcat-col_pos = 2.
  hcat-fieldname = 'OBJNUM'.
  hcat-scrtext_m = hcat-coltext = 'Номер'(003).
  hcat-outputlen = 10.
  APPEND hcat TO fcat.
  CLEAR hcat.
  hcat-col_pos = 3.
  hcat-fieldname = 'ATTNUM'.
  hcat-scrtext_m = hcat-coltext = 'Приложения'(004).
  hcat-outputlen = 10.
  APPEND hcat TO fcat.
  CLEAR hcat.
  hcat-col_pos = 4.
  hcat-fieldname = 'LENGTH'.
  hcat-scrtext_m = hcat-coltext = 'Размер, кБ'(005).
  hcat-outputlen = 15.
  APPEND hcat TO fcat.
  CLEAR hcat.
  hcat-col_pos = 5.
  hcat-fieldname = 'UNAME'.
  hcat-scrtext_m = hcat-coltext = 'Создатель'(006).
  hcat-outputlen = 15.
  APPEND hcat TO fcat.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program      = sy-cprog
      i_callback_user_command = 'USER_COMMAND'
      it_fieldcat_lvc         = fcat
    TABLES
      t_outtab                = outtab[].

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->OKCODE     text
*      -->SELFIELD   text
*----------------------------------------------------------------------*
FORM user_command USING okcode TYPE sy-ucomm
                        selfield TYPE slis_selfield.
  DATA: l_object TYPE sibflporb.
  CASE okcode.
    WHEN '&IC1'.
      IF selfield-value IS NOT INITIAL.
        CLEAR outtab.
        READ TABLE outtab INDEX selfield-tabindex.
        l_object-instid = outtab-objnum.
        l_object-typeid = outtab-objtype.
        l_object-catid = 'BO'.

        CALL FUNCTION 'GOS_ATTACHMENT_LIST_POPUP'
          EXPORTING
            is_object = l_object.

      ENDIF.

    WHEN OTHERS.

  ENDCASE.
ENDFORM.                    "user_command
Back to top
View user's profile Send private message Blog
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> Submit a new program | Новые материалы, программы для сайта All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.