adesso business consulting Stellenangebote
Software Engineer Trainee · Senior
| (Senior) Cloud Software Engineer BTP | Senior Frontend Software Engineer SAP BTP
| (Senior) Consultant Technologie
Werkstudent Softwareentwicklung · Consulting
I PURCHASEORDERTP 2: Unterschied zwischen den Versionen
Aus SAP Wiki ツ
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Behavior Definitionen und Implementierungen]] | [[Kategorie:Behavior Definitionen und Implementierungen]] | ||
Hinweis: Umlagerungserstellungen können damit nicht erstellt werden. | Hinweis: Umlagerungserstellungen können damit nicht erstellt werden. | ||
=== Bestellung erstellen === | === Bestellung mit Positionen erstellen === | ||
<syntaxhighlight line copy> | <syntaxhighlight line copy> | ||
DATA lt_header_data TYPE if_mm_pur_po_bil=>tt_proj_level_po_create. | DATA lt_header_data TYPE if_mm_pur_po_bil=>tt_proj_level_po_create. |
Version vom 4. Juni 2025, 10:23 Uhr
Hinweis: Umlagerungserstellungen können damit nicht erstellt werden.
Bestellung mit Positionen erstellen
DATA lt_header_data TYPE if_mm_pur_po_bil=>tt_proj_level_po_create.
lt_header_data = VALUE #( ( %cid = 'CID_PURORDER_1'
PurchaseOrderType = 'NB' " cl_mmpur_create_test_pos=>get_valid_purchaseordertype( )
CompanyCode = lt_result[ 1 ]-CompanyCode "'1710'
PurchasingOrganization = lt_result[ 1 ]-PurchasingOrganization "'1710'
PurchasingGroup = lt_result[ 1 ]-PurchasingGroup "'001'
Supplier = lv_supplier "'0017300001'
%control = VALUE #(
PurchaseOrderType = cl_abap_behv=>flag_changed
CompanyCode = cl_abap_behv=>flag_changed
PurchasingOrganization = cl_abap_behv=>flag_changed
PurchasingGroup = cl_abap_behv=>flag_changed
Supplier = cl_abap_behv=>flag_changed ) ) ).
DATA lv_pos_numbering TYPE I_PurchaseOrderItemAPI01-PurchaseOrderItem.
lv_pos_numbering = 00010.
DATA lv_cid_item_numbering TYPE abp_behv_cid.
lv_cid_item_numbering = 1.
DATA lt_items_data TYPE if_mm_pur_po_bil=>tt_proj_level_items_create.
LOOP AT lt_result ASSIGNING FIELD-SYMBOL(<ls_res>).
lt_items_data = VALUE #( BASE lt_items_data
( %cid_ref = 'CID_PURORDER_1'
%target = VALUE #( ( %cid = |CID_POITEMT_{ lv_cid_item_numbering }|
PurchaseRequisition = <ls_res>-%key-PurchaseRequisition
PurchaseRequisitionItem = <ls_res>-%key-PurchaseRequisitionItem
Material = <ls_res>-%data-Material
ManufacturerMaterial = <ls_res>-%data-Material
Plant = <ls_res>-%data-Plant
OrderQuantity = <ls_res>-%data-RequestedQuantity
PurchaseOrderItem = lv_pos_numbering
NetPriceAmount = <ls_res>-%data-ItemNetAmount
%control = VALUE #(
Material = cl_abap_behv=>flag_changed
ManufacturerMaterial = cl_abap_behv=>flag_changed
Plant = cl_abap_behv=>flag_changed
OrderQuantity = cl_abap_behv=>flag_changed
PurchaseOrderItem = cl_abap_behv=>flag_changed
NetPriceAmount = cl_abap_behv=>flag_changed
PurchaseRequisition = cl_abap_behv=>flag_changed
PurchaseRequisitionItem = cl_abap_behv=>flag_changed ) ) ) ) ).
lv_pos_numbering += 10.
lv_cid_item_numbering += 1.
ENDLOOP.
MODIFY ENTITIES OF i_purchaseordertp_2
ENTITY purchaseorder CREATE FROM lt_header_data
ENTITY purchaseorder CREATE BY \_PurchaseOrderItem FROM lt_items_data
REPORTED DATA(ls_reported)
FAILED DATA(ls_failed)
MAPPED DATA(ls_mapped).
WAIT UP TO 2 SECONDS.
IF ls_failed IS INITIAL.
APPEND VALUE #( %msg = new_message( id = ycl_p2p_prmonitor_constants=>cv_message_class
number = '034'
severity = if_abap_behv_message=>severity-success ) )
TO reported-prmonitor.
ELSE.
IF ls_reported-PurchaseOrder IS NOT INITIAL.
APPEND VALUE #( %msg = new_message_with_text(
severity = ls_reported-PurchaseOrder[ 1 ]-%msg->m_severity
text = ls_reported-PurchaseOrder[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-prmonitor.
ENDIF.
IF ls_reported-PurchaseOrderItem IS NOT INITIAL.
LOOP AT ls_reported-PurchaseOrderItem ASSIGNING FIELD-SYMBOL(<ls_rep_po_item>).
APPEND VALUE #(
%msg = new_message_with_text(
severity = ls_reported-PurchaseOrderItem[ sy-tabix ]-%msg->m_severity
text = ls_reported-PurchaseOrderItem[ sy-tabix ]-%msg->if_message~get_text( ) ) )
TO reported-prmonitor.
ENDLOOP.
ENDIF.
APPEND VALUE #( PurchaseRequisition = keys[ 1 ]-PurchaseRequisition
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem )
TO failed-prmonitor.
ENDIF.
LOOP AT keys ASSIGNING FIELD-SYMBOL(<ls_keys>).
IF ls_mapped IS NOT INITIAL.
APPEND VALUE #( %cid = <ls_keys>-%cid
PurchaseRequisition = <ls_keys>-PurchaseRequisition
PurchaseRequisitionItem = <ls_keys>-PurchaseRequisitionItem ) TO mapped-prmonitor.
ENDIF.
ENDLOOP.
Bestellung lesen
Bestellung ändern
DATA lt_read_result TYPE TABLE FOR READ RESULT yc_purchaseorderitem\\poitem.
DATA ls_read_failed TYPE RESPONSE FOR FAILED EARLY yc_purchaseorderitem.
DATA ls_read_reported TYPE RESPONSE FOR REPORTED EARLY yc_purchaseorderitem.
read( EXPORTING keys = CORRESPONDING #( keys )
CHANGING result = lt_read_result
failed = ls_read_failed
reported = ls_read_reported ).
IF ls_read_failed IS NOT INITIAL.
APPEND VALUE #( %msg = new_message( id = ycl_p2p_prmonitor_constants=>cv_message_class
number = '005'
severity = if_abap_behv_message=>severity-error ) )
TO reported-poitem.
RETURN.
ENDIF.
MODIFY ENTITIES OF i_purchaseordertp_2
ENTITY purchaseorderitem UPDATE FROM VALUE #(
( PurchaseOrder = CONV ebeln( keys[ 1 ]-PurchaseOrder )
PurchaseOrderItem = keys[ 1 ]-PurchaseOrderItem
%data-OrderQuantity = keys[ 1 ]-%param-OrderQuantity
%data-StorageLocation = keys[ 1 ]-%param-StorageLocation
%control-OrderQuantity = COND #( WHEN keys[ 1 ]-%param-OrderQuantity <> lt_read_result[ 1 ]-OrderQuantity
THEN if_abap_behv=>mk-on )
%control-StorageLocation = COND #( WHEN keys[ 1 ]-%param-StorageLocation <> lt_read_result[ 1 ]-StorageLocation
THEN if_abap_behv=>mk-on ) ) )
REPORTED DATA(ls_update_reported)
FAILED DATA(ls_update_failed).
IF ls_update_failed IS INITIAL.
APPEND VALUE #( %msg = new_message( id = ycl_p2p_prmonitor_constants=>cv_message_class
number = '073'
severity = if_abap_behv_message=>severity-success ) )
TO reported-poitem.
RETURN.
ELSE.
IF ls_update_reported-PurchaseOrderItem IS NOT INITIAL.
APPEND VALUE #( %msg = new_message_with_text(
severity = ls_update_reported-PurchaseOrderItem[ 1 ]-%msg->m_severity
text = ls_update_reported-PurchaseOrderItem[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-poitem.
ENDIF.
APPEND VALUE #( PurchaseOrder = keys[ 1 ]-PurchaseOrder
PurchaseOrderItem = keys[ 1 ]-PurchaseOrderItem )
TO failed-poitem.
ENDIF.