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

архивлинки



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Tue May 03, 2011 7:42 pm    Post subject: архивлинки Reply with quote

Даже не знаю как сказать. Есть кнопочка в тр. pp01 ppome в левом верхнем углу для объектов О. На нее прилично навешено. Одна из функций это загружать файлы в SAP, и по ней же можно их достать посмотреть. Некоторая информация о хранимых файлах лежит в таблице SOFFPHF SOFFLOIO. Возможно кто то работал с этим функционалом и подскажет куда можно смотреть, чтобы сделать загрузку файлов аналогично действиям по этой кнопке. Это нужно для того, чтобы потом через эту кнопку можно было просматривать сохраненные документы. Мутно все получилось, но понимания у меня мало.

Отобразить эту кнопку можно через ФМ RH_OBJECT_PUBLISH

Вряд ли конечно на такое кто нибудь ответит. Crying or Very sad

Не только для объектов О, в PA30 для табельных тоже присутствует.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем


Last edited by XXX_:) on Thu May 05, 2011 3:38 pm; edited 2 times in total
Back to top
View user's profile Send private message Blog
vvk
Гуру
Гуру



Joined: 17 Jan 2011
Posts: 14

PostPosted: Wed May 04, 2011 10:25 am    Post subject: Reply with quote

Функциональность называется Generic Object Services или GOS. Можете почитать help http://help.sap.com/saphelp_erp2005/helpdata/RU/c8/96c998142f11d389940000e8216438/frameset.htm.

Основной класс для работы с GOS - CL_GOS_DOCUMENT_SERVICE.
Примеры использования можете посмотреть в классе CL_ATTACHMENT_LIST (методы MESSAGE_DELETE, MESSAGE_EXPORT, MESSAGE_EDIT и MESSAGE_DISPLAY).
Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Wed May 04, 2011 8:19 pm    Post subject: Reply with quote

Частично то что нужно. файлы грузятся (вроде бы) либо через CL_GOS_DOCUMENT_SERVICE либо еще пробовал через ФМ GOS_EXECUTE_SERVICE. но дело в том, что по вышеобозначенной кнопке невозможно их просмотреть. Мне нужно как раз, чтобы документы потом были доступны по этой кнопке, так что вопрос еще открыт.

Наврал, через ФМ все в порядке. Только я скопировал ФМ в Z. Убрал галуку дистанционный, поставил стандартный. Только вот такое странное поведение, если запустить ФМ через SE37, то сохранение происходит и читается потом через нужную кнопку, а вот при запуске из программы (экран ИТ), читать через кнопку отказывается Sad. Пока не победил.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
Armann
Модератор
Модератор



Joined: 01 Jan 2008
Posts: 422
Location: Moscow

PostPosted: Wed May 04, 2011 10:00 pm    Post subject: Reply with quote

XXX_:) wrote:
Только вот такое странное поведение, если запустить ФМ через SE37, то сохранение происходит и читается потом через нужную кнопку, а вот при запуске из программы (экран ИТ), читать через кнопку отказывается Sad. Пока не победил.

Может не хватает commit work'a после вызова ФМа?
Back to top
View user's profile Send private message Blog
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Wed May 04, 2011 10:11 pm    Post subject: Reply with quote

Нет. commit work пробовал не помогает. Помогла установка галочки на ФМ-е дистанционный модуль. и при вызове destination 'none'.

Если создать програмку и в нем вызвать ФМ, то все работает и без галочки дистанционного модуля.

Сейчас работает, завтра буду делать чтение и удаление.

Этот ФМ делает 2 вещи, насколько я понимаю. Кладет файл на сервер(не знаю точно где храниться) и создает запись в таблице с ключом. Так вот, вне зависимости видит ли потом стандартный функционал эти файлы, записи в таблице всегда создаются. Это меня натолкнуло на мысль, что с сохранинием в БД все в порядке, а вот с переносом файла на сервер что то происходит. Это конечно только мое предположение. Сейчас, тьфу-тьфу работает, но хочется понять механизм: как файлы передаются на сервер, что может в программе помешать этому. Если есть такая информация поделитесь ссылкой.

