Po implementaci modulu Pm vyvstal požadavek založení skupiny PM zakázek (transkace KOH1, KOH2) pro následný reporting nákladů v transakci S_ALR_87012998. Úkol se zdál poměrně snadným, ale …
Ve standardu sapu by bylo potřeba neustále zadávat nové a nové zakázky do skupiny takázek v dané hierarchii. Toto nebylo možné aplikovat, protože zakázky různých druhů mají společný interval a skupina zakázek se zakládá pomocí uvedení seznamu zakázek. Toto je uživatelsky neudržitelná věc. Navíc požadavek byl, aby se zakázky zakládaly ve vazbě na vybavení.
Řešení:
vytvořil jsem report na základě tabulky AFIH, kde je spojení mezi zakázkou PM a vybavením.
Skupina zakázek je pak tvořena dvěma kroky.
1. Vytvoření struktury pomocí modulu FM called K_GROUP_REMOTE_GENERATE
CALL FUNCTION 'K_GROUP_REMOTE_GENERATE' "Create or change CO hierarchy * EXPORTING * language = " sy-langu Language of text * top_node_only = SPACE " sy-datar Create top node only * tolerate_ambiguity = SPACE " sy-datar 'X': No uniqueness check IMPORTING return = " bapiret2 Error TABLES it_sethier = " sethier_co Hierarchy table * it_setval = " setval_co Hierarchy value . " K_GROUP_REMOTE_GENERATE
tabulka sethier_co je plněna reportem.
2.Naplnění skupin a poskupin pomocí FM K_GROUP_CREATE
CALL FUNCTION 'K_GROUP_CREATE' " EXPORTING setid = " setid * overwrite_mode = '1' " xflag * via_popup = 'X' " xflag * show_changed_group = 'X' " xflag TABLES setmasters = " rgsbv EXCEPTIONS WRONG_SETCLASS = 1 " CO_AREA_ERROR = 2 " WRONG_CH_OF_ACCOUNTS = 3 " SET_ERROR = 4 " GENERATE_ERROR = 5 " OVERWRITE_FORBIDDEN = 6 ".
Pole setid je tvořeno typem skupiny (0103 – interní zakázka ) a názvem skupiny. napčíklad skupina zakázek je PM_ORDER potom setid = 0103PM_ORDER
Funguje to celé tak, že se vždy skupina nejprve smaže a nově vygeneruje před spuštěním reportu, například S_ALR_87012998 .