Here is an example of a technical specification for the kind of ABAP programs that can be obtained with Chronos within a few minutes. It involves ALV and BAPI features in a SAP MM context (purchase requisitions).
Publié le 29 janvier 2024
Side salad: purchase requisitions (MM module)
Kitchen tool: BAPI_REQUISITION_CHANGE
The Chef's secret: the BAPI must be provided with the old PR data, fetched with BAPI_REQUISITION_GETDETAIL.
Selection-screen
Authority-checks
Data selections
Mapping
Editable ALV report
BAPI processing
| Element Type | Element Label | Properties |
|---|---|---|
| Block "Purchase requisitions selection" | ||
| Select-option (EBAN-WERKS) | Plant | Mandatory |
| Select-option (EBAN-MATNR) | Material | |
| Select-option (EBAN-BSART) | Document Type | |
| Select-option (EBAN-EKGRP) | Purchasing Group | |
| Select-option (EBAN-FLIEF) | Fixed Vendor | |
Check each Plant matching the select-option and existing in table T001W.
Use authorization object M_BANF_WRK and activity 03.
If authorization is missing on a Plant, remove it from the selection and display information message: "Authorizations missing on plant: selections will be restricted".
If authorizations are missing on all Plants, display error message: "No authorization for plant".
Check each Document Type matching the select-option and existing in table T161.
Use authorization object M_BANF_BSA and activity 03.
If authorization is missing on a Document Type, remove it from the selection and display information message: "Authorizations missing on document type: selections will be restricted".
If authorizations are missing on all Document Types, display error message: "No authorization for document type".
Check each Purchasing Group matching the select-option and existing in table T024.
Use authorization object M_BANF_EKG and activity 03.
If authorization is missing on a Purchasing Group, remove it from the selection and display information message: "Authorizations missing on purchasing group: selections will be restricted".
If authorizations are missing on all Purchasing Groups, display error message: "No authorization for purchasing group.
Fetch data from table EBAN with Plant, Material, Document Type, Purchasing Group and Fixed Vendor matching selection-screen values.
Fetch data from table MARA with Material belonging to EBAN selection.
Loop at records from EBAN.
Read data from KNA1.
Endloop.
| Field label | Origin | Rule |
|---|---|---|
| Purchase Requisition Number | EBAN-BANFN | Direct mapping |
| Purchase Requisition Item Number | EBAN-BNFPO | Direct mapping |
| Material Number | EBAN-MATNR | Direct mapping |
| Material Type | MARA-MTART | Direct mapping |
| Net weight | MARA-NTGEW | Direct mapping |
| Weight unit | MARA-GEWEI | Direct mapping |
| Plant | EBAN-WERKS | Direct mapping |
| Document type | EBAN-BSART | Direct mapping |
| Purchasing group | EBAN-EKGRP | Direct mapping |
| Release date | EBAN-FRGDT | Direct mapping |
| Vendor | EBAN-FLIEF | Direct mapping |
| Short text | EBAN-TXZ01 | Direct mapping |
| Requisition processing state | EBAN-BANPR | Direct mapping |
| Processing status | EBAN-STATU | Direct mapping |
| Purchase Requisition closed | EBAN-EBAKZ | Direct mapping |
| Purchase Requisition Quantity | EBAN-MENGE | Direct mapping |
| Purchase Requisition Unit of measure | EBAN-MEINS | Direct mapping |
| New quantity | Calculated value | Initially same value than EBAN-MENGE |
| Option | Rule |
|---|---|
| Window title bar | "Purchase requisitions : update quantities" |
| General display | Stripped pattern |
| Status |
Use a custom status. Add a toolbar button "Update quantities" with function code "&QTY". |
| Field | Rules |
|---|---|
| PR Number | Display as key field |
| PR Item Number | Display as key field |
| Material Number | |
| Material Type | |
| Net weight | Unit field = MARA-GEWEI |
| Weight unit | |
| Plant | |
| Document type | |
| Purchasing group | |
| Release date | |
| Vendor | |
| Short text | |
| Processing state | |
| Processing status | |
| PR closed | |
| PR Quantity | Unit field = EBAN-MEINS Display total |
| PR Unit of measure | |
| New quantity | Editable field Unit field = EBAN-MEINS Display total |
| Triggering event | Action |
|---|---|
| Function code &QTY | Call BAPI_REQUISITION_CHANGE to update selected PR items with column "New quantity". See details below. |
Loop at ALV selected rows.
At each new PR number, call BAPI_REQUISITION_GETDETAIL with this PR number. Initialize tables REQUISITION_ITEMS_OLD and REQUISITION_ITEMS_NEW from BAPI_REQUISITION_CREATE with content of table REQUISITION_ITEMS.
Update table REQUISITION_ITEMS_NEW with item new quantity for the same item number.
At end of a PR number, call BAPI_REQUISITION_CREATE.
In case of failure, call BAPI_TRANSACTION_ROLLBACK and collect BAPI error messages in a global messages table.
In case of success, call BAPI_TRANSACTION_COMMIT and add a success message for the PR update in the global messages table.
Endloop.
Show collected messages in a popup, using function modules MESSAGES_INITIALIZE, MESSAGE_STORE and MESSAGE_SHOW.