📄 zfir0008.txt
字号:
zuonr
dmbtr
xblnr
umskz
shkzg
blart FROM bsad INTO TABLE it_bsid
FOR ALL ENTRIES IN it_contract
WHERE bukrs EQ bukrs
AND kunnr IN kunnr
AND zuonr EQ it_contract-bstkd
AND umskz EQ space
AND shkzg EQ 'S'
AND blart IN ('DZ','DA')
AND augdt > budat.
LOOP AT it_bsid.
IF it_bsid-shkzg EQ 'S'.
it_contract-skje = it_bsid-dmbtr.
ELSE.
it_contract-skje = - it_bsid-dmbtr.
ENDIF.
it_contract-bstkd = it_bsid-zuonr.
COLLECT it_contract.
CLEAR it_contract.
ENDLOOP.
FREE it_bsid.
CLEAR it_bsid.
ENDFORM. " get_yishou_data
*&---------------------------------------------------------------------*
*& Form get_yushou_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_yushou_data .
* BSID的取数逻辑是:2、取凭证类型为DZ,且特别总帐标识等于A、S、W的数据。(预收未清或部分清帐)
* 借贷标识是H的就是预收,S是冲销,扣除这部分,预收不考虑部分清帐,
*
* BSAD的取数逻辑是:2、取凭证类型为DZ,且特别总帐标识等于A、S、W的数据。(预收已清)
* 借贷标识是H的就是已清帐的预收,S是冲销,扣除这部分,
SELECT kunnr
belnr
zfbdt
zuonr
dmbtr
xblnr
umskz
shkzg
blart FROM bsid INTO TABLE it_bsid
FOR ALL ENTRIES IN it_contract
WHERE bukrs EQ bukrs
AND kunnr IN kunnr
AND zuonr EQ it_contract-bstkd
AND umskz IN ('A','S','W')
AND blart EQ 'DZ'
AND budat <= budat.
LOOP AT it_bsid.
IF it_bsid-shkzg EQ 'H'.
it_contract-skje = it_bsid-dmbtr.
ELSE.
it_contract-skje = - it_bsid-dmbtr.
ENDIF.
it_contract-bstkd = it_bsid-zuonr.
COLLECT it_contract.
CLEAR it_contract.
ENDLOOP.
FREE it_bsid.
CLEAR it_bsid.
SELECT kunnr
belnr
zfbdt
zuonr
dmbtr
xblnr
umskz
shkzg
blart FROM bsad INTO TABLE it_bsid
FOR ALL ENTRIES IN it_contract
WHERE bukrs EQ bukrs
AND kunnr IN kunnr
AND zuonr EQ it_contract-bstkd
AND umskz IN ('A','S','W')
AND blart EQ 'DZ'
AND augdt > budat.
LOOP AT it_bsid.
IF it_bsid-shkzg = 'H'.
it_contract-skje = it_bsid-dmbtr.
ELSE.
it_contract-skje = - it_bsid-dmbtr.
ENDIF.
it_contract-bstkd = it_bsid-zuonr.
COLLECT it_contract.
CLEAR it_contract.
ENDLOOP.
FREE it_bsid.
CLEAR it_bsid.
ENDFORM. " get_yushou_data
*&---------------------------------------------------------------------*
*& Form get_kaipiao_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_kaipiao_data .
* 开票金额是取BSID和BSAD中作证类型为RV的数据
* 正常是S,冲销是H
SELECT kunnr
belnr
zfbdt
zuonr
dmbtr
xblnr
umskz
shkzg
blart FROM bsid INTO TABLE it_bsid
FOR ALL ENTRIES IN it_contract
WHERE bukrs EQ bukrs
AND kunnr IN kunnr
AND zuonr EQ it_contract-bstkd
AND umskz EQ space
AND blart EQ 'RV'.
LOOP AT it_bsid.
IF it_bsid-shkzg EQ 'S'.
it_contract-kpje = it_bsid-dmbtr.
ELSE.
it_contract-kpje = - it_bsid-dmbtr.
ENDIF.
it_contract-bstkd = it_bsid-zuonr.
COLLECT it_contract.
CLEAR it_contract.
ENDLOOP.
FREE it_bsid.
CLEAR it_bsid.
SELECT kunnr
belnr
zfbdt
zuonr
dmbtr
xblnr
umskz
shkzg
blart FROM bsad INTO TABLE it_bsid
FOR ALL ENTRIES IN it_contract
WHERE bukrs EQ bukrs
AND kunnr IN kunnr
AND zuonr EQ it_contract-bstkd
AND umskz EQ space
AND blart EQ 'RV'.
LOOP AT it_bsid.
IF it_bsid-shkzg = 'S'.
it_contract-kpje = it_bsid-dmbtr.
ELSE.
it_contract-kpje = - it_bsid-dmbtr.
ENDIF.
it_contract-bstkd = it_bsid-zuonr.
COLLECT it_contract.
CLEAR it_contract.
ENDLOOP.
FREE it_bsid.
CLEAR it_bsid.
ENDFORM. " get_kaipiao_data
*&---------------------------------------------------------------------*
*& Form get_itab_data_01
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_it_detail_data_01 .
LOOP AT it_aging_deliver.
READ TABLE it_so WITH KEY vbeln = it_aging_deliver-vbeln.
it_detail-kunnr = it_so-kunnr.
it_detail-bstkd = it_so-bstkd.
it_detail-bstdk = it_so-bstdk.
it_detail-date = it_aging_deliver-date.
it_detail-date1 = it_aging_deliver-date1.
it_detail-htje = it_aging_deliver-kzwi1.
it_detail-aging = it_aging_deliver-zday.
APPEND it_detail.
CLEAR it_detail.
ENDLOOP.
ENDFORM. " get_itab_data_01
*&---------------------------------------------------------------------*
*& Form fill_it_detail_data_02
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_it_detail_data_02 .
LOOP AT it_contract.
READ TABLE it_detail WITH KEY bstkd = it_contract-bstkd.
ztabix = sy-tabix.
it_detail-skje = it_contract-skje.
it_detail-kpje = it_contract-kpje.
it_detail-ysje = it_detail-htje - it_detail-skje.
MODIFY it_detail INDEX ztabix.
CLEAR it_detail.
ENDLOOP.
ENDFORM. " fill_it_detail_data_02
*&---------------------------------------------------------------------*
*& Form f4_help_hbkid
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f4_help_hbkid . "开户行信息
DATA: BEGIN OF it_t012 OCCURS 0,
bankl LIKE t012-bankl, "银行代码
banka LIKE bnka-banka, "银行名称
END OF it_t012.
DATA zindex TYPE i.
TYPES : BEGIN OF st_value_typ, "这个是固定的,用做function的参数
bankl LIKE mkpf-xblnr, "mkpf-xblnr是随便取得,只是需要一个数据库标准的元素
banka LIKE mkpf-xblnr,
END OF st_value_typ.
DATA : it_value TYPE TABLE OF st_value_typ, "这几个是固定的,用做function的参数
wa_value LIKE LINE OF it_value,
it_field_tab TYPE TABLE OF dfies,
wa_field LIKE LINE OF it_field_tab,
it_return_tab TYPE TABLE OF ddshretval,
wa_return LIKE LINE OF it_return_tab.
DATA t_bukrs(4).
DATA:BEGIN OF f4hlp OCCURS 1.
INCLUDE STRUCTURE dynpread.
DATA:END OF f4hlp.
f4hlp-fieldname = 'BUKRS'.
APPEND f4hlp.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = f4hlp
EXCEPTIONS
OTHERS = 01.
READ TABLE f4hlp WITH KEY fieldname = 'BUKRS'.
t_bukrs = f4hlp-fieldvalue.
IF t_bukrs EQ space.
MESSAGE '请先输入公司代码' TYPE 'I'.
ENDIF.
CLEAR wa_field.
wa_field-tabname = 'ZHBKID_F4'.
wa_field-fieldname = 'BANKL'.
APPEND wa_field TO it_field_tab.
CLEAR wa_field.
wa_field-tabname = 'ZHBKID_F4'.
wa_field-fieldname = 'BANKA'.
APPEND wa_field TO it_field_tab.
DATA: retfield LIKE dfies-fieldname VALUE 'BANKL'. "确定要返回的字段
CLEAR it_t012[].
SELECT a~bankl
b~banka FROM t012 AS a INNER JOIN bnka AS b
ON b~bankl EQ a~bankl
INTO TABLE it_t012
WHERE a~bukrs EQ t_bukrs.
CLEAR it_value.
LOOP AT it_t012 .
wa_value-bankl = it_t012-bankl.
wa_value-banka = it_t012-banka.
APPEND wa_value TO it_value.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = retfield
value_org = 'S'
TABLES
value_tab = it_value
field_tab = it_field_tab
return_tab = it_return_tab "返回值
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE it_return_tab INTO wa_return INDEX 1.
p_hbkid = wa_return-fieldval. "关联到选择栏
ENDFORM. " f4_help_hbkid
*&---------------------------------------------------------------------*
*& Form f4_help_khtid
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f4_help_hktid . "帐户信息
DATA: BEGIN OF it_t012t OCCURS 0,
hktid LIKE t012t-hktid, "帐户
text1 LIKE t012t-text1, "描述
END OF it_t012t.
DATA zindex TYPE i.
TYPES : BEGIN OF st_value_typ, "这个是固定的,用做function的参数
hktid LIKE t012t-hktid, "帐户
text1 LIKE t012t-text1, "描述
END OF st_value_typ.
DATA : it_value TYPE TABLE OF st_value_typ, "这几个是固定的,用做function的参数
wa_value LIKE LINE OF it_value,
it_field_tab TYPE TABLE OF dfies,
wa_field LIKE LINE OF it_field_tab,
it_return_tab TYPE TABLE OF ddshretval,
wa_return LIKE LINE OF it_return_tab.
IF p_hbkid EQ space.
MESSAGE '请先输入开户银行' TYPE 'I'.
ENDIF.
DATA t_bukrs(4).
DATA:BEGIN OF f4hlp OCCURS 1.
INCLUDE STRUCTURE dynpread.
DATA:END OF f4hlp.
f4hlp-fieldname = 'BUKRS'.
APPEND f4hlp.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = f4hlp
EXCEPTIONS
OTHERS = 01.
READ TABLE f4hlp WITH KEY fieldname = 'BUKRS'.
t_bukrs = f4hlp-fieldvalue.
CLEAR wa_field.
wa_field-tabname = 'ZHKTID_F4'.
wa_field-fieldname = 'HKTID'.
APPEND wa_field TO it_field_tab.
CLEAR wa_field.
wa_field-tabname = 'ZHKTID_F4'.
wa_field-fieldname = 'TEXT1'.
APPEND wa_field TO it_field_tab.
DATA: retfield LIKE dfies-fieldname VALUE 'HKTID'. "确定要返回的字段
CLEAR it_t012t[].
SELECT hktid
text1 FROM t012t INTO TABLE it_t012t
WHERE spras EQ '1'
AND bukrs EQ t_bukrs
AND hbkid EQ p_hbkid.
CLEAR it_value.
LOOP AT it_t012t .
wa_value-hktid = it_t012t-hktid.
wa_value-text1 = it_t012t-text1.
APPEND wa_value TO it_value.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = retfield
value_org = 'S'
TABLES
value_tab = it_value
field_tab = it_field_tab
return_tab = it_return_tab "返回值
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE it_return_tab INTO wa_return INDEX 1.
p_hktid = wa_return-fieldval. "关联到选择栏
ENDFORM. " f4_help_khtid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -