您的位置:首页 > 其它

abap--关于sap地址,传真,邮箱的地址读取

2013-12-11 10:43 344 查看
在sap的应用中,很多地方需要用到地址和联系方式,sap对于地址采用了集中维护,最近对这进行了学习,收集到的一些资料供大家参考,也请大家多多指点。
一、相关package
SZAD

二、相关表(可以参见ADDR_SAVE_INTERN函数的操作)

1 ADR2 : 电话号码 (业务地址服务)(ADDRNUMBER(10),PERSNUMBER(10))

2.ADR3:传真号 (业务地址服务)(ADDRNUMBER(10),PERSNUMBER(10))

3.ADR4:电传号码 (业务地址服务)(ADDRNUMBER(10),PERSNUMBER(10))

4.ADR5:电传号码 (业务地址服务)(ADDRNUMBER(10),PERSNUMBER(10))

5.ADR6:SMTP 编号 (业务地址服务)(ADDRNUMBER(10),PERSNUMBER(10))

6.ADR7:远程邮件地址 (R/3 - R/3; 业务地址服务) (ADDRNUMBER(10),PERSNUMBER(10))

7.ADRC:地址 (业务地址服务) (ADDRNUMBER(10))

8.ADCP:个人/地址分配 (业务地址服务)(ADDRNUMBER(10),PERSNUMBER(10)),纪录用户哪些数据被维护如:FLAGCOMM3为'X'表示传真号被维护;

9.ADRP:个人(办公地址管理)(PERSNUMBER(10))

三、相关BAPI

BAPI_ADDRESSPERS_CHANGE

BAPI_ADDRESSPERS_GETDETAIL


四、获取下一个地址自动编号(代码)
  1.供应商地址的读取

  addr_ref-appl_table     = 'EKKO'.

  addr_ref-appl_field     = 'ADRNR'.

  addr_ref-appl_key(3)    = ekko-mandt.

  addr_ref-appl_key+3(10) = ekko-ebeln.

  addr_ref-addr_group     = 'ME03'.

  addr_ref-owner          = space.

* get address number

  CALL FUNCTION 'ADDR_NUMBER_GET'

    EXPORTING

      address_handle           = address_handle

      address_reference        = addr_ref

    IMPORTING

      address_number           = p_ekko-adrnr

    EXCEPTIONS

      address_handle_not_exist = 1

      internal_error           = 2

      parameter_error          = 3

      OTHERS                   = 4.

2.客户的地址

3.获取合作伙伴地址号码

先获取联系人编号

  REFERENCE-APPL_TABLE     = ‘KNVK’.

  REFERENCE-APPL_FIELD     = ‘PRSNR’.

*PERSON-KEY_CONTENT为合作伙伴的编号

  CONCATENATE SY-MANDT PERSON-KEY_CONTENT INTO REFERENCE-APPL_KEY.

  REFERENCE-PERS_GROUP     = C_ADDRESS_GROUP.

  REFERENCE-ADDRNUMBER     = ADDRESS_NUMBER.

  IF ADDRESS_TYPE = C_TYPE_2.

    REFERENCE-PERS_ADDR    = 'X'.

    CLEAR REFERENCE-ADDRNUMBER.

  ELSE.

    CLEAR REFERENCE-PERS_ADDR.

  ENDIF.

  REFERENCE-OWNER          = 'X'.

 CALL FUNCTION 'ADDR_PERSON_NUMBER_GET' 

        EXPORTING

                    PERSON_HANDLE           = PERSONHANDLE

                    PERSON_REFERENCE        = REFERENCE

         IMPORTING

                    PERSON_NUMBER           = ZAV_TAB-PERSON-NUMBER

         EXCEPTIONS

                    INTERNAL_ERROR          = 1

                    PERSON_HANDLE_NOT_EXIST = 2

                    PARAMETER_ERROR         = 3

                    OTHERS                  = 4.

