abap--关于sap地址,传真,邮箱的地址读取
在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?
?????????? 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
*"????? 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.
總結
以上是生活随笔為你收集整理的abap--关于sap地址,传真,邮箱的地址读取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MB1A MB1B MB1C MB11
- 下一篇: smartforms金额或者数量字段显示