⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zfir0008.txt

📁 ABAP:应收帐款-催款函 该程序只统计完全交货的合同数据
💻 TXT
📖 第 1 页 / 共 2 页
字号:
          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 + -