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 .