ЗЫ: хотел потом переписать с ФМ-а на классы, но раз работает только с галочной Дистанционный модуль, то классы по-видимому отменяются.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Thu May 05, 2011 11:05 am    Post subject: Reply with quote

Есть ли функционал, позволяющий отображать только один документ из GOS, и так чтобы его можно было удалить и просмотреть, как минимум?

Есть ли функционал позволяющий выбирать только один документ объекта?

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
YuriT
Участник
Участник



Joined: 03 Nov 2008
Posts: 35

PostPosted: Thu May 05, 2011 11:23 am    Post subject: Reply with quote

Я когда-то писал программу для копирования аттачментов к аппраизелам между клиентами. Можен поможет чем

Code:
REPORT  z0h_pms_copy_apr_attachments5 MESSAGE-ID z0h_pms_attachments5.

TABLES: hrhap.

*general constants
CONSTANTS: c_cli_default  TYPE mandt         VALUE '010',
           c_rfc_default  TYPE rfcdest       VALUE 'D32_010',
           c_reltype      TYPE oblreltype    VALUE 'ATTA',
           c_typeid_appr  TYPE sibftypeid    VALUE 'APPR_DOC',
           c_typeid_atch  TYPE sibftypeid    VALUE 'MESSAGE',
           c_cataid_appr  TYPE sibfcatid     VALUE 'BO',
           c_cataid_atch  TYPE sibfcatid     VALUE 'BO',
           c_curpln_mask  TYPE char3         VALUE '01%',
           c_folder_reg   TYPE so_fol_rg     VALUE 'B',

*steps
           c_step_start   TYPE numc3         VALUE '000',
           c_step_get_all TYPE numc3         VALUE '010',
           c_step_filter  TYPE numc3         VALUE '020',
           c_step_xcheck  TYPE numc3         VALUE '021',
           c_step_hasatta TYPE numc3         VALUE '022',
           c_step_process TYPE numc3         VALUE '030',
           c_step_read    TYPE numc3         VALUE '031',
           c_step_get_fol TYPE numc3         VALUE '032',
           c_step_insert  TYPE numc3         VALUE '033',
           c_step_link    TYPE numc3         VALUE '034',
           c_step_finish  TYPE numc3         VALUE '040',
           c_step_end     TYPE numc3         VALUE '999',

*icons
           c_icon_ok      TYPE rmsae_icon_st VALUE '@5B@',
           c_icon_warning TYPE rmsae_icon_st VALUE '@5D@',
           c_icon_error   TYPE rmsae_icon_st VALUE '@5C@',
           c_icon_info    TYPE rmsae_icon_st VALUE '@0S@',
           c_icon_unknown TYPE rmsae_icon_st VALUE '@35@',

*statuses
           c_ok           TYPE char1         VALUE 'S',
           c_warning      TYPE char1         VALUE 'W',
           c_error        TYPE char1         VALUE 'E',
           c_info         TYPE char1         VALUE 'I'.

*types
TYPES: BEGIN OF ty_s_att_links,
          document   TYPE sibfboriid,
          attachment TYPE sibfboriid,
       END OF ty_s_att_links,

       BEGIN OF ty_s_log,
          status   TYPE rmsae_icon_st,
          step     TYPE char30,
          appr_doc TYPE hap_appraisal_id,
          text     TYPE pc_b2a_ptxt,
       END OF ty_s_log,

       BEGIN OF ty_s_crosscheck,
          appraisal_id TYPE hap_appraisal_id,
       END OF ty_s_crosscheck,

       BEGIN OF ty_s_existatta,
          document   TYPE sibfboriid,
          attachment TYPE sibfboriid,
       END OF ty_s_existatta,

       ty_t_att_links  TYPE STANDARD TABLE OF ty_s_att_links,
       ty_t_log        TYPE STANDARD TABLE OF ty_s_log,
       ty_t_crosscheck TYPE HASHED   TABLE OF ty_s_crosscheck WITH UNIQUE KEY appraisal_id,
       ty_t_existatta  TYPE SORTED   TABLE OF ty_s_existatta  WITH UNIQUE KEY document attachment.

