自定义采购信息记录-条件函数

FUNCTION ZME_GET_INFORECORD_CONDITIONS.
*"--------------------------------------------------------------------
*"*"局部接口:
*"  IMPORTING
*"     VALUE(I_EKORG) LIKE  EINE-EKORG
*"     VALUE(I_ESOKZ) LIKE  EINE-ESOKZ
*"     VALUE(I_INFNR) LIKE  EINA-INFNR
*"     VALUE(I_LIFNR) LIKE  EINA-LIFNR
*"     VALUE(I_MATKL) LIKE  EINA-MATKL
*"     VALUE(I_MATNR) LIKE  EINA-MATNR
*"     VALUE(I_WERKS) LIKE  EINE-WERKS
*"     VALUE(I_VABME) LIKE  EINA-VABME OPTIONAL
*"  TABLES
*"      TEKOMD STRUCTURE  EKOMD
*"--------------------------------------------------------------------

* Übergabe Import
MOVE I_LIFNR TO EINA-LIFNR.
MOVE I_INFNR TO EINA-INFNR.
MOVE I_INFNR TO EINE-INFNR.
MOVE I_EKORG TO EINE-EKORG.
MOVE I_WERKS TO EINE-WERKS.
MOVE I_ESOKZ TO EINE-ESOKZ.
MOVE I_MATKL TO EINA-MATKL.
MOVE I_MATNR TO EINA-MATNR.
MOVE I_VABME TO EINA-VABME.
CHECK EINA-INFNR NE SPACE.
IF EKKO-SPRAS EQ SPACE.
   EKKO-SPRAS = SY-LANGU.
ENDIF.
REFRESH TEKOMD.

* Daten besorgen
PERFORM INFOSATZ_KOND_LESEN.

* Rückgabe der Daten
****   noch zusammenlegen mit  ME_PRINT_CONTRACT_CONDITIONS.
****     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
****     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!   doppeltes Coding (weitgehend)
LOOP AT I_TEKOMD.
  CHECK I_TEKOMD-KBETR NE 0 OR I_TEKOMD-KZBZG NE SPACE.
  MOVE I_TEKOMD TO TEKOMD.
  APPEND TEKOMD.
ENDLOOP.

*  Datum rauswerfen, wenn alle gleiches Datum besitzen
LOOP AT TEKOMD WHERE DATAB NE 0.
  IF SY-TABIX EQ 1.
     O_EBELP = TEKOMD-EBELP.
     O_DATAB = TEKOMD-DATAB.
     O_DATBI = TEKOMD-DATBI.
     INDEX1  = SY-TABIX.
     INDEX2  = SY-TABIX.
  ENDIF.
  ON CHANGE OF TEKOMD-EBELP OR TEKOMD-DATAB OR TEKOMD-DATBI.
     O_EBELP = TEKOMD-EBELP.
     O_DATAB = TEKOMD-DATAB.
     O_DATBI = TEKOMD-DATBI.
     INDEX2  = SY-TABIX.
  ENDON.
  ON CHANGE OF TEKOMD-EBELP.
     INDEX1 = SY-TABIX.
  ENDON.
  LOOP AT TEKOMD WHERE EBELP EQ O_EBELP.
    CHECK SY-TABIX GT INDEX2.
    IF O_DATAB EQ TEKOMD-DATAB AND
       O_DATBI EQ TEKOMD-DATBI.
       CLEAR: TEKOMD-DATAB, TEKOMD-DATBI.
       MODIFY TEKOMD INDEX SY-TABIX.
    ELSE.
       CLEAR: O_DATAB, O_DATBI.
    ENDIF.
  ENDLOOP.
  READ TABLE TEKOMD INDEX INDEX2.
  IF O_DATAB EQ TEKOMD-DATAB AND O_DATBI EQ TEKOMD-DATBI AND
       INDEX1 EQ INDEX2 AND INDEX2 GT 1.                    "616190
     CLEAR: TEKOMD-DATAB, TEKOMD-DATBI.
     MODIFY TEKOMD INDEX INDEX2.
  ENDIF.
ENDLOOP.

DESCRIBE TABLE TEKOMD LINES SY-TFILL.
IF SY-TFILL EQ 1.
*  Nur 1 Konditionssatz --> nicht zu drucken, wenn Preis
   READ TABLE TEKOMD INDEX 1.
   SELECT SINGLE * FROM T685A WHERE KAPPL EQ 'M'
                              AND   KSCHL EQ TEKOMD-KSCHL.
*取消期间判断及删除动作_Tommy20160325
***    IF T685A-KNTYP EQ 'H' AND TEKOMD-DATBI LT SY-DATUM.     "616190
***      REFRESH TEKOMD.
***   ENDIF.
ELSE.
*  Mehr als 1 Konditionssatz --> der Preis muß an die 1. Stelle
   LOOP AT TEKOMD.
     SELECT SINGLE * FROM T685A WHERE KAPPL EQ 'M'
                                AND   KSCHL EQ TEKOMD-KSCHL.
     IF T685A-KNTYP EQ 'H'.
        HELPIND = SY-TABIX.
        EXIT.
     ENDIF.
   ENDLOOP.
   IF HELPIND NE 1.
      READ TABLE TEKOMD INDEX HELPIND.
      INSERT TEKOMD INDEX 1.
      HELPIND = HELPIND + 1.
      DELETE TEKOMD INDEX HELPIND.
      READ TABLE TEKOMD INDEX 1.
      MOVE-CORRESPONDING TEKOMD TO KONP.
      HELPIND = 1.
      INSIND  = 1.
*  Mehr als 1 Konditionssatz --> Staffeln des Preises neu ordnen
      LOOP AT TEKOMD WHERE KNUMH EQ KONP-KNUMH
                     AND   KOPOS EQ KONP-KOPOS.
        CHECK SY-TABIX GT HELPIND.
        HELPIND = SY-TABIX + 1.
        INSIND  = INSIND + 1.
        INSERT TEKOMD INDEX INSIND.
      ENDLOOP.
      LOOP AT TEKOMD WHERE KNUMH EQ KONP-KNUMH
                     AND   KOPOS EQ KONP-KOPOS.
        CHECK SY-TABIX GT INSIND.
        DELETE TEKOMD.
      ENDLOOP.
   ENDIF.
ENDIF.

ENDFUNCTION.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值