I PURCHASEORDERTP 2

Aus SAP Wiki ツ

Hinweis: Umlagerungserstellungen können damit nicht erstellt werden.

Bestellung 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.

Bestellung als gelöscht markieren

DATA lt_delete TYPE TABLE FOR UPDATE I_PurchaseRequisitionTP\\PurchaseRequisitionItem.

    lt_delete = CORRESPONDING #( keys ).

    LOOP AT lt_delete ASSIGNING FIELD-SYMBOL(<ls_delete>).
      <ls_delete>-IsDeleted = abap_true.
      <ls_delete>-%data-IsDeleted = abap_true.
      <ls_delete>-%control-IsDeleted = if_abap_behv=>mk-on.
    ENDLOOP.

    MODIFY ENTITIES OF i_purchaserequisitiontp
           ENTITY PurchaseRequisitionItem UPDATE FROM lt_delete
           MAPPED DATA(ls_mapped) REPORTED DATA(ls_reported) FAILED DATA(ls_failed).

    IF ls_failed IS INITIAL.
           APPEND VALUE #( %msg = new_message( id       = ycl_p2p_prmonitor_constants=>cv_message_class
                                               number   = '049'
                                               severity = if_abap_behv_message=>severity-success ) )
             TO reported-prmonitor.
    ELSE.
      IF ls_reported-PurchaseRequisitionItem IS NOT INITIAL.
        APPEND VALUE #( %msg = new_message_with_text(
                                   severity = ls_reported-PurchaseRequisition[ 1 ]-%msg->m_severity
                                   text     = ls_reported-PurchaseRequisition[ 1 ]-%msg->if_message~get_text( ) ) )
               TO reported-prmonitor.
      ENDIF.

      IF ls_reported-PurchaseRequisitionItem IS NOT INITIAL.
        LOOP AT ls_reported-PurchaseRequisitionItem ASSIGNING FIELD-SYMBOL(<ls_rep_po_item>).
          APPEND VALUE #(
              %msg = new_message_with_text(
                         severity = ls_reported-PurchaseRequisitionItem[ sy-tabix ]-%msg->m_severity
                         text     = ls_reported-PurchaseRequisitionItem[ 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>).
        APPEND VALUE #( "%cid                    = <ls_keys>-%cid
                        PurchaseRequisition     = <ls_keys>-PurchaseRequisition
                        PurchaseRequisitionItem = <ls_keys>-PurchaseRequisitionItem ) TO mapped-prmonitor.
    ENDLOOP.

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