User Tools

Site Tools


materialstammhistory

Materialstamm History

My first productive task by W & G for efc ERP.

  • Implement the History functionality for “Materialstamm” in efc ERP (Klaus: Anzeige einer Änderungshistorie für MATBAS, MATSAL, MATPUR, MATFIN (diese HIST-Repositories gibt es schon))
    • ***** MATBAS (Materialbasisdaten)
      • the solution already exists ⇒ I can copy it for others
    • - MATSAL (Materialvertriebsdaten)
      • is the repository existing?
    • - MATPUR (Einkaufsdaten)
      • is the repository existing?
    • - MATFIN (Finanzdaten)
      • is the repository existing?
  • This functionality exists now for :
    • Materialstamm “Historie Basisdaten” (can I can “copy” it from there?)
    • “Vertrieb / Aufträge” (can I “copy” it from there?)

Materialstamm

At the moment Materialstamm contains the History functionality for “Materialstamm Basisdaten”.

  • Business Object: app.mat.BoMat contained in appBoMat.efcbl
    • MdMatBas contained in mat.efcbl
  • The layout is contained in efc_client_java\efc_runner\src\resources\forms\mat\BoMat.xml

Materialstammbasisdaten (MatBas)

  • Database tables:
    • EFC_MATBAS
    • EFC_MATBAS_HIST
  • Repository
    • SoLiMatBasHistRepository declared in appSstMat.efcbl
    • The implementation is in SoLiMatBasHistRepositoryImpl
  • Service
    • SvSoMatHist declared in appSstMat.efcbl
      • contains
        • SoLiMatBasRepository
        • SoLiMatBasHistRepository
        • method getDcMatBasHist

Vertriebsdaten (MatSal)

Code

  • Database tables:
    • EFC_MATSAL
    • EFC_MATSAL_HIST
  • efcbl
    • /efc_server/src/efcbl/sst/appSstMat.efcbl
  • Data structures
    • ValueObject SoLiMatSal
      • Listenelement für verdichtete Vertriebs-Stammdaten
    • ValueObject SoLiMatSalHist
      • extends SoLiMatSal
      • Listenelement Material-Vertriebsdaten
      • Anzeige von Daten aus HIST-Tabelle.
    • ValueObject DcMatSalHist (added by me)
      • Data container(?) for the history view(window?)
    • SfDcMatSalHist (added by me)
      • SuBdata-frame to show DcMatSalHist
  • /efc_runner/src/resources/forms/mat/DcMatSalHist.xml
    • XML description to show table with DcMatSalHist object

ToDo

  • Service SvSoMatHist should contain all necessary Repositories and methods for history implementation
    • - add repositories to Service SvSoMatHist in appSstMat.efcbl
      • + SoLiMatSalRepository
      • + SoLiMatSalHistRepository
  • - add methods
  • add the menu point
    • Menus for “Materialstamm” window are declared in FrBoMat.groovy
  private EFCAdditionalAction 	aaInfoMatSalHist
//... initialize the action
		aaInfoMatSalHist				= new EFCAdditionalAction(tr("AA_MAT_INFOMATSALHIST"), "aaInfoMatSalHist", tr("AA_MAT_INFOMATSALHIST_DESC"))
//... add action to the menu
  viewManager.addToMenuInfo(tr("AM_MAT_HISTINFO"),
	(ArrayList) [aaInfoMatBasHist, aaInfoMatSalHist])
//... do something if the action was selected
	public void handleAction(String ident, Object param) {
//... 
		switch (ident.toString()) {
//...
			case aaInfoMatSalHist.getIdent():
                                // do something... (at the moment it is the copy from aaInfoMatBasHist)
				setSysParamBaseKey()
				openChildWindow(SfDcMatBasHist.class)
				break
//...
  • - translate wordings → should be done by Klaus

Einkaufsdaten (MatPur)

Code

  • Database tables:
    • EFC_MATPUR
    • EFC_MATPUR_HIST
  • efcbl
    • /efc_server/src/efcbl/sst/appSstMat.efcbl
  • Data structures
    • data structures are declared in
      • appBoMat.efcbl → data structures for material data objects
      • sst/appSstMat.efcbl → material history data structures and data containers for UI
    • ValueObject SoLiMatPur
      • Listenelement Material-Einkaufsdaten
    • ValueObject SoLiMatPurHist
      • extends SoLiMatPur
      • Listenelement Material-Einkaufsdaten
      • Anzeige von Daten aus HIST-Tabelle.
    • ValueObject DcMatPurHist (added by me)
      • Data container(?) for the history view(window?)
    • SfDcMatPurHist (added by me)
      • SuBdata-frame to show DcMatPurHist
  • /efc_runner/src/resources/forms/mat/DcMatPurHist.xml
    • XML description to show table with DcMatPurHist object

Finanzdaten (MatFin)

  • Database tables:
    • EFC_MATFIN
    • EFC_MATFIN_HIST

Samples

Vertrieb/Aufträge

Sample data containing history:

  • Belegnr.: 00189448 (Belegart: AB, Belegnr.: 00189448, Kunde: 5010000)

Here is described how this functionality is implemented for “Vertrieb/Aufträge”:

  • SoLiDocHist
  • - Data objects (in appSstDoc.efcbl)
    • ValueObject DcDocHistForQty → ValueObject DcMatSalHist
      • contains:
        • key fields
          • company
          • docKey
          • docNum
        • List<#DcLiDocItemHistForQty> qtydocitemList
    • ValueObject DcLiDocItemHistForQty → at the moment SoLiMatSalHist (maybe I should create a new data container explicitely used for displaying)
      • is a data container object representing one position in the LEFT table “aktuelle Positionen”
      • contains:
        • position key fields
          • dockey
          • docnum
          • docitem
          • docitemkey
          • …
          • ref List<#DcLiQtyHist> qtyhistList;
    • ValueObject DcLiQtyHist → …
      • is a data container representing one item in the RIGHT table “Änderungshistorie Positionen”
      • contains:
        • quantity
        • createdBy
        • createdAt
        • editedBy
        • editedAt
  • - Important methods
    • SoLiDocItemHistRepositoryImpl.getListDocItemHistForDocObj() → SoLiMatSalHistRepositoryImpl.getListMatSalHistForMatObj()
      • fetches the complete history for DocObj
        • this means the history of all positions
  • - Database
    • DB table: [EFCOZ].[dbo].[EFC_DOCITEM_HIST]
  • - Service
  • SvSoDocHist is declared in appSstDoc.efcbl
  • The implementation is in SvSoDocHistImpl
  • - Repository

Materialstammdaten

  • Sample data containing history:
    • Mat.-Nr.: 110.2207.20
  • At the moment it is important to have the proper “Mat.-Status” (NOT 'X', but '*'!)

Vertrieb/Lieferscheine

  • Sample data containing history:
    • Belegnummer: 00252275
  • the functionality can be seen at “Vertrieb / Lieferscheine”
    • choose “Positionen” tab, then select menu “Info / Historie / Historie Mengenänderung”
  • fetching data for compare can be viewed at: SvSoDocHistImpl.getDcDocHistForQty()

Misc

''@CompileStatic'' in ''SvSoMatHistImpl''

  • After adding of @CompileStatic to SvSoMatHistImpl the line 33 in SvSoMatHistImpl does not work any more:
  matHist.matbashistList = soLiMatBasHistRepository.getListMatBasHistForMat(company, matnum)
  • the cause is the method delivers EFCList<SoLiMatBasHist> instead of EFCList<SoLiMatBas>
    • to fix it: copy the objects
materialstammhistory.txt · Last modified: by kalaschnikow