Code
Code
Code
TYPES:
BEGIN OF tvarv_type,
name TYPE rvari_vnam, " ABAP: Name of Variant Variable
sign TYPE tvarv_sign, " ABAP: ID: I/E (include/exclude values)
opti TYPE tvarv_opti, " ABAP: Selection option (EQ/BT/CP/...)
low TYPE tvarv_val, " ABAP/4: Selection value (LOW or HIGH value,
external format)
high TYPE tvarv_val, " ABAP/4: Selection value (LOW or HIGH value,
external format)
END OF tvarv_type.
SELECT name sign opti low high FROM tvarvc " Table of Variant Variables
(Client-Specific)
INTO TABLE lw_tvarv
WHERE ( name = cc_user OR name = cc_bukrs )
AND type = 'S'.
IF sy-subrc IS INITIAL.
READ TABLE lw_tvarv INTO ls_tvarv
WITH KEY name = cc_bukrs.
IF sy-subrc IS INITIAL.
REFRESH: r_bukrs.
CLEAR: ls_bukrs.
ls_bukrs-sign = ls_tvarv-sign.
ls_bukrs-option = ls_tvarv-opti.
ls_bukrs-low = ls_tvarv-low.
ls_bukrs-high = ls_tvarv-high.
APPEND ls_bukrs TO r_bukrs.
IF i_ekko-bukrs IN r_bukrs.
READ TABLE lw_tvarv INTO ls_tvarv
WITH KEY name = cc_user
low = sy-uname.
LOOP AT tekpo.
MOVE-CORRESPONDING tekpo TO ls_ekpo.
APPEND ls_ekpo TO lw_ekpo.
ENDLOOP. " LOOP AT tekpo
IF sy-subrc IS INITIAL.
DELETE lw_ekpo_contr WHERE loekz = 'L'.
SORT lw_ekpo_contr BY ebeln matnr.
IF sy-subrc IS INITIAL.
IF ls_ekpo_contr-mwskz <> ls_ekpo_func-mwskz.
"Cdigo IVA do item & diferente do Contrato. No permitida alterao.
MESSAGE e306(zmm_specif) WITH ls_ekpo_func-ebelp.
ENDIF. " IF ls_ekpo_contr-mwskz <> ls_ekpo_func-mwskz
ENDIF. " IF sy-subrc IS INITIAL
ENDLOOP. " LOOP AT lw_ekpo INTO ls_ekpo_func
ENDIF. " IF sy-subrc IS INITIAL
ENDIF. " IF NOT lw_ekpo[] IS INITIAL
ENDIF. " IF sy-tcode EQ 'ME21N' OR sy-tcode EQ 'ME22N' OR sy-tcode EQ
'ME23N' OR
SELECT SINGLE *
FROM zbc_spec_rules " Specification rules table
WHERE zzmodule = 'MM'
AND zzobj_name = 'ME31K'
AND zzsfc_spec = '2-2.05.01.01-0745'
AND zzrule = 'ZMM_GROUP_CONTRACT'.
DO 12 TIMES.
lv_ind = sy-index.
CONCATENATE 'ZBC_SPEC_RULES-ZZPARAM' lv_ind
INTO lv_char.
ASSIGN (lv_char) TO <f1>.
CHECK <f1> IS NOT INITIAL.
lwa_evart-sign = 'I'.
lwa_evart-option = 'EQ'.
lwa_evart-low = <f1>.
APPEND lwa_evart TO lr_evart.
ENDDO.
IF i_ekko-bsart NOT IN lr_evart.
IF tekpo[] IS NOT INITIAL.
SELECT bukrs " Company Code
INTO TABLE lt_t001k
FROM t001k " Valuation area
FOR ALL ENTRIES IN tekpo
WHERE bwkey = tekpo-werks.
LOOP AT lt_t001k INTO lwa_t001k.
CLEAR lwa_r_t001k.
lwa_r_t001k-sign = 'I'.
lwa_r_t001k-option = 'EQ'.
lwa_r_t001k-low = lwa_t001k-bukrs.
APPEND lwa_r_t001k TO lr_t001k.
ENDLOOP. " LOOP AT lt_t001k INTO lwa_t001k
ENDIF. " IF tekpo[] IS NOT INITIAL
IF tekpo[] IS NOT INITIAL.
SELECT ebeln ebelp
INTO CORRESPONDING FIELDS OF TABLE lt_ekpo
FROM ekpo " Purchasing Document Item
FOR ALL ENTRIES IN tekpo
WHERE matnr = tekpo-matnr
AND zzkdatb <= i_ekko-kdatb
AND zzkdate >= i_ekko-kdatb
AND bukrs IN lr_t001k
AND loekz = ''.
ENDIF. " IF tekpo[] IS NOT INITIAL
CLEAR lv_ebeln.
IF lt_ekpo[] IS NOT INITIAL.
SELECT ebeln UP TO 1 ROWS
INTO lv_ebeln
FROM ekko " Purchasing Document Header
FOR ALL ENTRIES IN lt_ekpo
WHERE ebeln = lt_ekpo-ebeln
AND bsart IN lr_evart.
ENDSELECT.
ENDIF. " IF lt_ekpo[] IS NOT INITIAL
IF lv_ebeln IS NOT INITIAL.
MESSAGE e104(zmm_specif) WITH lv_ebeln. " Group contract & already
existing
ENDIF. " IF lv_ebeln IS NOT INITIAL
ENDIF. " IF i_ekko-bsart NOT IN lr_evart