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
R MATERIALDOCUMENTTP
Aus SAP Wiki ツ
Wareneingang zu Bestellung erstellen
DATA lt_material_doc_header TYPE TABLE FOR CREATE r_materialdocumenttp\\materialdocumentheader.
DATA lt_material_doc_items TYPE TABLE FOR CREATE r_materialdocumenttp\\materialdocumentheader\_materialdocumentitem.
DATA lt_material_doc_serials TYPE TABLE FOR CREATE r_materialdocumenttp\\MaterialDocumentItem\_SerialNumber.
CONSTANTS lc_cid_mat_doc_hdr TYPE abp_behv_cid VALUE 'CID_MAT_DOC_HDR'.
CONSTANTS lc_cid_mat_doc_itm TYPE abp_behv_cid VALUE 'CID_MAT_DOC_ITM'.
CONSTANTS lc_cid_mat_doc_ser TYPE abp_behv_cid VALUE 'CID_MAT_DOC_SER'.
CONSTANTS lc_gmcode_gr TYPE char2 VALUE '01'.
CONSTANTS lc_movetype_gr TYPE bwart VALUE '101'.
CONSTANTS lc_moveflag_po TYPE kzbew VALUE 'B'.
READ ENTITIES OF yc_purchaseorderitem IN LOCAL MODE ENTITY POItem
FIELDS ( purchaseorder purchaseorderitem )
WITH VALUE #( ( PurchaseOrder = keys[ 1 ]-PurchaseOrder
PurchaseOrderItem = keys[ 1 ]-PurchaseOrderItem ) )
RESULT FINAL(lt_po_items)
" TODO: variable is assigned but never used (ABAP cleaner)
REPORTED DATA(ls_reported)
FAILED DATA(ls_failed).
IF lt_po_items IS INITIAL OR ls_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.
" Material document header
lt_material_doc_header = VALUE #(
( %cid = lc_cid_mat_doc_hdr
PostingDate = sy-datum
DocumentDate = sy-datum
GoodsMovementCode = lc_gmcode_gr
TransactionCode = 'MB01'
InventoryTransactionType = 'WE'
MaterialDocumentHeaderText = |USER { cl_abap_context_info=>get_system_date( ) }| ) ).
" Material document item
lt_material_doc_items = VALUE #(
( %cid_ref = lc_cid_mat_doc_hdr
%target = VALUE #( ( %cid = lc_cid_mat_doc_itm
Material = lt_po_items[ 1 ]-Material
Plant = keys[ 1 ]-%param-Plant
StorageLocation = keys[ 1 ]-%param-StorageLocation
GoodsMovementType = lc_movetype_gr
GoodsMovementRefDocType = lc_moveflag_po
PurchaseOrder = lt_po_items[ 1 ]-PurchaseOrder
PurchaseOrderItem = lt_po_items[ 1 ]-PurchaseOrderItem
MaterialBaseUnit = lt_po_items[ 1 ]-PurchaseOrderQuantityUnit "lv_unit_output " keys[ 1 ]-%param-PurchaseOrderQuantityUnit
QuantityInBaseUnit = keys[ 1 ]-%param-OpenQuantityforGR
EntryUnit = lt_po_items[ 1 ]-PurchaseOrderQuantityUnit "lv_unit_output " keys[ 1 ]-%param-PurchaseOrderQuantityUnit
QuantityInEntryUnit = keys[ 1 ]-%param-OpenQuantityforGR ) ) ) ).
DATA(o_rnd) = NEW cl_random_number( ).
o_rnd->if_random_number~init( ).
DO keys[ 1 ]-%param-OpenQuantityforGR TIMES.
APPEND INITIAL LINE TO lt_material_doc_serials ASSIGNING FIELD-SYMBOL(<ls_serial>).
<ls_serial>-%cid_ref = lc_cid_mat_doc_itm.
APPEND VALUE #( %cid = lc_cid_mat_doc_ser && o_rnd->if_random_number~get_random_int( 99999 )
SerialNumber = o_rnd->if_random_number~get_random_int( 99999 ) )
TO <ls_serial>-%target.
ENDDO.
" Create inventory document
MODIFY ENTITIES OF r_materialdocumenttp
ENTITY materialdocumentheader
CREATE FROM lt_material_doc_header
ENTITY materialdocumentheader
CREATE BY \_materialdocumentitem FROM lt_material_doc_items
ENTITY MaterialDocumentItem
CREATE BY \_SerialNumber FROM lt_material_doc_serials
" TODO: variable is assigned but never used (ABAP cleaner)
MAPPED DATA(ls_mapped_early)
FAILED DATA(ls_failed_early)
REPORTED DATA(ls_reported_early).
IF ls_failed_early IS INITIAL.
APPEND VALUE #( %msg = new_message( id = ycl_p2p_prmonitor_constants=>cv_message_class
number = '074'
severity = if_abap_behv_message=>severity-success
v1 = '' ) )
TO reported-poitem.
ELSE.
IF ls_reported_early-materialdocumentheader IS NOT INITIAL.
APPEND VALUE #(
%msg = new_message_with_text(
severity = ls_reported_early-materialdocumentheader[ 1 ]-%msg->m_severity
text = ls_reported_early-materialdocumentheader[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-poitem.
ENDIF.
IF ls_reported_early-materialdocumentitem IS NOT INITIAL.
APPEND VALUE #(
%msg = new_message_with_text(
severity = ls_reported_early-MaterialDocumentItem[ 1 ]-%msg->m_severity
text = ls_reported_early-MaterialDocumentItem[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-poitem.
ENDIF.
IF ls_reported_early-serialnumber IS NOT INITIAL.
APPEND VALUE #( %msg = new_message_with_text(
severity = ls_reported_early-serialnumber[ 1 ]-%msg->m_severity
text = ls_reported_early-serialnumber[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-poitem.
ENDIF.
APPEND VALUE #( PurchaseOrder = keys[ 1 ]-PurchaseOrder
PurchaseOrderItem = keys[ 1 ]-PurchaseOrderItem )
TO failed-poitem.
ENDIF.
IF ls_mapped_early IS NOT INITIAL.
APPEND VALUE #( %cid = keys[ 1 ]-%cid
purchaseorder = keys[ 1 ]-PurchaseOrder
purchaseorderItem = keys[ 1 ]-PurchaseOrderItem ) TO mapped-poitem.
ENDIF.
Storno zu Wareneingang zu Bestellung erstellen
Dieses Wiki wird privat in Freizeit nach bestem Wissen und Gewissen gepflegt und dient primär als eigene Wissenssammlung für die tägliche Arbeit im SAP-ERP-Umfeld.
Alle dargestellten Softwareprodukte, auch in Form von Screenshots, sind Eigentum der SAP SE. Ihre Marken, vgl. Link, sind u.a.: SAP®, ABAP®, SAP Fiori®, SAP HANA®, SAP S/4HANA®, SAP S/4HANA® Cloud