2

要求在发货日期前 14 天设置付款期限。所以我的基准日期将是发货日期。如何获取“基线日期 - 14 天”的截止日期,因为我搜索的所有资源仅显示基线日期 + 天数。

我试图在 OBB8 中设置天数 = -14,但系统不允许这样做。

这就是我改变NET_DUE_DATE_GETFM的方式

    FUNCTION NET_DUE_DATE_GET.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(I_ZFBDT) LIKE  BSID-ZFBDT
*"             VALUE(I_ZBD1T) LIKE  BSID-ZBD1T
*"             VALUE(I_ZBD2T) LIKE  BSID-ZBD2T
*"             VALUE(I_ZBD3T) LIKE  BSID-ZBD3T
*"             VALUE(I_SHKZG) LIKE  BSID-SHKZG
*"             VALUE(I_REBZG) LIKE  BSID-REBZG
*"             VALUE(I_KOART) LIKE  RFPOS-KOART DEFAULT 'D'
*"       EXPORTING
*"             VALUE(E_FAEDT) LIKE  RFPOS-FAEDT
*"----------------------------------------------------------------------

* ------ Initialisierung -----------------------------------------------
  CLEAR: E_FAEDT.

* ------ ZFBDT muß gesetzt sein ----------------------------------------
  CHECK NOT I_ZFBDT IS INITIAL.

* ------ REFEZ = späteste Tage aus Skontolinie -------------------------
  E_FAEDT   = I_ZFBDT.
  SEITZFBDT = SY-DATLO - I_ZFBDT.

*------- ... REFEZ = Späteste Tage aus Skontolinie ---------------------
  IF I_ZBD3T NE 0.
    REFEZ = I_ZBD3T.
  ELSE.
    IF I_ZBD2T NE 0.
      REFEZ = I_ZBD2T.
    ELSE.
      REFEZ = I_ZBD1T.
    ENDIF.
  ENDIF.

*------- REFEZ = 0 bei Gutschriften ohne Rechnungsbezug und ohne Valuta
if i_rebzg eq space.
  CASE I_KOART.
    WHEN 'D'.
      IF I_SHKZG = 'H'.
        REFEZ = 0.
      ENDIF.
    WHEN 'K'.
      IF I_SHKZG = 'S'.
        REFEZ = 0.
      ENDIF.
  ENDCASE.
endif.
*------- Fälligkeitsdatum setzen ---------------------------------------
  E_FAEDT = E_FAEDT + REFEZ.
ENDFUNCTION.

更改 FM 以满足我的要求是个好主意吗?

4

1 回答 1

2

您永远不应该修改标准功能模块。如果您想通过 FM 执行此操作,主要做法是将其复制到 Z 功能模块,然后根据需要进行更改。

或者,这取决于您使用 FM 的方式,计算非常基础,我建议您只在您正在制作的报告或自定义屏幕中进行计算。如果您认为您将在多个程序中使用该计算,那么使用功能模块执行它可能是有意义的,但您会根据您想要实现的目标知道这一点。

之后....

于 2021-05-21T16:05:02.107 回答