*global data
DATA: gv_folder_id_flat       TYPE so_obj_id,
      gv_relationtype         TYPE binreltyp,
      gv_proc_records         TYPE i,
      gv_proc_records_text    TYPE char10,
      gv_log_entry            TYPE char1024,
      gv_progress             TYPE string,
      gv_uname_backup         TYPE syuname,
      gv_datum_backup         TYPE sydatum,
      gv_uzeit_backup         TYPE syuzeit,
      gs_document_data_read   TYPE sofolenti1,
      gs_document_data_insert TYPE sodocchgi1,
      gs_document_data_create TYPE sofolenti1,
      gs_folder_id            TYPE soodk,
      gs_obj_rolea            TYPE borident,
      gs_obj_roleb            TYPE borident,
      gt_att_links            TYPE ty_t_att_links,
      gt_crosscheck           TYPE ty_t_crosscheck,
      gt_existatta            TYPE ty_t_existatta,
      gt_log                  TYPE ty_t_log,
      gt_object_header        TYPE TABLE OF solisti1,
      gt_object_content       TYPE TABLE OF solisti1,
      gt_object_para          TYPE TABLE OF soparai1,
      gt_object_parb          TYPE TABLE OF soparbi1,
      gt_contents_hex         TYPE TABLE OF solix.

FIELD-SYMBOLS: <gf_att_links> TYPE ty_s_att_links,
               <gf_existatta> TYPE ty_s_existatta.

*connection setting
SELECTION-SCREEN BEGIN OF BLOCK one WITH FRAME TITLE text-001.
PARAMETERS: p_client TYPE t000-mandt DEFAULT c_cli_default  OBLIGATORY,
            p_rfcdes TYPE rfcdest    DEFAULT c_rfc_default  OBLIGATORY MATCHCODE OBJECT f4_rfcdes3.
SELECTION-SCREEN END OF BLOCK one.

*restricting by doc. ID
SELECTION-SCREEN BEGIN OF BLOCK two WITH FRAME TITLE text-002.
SELECT-OPTIONS: so_aprid FOR hrhap-appraisal_id NO INTERVALS.
PARAMETERS:     cb_igncr TYPE c AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK two.
****************************************************************************************************************
*     Following steps take place during the copying:                                                           *
****************************************************************************************************************
*000 Start report
*10. Select appraisal document attachment data from defined client
*20. Filter processed appraisal document by specified ID
*21. Crosscheck same IDs between target and current clients
*22. Filter out documents that already have attachments in current client. Can be skipped by screen parameter
*30. Start processing. Next seps are repeated in a loop for all processed documents
*31. Read attachment content from using defined RFC connection
*32. Get root folder ID
*33. Recreate attachment in current client
*34. Link created attachment with appraisal document in current client. Uses same document ID as in source client
*40. Finish processing
*999 End report
START-OF-SELECTION.

  PERFORM show_progress USING text-pre.

*Step 000 Start report
  DO 1 TIMES.

    MESSAGE i000 INTO gv_log_entry.
    PERFORM write_log USING c_info c_step_start gv_log_entry.
*Step 10. Select appraisal document attachment data from defined client
    SELECT instid_a instid_b
    FROM   srgbtbrel
    CLIENT SPECIFIED
    INTO   TABLE gt_att_links
    WHERE  client   =    p_client       AND
           reltype  =    c_reltype     AND
           instid_a LIKE c_curpln_mask AND
           typeid_a =    c_typeid_appr AND
           catid_a  =    c_cataid_appr AND
           catid_a  =    c_cataid_atch.

    PERFORM count_remaining_attachments CHANGING gv_proc_records gv_proc_records_text.

    IF gv_proc_records = 0.

      MESSAGE w010 WITH p_client INTO gv_log_entry.
      PERFORM write_log USING c_warning c_step_get_all gv_log_entry.
      EXIT.

    ELSE.

      MESSAGE s110 WITH gv_proc_records p_client INTO gv_log_entry.
      PERFORM write_log USING c_ok c_step_get_all gv_log_entry.

    ENDIF.

    SELECT appraisal_id
    FROM   hrhap
    INTO   TABLE gt_crosscheck
    WHERE  plan_version = c_curpln_mask(2).

