Posted: Tue Dec 02, 2008 8:48 pm Post subject: Зависимость bkpf-awkey и bkpf-awtyp
Коллеги, приходилось ли кому-нибудь решать следующую задачу.
В зависимости от значения bkpf-awtyp, bkpf-awkey формируется по разному. Иногда он состоит только из номера документа, иногда номера и года, а иногда из номера, года и кода компании. Как универсально составлять ключ, зная все эти три параметра, основываясь на значении bkpf-awtyp?
Age: 165 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Wed Dec 03, 2008 11:34 am Post subject:
ghost wrote:
могу предположить что AWKEY собирается из ключевых полей таблицы которая указывается в AWTYP
Не совсем так, название awtyp не всегда соотвествует названию таблицы.
Справочная таблица для awtyp - TTYP.
В поле TTYP-STRUC содержится ссылка на структуру с описанием ключа. Если поле TTYP-STRUC пустое, в большинстве случаев ключ состоит из номера документа (могут быть исключения, у нас, например CAJO).
Накидал пример:
Code:
FUNCTION zeru_awtyp_2_awkey.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(I_AWTYP) TYPE AWTYP
*" VALUE(I_BELNR) TYPE BELNR_D
*" VALUE(I_GJAHR) TYPE GJAHR OPTIONAL
*" VALUE(I_BUKRS) TYPE BUKRS OPTIONAL
*" VALUE(I_AWORG) TYPE AWORG OPTIONAL
*" EXPORTING
*" VALUE(E_AWKEY) TYPE AWKEY
*" EXCEPTIONS
*" NOT_FOUND
*" KEY_INCORRECT
*"----------------------------------------------------------------------
DATA: ls_ttyp TYPE ttyp.
DATA: it_dfies LIKE dfies OCCURS 0 WITH HEADER LINE,
l_tabname TYPE ddobjname.
IF i_awtyp IS INITIAL.
RAISE not_found.
ENDIF.
IF i_awtyp EQ 'CAJO'.
CONCATENATE i_belnr i_aworg INTO e_awkey.
EXIT.
ENDIF.
SELECT SINGLE * INTO ls_ttyp
FROM ttyp WHERE awtyp = i_awtyp.
IF ls_ttyp-struc IS INITIAL.
e_awkey = i_belnr.
EXIT.
ENDIF.
LOOP AT it_dfies.
CASE it_dfies-domname.
WHEN 'BELNR'.
CONCATENATE e_awkey i_belnr INTO e_awkey.
WHEN 'GJAHR'.
CONCATENATE e_awkey i_gjahr INTO e_awkey.
WHEN 'BUKRS'.
CONCATENATE e_awkey i_bukrs INTO e_awkey.
WHEN OTHERS.
RAISE KEY_INCORRECT.
ENDCASE.
ENDLOOP.
ENDFUNCTION.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.