*在获取地址编号

 CALL FUNCTION 'NUMBER_GET_NEXT'

      EXPORTING

           NR_RANGE_NR             = '01'

           OBJECT                  = 'ADRNR'

           QUANTITY                = REQUESTED_QUANTITY

      IMPORTING

           NUMBER                  = NUMBER

           QUANTITY                = QUANTITY

           RETURNCODE              = RETURNCODE_NUMBERRANGE

      EXCEPTIONS

           INTERVAL_NOT_FOUND      = 1

           NUMBER_RANGE_NOT_INTERN = 2

           OBJECT_NOT_FOUND        = 3

           QUANTITY_IS_0           = 4

           QUANTITY_IS_NOT_1       = 5

           INTERVAL_OVERFLOW       = 6

           OTHERS                  = 7.

五、一些常用地址如何读取
1. 客户地址

客户地址的读取你首先要读KNA1表,找出客户对应的地址编号(ADRNR)字段,在根据此字段去读取ADRC表,再读取其他相关表(ADR2 ..)

  SELECT * FROM ADR2

           INTO TABLE <ft_temp>

           WHERE addrnumber = iv_addrnumber

           AND   persnumber = iv_persnumber.

2 SD的合作伙伴的地址

KNVK:户主要联系伙伴(PARNR(10)),该表含有连个字段:ADRNP_2(10)->地址号码,PRSNR(10)->人员编号,再根据这两个号码去读取相关表数据。

六、地址写入代码摘抄
FUNCTION ADDR_SAVE_INTERN.

*"----------------------------------------------------------------------

*"*"Verbuchungsfunktionsbaustein:

*"

*"*"Lokale Schnittstelle:

*"  TABLES

*"      ADRC_D STRUCTURE  ADRC

*"      ADRC_U STRUCTURE  ADRC

*"      ADRC_I STRUCTURE  ADRC

*"      ADRCT_D STRUCTURE  ADRCT

*"      ADRCT_U STRUCTURE  ADRCT

*"      ADRCT_I STRUCTURE  ADRCT

*"      ADRP_D STRUCTURE  ADRP

*"      ADRP_U STRUCTURE  ADRP

*"      ADRP_I STRUCTURE  ADRP

*"      ADCP_D STRUCTURE  ADCP

*"      ADCP_U STRUCTURE  ADCP

*"      ADCP_I STRUCTURE  ADCP

*"      ADRT_D STRUCTURE  ADRT

*"      ADRT_U STRUCTURE  ADRT

*"      ADRT_I STRUCTURE  ADRT

*"      ADR2_D STRUCTURE  ADR2

*"      ADR2_U STRUCTURE  ADR2

*"      ADR2_I STRUCTURE  ADR2

*"      ADR3_D STRUCTURE  ADR3

*"      ADR3_U STRUCTURE  ADR3

*"      ADR3_I STRUCTURE  ADR3

*"      ADR4_D STRUCTURE  ADR4

*"      ADR4_U STRUCTURE  ADR4

*"      ADR4_I STRUCTURE  ADR4

*"      ADR5_D STRUCTURE  ADR5

*"      ADR5_U STRUCTURE  ADR5

*"      ADR5_I STRUCTURE  ADR5

*"      ADR6_D STRUCTURE  ADR6

*"      ADR6_U STRUCTURE  ADR6

*"      ADR6_I STRUCTURE  ADR6

*"      ADR7_D STRUCTURE  ADR7

*"      ADR7_U STRUCTURE  ADR7

*"      ADR7_I STRUCTURE  ADR7

*"      ADR8_D STRUCTURE  ADR8

*"      ADR8_U STRUCTURE  ADR8

*"      ADR8_I STRUCTURE  ADR8

*"      ADR9_D STRUCTURE  ADR9

*"      ADR9_U STRUCTURE  ADR9

*"      ADR9_I STRUCTURE  ADR9

*"      ADR10_D STRUCTURE  ADR10

*"      ADR10_U STRUCTURE  ADR10

*"      ADR10_I STRUCTURE  ADR10

*"      ADR11_D STRUCTURE  ADR11

*"      ADR11_U STRUCTURE  ADR11

*"      ADR11_I STRUCTURE  ADR11

*"      ADR12_D STRUCTURE  ADR12

*"      ADR12_U STRUCTURE  ADR12

*"      ADR12_I STRUCTURE  ADR12

*"      ADR13_D STRUCTURE  ADR13

*"      ADR13_U STRUCTURE  ADR13