*Step 20. Filter processed appraisal document by specified ID
    DELETE gt_att_links WHERE document+2(32) NOT IN so_aprid.

    PERFORM count_remaining_attachments CHANGING gv_proc_records gv_proc_records_text.

    IF gv_proc_records = 0.

      MESSAGE w020 INTO gv_log_entry.
      PERFORM write_log USING c_warning c_step_filter gv_log_entry.
      EXIT.

    ELSE.

      MESSAGE s120 WITH gv_proc_records INTO gv_log_entry.
      PERFORM write_log USING c_ok c_step_filter gv_log_entry.

*Step 21. Crosscheck same IDs between target and current clients
      LOOP AT gt_att_links ASSIGNING <gf_att_links>.

        READ TABLE gt_crosscheck WITH TABLE KEY appraisal_id = <gf_att_links>-document+2(32) TRANSPORTING NO FIELDS.
        CHECK sy-subrc <> 0.
        DELETE gt_att_links.

      ENDLOOP.

      UNASSIGN <gf_att_links>.

      PERFORM count_remaining_attachments CHANGING gv_proc_records gv_proc_records_text.

      IF gv_proc_records = 0.

        MESSAGE w021 INTO gv_log_entry.
        PERFORM write_log USING c_warning c_step_xcheck gv_log_entry.
        EXIT.

      ELSE.

        MESSAGE s121 WITH gv_proc_records INTO gv_log_entry.
        PERFORM write_log USING c_ok c_step_xcheck gv_log_entry.

*Step 22. Filter out documents that already have attachments in current client. Can be skipped by screen parameter
        IF cb_igncr = 'X'.

          SELECT instid_a instid_b
          FROM srgbtbrel
          INTO TABLE gt_existatta
          WHERE  reltype  =    c_reltype     AND
                 instid_a LIKE c_curpln_mask AND
                 typeid_a =    c_typeid_appr AND
                 catid_a  =    c_cataid_appr AND
                 catid_a  =    c_cataid_atch.

          LOOP AT gt_att_links ASSIGNING <gf_att_links>.

            CLEAR gs_document_data_read.

            LOOP AT gt_existatta ASSIGNING <gf_existatta> WHERE document = <gf_att_links>-document.

              CALL FUNCTION 'SO_DOCUMENT_READ_API1'
                EXPORTING
                  document_id                = <gf_existatta>-attachment(46)
                IMPORTING
                  document_data              = gs_document_data_read
                EXCEPTIONS
                  document_id_not_exist      = 1
                  operation_no_authorization = 2
                  x_error                    = 3
                  OTHERS                     = 4.

              CHECK sy-subrc = 0 AND gs_document_data_read IS NOT INITIAL.
              EXIT.

            ENDLOOP.

            CHECK gs_document_data_read IS NOT INITIAL.
            DELETE gt_att_links .

          ENDLOOP.

          UNASSIGN: <gf_att_links>, <gf_existatta>.

          PERFORM count_remaining_attachments CHANGING gv_proc_records gv_proc_records_text.

          IF gv_proc_records = 0.

            MESSAGE w022 INTO gv_log_entry.
            PERFORM write_log USING c_warning c_step_hasatta gv_log_entry.
            EXIT.

          ELSE.

            MESSAGE s122 WITH gv_proc_records INTO gv_log_entry.
            PERFORM write_log USING c_ok c_step_hasatta gv_log_entry.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDIF.

*Step 30. Start processing. Next seps are repeated in a loop for all processed documents
    MESSAGE i030 WITH gv_proc_records INTO gv_log_entry.
    PERFORM write_log USING c_info c_step_process gv_log_entry.

    LOOP AT gt_att_links ASSIGNING <gf_att_links>.

      gv_progress = sy-tabix.
      CONCATENATE gv_progress '/' gv_proc_records_text INTO gv_progress SEPARATED BY space.
      PERFORM show_progress USING gv_progress.

      PERFORM clear_variables.

