/*--- Grundselektion fuer Regel aufbauen ---*/
assign
lvc_basistabelle = entry(lookup(string(gb_mdm06_yh_mdm_regel.bereich),{&YH_Bereich_Tabellen}) + 1, {&YH_Bereich_Tabellen})
lvc_basis_obj = entry(lookup(string(gb_mdm06_yh_mdm_regel.bereich),{&YH_Bereich_Tabellen_OBJ}) + 1, {&YH_Bereich_Tabellen_OBJ}).
if lvc_basistabelle = gb_mdm06_yh_mdm_regelwerte.tabellenname
/* Haupttabelle kann oefters vorkommen. Wir brauchen aber nur einmal */
and not can-find (first ttyquery where ttyquery.haupt > '':U)
then do:
/*--- Query fuer den Regelverstoss aufbauen ---*/
lvc_query = 'for each ':U + lvc_basistabelle
+ ' where ':U + lvc_basistabelle
+ '.firma = ':U + '"':U + pa-firma + '"':U.
/*--- Generische Selektion der Uebergabewerte aufbauen ---*/
/* Hole Basis */
/* lvc_query = lvc_query + ' no-lock':U. */
/* Merke mir die Selektion */
create ttyquery.
assign
ttyquery.haupt = lvc_query
ttyquery.tabelle = lvc_basistabelle
ttyquery.feld = gb_mdm06_yh_mdm_regelwerte.feldname
ttyquery.soll = gb_mdm06_yh_mdm_regelwerte.wert
ttyquery.operator = entry(gb_mdm06_yh_mdm_regelwerte.vergleichsoperator,{&YH_Operator}).
end. /* if lvc_basistabelle = gb_mdm06_yh_mdm_regelwerte.tabellenname */
/*--- Wenn Nebentabelle, dann Baisis suchen und Subquery aufbauen ---*/
if lvc_basistabelle <> gb_mdm06_yh_mdm_regelwerte.tabellenname
/* Die Relation zur Nebentabelle wird nur einmal benoetigt */
and not can-find (first ttyquery where ttyquery.tabelle = gb_mdm06_yh_mdm_regelwerte.tabellenname)
then do:
assign
lvc_tabelle = gb_mdm06_yh_mdm_regelwerte.tabellenname
lvc_subquery = '':U.
&IF {&PA_VERSION} LT '6':U
&THEN
/* Ueber die Relationsonfos die Zusammenhaenge aufbauen */
for each yd_relspalte
where yd_relspalte.tabellenname_1 = lvc_basistabelle
and yd_relspalte.tabellenname_2 = gb_mdm06_yh_mdm_regelwerte.tabellenname
no-lock
on error undo, return error
on endkey undo, return error:
assign
lvc_subquery = (if lvc_subquery = '':U
then ' where ':U
else lvc_subquery + ' and ':U)
lvc_subquery = lvc_subquery
+ yd_relspalte.tabellenname_2 + '.':U + yd_relspalte.spaltenname_2
+ ' = ':U + yd_relspalte.tabellenname_1 + '.':U + yd_relspalte.spaltenname_1.
end. /* for each d_relspalte */
&ELSE
find first ttDRC_Relation
where ttDRC_Relation.Parent_DRC_Table_ID = lvc_basistabelle
and ttDRC_Relation.Child_DRC_Table_ID = gb_mdm06_yh_mdm_regelwerte.tabellenname
no-lock no-error.
/* Alles ist moeglich */
if available ttDRC_Relation
then
for each ttDRC_RelationField
where ttDRC_RelationField.DRC_Relation_Obj = ttDRC_Relation.DRC_Relation_Obj
no-lock,
first DRC_Field
where DRC_Field.DRC_Field_Obj = ttDRC_RelationField.Parent_DRC_Field_Obj
no-lock,
first ygb_mdm01_DRC_Field
where ygb_mdm01_DRC_Field.DRC_Field_Obj = ttDRC_RelationField.Child_DRC_Field_Obj
no-lock
on error undo, return error
on endkey undo, return error:
assign
lvc_subquery = (if lvc_subquery = '':U
then ' where ':U
else lvc_subquery + ' and ':U)
lvc_subquery = lvc_subquery
+ ttDRC_Relation.child_drc_table_id + '.':U + ygb_mdm01_DRC_Field.drc_field_id
+ ' = ':U + ttDRC_Relation.parent_drc_table_id + '.':U + DRC_Field.drc_field_id.
end. /* for each ttDRC_RelationField */
&ENDIF
/* Unterstuetze s_adresse */
if gb_mdm06_yh_mdm_regelwerte.tabellenname = 's_adresse':U
then assign
lvc_subquery = (if lvc_subquery = '':U
then ' where ':U
else lvc_subquery + ' and ':U)
lvc_subquery = lvc_subquery + ' s_adresse.adressnr = ':U + lvc_basistabelle + '.adressnr ':U.
lvc_query = lvc_query + ', each ' + gb_mdm06_yh_mdm_regelwerte.tabellenname + ' ':U + lvc_subquery.
/* Abfrage merken */
create ttyquery.
assign
ttyquery.neben = ', each '
+ gb_mdm06_yh_mdm_regelwerte.tabellenname
+ (if lvl_outer_join = yes
then ' outer-join ':U
else '':U)
+ lvc_subquery
ttyquery.tabelle = gb_mdm06_yh_mdm_regelwerte.tabellenname
ttyquery.feld = gb_mdm06_yh_mdm_regelwerte.feldname
ttyquery.soll = gb_mdm06_yh_mdm_regelwerte.wert
ttyquery.operator = (if gb_mdm06_yh_mdm_regelwerte.ergebnisfeld = yes
then '>':U
else entry(gb_mdm06_yh_mdm_regelwerte.vergleichsoperator,{&YH_Operator})).
end. /* if lvc_basistabelle <> gb_mdm06_yh_mdm_regelwerte.tabellenname */
/* Checkbox OUTER aktivieren */
&if '{&pa-ProgrammTyp}':U <> 'JobProcedure':U
&then
utl_outer:sensitive in frame {&frame-name} = (if lvc_subquery > '':U
and index(lvc_subquery,'s_adresse':U) = 0
then yes
else no).
&endif
end. /* if first-of (gb_mdm06_yh_mdm_regelwerte.tabellenname) */
/* Later get query results */
find first ttyquery where ttyquery.haupt > '':U.
lvc_query = lvc_hauptquery + ' no-lock ':U.
create buffer lvh_buffer for table lvc_basistabelle.
create query lvh_query.
if {&YH_JOB_Protokoll} = yes
then put stream gs_prot unformatted skip 'Hauptquery: ':U lvc_hauptquery skip
'Nebenquery: ':U lvc_nebenquery skip.
if lvc_nebenquery > '':U
then do:
lvc_query = lvc_query + lvc_nebenquery + ' no-lock':U.
if num-entries(lvc_tabellenliste) = 1
then do:
lvc_tabellenname = entry(1,lvc_tabellenliste).
create buffer lvh2_buffer for table lvc_tabellenname.
end.
if num-entries(lvc_tabellenliste) = 2
then do:
lvc_tabellenname = entry(1,lvc_tabellenliste).
create buffer lvh2_buffer for table lvc_tabellenname.
lvc_tabellenname = entry(2,lvc_tabellenliste).
create buffer lvh3_buffer for table lvc_tabellenname.
end.
if num-entries(lvc_tabellenliste) = 1
then lvh_query:set-buffers(lvh_buffer,lvh2_buffer).
if num-entries(lvc_tabellenliste) = 2
then lvh_query:set-buffers(lvh_buffer,lvh2_buffer,lvh3_buffer).
end.
else lvh_query:set-buffers(lvh_buffer).
lvh_query:query-prepare(lvc_query).
lvh_query:query-open.
lvh_query:get-first.