*"      ADR13_I STRUCTURE  ADR13

*"
4000
      ADRCOMC_D STRUCTURE  ADRCOMC

*"      ADRCOMC_U STRUCTURE  ADRCOMC

*"      ADRCOMC_I STRUCTURE  ADRCOMC

*"      ADRG_D STRUCTURE  ADRG

*"      ADRG_U STRUCTURE  ADRG

*"      ADRG_I STRUCTURE  ADRG

*"      ADRGP_D STRUCTURE  ADRGP

*"      ADRGP_U STRUCTURE  ADRGP

*"      ADRGP_I STRUCTURE  ADRGP

*"      ADRV_D STRUCTURE  ADRV

*"      ADRV_U STRUCTURE  ADRV

*"      ADRV_I STRUCTURE  ADRV

*"      ADRVP_D STRUCTURE  ADRVP

*"      ADRVP_U STRUCTURE  ADRVP

*"      ADRVP_I STRUCTURE  ADRVP

*"  EXCEPTIONS

*"      DATABASE_ERROR

*"      INTERNAL_ERROR

*"----------------------------------------------------------------------

*                           Initialisierung der FG sicherstellen

  PERFORM CHECK_FOR_INITIALIZATION.

  DEFINE WRITE_TO_DB.

  DELETE &1 FROM TABLE &1_D.

  IF SY-SUBRC <> 0.

    MESSAGE A840 WITH '&1' RAISING DATABASE_ERROR.

* Datenbankfehler beim L鰏chen aus Tabelle &

  ENDIF.

  UPDATE &1 FROM TABLE &1_U.

  IF SY-SUBRC <> 0.

    MESSAGE A841 WITH '&1' RAISING DATABASE_ERROR.

* Datenbankfehler beim 膎dern von Tabelle &

  ENDIF.

  INSERT &1 FROM TABLE &1_I.

  IF SY-SUBRC <> 0.

    MESSAGE A842 WITH '&1' RAISING DATABASE_ERROR.

* Datenbankfehler beim Einf黦en in Tabelle &

  ENDIF.

  END-OF-DEFINITION.

  WRITE_TO_DB  ADRC   .

* WRITE_TO_DB  ADRCT  .                                     "*912d

  DELETE ADRCT FROM TABLE ADRCT_D.                          "*912i

  IF SY-SUBRC <> 0.                                         "*912i

    MESSAGE A840 WITH 'ADRCT' RAISING DATABASE_ERROR.       "*912i

  ENDIF.                                                    "*912i

  UPDATE ADRCT FROM TABLE ADRCT_U.                          "*912i

  IF SY-SUBRC <> 0.                                         "*912i

    MESSAGE A841 WITH 'ADRCT' RAISING DATABASE_ERROR.       "*912i

  ENDIF.                                                    "*912i

  MODIFY ADRCT FROM TABLE ADRCT_I.                          "*912i

  IF SY-SUBRC <> 0.                                         "*912i

    MESSAGE A842 WITH 'ADRCT' RAISING DATABASE_ERROR.       "*912i

  ENDIF.                                                    "*912i

  WRITE_TO_DB  ADRP   .

  WRITE_TO_DB  ADCP   .

  WRITE_TO_DB  ADRT   .

  WRITE_TO_DB  ADR2   .

  WRITE_TO_DB  ADR3   .

  WRITE_TO_DB  ADR4   .

  WRITE_TO_DB  ADR5   .

  WRITE_TO_DB  ADR6   .

  WRITE_TO_DB  ADR7   .

  WRITE_TO_DB  ADR8   .

  WRITE_TO_DB  ADR9   .

  WRITE_TO_DB  ADR10  .                                 "*178i

  WRITE_TO_DB  ADR11  .                                 "*178i

  WRITE_TO_DB  ADR12  .                                 "*178i

  WRITE_TO_DB  ADR13  .                                 "*178i

  WRITE_TO_DB  ADRCOMC.

  WRITE_TO_DB  ADRG   .

  WRITE_TO_DB  ADRGP  .

  WRITE_TO_DB  ADRV   .

  WRITE_TO_DB  ADRVP  .

ENDFUNCTION.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: