CSD

  1 1.CSD查询。
  2 @AbapCatalog.sqlViewName: 'ZS_FLIGHT'
  3 @AbapCatalog.compiler.compareFilter: true
  4 @AccessControl.authorizationCheck: #CHECK
  5 @EndUserText.label: 'DEMO FOR S4'
  6 define view ZS4H_DEMO_1 as select from sflight as s {
  7 key s.mandt, 
  8 key s.carrid, 
  9 key s.connid, 
 10 key s.fldate, 
 11 s.price, 
 12 s.currency, 
 13 s.planetype, 
 14 s.paymentsum, 
 15 ( s.seatsmax + s.seatsmax_b + s.seatsmax_f ) as seatsmax, 
 16 ( s.seatsocc + s.seatsocc_b + s.seatsocc_f ) as seatsocc
 17 }
 18 
 19 2.cds内链接
 20 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_JOIN'
 21 @AbapCatalog.compiler.compareFilter: true
 22 @AccessControl.authorizationCheck: #CHECK
 23 @EndUserText.label: 'DEMO FOR S4'
 24 define view ZS4H_DEMO_2 as select from sflight as s
 25 inner  join spfli as p
 26     on p.carrid = s.carrid
 27     and p.connid = s.connid
 28     {
 29 key s.mandt, 
 30 key s.carrid, 
 31 key s.connid, 
 32 key s.fldate, 
 33 @Semantics.currencyCode: true s.currency, 
 34 @Semantics.amount.currencyCode: 'CURRENCY's.price, 
 35 s.planetype, 
 36 s.seatsmax, 
 37 s.seatsocc, 
 38 @Semantics.amount.currencyCode: 'CURRENCY's.paymentsum, 
 39 s.seatsmax_b, 
 40 s.seatsocc_b, 
 41 s.seatsmax_f, 
 42 s.seatsocc_f, 
 43 p.countryfr, 
 44 p.cityfrom, 
 45 p.airpfrom, 
 46 p.countryto, 
 47 p.cityto, 
 48 p.airpto, 
 49 p.fltime, 
 50 p.deptime, 
 51 p.arrtime, 
 52 p.distance, 
 53 p.distid, 
 54 p.fltype, 
 55 p.period
 56 }
 57 where ( s.carrid = 'AA' and s.fldate like '2018%')
 58 or ( s.carrid = 'AZ' and s.fldate like '2019%')
 59 
 60 3.cds外连接
 61 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_OUT'
 62 @AbapCatalog.compiler.compareFilter: true
 63 @AccessControl.authorizationCheck: #CHECK
 64 @EndUserText.label: 'DEMO FOR S4'
 65 define view ZS4H_DEMO_3 as select from scarr as S
 66 left outer join spfli as P
 67     on S.carrid = P.carrid{
 68     key S.mandt, 
 69     key S.carrid, 
 70     key P.connid, 
 71     S.carrname, 
 72     S.currcode, 
 73     S.url, 
 74     P.countryfr, 
 75     P.cityfrom, 
 76     P.airpfrom, 
 77     P.countryto, 
 78     P.cityto, 
 79     P.airpto, 
 80     P.fltime, 
 81     P.deptime, 
 82     P.arrtime, 
 83     P.distance, 
 84     P.distid, 
 85     P.fltype, 
 86     P.period
 87     
 88 } where  P.connid is null
 89 4.cds并集
 90 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_UN'
 91 @AbapCatalog.compiler.compareFilter: true
 92 @AccessControl.authorizationCheck: #CHECK
 93 @EndUserText.label: 'DEMO FOR S4'
 94 define view ZS4H_DEMO_4 as 
 95 select 
 96 mandt,
 97 carrid,
 98 connid,
 99 fldate,
