用户想把贷项销售订单数据写入凭证文本和分配字段
CMOD->SDVFX002
BREAK yangtao.
"将销售订单写入字段,在开票的时候将销售订单的文本写入到对应的凭证行
DATA(lv_vbeln) = VALUE vbeln( ).
LOOP AT cvbrp INTO DATA(lw_cvbrp).
IF lw_cvbrp-aubel IS NOT INITIAL.
lv_vbeln = lw_cvbrp-aubel.
ENDIF.
IF lv_vbeln IS INITIAL AND lw_cvbrp-vgbel IS NOT INITIAL.
lv_vbeln = lw_cvbrp-vgbel.
ENDIF.
IF lv_vbeln IS NOT INITIAL.
lv_vbeln = |{ lv_vbeln ALPHA = IN }|.
SELECT COUNT(*) FROM vbak WHERE vbeln EQ lv_vbeln.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
IF lv_vbeln IS NOT INITIAL.
xaccit-xref2_hd = lv_vbeln.
ENDIF.
然后在BTE 1120里面
FUNCTION zsample_process_00001120.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_BKDF) TYPE BKDF OPTIONAL
*" TABLES
*" T_BKPF STRUCTURE BKPF
*" T_BSEG STRUCTURE BSEG
*" T_BKPFSUB STRUCTURE BKPF_SUBST
*" T_BSEGSUB STRUCTURE BSEG_SUBST
*" T_BSEC STRUCTURE BSEC OPTIONAL
*" CHANGING
*" REFERENCE(I_BKDFSUB) TYPE BKDF_SUBST OPTIONAL
*"----------------------------------------------------------------------
DATA: lv_xblnr_alt TYPE bkpf-xblnr_alt,
lv_xref1_hd TYPE bkpf-xref1_hd.
CLEAR: lv_xblnr_alt,lv_xref1_hd.
IMPORT p1 = lv_xblnr_alt FROM MEMORY ID 'XBLNR_ALT'. "FROM ZFM_CREATE_FIDOC
IMPORT p1 = lv_xref1_hd FROM MEMORY ID 'XREF1_HD'. "FROM ZFM_CREATE_FIDOC
BREAK yangtao.
""ZCR1\ZDR1:开票时带入销单的相关文本到凭证抬头文本中 20240814
DATA(lv_vbeln) = VALUE vbeln( ).
IF t_bkpf[] IS NOT INITIAL.
lv_vbeln = VALUE #( t_bkpf[ 1 ]-xref2_hd ) .
lv_vbeln = |{ lv_vbeln ALPHA = IN }|.
SELECT SINGLE auart,zbktxt INTO @DATA(lw_vbak) FROM vbak WHERE vbeln = @lv_vbeln.
SELECT SINGLE zsgtxt INTO @DATA(lv_zsgtxt) FROM vbap WHERE vbeln = @lv_vbeln AND zsgtxt <> ''.
ENDIF.
LOOP AT t_bkpfsub ASSIGNING FIELD-SYMBOL(<fs_bkpf>).
IF lv_xblnr_alt IS NOT INITIAL.
<fs_bkpf>-xblnr_alt = lv_xblnr_alt.
ENDIF.
IF lv_xref1_hd IS NOT INITIAL.
<fs_bkpf>-xref1_hd = lv_xref1_hd.
ENDIF.
"ZCR1\ZDR1:开票时带入销单的相关文本到凭证抬头文本中 20240814
IF lw_vbak-auart = 'ZCR1' OR lw_vbak-auart = 'ZDR1'.
<fs_bkpf>-bktxt = lw_vbak-zbktxt.
ENDIF.
ENDLOOP.
"ZCR1\ZDR1:开票时带入销单的相关文本到凭证抬头文本中 20240814
IF ( lw_vbak-auart = 'ZCR1' OR lw_vbak-auart = 'ZDR1' ) AND lv_zsgtxt IS NOT INITIAL.
LOOP AT t_bsegsub ASSIGNING FIELD-SYMBOL(<fs_bseg>) .
<fs_bseg>-sgtxt = lv_zsgtxt.
ENDLOOP.
ENDIF.
ENDFUNCTION.