SAP中 XKO5 冻结供应商

182 阅读2分钟

如果某供应商不允许发生采购业务或者付款业务,可以在系统里将该供应商冻结。系统提供了采购冻结和记账冻结两种冻结方式。选中了采购冻结,该供应商不允许建订单。选中了记账冻结,该供应商不允许预付款、发票校验和付款清帐。并且,可以选择冻结的范围,是所有公司代码和采购组织,还是特定的。 Tcode:xk05

冻结分类:

若选中了冻结所有的公司代码,会修改表字段 LFA1~SPERR 值为 'X'

若选中冻结选中的公司代码,会修改表字段 LFB1~SPERR 值为'X'

若选中了冻结所有的采购组织,会修改表字段 LFA1~SPERM 值为'X'

若选中冻结选中的采购组织,会修改表字段 LFM1~SPERR 值为 'X'

image.png

DATA: lt_xlfas TYPE TABLE OF flfas,
     lt_xlfb5 TYPE TABLE OF flfb5,
     lt_xlfbk TYPE TABLE OF flfbk,
     lt_xlfza TYPE TABLE OF flfza.
  DATA: l_lfb1 LIKE lfb1,
     l_ylfb1 TYPE  lfb1,
     l_lfa1 TYPE lfa1,
     l_ylfa1 TYPE lfa1,
     l_lfm1 TYPE lfm1.
  CLEAR :lt_xlfas,lt_xlfb5,lt_xlfbk, lt_xlfza,l_lfb1,l_ylfb1,l_lfa1,l_ylfa1,l_lfm1.
 DATA: t_bukrs LIKE zmmsrmvmd-bukrs,
       t_lifnr LIKE zmmsrmvmd-lifnr.
 t_bukrs = '1000'.
 t_lifnr = '0BP'.
  CALL FUNCTION 'VENDOR_READ'
    EXPORTING
      i_bukrs   = t_bukrs
      i_lifnr   = t_lifnr
    IMPORTING
      e_lfa1    = l_lfa1
 *    E_LFB1    =
    EXCEPTIONS
      not_found = 1
      OTHERS    = 2.
  IF sy-subrc <> 0.
  ENDIF.
  l_lfa1-sperm = 'X'. "所有采購組織凍結
  IF l_lfa1 IS NOT INITIAL.
    CALL FUNCTION 'VENDOR_UPDATE' IN UPDATE TASK
      EXPORTING
        i_lfa1  = l_lfa1
        i_lfm1  = l_lfm1
        i_ylfa1 = l_ylfa1
        i_ylfb1 = l_ylfb1
        i_ylfm1 = l_lfm1
      TABLES
        t_xlfas = lt_xlfas
        t_xlfb5 = lt_xlfb5
        t_xlfbk = lt_xlfbk
        t_xlfza = lt_xlfza
        t_ylfas = lt_xlfas
        t_ylfb5 = lt_xlfb5
        t_ylfbk = lt_xlfbk
        t_ylfza = lt_xlfza.
 COMMIT WORK AND WAIT.
ENDIF.

查询冻结供应商报表

image.png

SQL 语句如下:

SELECT DISTINCT
      lfa1~lifnr                               ,
      lfa1~name1                               ,
      lfa1~name2                               ,
      lfa1~ktokk                               ,
      lfa1~regio                               ,
      t077y~txt30                              ,
      lfb1~bukrs                               ,
      lfa1~sortl                               ,
      lfa1~stras                               ,
      lfa1~pstl2                               ,
      lfa1~land1                               ,
      lfa1~ort01 AS ort01a                     ,
      lfa1~spras                               ,
      lfa1~telf1                               ,
      lfa1~telfx                               ,
      lfa1~sperr                               ,
      lfa1~sperm                               ,
      lfb1~akont                               ,
      lfb1~sperr AS sperr_b                    ,
      lfb1~nodel                               ,
      lfb1~loevm                               ,
      lfb1~zterm                               ,
      t052u~text1                              ,
      but000~xblck
    INTO CORRESPONDING FIELDS OF TABLE @gt_lf_data FROM
      lfa1
      INNER JOIN lfb1 ON lfb1~lifnr = lfa1~lifnr
      LEFT JOIN lfm1 ON lfm1~lifnr = lfa1~lifnr
      LEFT JOIN t077y ON t077y~ktokk = lfa1~ktokk AND t077y~spras = @sy-langu
      LEFT JOIN t052u ON t052u~zterm = lfb1~zterm AND t052u~spras = @sy-langu
      LEFT JOIN but000 ON but000~partner = lfa1~lifnr
    WHERE
      lfa1~lifnr IN @lifnr AND
      lfa1~ktokk IN @ktokk AND
      lfb1~bukrs IN @bukrs AND
      ( lfa1~sperr = 'X' OR lfb1~sperr = 'X' OR but000~xblck = 'X' OR lfb1~nodel = 'X' OR lfb1~loevm = 'X' OR lfa1~sperm = 'X' OR lfm1~sperm = 'X' )
    ORDER BY lfa1~lifnr.

查询结果:

image.png