*Step 31. Read attachment content from using defined RFC connection
      CALL FUNCTION 'SO_DOCUMENT_READ_API1' DESTINATION p_rfcdes
        EXPORTING
          document_id                = <gf_att_links>-attachment(46)
        IMPORTING
          document_data              = gs_document_data_read
        TABLES
          object_header              = gt_object_header
          object_content             = gt_object_content
          object_para                = gt_object_para
          object_parb                = gt_object_parb
          contents_hex               = gt_contents_hex
        EXCEPTIONS
          document_id_not_exist      = 1
          operation_no_authorization = 2
          x_error                    = 3
          OTHERS                     = 4.

      IF sy-subrc <> 0 OR ( LINES( gt_contents_hex ) = 0 AND LINES( gt_object_content ) = 0 ).

        MESSAGE e031 WITH <gf_att_links>-attachment p_rfcdes INTO gv_log_entry.
        PERFORM write_log USING c_error c_step_read gv_log_entry.

        CONTINUE.

      ELSE.

        MESSAGE s131 WITH <gf_att_links>-attachment p_rfcdes INTO gv_log_entry.
        PERFORM write_log USING c_ok c_step_read gv_log_entry.

      ENDIF.

*Step 32. Get root folder ID
      CALL FUNCTION 'SO_FOLDER_ROOT_ID_GET'
        EXPORTING
          region                = c_folder_reg
        IMPORTING
          folder_id             = gs_folder_id
        EXCEPTIONS
          communication_failure = 1
          owner_not_exist       = 2
          system_failure        = 3
          x_error               = 4
          OTHERS                = 5.

      IF sy-subrc <> 0.

        MESSAGE e032 INTO gv_log_entry.
        PERFORM write_log USING c_error c_step_get_fol gv_log_entry.

        CONTINUE.

      ELSE.

        CONCATENATE: gs_folder_id-objtp gs_folder_id-objyr gs_folder_id-objno INTO gv_folder_id_flat.
        MESSAGE s132 WITH gv_folder_id_flat INTO gv_log_entry.
        PERFORM write_log USING c_ok c_step_get_fol gv_log_entry.

      ENDIF.

      gs_document_data_insert-obj_name   = gs_document_data_read-obj_name.
      gs_document_data_insert-obj_descr  = gs_document_data_read-obj_descr.
      gs_document_data_insert-obj_langu  = gs_document_data_read-obj_langu.

      gv_uname_backup = sy-uname.
      gv_datum_backup = sy-datum.
      gv_uzeit_backup = sy-uzeit.

      sy-uname = gs_document_data_read-creat_name.          "#EC *
      sy-datum = gs_document_data_read-creat_date.          "#EC *
      sy-uzeit = gs_document_data_read-creat_time.          "#EC *

*Step 33. Recreate attachment in current client
      CALL FUNCTION 'SO_DOCUMENT_INSERT_API1'
        EXPORTING
          folder_id                  = gv_folder_id_flat
          document_data              = gs_document_data_insert
          document_type              = gs_document_data_read-obj_type
        IMPORTING
          document_info              = gs_document_data_create
        TABLES
          object_header              = gt_object_header
          object_content             = gt_object_content
          contents_hex               = gt_contents_hex
          object_para                = gt_object_para
          object_parb                = gt_object_parb
        EXCEPTIONS
          folder_not_exist           = 1
          document_type_not_exist    = 2
          operation_no_authorization = 3
          parameter_error            = 4
          x_error                    = 5
          enqueue_error              = 6
          OTHERS                     = 7.

      IF sy-subrc <> 0 OR gs_document_data_create IS INITIAL.

        MESSAGE e033 WITH gv_folder_id_flat INTO gv_log_entry.
        PERFORM write_log USING c_error c_step_insert gv_log_entry.

        CONTINUE.

      ELSE.

        MESSAGE s133 WITH gs_document_data_create-doc_id INTO gv_log_entry.
        PERFORM write_log USING c_ok c_step_insert gv_log_entry.

      ENDIF.

      sy-uname = gv_uname_backup.                           "#EC *
      sy-datum = gv_datum_backup.                           "#EC *
      sy-uzeit = gv_uzeit_backup.                           "#EC *

      gs_obj_rolea-objkey  = <gf_att_links>-document.
      gs_obj_rolea-objtype =  c_typeid_appr.
      gs_obj_roleb-objkey  =  gs_document_data_create-doc_id.
      gs_obj_roleb-objtype =  c_typeid_atch.
      gv_relationtype      =  c_reltype.

*Step 34. Link created attachment with appraisal document in current client. Uses same document ID as in source client
      CALL FUNCTION 'BINARY_RELATION_CREATE_COMMIT'
        EXPORTING
          obj_rolea      = gs_obj_rolea
          obj_roleb      = gs_obj_roleb
          relationtype   = gv_relationtype
*        IMPORTING
*          binrel         = gs_binrel
        EXCEPTIONS
          no_model       = 1
          internal_error = 2
          unknown        = 3
          OTHERS         = 4.

      IF sy-subrc <> 0.

        MESSAGE e034 WITH gs_obj_roleb-objkey gs_obj_rolea-objkey INTO gv_log_entry.
        PERFORM write_log USING c_error c_step_link gv_log_entry.

        CONTINUE.

      ELSE.

        MESSAGE s134 WITH gs_obj_roleb-objkey gs_obj_rolea-objkey INTO gv_log_entry.
        PERFORM write_log USING c_ok c_step_link gv_log_entry.

      ENDIF.

    ENDLOOP.

    UNASSIGN <gf_att_links>.

*Step 40. Finalize processing and show log
    COMMIT WORK.

    IF sy-subrc <> 0.

      MESSAGE s040 INTO gv_log_entry.
      PERFORM write_log USING c_error c_step_finish gv_log_entry.
      EXIT.

    ELSE.

      MESSAGE s140 INTO gv_log_entry.
      PERFORM write_log USING c_ok c_step_finish gv_log_entry.

    ENDIF.

  ENDDO.

*Step 999 End report
  MESSAGE i999 INTO gv_log_entry.
  PERFORM write_log USING c_info c_step_end gv_log_entry.

  PERFORM show_log.

END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  write_log
*&---------------------------------------------------------------------*
*       Write log entry
*----------------------------------------------------------------------*
*      -->PU_STATUS     Status of log message (S, E, W, I)
*      -->PU_LOG_ENTRY  Log message
*----------------------------------------------------------------------*
FORM write_log USING pu_status    TYPE c
                     pu_step      TYPE numc3
                     pu_log_entry TYPE char1024.

  DATA: lw_log TYPE ty_s_log.

  IF <gf_att_links> IS ASSIGNED.

    lw_log-appr_doc = <gf_att_links>-document+2(32).

  ENDIF.

  CASE pu_status.

    WHEN 'S'.
      lw_log-status = c_icon_ok.

    WHEN 'W'.
      lw_log-status = c_icon_warning.

    WHEN 'E'.
      lw_log-status = c_icon_error.

    WHEN 'I'.
      lw_log-status = c_icon_info.

    WHEN OTHERS.
      lw_log-status = c_icon_unknown.

  ENDCASE.

  CASE pu_step.

    WHEN c_step_start.
      lw_log-step = text-000.

    WHEN c_step_get_all.
      lw_log-step = text-010.

    WHEN c_step_filter.
      lw_log-step = text-020.

    WHEN c_step_xcheck.
      lw_log-step = text-021.

    WHEN c_step_hasatta.
      lw_log-step = text-022.

    WHEN c_step_process .
      lw_log-step = text-030.

    WHEN c_step_read .
      lw_log-step = text-031.

    WHEN c_step_get_fol .
      lw_log-step = text-032.

    WHEN c_step_insert.
      lw_log-step = text-033.

    WHEN c_step_link.
      lw_log-step = text-034.

    WHEN c_step_finish.
      lw_log-step = text-040.

    WHEN c_step_end.
      lw_log-step = text-999.

    WHEN OTHERS.
      lw_log-step = text-unk.

  ENDCASE.

  lw_log-text = pu_log_entry.

  APPEND lw_log TO gt_log.
  CLEAR gv_log_entry.                                       "#EC *

