2

I want to compare the field bseg~zuonr with aufk~aufnr in an inner join SQL select.

SELECT bseg~hkont, bseg~zuonr, bseg~belnr, bseg~gjahr, aufk~prctr FROM bseg INNER JOIN aufk
  ON bseg~zuonr = aufk~aufnr "<--
  WHERE bseg~hkont IN @s_hkont
  INTO TABLE @DATA(output).

This select is not working right for me and not giving back any data.

I think my problem is, that aufk~aufnr has leading zeros (for example: 000072667023) and bseg~zuonr contains only the number without leading zeros (for example: 72667023).

I have tried to use the TRIM-function inside the SQL select but that did not worked for me (Code snipped: ON bseg~zuonr = TRIM( LEADING '0' FROM aufk~aufnr )"(" is not allowed here. "." is expected.)

Did I do something wrong? Do you know any solution for this issue?

Suncatcher
  • 10,355
  • 10
  • 52
  • 90
schmelto
  • 427
  • 5
  • 18

2 Answers2

3

You could use the concat function. For example

SELECT bseg~hkont, bseg~zuonr, bseg~belnr, bseg~gjahr, aufk~prctr 
  FROM bseg 
  JOIN aufk ON concat( '0000', bseg~zuonr ) = aufk~aufnr
 WHERE bseg~hkont IN @s_hkont
  INTO TABLE @DATA(output).

Also you can combine this with substring to set the aufnr exact to 12 chars

Suncatcher
  • 10,355
  • 10
  • 52
  • 90
Jünge alles
  • 491
  • 1
  • 5
  • 19
0
SELECT FROM bseg JOIN aufk ON ( ltrim( aufk~aufnr, '0' ) = bseg~zuonr )
  FIELDS bseg~hkont, bseg~zuonr, bseg~belnr, bseg~gjahr, aufk~prctr 
  WHERE bseg~hkont IN @s_hkont
  INTO TABLE @DATA(output).

is also working

schmelto
  • 427
  • 5
  • 18