Vytvoření skupiny zakázek PM

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 .