100 loccurkey,
101 sum ( loccuram ) as LOCCURAM_Y,
102 cast( '0' as s_l_cur_pr ) as LOCCURAM_B,
103 cast( '0' as s_l_cur_pr ) as LOCCURAM_F
104 from sbook
105 where
106 class = 'Y'
107 group by
108 mandt,
109 carrid,
110 connid,
111 fldate,
112 loccurkey
113 
114 union all
115 
116  select
117 mandt,
118 carrid,
119 connid,
120 fldate,
121 loccurkey,
122 cast( '0' as s_l_cur_pr ) as LOCCURAM_Y,
123 sum ( loccuram ) as LOCCURAM_B,
124 cast( '0' as s_l_cur_pr ) as LOCCURAM_F
125 from sbook
126 where
127 class = 'C'
128 group by
129 mandt,
130 carrid,
131 connid,
132 fldate,
133 loccurkey
134 
135 union all
136 
137  select
138 mandt,
139 carrid,
140 connid,
141 fldate,
142 loccurkey,
143 cast( '0' as s_l_cur_pr ) as LOCCURAM_Y,
144 cast( '0' as s_l_cur_pr ) as LOCCURAM_B,
145 sum ( loccuram ) as LOCCURAM_F
146 from sbook
147 where
148 class = 'F'
149 group by
150 mandt,
151 carrid,
152 connid,
153 fldate,
154 loccurkey
155 
156 cds不支持子查询,查询并集新建cds,查视图
157 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_UN2'
158 @AbapCatalog.compiler.compareFilter: true
159 @AccessControl.authorizationCheck: #CHECK
160 @EndUserText.label: 'DEMO FOR S4'
161 define view ZS4H_DEMO_5 as select from zs_flight_un as UN {
162 UN.mandt, 
163 UN.carrid, 
164 UN.connid, 
165 UN.fldate, 
166 @Semantics.currencyCode: true UN.loccurkey, 
167 @Semantics.amount.currencyCode: 'loccurkey' sum( UN.loccuram_y ) as Y, 
168 @Semantics.amount.currencyCode: 'loccurkey' sum( UN.loccuram_b ) as B, 
169 @Semantics.amount.currencyCode: 'loccurkey' sum( UN.loccuram_f ) as F  
170 }group by
171 UN.mandt, 
172 UN.carrid, 
173 UN.connid, 
174 UN.fldate, 
175 UN.loccurkey
176 
177 5.cds聚合
178 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_AGG'
179 @AbapCatalog.compiler.compareFilter: true
180 @AccessControl.authorizationCheck: #CHECK
181 @EndUserText.label: 'DEMO FOR S4'
182 define view ZS4H_DEMO_6
183   as select from sflight as S
184 {
185   key S.mandt,
186   key S.carrid,
187   key S.connid,
188   key S.planetype,
189       @Semantics.currencyCode: true
190       S.currency,
191       @Semantics.amount.currencyCode: 'currency'
192       sum( S.paymentsum  ) as PAYMENTSUM
193 }
194 group by
195   S.mandt,
196   S.carrid,
197   S.connid,
198   S.planetype,
199   S.currency
200 6.关联
201 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_ASS'
202 @AbapCatalog.compiler.compareFilter: true
203 @AccessControl.authorizationCheck: #CHECK
204 @EndUserText.label: 'DEMO FOR S4'
205 define view ZS4H_DEMO_7
206   as select from spfli
207   association [1..1] to scarr as airline on airline.carrid = spfli.carrid
208 {
209   spfli.mandt,
210   spfli.carrid,
211   spfli.connid,
212   spfli.countryfr,
213   spfli.cityfrom,
214   spfli.airpfrom,
215   spfli.countryto,
216   spfli.cityto,
217   spfli.airpto,
218   spfli.fltime,
219   spfli.deptime,
220   spfli.arrtime,
221   spfli.distance,
222   spfli.distid,
223   spfli.fltype,
224   spfli.period,
225   airline
226 }
227 关联中无法查,要新建一个cds ,如下。
228 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_ASS1'
229 @AbapCatalog.compiler.compareFilter: true
230 @AccessControl.authorizationCheck: #CHECK
231 @EndUserText.label: 'DEMO FOR S4'
232 define view ZS4H_DEMO_8 as select from ZS4H_DEMO_7 as S {
233 S.mandt, 
234 S.carrid, 
235 S.connid, 
236 S.countryfr, 
237 S.cityfrom, 
238 S.airpfrom, 
239 S.countryto, 
240 S.cityto, 
241 S.airpto, 
242 S.fltime, 
243 S.deptime, 
244 S.arrtime, 
245 S.distance, 
246 S.distid, 
247 S.fltype, 
248 S.period, 
249 S.airline.carrname, 
250 S.airline.currcode, 
251 S.airline.url, 
252 S.airline.zcol1 
253 }
254 Cds继承,然后据徐往下读。
255 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_ASSO2'
256 @AbapCatalog.compiler.compareFilter: true
257 @AccessControl.authorizationCheck: #CHECK
258 @EndUserText.label: 'DEMO FOR S4'
259 define view ZS4H_DEMO_9 as select from sflight
260 association [1..1] to ZS4H_DEMO_7 as FLIGHT
261     on SFLIGHT.carrid = FLIGHT.carrid
262     and SFLIGHT.connid = FLIGHT.connid {
263     sflight.mandt, 
264     sflight.carrid, 
265     sflight.connid, 
266     sflight.fldate, 
267     sflight.price, 
268     sflight.currency, 
269     sflight.planetype, 
270     sflight.seatsmax, 
271     sflight.seatsocc, 
272     sflight.paymentsum, 
273     sflight.seatsmax_b, 
274     sflight.seatsocc_b, 
275     sflight.seatsmax_f, 
276     sflight.seatsocc_f,
277     FLIGHT.countryfr, 
278     FLIGHT.cityfrom, 
279     FLIGHT.airpfrom, 
280     FLIGHT.countryto, 
281     FLIGHT.cityto, 
282     FLIGHT.airpto, 
283     FLIGHT.fltime, 
284     FLIGHT.deptime, 
285     FLIGHT.arrtime, 
286     FLIGHT.distance, 
287     FLIGHT.distid, 
288     FLIGHT.fltype, 
289     FLIGHT.period, 
290     FLIGHT.airline.carrname, 
291     FLIGHT.airline.currcode, 
292     FLIGHT.airline.url, 
293     FLIGHT.airline.zcol1
294 }
295 
296 7.CDS带参数
297 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_P'
298 @AbapCatalog.compiler.compareFilter: true
299 @AccessControl.authorizationCheck: #CHECK
300 @EndUserText.label: 'DEMO FOR S4'
301 define view ZS4H_DEMO_10
302     with parameters i_carrid : s_carr_id
303 as select from sflight as s {
304 s.mandt, 
305 s.carrid, 
306 s.connid, 
307 s.fldate, 
308 s.price, 
309 s.currency, 
310 s.planetype, 
311 s.seatsmax, 
312 s.seatsocc, 
313 s.paymentsum, 
314 s.seatsmax_b, 
315 s.seatsocc_b, 
316 s.seatsmax_f, 
317 s.seatsocc_f
318 } where carrid = :i_carrid
319 
320 8.cds扩展
321 @AbapCatalog.sqlViewAppendName: 'ZS_FLIGHT_EX'
322 @EndUserText.label: 'DEMO FOR S4'
323 extend view ZS4H_DEMO_3 with ZS4H_DEMO_11 {
324     P.countryto, 
325     P.cityto, 
326     P.airpto, 
327    replace(S.url ,'http://' , '') as WITHOUT_URL“替代
328 }
329 9.CDS注解
330 @AbapCatalog.sqlViewName: 'ZS_FLIGHT_ANN'
331 @AbapCatalog.compiler.compareFilter: true
332 @AccessControl.authorizationCheck: #CHECK
333 @EndUserText.label: 'DEMO FOR S4'
334 define view ZS4H_DEMO_12 as select from sflight as S {
335 S.mandt, 
336 @EndUserText.label: 'FLIGHT NUMBER'
337 S.carrid, 
338 S.fldate,
339 S.connid, 
340 @Semantics.amount.currencyCode: 'currency'
341 S.price,
342 @Semantics.currencyCode: true
343 S.currency
344 }
345 10.open sql 访问cds数据库。
346 REPORT zs4h_cds_demo.
347 TYPES: ty_result TYPE zs4h_demo_10.
348 DATA: gt_result TYPE TABLE OF ty_result.
349 FIELD-SYMBOLS:<fs> TYPE ty_result.
350 PARAMETERS:
351   p_carrid TYPE zs4h_demo_10-carrid,
352   p_connid TYPE zs4h_demo_10-connid.
353 
354 SELECT
355   *
356   FROM zs4h_demo_10(  i_carrid = @p_carrid , i_connid = @p_connid )
357   INTO CORRESPONDING FIELDS OF TABLE @gt_result.
358 LOOP AT gt_result ASSIGNING <fs>.
359   WRITE: / <fs>-carrid,
360   <fs>-connid.
361 ENDLOOP.
362 
363 @AbapCatalog.sqlViewName: 'ZS_DEMO'
364 @AbapCatalog.compiler.compareFilter: true
365 @AccessControl.authorizationCheck: #CHECK
366 @EndUserText.label: 'DEMO FOR S4'
367 define view ZCDS_DEMO as select from vbap 
368 inner  join vbak on vbap.vbeln = vbak.vbeln
369 inner join makt on vbap.matnr = makt.matnr
370 inner join lips on vbap.vbeln = lips.vgbel and vbap.posnr = lips.vgpos
371 inner join likp on lips.vbeln  = likp.vbeln  {
372 key vbak.vbeln,
373 key vbap.posnr,
374 vbak.vkorg,
375 vbap.matnr,
376 makt.maktx,
377 vbap.netwr,
378 vbap.kwmeng,
379 likp.vbeln as VBELN1,
380 lips.posnr as POSNR1, 
381 lips.lfimg,
382 ( cast(vbap.netwr as float) * cast(lips.lfimg as float) / cast(vbap.kwmeng as float) ) as ZSUM
383 } where spras = '1'
384 
385 @AbapCatalog.sqlViewAppendName: 'ZS_DEMO_EX'
386 @EndUserText.label: 'DEMO FOR S4'
387 extend view ZCDS_DEMO with ZCDS_DEMO_EX {
388 likp.wadat_ist,
389 ( case likp.wadat_ist 
390  when '00000000' then '未交货'
391  else '已交货'
392  end
393  ) as zst
394 }

 

posted @ 2023-03-07 10:40  ABAP-武汉  阅读(54)  评论(0)    收藏  举报