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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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