I PURCHASEORDERTP 2

Aus SAP Wiki ツ

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

    READ ENTITY i_purchaseordertp_2 ALL FIELDS WITH
      VALUE #( ( purchaseorder = ms_purchase_orders-purchaseorder ) )
         RESULT   DATA(lt_read_result)
         REPORTED DATA(ls_read_reported)
         FAILED   DATA(ls_read_failed).

Bestellposition ä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.

Bestellposition als gelöscht markieren

Bestellposition Löschkennzeichen zurücknehmen


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