ENDFORM.                    "write_log

*&---------------------------------------------------------------------*
*&      Form  clear_variables
*&---------------------------------------------------------------------*
*       Clear relevant variables
*----------------------------------------------------------------------*
FORM clear_variables.

  CLEAR: gv_folder_id_flat,
         gv_relationtype,
         gs_document_data_read,
         gs_document_data_insert,
         gs_document_data_create,
         gs_folder_id,
         gs_obj_rolea,
         gs_obj_roleb,
         gt_object_header,
         gt_object_content,
         gt_object_para,
         gt_object_parb,
         gt_contents_hex.

ENDFORM.                    "clear_variables

*&---------------------------------------------------------------------*
*&      Form  show_log
*&---------------------------------------------------------------------*
*       Display log
*----------------------------------------------------------------------*
FORM show_log.

  CALL FUNCTION 'ISU_REUSE_ALV_SIMPLE_STRIPED'
    EXPORTING
      im_repid         = sy-repid
    CHANGING
      cht_display_data = gt_log[]
    EXCEPTIONS
      general_fault    = 1
      OTHERS           = 2.

  IF sy-subrc <> 0.
*shouldn't happen
    CHECK 1 = 1.
  ENDIF.

ENDFORM.                    "show_log

*&---------------------------------------------------------------------*
*&      Form  show_progress
*&---------------------------------------------------------------------*
*       Progress indicator
*----------------------------------------------------------------------*
*      -->PC_TEXT    Progress text n/m
*----------------------------------------------------------------------*
FORM show_progress USING pc_text TYPE string.

  CHECK sy-batch IS INITIAL.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      text = pc_text.

ENDFORM.                    "show_progress

*&---------------------------------------------------------------------*
*&      Form  count_remaining_attachments
*&---------------------------------------------------------------------*
*       Count how many attachment left for processing after filtering
*----------------------------------------------------------------------*
*      -->PC_REC     integer count
*      -->PC_RECT    text count
*----------------------------------------------------------------------*
FORM count_remaining_attachments CHANGING pc_rec TYPE i
                                          pc_rect TYPE char10.

  pc_rec  = LINES( gt_att_links ).
  pc_rect = pc_rec.

ENDFORM.                    "count_remaining_attachments
Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Thu May 05, 2011 3:22 pm    Post subject: Reply with quote

Спасибо за таблицу srgbtbrel, в ней храниться связь между "архивлинком", который для аналогичных задач использовался исторически, и ключом для поиска файлов на сервере. Было интересно ее для себя открыть. К сожалению, видимо механизмы архивлинков и GOS разные и поэтому по стандартным архивлинкам нет ключей для того, чтобы использовать единый механизм GOS для чтения архивлинков. Хотя возможно тут что то можно настроить, механизм насколько я видел можно изменять, но знаний и времени на более подробное знакомство, к сожалению, нет.

Для того чтобы достать файлы использовал ФМ SO_DOCUMENT_MANAGER. тут просто выгрузка, просмотра списка и возможности удаления нет, но в данной задаче, более одного документа на одну запись ИТ и не было предусмотрено, поэтому подошло. А удаление, либо через стандартную кнопку либо при удалении ИТ. Позже дополню как сделал удаление.

Кстати, если у кого есть мысли по поводу записи, чтения, удаления, делитесь, т.к. то что сделал я, работает (пока кроме удаления, пока проблемы), но до совершенства далеко, или просто есть какие то комментарии к тому что я написал, буду рад полезной критике или если будет дан ответ хоть на один вопрос.

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
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 -> ABAP 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.