Generator: pilot analysis and fixes; G0002-G0021 tasks; handover notes merged

- Static bundle checks (name length, seed type, reserved words, contract test classes,
  testclasses_file), local abaplint parser check before SAP, max_tokens, robust JSON parse
- Runner: G2 for CDS views with parameters, contract_check detail in report
- G0020 and G0013 fixed by review and revalidated (oracle 100, null 0)
- Pilot results in docs/faz1-tasarim.md 11e; handover notes merged into CLAUDE.md and docs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-03 05:04:23 +02:00
parent 15eb9f1bb2
commit 5de5e2851c
162 changed files with 9943 additions and 23 deletions

View File

@@ -0,0 +1,14 @@
@EndUserText.label : 'Stock movements'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table {{p}}move {
key client : abap.clnt not null;
key mov_id : abap.int4 not null;
material : abap.char(10);
plant : abap.char(4);
move_date : abap.dats;
move_type : abap.char(2);
quantity : abap.dec(15,3);
}

View File

@@ -0,0 +1,20 @@
CLASS {{p}}seed_move DEFINITION PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun.
ENDCLASS.
CLASS {{p}}seed_move IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
DELETE FROM {{p}}move.
INSERT {{p}}move FROM TABLE @( VALUE #(
( mov_id = 1 material = 'MAT-001' plant = '1000' move_date = '20260110' move_type = 'GR' quantity = '100.000' )
( mov_id = 2 material = 'MAT-001' plant = '1000' move_date = '20260120' move_type = 'GR' quantity = '50.000' )
( mov_id = 3 material = 'MAT-001' plant = '1000' move_date = '20260115' move_type = 'GI' quantity = '30.000' )
( mov_id = 4 material = 'MAT-001' plant = '2000' move_date = '20260112' move_type = 'GI' quantity = '40.000' )
( mov_id = 5 material = 'MAT-002' plant = '1000' move_date = '20260201' move_type = 'GR' quantity = '200.000' )
( mov_id = 6 material = 'MAT-002' plant = '2000' move_date = '20260115' move_type = 'GR' quantity = '10.000' )
( mov_id = 7 material = 'MAT-002' plant = '2000' move_date = '20260116' move_type = 'GI' quantity = '25.000' )
( mov_id = 8 material = 'MAT-003' plant = '1000' move_date = '20251231' move_type = 'GR' quantity = '500.000' ) ) ).
out->write( sy-dbcnt ).
ENDMETHOD.
ENDCLASS.

View File

@@ -0,0 +1,82 @@
REPORT {{p}}stock_net.
TYPES: BEGIN OF ty_key,
material TYPE {{p}}move-material,
plant TYPE {{p}}move-plant,
END OF ty_key,
BEGIN OF ty_out,
material TYPE {{p}}move-material,
plant TYPE {{p}}move-plant,
net_qty TYPE {{p}}move-quantity,
move_count TYPE i,
END OF ty_out.
DATA: gv_matnr TYPE {{p}}move-material,
gv_from TYPE d,
gv_to TYPE d,
gv_gr TYPE {{p}}move-quantity,
gv_gi TYPE {{p}}move-quantity,
gv_cnt TYPE i,
gs_key TYPE ty_key,
gs_out TYPE ty_out,
gt_keys TYPE STANDARD TABLE OF ty_key,
gt_out TYPE STANDARD TABLE OF ty_out,
go_alv TYPE REF TO cl_salv_table,
gx_msg TYPE REF TO cx_salv_msg.
PARAMETERS: p_from TYPE d OBLIGATORY,
p_to TYPE d OBLIGATORY.
SELECT-OPTIONS: s_matnr FOR gv_matnr.
START-OF-SELECTION.
gv_from = p_from.
gv_to = p_to.
SELECT DISTINCT material, plant
FROM {{p}}move
INTO TABLE gt_keys
WHERE move_date >= gv_from
AND move_date <= gv_to
AND material IN s_matnr
ORDER BY material, plant.
LOOP AT gt_keys INTO gs_key.
CLEAR: gv_gr, gv_gi, gv_cnt, gs_out.
SELECT SUM( quantity ) FROM {{p}}move INTO gv_gr
WHERE material = gs_key-material
AND plant = gs_key-plant
AND move_type = 'GR'
AND move_date >= gv_from
AND move_date <= gv_to.
SELECT SUM( quantity ) FROM {{p}}move INTO gv_gi
WHERE material = gs_key-material
AND plant = gs_key-plant
AND move_type = 'GI'
AND move_date >= gv_from
AND move_date <= gv_to.
SELECT COUNT(*) FROM {{p}}move INTO gv_cnt
WHERE material = gs_key-material
AND plant = gs_key-plant
AND move_date >= gv_from
AND move_date <= gv_to.
gs_out-material = gs_key-material.
gs_out-plant = gs_key-plant.
gs_out-net_qty = gv_gr - gv_gi.
gs_out-move_count = gv_cnt.
APPEND gs_out TO gt_out.
ENDLOOP.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = gt_out.
CALL METHOD go_alv->display.
CATCH cx_salv_msg INTO gx_msg.
MESSAGE gx_msg TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.

