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.
自定义采购信息记录-条件函数
最新推荐文章于 2022-09-21 11:38:40 发布