четверг, 25 июля 2019 г.

Изменение списка рассылки из ABAP

После долгих боданий с любимой Бивишкой удалось наколхозить ФМ, который в список рассылки подставляет нужное мыло.

Спасибо статье.

И, да, это старый абап.


function zpsb_bw_set_distibution_list.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     REFERENCE(I_OBJNAME) TYPE  SO_OBJ_NAM
*"  TABLES
*"      T_USERSDATA STRUCTURE  SODLIENTI1
*"----------------------------------------------------------------------
  types:
    begin of ty_soucadcp,
        usrtp type so_usr_tp,
        usryr type so_usr_yr,
        usrno type so_usr_no,
      end of ty_soucadcp.

*    BEGIN OF ty_usrno,
*        member_id(20) TYPE c,
*      END OF ty_usrno.

  data:
        wa_soucadcp     type ty_soucadcp,
        lt_usrno        like sodlienti1 occurs 300 with header line,
        search_fol      like soxli occurs with header line,
        ex_region       like soxrg,
        cancel_f,
        folder_id_con   like sofoldati1-object_id,
        object_id       like soodk,
        object_id_con   like sofoldati1-object_id,
        dli_inf         like sodlidati1,
        dli_insert_dat  like sodlichgi1,
        mess            type string.
*"----------------------------------------------------------------------
  select single
      dlitp
      dliyr
      dlino
      foltp
      folyr
      folno
    into (object_id-objtp,
          object_id-objyr,
          object_id-objno,
          search_fol-foltp,
          search_fol-folyr,
          search_fol-folno)
    from soid
   where objnam eq i_objname.

  lt_usrno t_usersdata.
  sort lt_usrno.

  if search_fol is initial.
    ex_region-finbo    'X'.
    ex_region-foutb    'X'.
    ex_region-fprv     'X'.
    ex_region-fpwb     'X'.
    ex_region-fswb     'X'.
    ex_region-fresub   'X'.

    call function 'SO_WIND_FOLDERS_SELECT'
        exporting
             exclude_regions            ex_region
             folder_access              '1'
             full_screen                ' '
             one_selection              'X'
             owner                      ' '
             region                     'Q'
             selection                  'X'
*         source_folder_id           = ' '
*         folder_selections          = ' '
*         current_fol_id             = ' '
        importing
             f_cancelled                cancel_f
*         f_document_selection       =
         tables
             follist                    search_fol
        exceptions
             component_not_available    1
             operation_no_authorization 2
             owner_not_exist            3
             parameter_error            4
             x_error                    5
             others                     6.

    if sy-subrc ne 0.
      clearsearch_fol.
    endif.

    case sy-subrc.
      when 1message e846(sowith 'Component_not_available'.
      when 2message e846(sowith 'Operation_no_authorization'.
      when 3message e846(sowith 'Owner_not_exist '.
      when 4message e846(sowith 'Parameter_error'.
      when 5message e846(sowith 'X_error'.
      when 6message e846(sowith 'Unbekannter Fehler'.
      when 0.
        if cancel_f <> ' '.
          clearsearch_fol.
        endif.
    endcase.
  endif.

  concatenate search_fol-foltp search_fol-folyr search_fol-folno
         into folder_id_con.

  write:text-008 ,/.
  concatenate object_id-objtp object_id-objyr object_id-objno
         into object_id_con.

  call function 'SO_DLI_READ_API1'
      exporting
*         dli_name                   = ' '
          dli_id                     object_id_con
          shared_dli                 'X'
     importing
          dli_data                   dli_inf
*    TABLES
*         DLI_ENTRIES                =
     exceptions
          dli_not_exist              1
          operation_no_authorization 2
          parameter_error            3
          x_error                    4
          others                     5.

  case sy-subrc.
    when 1message e846(sowith 'dli_not_exist'.
    when 2message e846(sowith 'operation_no_authorization'.
    when 3message e846(sowith 'parameter_error'.
    when 4message e846(sowith 'x_error'.
    when 5message e846(sowith 'OTHERS'.
    when 0.
      move-corresponding dli_inf to dli_insert_dat.
      clear dli_inf.
      call function 'SO_DLI_UPDATE_API1'
        exporting
            dli_id                     object_id_con
            dli_update_data            dli_insert_dat
*           DLI_NAME                   = ' '
        importing
            dli_info                   dli_inf
        tables
            dli_entries                t_usersdata
        exceptions
            dli_not_exist              1
            operation_no_authorization 2
            parameter_error            3
            x_error                    4
            enqueue_error              5
            others                     6.
      case sy-subrc.
        when 1message e846(sowith 'dli_not_exist'.
        when 2message e846(sowith 'operation_no_authorization'.
        when 3message e846(sowith 'Parameter_error'.
        when 4message e846(sowith 'X_error'.
        when 5message e846(sowith 'Enqueue_error'.
        when 6message e846(sowith 'Unbekannter Fehler'.
        when 0.
          concatenate mess `Список рассылки ` dli_inf-obj_name ` обновлён` into mess.
          message mess type 'I'.
      endcase.
  endcase.
endfunction.

Комментариев нет:

Отправить комментарий