View File

@@ -0,0 +1,82 @@
REPORT {{p}}stock_net_old.
TYPES: BEGIN OF ty_key,
material TYPE {{p}}move-material,
plant TYPE {{p}}move-plant,
END OF ty_key,
BEGIN OF ty_out,
material TYPE {{p}}move-material,
plant TYPE {{p}}move-plant,
net_qty TYPE {{p}}move-quantity,
move_count TYPE i,
END OF ty_out.
DATA: gv_matnr TYPE {{p}}move-material,
gv_from TYPE d,
gv_to TYPE d,
gv_gr TYPE {{p}}move-quantity,
gv_gi TYPE {{p}}move-quantity,
gv_cnt TYPE i,
gs_key TYPE ty_key,
gs_out TYPE ty_out,
gt_keys TYPE STANDARD TABLE OF ty_key,
gt_out TYPE STANDARD TABLE OF ty_out,
go_alv TYPE REF TO cl_salv_table,
gx_msg TYPE REF TO cx_salv_msg.
PARAMETERS: p_from TYPE d OBLIGATORY,
p_to TYPE d OBLIGATORY.
SELECT-OPTIONS: s_matnr FOR gv_matnr.
START-OF-SELECTION.
gv_from = p_from.
gv_to = p_to.
SELECT DISTINCT material plant
FROM {{p}}move
INTO TABLE gt_keys
WHERE move_date >= gv_from
AND move_date <= gv_to
AND material IN s_matnr.
SORT gt_keys BY material plant.
LOOP AT gt_keys INTO gs_key.
CLEAR: gv_gr, gv_gi, gv_cnt, gs_out.
SELECT SUM( quantity ) FROM {{p}}move INTO gv_gr
WHERE material = gs_key-material
AND plant = gs_key-plant
AND move_type = 'GR'
AND move_date >= gv_from
AND move_date <= gv_to.
SELECT SUM( quantity ) FROM {{p}}move INTO gv_gi
WHERE material = gs_key-material
AND plant = gs_key-plant
AND move_type = 'GI'
AND move_date >= gv_from
AND move_date <= gv_to.
SELECT COUNT(*) FROM {{p}}move INTO gv_cnt
WHERE material = gs_key-material
AND plant = gs_key-plant
AND move_date >= gv_from
AND move_date <= gv_to.
gs_out-material = gs_key-material.
gs_out-plant = gs_key-plant.
gs_out-net_qty = gv_gr - gv_gi.
gs_out-move_count = gv_cnt.
APPEND gs_out TO gt_out.
ENDLOOP.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = gt_out.
CALL METHOD go_alv->display.
CATCH cx_salv_msg INTO gx_msg.
MESSAGE gx_msg TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.