• andrew@lemmy.stuart.fun
    link
    fedilink
    English
    arrow-up
    4
    ·
    1 year ago

    I’m not gonna lie, I haven’t seen ABAP in 10 years and was only briefly familiar with it. But I did what one does and asked GPT4 for some tax computation ABAP.

    DATA: lv_income TYPE P DECIMALS 2 VALUE '50000',
          lv_tax_rate TYPE P DECIMALS 2,
          lv_tax_amount TYPE P DECIMALS 2.
    
    * Select the appropriate tax rate from the tax table based on income
    SELECT SINGLE TAX_RATE INTO lv_tax_rate 
    FROM ZTAX_TABLE 
    WHERE INCOME >= lv_income 
    ORDER BY INCOME ASCENDING.
    
    IF sy-subrc = 0.
      lv_tax_amount = lv_income * lv_tax_rate / 100.
      WRITE: / 'Income:', lv_income,
             / 'Tax Rate:', lv_tax_rate,
             / 'Tax Amount:', lv_tax_amount.
    ELSE.
      WRITE: / 'No tax rate found for income', lv_income.
    ENDIF.
    
    • WoodenBleachers@lemmy.basedcount.com
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 year ago

      Oh that looks awful. Maybe it’s just because I don’t know how to read it, but the fact that it is similar to SQL (definitely pronounced sequel at this time) messed with my head

    • QuazarOmegaA
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Oh my, that’s an abomination, I’m literally squinting my eyes to read it. That ENDIF tho, that’s where I draw the line °~°

    • Luvon@beehaw.org
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      This isn’t even like the worst of it. It’s an old enough language they still thought the compiler shouldn’t have to do more work.

      So you have to declare all variables, types, and methods in the top section of the class, and the method implementation in its own section. That means while working on a method, the method signature is a long way away. And because abap developers are allergic to splitting up code into reasonable classes, that can be a couple thousand lines away.

      Oh and all classes are in the global namespace. So all the classes you make must start with the letter z because SAP reserves any and all names that don’t start with z.

      Oh and they didn’t feel like making library code to do a lot of basic stuff, oh no, they thought that 3000+ keywords was a much better system. Especially sense hovering over a keyword gives no documentation and discoverable is therefore pretty terrible.

      Also they wanted everything to be sentenced like so keyword structures are often many special words in specific orders and hopefully you can write enough of it to get a prompt to fill in the rest.