Текущее время: Пн, июл 28 2025, 19:49

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Изменение адресных данных розничного клиента СбЗаказа BAPI_SALESORDER_CHANGE
СообщениеДобавлено: Ср, сен 20 2006, 09:26 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
вообщем, хочу менять телефон разового клиента, это для которого создается каждый раз адресная таблица в adrc
Code:
    ls_bapisdh1x-updateflag = 'U'.
    ls_bapisdh1x-telephone = 'X'.
    ls_bapisdh1-telephone = gv_oc_tel_number.
*   PARTNERS
    lt_bapiparnr-partn_role = 'AG'.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        input  = gv_oc_kunnr
      IMPORTING
        output = lt_bapiparnr-partn_numb.
      SELECT SINGLE vbpa~adrnr
        INTO lt_bapiaddr1-addr_no
        FROM vbpa
        WHERE vbpa~vbeln = vbak-vbeln
          AND vbpa~posnr = '000000'
          AND vbpa~parvw = 'AG'.
      lt_bapiaddr1-tel1_numbr = gv_oc_tel_number.
      APPEND lt_bapiaddr1.

      lt_bapiparnr-telephone = gv_oc_tel_number.
      lt_bapiparnr-telephone2 = gv_oc_mob_number.
      lt_bapiparnr-country = 'RU'.
      SELECT SINGLE ort01
        INTO lt_bapiparnr-city
        FROM kna1
        WHERE kunnr = lt_bapiparnr-partn_numb.
      APPEND lt_bapiparnr.

      lt_bapiparnrc-document = vbak-vbeln.
      lt_bapiparnrc-itm_number = '000000'.
      lt_bapiparnrc-updateflag = 'U'.
      lt_bapiparnrc-partn_role = 'AG'.
      lt_bapiparnrc-p_numb_old = lt_bapiparnr-partn_numb.
      lt_bapiparnrc-p_numb_new = lt_bapiparnr-partn_numb.
      lt_bapiparnrc-address = lt_bapiaddr1-addr_no.
      APPEND lt_bapiparnrc.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument    = vbak-vbeln
        order_header_in  = ls_bapisdh1
        order_header_inx = ls_bapisdh1x
      TABLES
        partners         = lt_bapiparnr
        partnerchanges   = lt_bapiparnrc
        partneraddresses = lt_bapiaddr1
        return           = lt_bapireturn.

бапи говорит что заказ - ок- изменен а телефон не меняет=(
куда его. телефон этот, можно ещё подставить?
может что нить специально для изменения адреса есть?

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 09:56 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Есть:
ADDR_GET_COMPLETE
изменение
ADDR_MAINTAIN_COMPLETE c updateflag = 'U'
ADDR_SINGLE_SAVE


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 10:40 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
T написал:
Есть:
ADDR_GET_COMPLETE
изменение
ADDR_MAINTAIN_COMPLETE c updateflag = 'U'
ADDR_SINGLE_SAVE

первый и последний как то мимо
второй:
Code:
    TYPES: BEGIN OF szadr_addr1_complete,
             addrnumber LIKE addr1_sel-addrnumber,
             addrhandle LIKE addr1_sel-addrhandle,
             addr1_tab TYPE szadr_addr1_line OCCURS 0,
             adtel_tab TYPE szadr_adtel_line OCCURS 0,
             adfax_tab TYPE szadr_adfax_line OCCURS 0,
             adttx_tab TYPE szadr_adttx_line OCCURS 0,
             adtlx_tab TYPE szadr_adtlx_line OCCURS 0,
             adsmtp_tab TYPE szadr_adsmtp_line OCCURS 0,
             adrml_tab TYPE szadr_adrml_line OCCURS 0,
             adx400_tab TYPE szadr_adx400_line OCCURS 0,
             adrfc_tab TYPE szadr_adrfc_line OCCURS 0,
           adprt_tab TYPE szadr_adprt_line OCCURS 0,        "*178i
           adssf_tab TYPE szadr_adssf_line OCCURS 0,        "*178i
           aduri_tab TYPE szadr_aduri_line OCCURS 0,        "*178i
           adpag_tab TYPE szadr_adpag_line OCCURS 0,        "*178i
             adrct_tab TYPE szadr_adrct_line OCCURS 0,
             adrt_tab TYPE szadr_adrt_line OCCURS 0,
          END OF szadr_addr1_complete.

    DATA: addr1_complete TYPE szadr_addr1_complete,
          addr1_tab TYPE szadr_addr1_line OCCURS 0,
          addr1_tab_line LIKE LINE OF addr1_tab.

    addr1_complete-addrnumber = lt_bapiaddr1-addr_no.
    addr1_tab_line-data-name1 = 'Вася'.
    addr1_tab_line-data-country = 'RU'.
    APPEND addr1_tab_line TO addr1_tab.
    addr1_complete-addr1_tab = addr1_tab.


    DATA: returncode LIKE szad_field-returncode,
          addr1_complete_out TYPE szadr_addr1_complete,
          error_table LIKE addr_error OCCURS 10.
    CALL FUNCTION 'ADDR_MAINTAIN_COMPLETE'
      EXPORTING
        updateflag                           = 'U'
        addr1_complete                       = addr1_complete
        address_group                        = '1'
*   SUBSTITUTE_ALL_COMM_DATA             = ' '
*   CHECK_ADDRESS                        = 'X'
*   CONSIDER_CONSNUMBER_FOR_INSERT       = ' '
IMPORTING
   returncode                           = returncode
   addr1_complete_out                   = addr1_complete_out
TABLES
   error_table                          = error_table
EXCEPTIONS
   parameter_error                      = 1
   address_not_exist                    = 2
   handle_exist                         = 3
   internal_error                       = 4
   OTHERS                               = 5
              .

на имени пока тренируюсь
ничего в ответ вообще не говорит, изменений тоже нет
коммит есть

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 10:49 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Это последовательность действий:
Считать адрес целиком ADDR_GET_COMPLETE
Изменить данные
Вызвать ведение ADDR_MAINTAIN_COMPLETE
Сохранить в базе ADDR_SINGLE_SAVE
COMMIT потребуется отдельно

PS В принципе можно обходиться и без ADDR_GET_COMPLETE


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 11:19 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
T написал:
Это последовательность действий:
Считать адрес целиком ADDR_GET_COMPLETE
Изменить данные
Вызвать ведение ADDR_MAINTAIN_COMPLETE
Сохранить в базе ADDR_SINGLE_SAVE
COMMIT потребуется отдельно

PS В принципе можно обходиться и без ADDR_GET_COMPLETE

те
1 ADDR_GET_COMPLETE - получили структуру
2 ручками ее поправили
3 ADDR_SINGLE_SAVE - сохранили по номеру адреса?
в отладчике так чего то не получилось..

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 12:35 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
а где ADDR_MAINTAIN_COMPLETE ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 15:30 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
Code:
    CALL FUNCTION 'ADDR_GET_COMPLETE'
     EXPORTING
       addrnumber                    = lt_bapiaddr1-addr_no
*       ADDRHANDLE                    =
*       ARCHIVE_HANDLE                =
     IMPORTING
       addr1_complete                = addr1_complete
     EXCEPTIONS
       parameter_error               = 1
       address_not_exist             = 2
       internal_error                = 3
       wrong_access_to_archive       = 4
       OTHERS                        = 5
              .
    addr1_tab = addr1_complete-addr1_tab.
    LOOP AT addr1_tab INTO addr1_tab_line.
      addr1_tab_line-data-name1 = 'Вася'.
      MODIFY addr1_tab FROM addr1_tab_line.
    ENDLOOP.
    addr1_complete-addr1_tab = addr1_tab.
    DATA: RETURNCODE LIKE SZAD_FIELD-RETURNCODE,
          ERROR_TABLE TYPE ADDR_ERROR OCCURS 10 WITH header line.
    CALL FUNCTION 'ADDR_MAINTAIN_COMPLETE'
      EXPORTING
        updateflag                           = 'U'
        addr1_complete                       = addr1_complete
        address_group                        = '1'
*       SUBSTITUTE_ALL_COMM_DATA             = ' '
*       CHECK_ADDRESS                        = 'X'
*       CONSIDER_CONSNUMBER_FOR_INSERT       = ' '
     IMPORTING
       RETURNCODE                           = RETURNCODE
       ADDR1_COMPLETE_OUT                   = addr1_complete
     TABLES
       ERROR_TABLE                          = ERROR_TABLE
*     EXCEPTIONS
*       PARAMETER_ERROR                      = 1
*       ADDRESS_NOT_EXIST                    = 2
*       HANDLE_EXIST                         = 3
*       INTERNAL_ERROR                       = 4
*       OTHERS                               = 5
              .

    CALL FUNCTION 'ADDR_SINGLE_SAVE'
      EXPORTING
        address_number               = lt_bapiaddr1-addr_no
*       PERSON_NUMBER                = ' '
*       ADDRESS_TYPE                 = 1
*       EXECUTE_IN_UPDATE_TASK       = ' '
*     EXCEPTIONS
*       ADDRESS_NOT_EXIST            = 1
*       PERSON_NOT_EXIST             = 2
*       ADDRESS_NUMBER_MISSING       = 3
*       REFERENCE_MISSING            = 4
*       INTERNAL_ERROR               = 5
*       DATABASE_ERROR               = 6
*       PARAMETER_ERROR              = 7
*       OTHERS                       = 8
              .
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    COMMIT WORK AND wait.

maintain выдаёт сообщение Избыточная операция (указания проигнорированы )

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 16:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Попробовал у себя. Правда взял адрес от фонаря, номер напрямую указал. Всё меняет, никаких сообщений..

Code:
TYPE-POOLS szadr.

DATA: addr1_complete TYPE szadr_addr1_complete.

START-OF-SELECTION.

  CALL FUNCTION 'ADDR_GET_COMPLETE'
    EXPORTING
      addrnumber                    = '0000044882'
*     ADDRHANDLE                    =
*     ARCHIVE_HANDLE                =
    IMPORTING
      addr1_complete                = addr1_complete
    EXCEPTIONS
      parameter_error               = 1
      address_not_exist             = 2
      internal_error                = 3
      wrong_access_to_archive       = 4
      OTHERS                        = 5
            .

  FIELD-SYMBOLS: <wa> LIKE LINE OF addr1_complete-addr1_tab[].

  LOOP AT addr1_complete-addr1_tab[] ASSIGNING <wa>.
    <wa>-data-name1 = 'Вася'.
  ENDLOOP.

  DATA: returncode LIKE szad_field-returncode,
        error_table TYPE addr_error OCCURS 10 WITH HEADER LINE.

  CALL FUNCTION 'ADDR_MAINTAIN_COMPLETE'
    EXPORTING
      updateflag                           = 'U'
      addr1_complete                       = addr1_complete
      address_group                        = ''
*     SUBSTITUTE_ALL_COMM_DATA             = ' '
*     CHECK_ADDRESS                        = 'X'
*     CONSIDER_CONSNUMBER_FOR_INSERT       = ' '
   IMPORTING
     returncode                           = returncode
     addr1_complete_out                   = addr1_complete
   TABLES
     error_table                          = error_table
*     EXCEPTIONS
*     PARAMETER_ERROR                      = 1
*     ADDRESS_NOT_EXIST                    = 2
*     HANDLE_EXIST                         = 3
*     INTERNAL_ERROR                       = 4
*     OTHERS                               = 5
            .

  CALL FUNCTION 'ADDR_SINGLE_SAVE'
    EXPORTING
      address_number               = addr1_complete-addrnumber
*     PERSON_NUMBER                = ' '
*     ADDRESS_TYPE                 = 1
*     EXECUTE_IN_UPDATE_TASK       = ' '
*   EXCEPTIONS
*     ADDRESS_NOT_EXIST            = 1
*     PERSON_NOT_EXIST             = 2
*     ADDRESS_NUMBER_MISSING       = 3
*     REFERENCE_MISSING            = 4
*     INTERNAL_ERROR               = 5
*     DATABASE_ERROR               = 6
*     PARAMETER_ERROR              = 7
*     OTHERS                       = 8
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  COMMIT WORK AND WAIT.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 16:26 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Кстати, для изменения/добавления телефона придётся указать
SUBSTITUTE_ALL_COMM_DATA = ' X'


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 16:34 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
проблема видиться в исходных данных
заказ созданный через транзакции все меняется
через бапи - нет
так что будем копать
спасибо за участие!

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 17:07 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
slash написал(а):
проблема видиться в исходных данных
заказ созданный через транзакции все меняется
через бапи - нет
так что будем копать
спасибо за участие!

Друг через транзакции понятно там используется экран адресных данных и группа функций управления адресам. А через BAPI ты можешь менять привязку адреса, но никак не значения адресных данных, для работы с адресными данным фм-ки тебе уже привели, так что копать ничего не надо... ну разве что в голове кое что упорядочить. :P


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 20 2006, 17:15 
Менеджер
Менеджер

Зарегистрирован:
Вт, дек 07 2004, 10:39
Сообщения: 610
T написал:
Кстати, для изменения/добавления телефона придётся указать
SUBSTITUTE_ALL_COMM_DATA = ' X'

ха
вот тут то собака и порылась
на закономерность про изменени имени в 2 х заказах сохранилась - чудаса, блин

_________________
полный SAPец


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, мар 19 2007, 16:29 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2005, 15:44
Сообщения: 127
Всё одно не понял как партнеру повесить емейл и телефоны...
работа с телефонами идет через структуру SZA1_D0100.
Подскажите ФМ для работы с этой структурой....

Заранее благодарен.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 17 2007, 09:29 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2005, 15:44
Сообщения: 127
Получается если я меняю адресные данные с помощю приведенных выше функций, то во всех заказах, где фигурирует челл с использованным мной адресом, поменяются данные. А каким ФМ можно локально поменять адр. данные? Ведь если менять руками то изменения сохраняются только для конкретного заказа и не затрагиваются другие заказы...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 23 2007, 14:47 
Специалист
Специалист

Зарегистрирован:
Пн, июл 11 2005, 15:44
Сообщения: 127
решили эту проблемку генерацией новых адресов с помощю:
BAPI_BUPA_ADDRESS_GETDETAIL
BAPI_BUPA_ADDRESS_ADD
и заменой старого адреса на новый в VBPA... На новый адрес и вешаем адресные данные, получается что для каждого заказа с вой ADDRNUMBER


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB