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 PURCHASEREQUISITIONTP: Unterschied zwischen den Versionen
Aus SAP Wiki ツ
Die Seite wurde neu angelegt: „Kategorie:Behavior Definitionen und Implementierungen === Bestellanforderung anlegen === <syntaxhighlight line copy> </syntaxhighlight> === Bestellanforderung lesen === <syntaxhighlight line copy> </syntaxhighlight> === Bestellanforderung ändern === <syntaxhighlight line copy> </syntaxhighlight> === Bestellanforderungsposition als gelöscht markieren === <syntaxhighlight line copy> DATA lt_delete TYPE TABLE FOR UPDATE I_PurchaseRequisitionTP\…“ |
Keine Bearbeitungszusammenfassung |
||
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Behavior Definitionen und Implementierungen]] | [[Kategorie:Behavior Definitionen und Implementierungen]] | ||
=== Bestellanforderung anlegen === | === Bestellanforderung mit Positionen anlegen === | ||
<syntaxhighlight line copy> | <syntaxhighlight lang="abap" line copy> | ||
DATA lt_rap_pr_header TYPE TABLE FOR CREATE I_PurchaseRequisitionTP. | |||
DATA lt_rap_pr_items_cba TYPE TABLE FOR CREATE i_purchaserequisitiontp\_purchaserequisitionitem. | |||
DATA lt_rap_pr_acct_cba TYPE TABLE FOR CREATE i_purchasereqnitemtp\_purchasereqnacctassgmt. | |||
DATA lt_rap_pr_addr_cba TYPE TABLE FOR CREATE i_purchasereqnitemtp\_purchasereqndelivaddress. | |||
DATA ls_pr_line_rap TYPE R_PurchaseRequisitionItemTP. | |||
DATA ls_pr_line_rap_create TYPE STRUCTURE FOR CREATE R_PurchaseRequisitionItemTP. | |||
DATA ls_rap_pr_item_cba TYPE STRUCTURE FOR CREATE i_purchaserequisitiontp\_purchaserequisitionitem. | |||
DATA ls_target_item_cba LIKE LINE OF ls_rap_pr_item_cba-%target. | |||
DATA ls_pr_acct_rap_rview TYPE R_PurchaseReqnAcctAssgmtTP. | |||
DATA ls_rap_pr_acct_cba TYPE STRUCTURE FOR CREATE i_purchasereqnitemtp\_purchasereqnacctassgmt. | |||
DATA ls_pr_acct_rap_create TYPE STRUCTURE FOR CREATE R_PurchaseReqnAcctAssgmtTP. | |||
DATA ls_rap_pr_addr_cba TYPE STRUCTURE FOR CREATE i_purchasereqnitemtp\_purchasereqndelivaddress. | |||
DATA ls_pr_addr_rap TYPE I_PurchaseReqnDelivAddrTP. | |||
DATA ls_target_acc_cba LIKE LINE OF ls_rap_pr_acct_cba-%target. | |||
DATA lt_pr_data TYPE TABLE FOR READ RESULT yc_prmonitor\\prmonitor. | |||
DATA ls_pr_failed TYPE RESPONSE FOR FAILED EARLY yc_prmonitor. | |||
DATA ls_pr_reported TYPE RESPONSE FOR REPORTED EARLY yc_prmonitor. | |||
DATA lv_cid_item_numbering TYPE abp_behv_cid. | |||
read( EXPORTING keys = CORRESPONDING #( keys ) | |||
CHANGING result = lt_pr_data | |||
failed = ls_pr_failed | |||
reported = ls_pr_reported ). | |||
IF lt_pr_data IS INITIAL OR ls_pr_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-prmonitor. | |||
RETURN. | |||
ENDIF. | |||
LOOP AT keys ASSIGNING FIELD-SYMBOL(<ls_keys>). | |||
DATA(lv_pr) = <ls_keys>-%key-PurchaseRequisition. | |||
DATA(lv_pr_item) = <ls_keys>-%key-PurchaseRequisitionItem. | |||
DATA(lv_pr_type) = lt_pr_data[ | |||
%key-PurchaseRequisition = <ls_keys>-%key-PurchaseRequisition ]-PurchaseRequisitionType. | |||
IF <ls_keys>-%cid IS NOT INITIAL AND lines( keys ) = 1. | |||
DATA(lv_cid) = <ls_keys>-%cid. | |||
ELSE. | |||
lv_cid = 'My%CID_1'. | |||
ENDIF. | |||
lt_rap_pr_header = VALUE #( ( %cid = lv_cid "'My%CID_1' | |||
%data-PurchaseRequisitionType = lv_pr_type " lt_pr_data[ 1 ]-%data-PurchaseRequisitionType | |||
"%control-PurchaseRequisitionType = if_abap_behv=>mk-on | |||
%data-PurReqnDescription = <ls_keys>-%param-PurchaseRequisitionDesc ) ). | |||
LOOP AT lt_pr_data INTO DATA(ls_pr_data) WHERE %key-PurchaseRequisition = lv_pr | |||
AND %key-PurchaseRequisitionItem = lv_pr_item. | |||
CLEAR : ls_pr_line_rap_create, | |||
ls_rap_pr_acct_cba, | |||
ls_rap_pr_addr_cba, | |||
ls_target_acc_cba, | |||
ls_target_item_cba, | |||
ls_rap_pr_item_cba-%target. | |||
lv_cid_item_numbering += 1. | |||
ls_pr_line_rap = CORRESPONDING #( ls_pr_data ). | |||
ls_pr_line_rap_create = CORRESPONDING #( ls_pr_line_rap CHANGING CONTROL " %Control fields are also filled if non-initial | |||
EXCEPT PurReqnReleaseStatus CreatedByUser ItemDeliveryAddressID | |||
LastChangeDateTime PurchaseReqnItemUniqueID ). " Display only fields removed | |||
ls_target_item_cba = CORRESPONDING #( ls_pr_line_rap_create ). | |||
ls_target_item_cba-%cid = |My%ItemCID_{ lv_cid_item_numbering }|. "'My%ItemCID_1'. " ls_target_item_cba-purchaserequisitionitem. | |||
ls_target_item_cba-%data-RequestedQuantity = <ls_keys>-%param-RequestedQuantity. | |||
ls_target_item_cba-%data-OrderedQuantity = 0. | |||
ls_target_item_cba-%data-IsDeleted = abap_false. | |||
ls_target_item_cba-%data-ProcessingStatus = 'N'. | |||
ls_target_item_cba-%data-PurReqnReleaseStatus = '02'. | |||
CLEAR: ls_target_item_cba-%data-PurchasingDocument, | |||
ls_target_item_cba-%data-PurchasingDocumentItem. | |||
ls_rap_pr_item_cba-%cid_ref = lv_cid. "'My%CID_1'. " Give same CID of PR header | |||
APPEND ls_target_item_cba TO ls_rap_pr_item_cba-%target. | |||
" Fill in Accounting | |||
SELECT FROM I_PurchaseReqnAcctAssgmtTP | |||
FIELDS * | |||
WHERE PurchaseRequisition = @lv_pr | |||
AND PurchaseRequisitionItem = @lv_pr_item | |||
INTO TABLE @DATA(lt_pr_item_acctassgmt). | |||
LOOP AT lt_pr_item_acctassgmt INTO DATA(ls_pr_accounting). | |||
ls_pr_acct_rap_rview = CORRESPONDING #( ls_pr_accounting ). | |||
ls_pr_acct_rap_create = CORRESPONDING #( ls_pr_acct_rap_rview CHANGING CONTROL ). | |||
ls_pr_acct_rap_create-%control-PurchaseReqnAcctAssgmtNumber = if_abap_behv=>mk-off. | |||
ls_target_acc_cba = CORRESPONDING #( ls_pr_acct_rap_create ). | |||
CONCATENATE 'Accnt' 'My%ItemCID_' lv_cid_item_numbering ls_pr_acct_rap_create-PurchaseReqnAcctAssgmtNumber | |||
INTO ls_target_acc_cba-%cid. | |||
APPEND ls_target_acc_cba TO ls_rap_pr_acct_cba-%target. | |||
ls_rap_pr_acct_cba-%cid_ref = |My%ItemCID_{ lv_cid_item_numbering }|. "'My%ItemCID_1'. | |||
ENDLOOP. | |||
IF ls_rap_pr_acct_cba IS NOT INITIAL. | |||
APPEND ls_rap_pr_acct_cba TO lt_rap_pr_acct_cba. | |||
ENDIF. | |||
" Fill in Address | |||
SELECT SINGLE FROM I_PurchaseReqnDelivAddrTP | |||
FIELDS * | |||
WHERE PurchaseRequisition = @lv_pr | |||
AND PurchaseRequisitionItem = @lv_pr_item | |||
INTO @DATA(ls_pr_item_addr). | |||
IF ls_pr_item_addr IS NOT INITIAL. | |||
" ls_rap_pr_addr_cba-%cid_ref = 'My%ItemCID_1'. | |||
ls_rap_pr_addr_cba-%cid_ref = |My%ItemCID_{ lv_cid_item_numbering }|. "'My%ItemCID_1'. " ls_pr_line_rap_create-%cid. | |||
APPEND INITIAL LINE TO ls_rap_pr_addr_cba-%target ASSIGNING FIELD-SYMBOL(<fs_rap_pr_addr_cba>). | |||
ls_pr_addr_rap-AddressID = ls_pr_item_addr-AddressID. | |||
ls_pr_addr_rap-BusinessPartnerName1 = ls_pr_item_addr-BusinessPartnerName1. | |||
ls_pr_addr_rap-BusinessPartnerName2 = ls_pr_item_addr-BusinessPartnerName2. | |||
ls_pr_addr_rap-Country = ls_pr_item_addr-Country. | |||
<fs_rap_pr_addr_cba> = CORRESPONDING #( ls_pr_addr_rap CHANGING CONTROL | |||
EXCEPT AddressID PurchasingDeliveryAddressType ManualDeliveryAddressID FullName LastChangeDateTime ). | |||
CONCATENATE 'Deliv' 'My%ItemCID_' lv_cid_item_numbering INTO <fs_rap_pr_addr_cba>-%cid. | |||
APPEND ls_rap_pr_addr_cba TO lt_rap_pr_addr_cba. | |||
ENDIF. | |||
ENDLOOP. | |||
IF ls_rap_pr_item_cba IS NOT INITIAL. | |||
APPEND ls_rap_pr_item_cba TO lt_rap_pr_items_cba. | |||
ENDIF. | |||
ENDLOOP. | |||
MODIFY ENTITIES OF i_purchaserequisitiontp | |||
ENTITY purchaserequisition CREATE FROM lt_rap_pr_header | |||
CREATE BY \_purchaserequisitionitem FROM lt_rap_pr_items_cba | |||
ENTITY purchaserequisitionitem | |||
CREATE BY \_purchasereqnacctassgmt FROM lt_rap_pr_acct_cba | |||
ENTITY purchaserequisitionitem | |||
CREATE BY \_purchasereqndelivaddress FROM lt_rap_pr_addr_cba | |||
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 = '040' | |||
severity = if_abap_behv_message=>severity-success | |||
v1 = '' ) ) | |||
TO reported-prmonitor. | |||
ELSE. | |||
IF ls_reported-PurchaseRequisition 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. | |||
APPEND VALUE #( %msg = new_message_with_text( | |||
severity = ls_reported-PurchaseRequisitionItem[ 1 ]-%msg->m_severity | |||
text = ls_reported-PurchaseRequisitionItem[ 1 ]-%msg->if_message~get_text( ) ) ) | |||
TO reported-prmonitor. | |||
ENDIF. | |||
IF ls_reported-purreqnitmaccountassignment IS NOT INITIAL. | |||
APPEND VALUE #( | |||
%msg = new_message_with_text( | |||
severity = ls_reported-purreqnitmaccountassignment[ 1 ]-%msg->m_severity | |||
text = ls_reported-purreqnitmaccountassignment[ 1 ]-%msg->if_message~get_text( ) ) ) | |||
TO reported-prmonitor. | |||
ENDIF. | |||
IF ls_reported-purreqnitmdeliveryaddress IS NOT INITIAL. | |||
APPEND VALUE #( | |||
%msg = new_message_with_text( | |||
severity = ls_reported-purreqnitmdeliveryaddress[ 1 ]-%msg->m_severity | |||
text = ls_reported-purreqnitmdeliveryaddress[ 1 ]-%msg->if_message~get_text( ) ) ) | |||
TO reported-prmonitor. | |||
ENDIF. | |||
APPEND VALUE #( PurchaseRequisition = keys[ 1 ]-PurchaseRequisition | |||
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem ) | |||
TO failed-prmonitor. | |||
ENDIF. | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Bestellanforderung lesen === | === Bestellanforderung mit Positionen lesen === | ||
<syntaxhighlight line copy> | <syntaxhighlight line copy> | ||
READ ENTITIES OF i_purchaserequisitiontp | |||
ENTITY purchaserequisitionitem | |||
FROM VALUE #( ( PurchaseRequisition = ls_opr-banfn | |||
PurchaseRequisitionItem = ls_opr-bnfpo ) ) | |||
RESULT DATA(lt_pr_items). | |||
</syntaxhighlight> | |||
< | === Bestellanforderungsposition ändern === | ||
<syntaxhighlight lang="abap" line copy> | |||
DATA lt_read_result TYPE TABLE FOR READ RESULT yc_prmonitor\\prmonitor. | |||
DATA ls_read_failed TYPE RESPONSE FOR FAILED EARLY yc_prmonitor. | |||
DATA ls_read_reported TYPE RESPONSE FOR REPORTED EARLY yc_prmonitor. | |||
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-prmonitor. | |||
RETURN. | |||
ENDIF. | |||
MODIFY ENTITIES OF i_purchaserequisitiontp | |||
ENTITY purchaserequisitionitem UPDATE FROM VALUE #( | |||
( PurchaseRequisition = keys[ 1 ]-PurchaseRequisition | |||
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem | |||
%data-RequestedQuantity = keys[ 1 ]-%param-RequestedQuantity | |||
%data-DeliveryDate = keys[ 1 ]-%param-DeliveryDate | |||
%data-Plant = keys[ 1 ]-%param-PLant | |||
%data-StorageLocation = keys[ 1 ]-%param-StorageLocation | |||
%data-PurchasingOrganization = keys[ 1 ]-%param-PurchasingOrganization | |||
%data-PurchasingGroup = keys[ 1 ]-%param-PurchasingGroup | |||
%control-RequestedQuantity = COND #( WHEN keys[ 1 ]-%param-RequestedQuantity <> lt_read_result[ 1 ]-RequestedQuantity | |||
THEN if_abap_behv=>mk-on ) | |||
%control-DeliveryDate = COND #( WHEN keys[ 1 ]-%param-DeliveryDate <> lt_read_result[ 1 ]-DeliveryDate | |||
THEN if_abap_behv=>mk-on ) | |||
%control-Plant = COND #( WHEN keys[ 1 ]-%param-Plant <> lt_read_result[ 1 ]-Plant | |||
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 ) | |||
%control-PurchasingOrganization = COND #( WHEN keys[ 1 ]-%param-PurchasingOrganization <> lt_read_result[ 1 ]-PurchasingOrganization | |||
THEN if_abap_behv=>mk-on ) | |||
%control-PurchasingGroup = COND #( WHEN keys[ 1 ]-%param-PurchasingGroup <> lt_read_result[ 1 ]-PurchasingGroup | |||
THEN if_abap_behv=>mk-on ) ) ) | |||
REPORTED DATA(ls_update_reported) | |||
FAILED DATA(ls_update_failed) | |||
" TODO: variable is assigned but never used (ABAP cleaner) | |||
MAPPED DATA(ls_update_mappend). | |||
IF ls_update_failed IS INITIAL. | |||
APPEND VALUE #( %msg = new_message( id = ycl_p2p_prmonitor_constants=>cv_message_class | |||
number = '046' | |||
severity = if_abap_behv_message=>severity-success ) ) | |||
TO reported-prmonitor. | |||
=== | APPEND VALUE #( %cid = keys[ 1 ]-%cid | ||
PurchaseRequisition = keys[ 1 ]-PurchaseRequisition | |||
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem ) TO mapped-prmonitor. | |||
RETURN. | |||
ELSE. | |||
IF ls_update_reported-PurchaseRequisitionItem IS NOT INITIAL. | |||
APPEND VALUE #( | |||
%msg = new_message_with_text( | |||
severity = ls_update_reported-PurchaseRequisitionItem[ 1 ]-%msg->m_severity | |||
text = ls_update_reported-PurchaseRequisitionItem[ 1 ]-%msg->if_message~get_text( ) ) ) | |||
TO reported-prmonitor. | |||
ENDIF. | |||
APPEND VALUE #( PurchaseRequisition = keys[ 1 ]-PurchaseRequisition | |||
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem ) | |||
TO failed-prmonitor. | |||
ENDIF. | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Bestellanforderungsposition als gelöscht markieren === | === Bestellanforderungsposition als gelöscht markieren === | ||
<syntaxhighlight line copy> | <syntaxhighlight lang="abap" line copy> | ||
DATA lt_delete TYPE TABLE FOR UPDATE I_PurchaseRequisitionTP\\PurchaseRequisitionItem. | DATA lt_delete TYPE TABLE FOR UPDATE I_PurchaseRequisitionTP\\PurchaseRequisitionItem. | ||
Zeile 70: | Zeile 323: | ||
=== Bestellanforderungsposition Löschkennzeichen zurücknehmen === | === Bestellanforderungsposition Löschkennzeichen zurücknehmen === | ||
<syntaxhighlight line copy> | <syntaxhighlight lang="abap" line copy> | ||
DATA lt_undo TYPE TABLE FOR UPDATE I_PurchaseRequisitionTP\\PurchaseRequisitionItem. | DATA lt_undo TYPE TABLE FOR UPDATE I_PurchaseRequisitionTP\\PurchaseRequisitionItem. | ||
Aktuelle Version vom 4. Juni 2025, 10:36 Uhr
Bestellanforderung mit Positionen anlegen
DATA lt_rap_pr_header TYPE TABLE FOR CREATE I_PurchaseRequisitionTP.
DATA lt_rap_pr_items_cba TYPE TABLE FOR CREATE i_purchaserequisitiontp\_purchaserequisitionitem.
DATA lt_rap_pr_acct_cba TYPE TABLE FOR CREATE i_purchasereqnitemtp\_purchasereqnacctassgmt.
DATA lt_rap_pr_addr_cba TYPE TABLE FOR CREATE i_purchasereqnitemtp\_purchasereqndelivaddress.
DATA ls_pr_line_rap TYPE R_PurchaseRequisitionItemTP.
DATA ls_pr_line_rap_create TYPE STRUCTURE FOR CREATE R_PurchaseRequisitionItemTP.
DATA ls_rap_pr_item_cba TYPE STRUCTURE FOR CREATE i_purchaserequisitiontp\_purchaserequisitionitem.
DATA ls_target_item_cba LIKE LINE OF ls_rap_pr_item_cba-%target.
DATA ls_pr_acct_rap_rview TYPE R_PurchaseReqnAcctAssgmtTP.
DATA ls_rap_pr_acct_cba TYPE STRUCTURE FOR CREATE i_purchasereqnitemtp\_purchasereqnacctassgmt.
DATA ls_pr_acct_rap_create TYPE STRUCTURE FOR CREATE R_PurchaseReqnAcctAssgmtTP.
DATA ls_rap_pr_addr_cba TYPE STRUCTURE FOR CREATE i_purchasereqnitemtp\_purchasereqndelivaddress.
DATA ls_pr_addr_rap TYPE I_PurchaseReqnDelivAddrTP.
DATA ls_target_acc_cba LIKE LINE OF ls_rap_pr_acct_cba-%target.
DATA lt_pr_data TYPE TABLE FOR READ RESULT yc_prmonitor\\prmonitor.
DATA ls_pr_failed TYPE RESPONSE FOR FAILED EARLY yc_prmonitor.
DATA ls_pr_reported TYPE RESPONSE FOR REPORTED EARLY yc_prmonitor.
DATA lv_cid_item_numbering TYPE abp_behv_cid.
read( EXPORTING keys = CORRESPONDING #( keys )
CHANGING result = lt_pr_data
failed = ls_pr_failed
reported = ls_pr_reported ).
IF lt_pr_data IS INITIAL OR ls_pr_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-prmonitor.
RETURN.
ENDIF.
LOOP AT keys ASSIGNING FIELD-SYMBOL(<ls_keys>).
DATA(lv_pr) = <ls_keys>-%key-PurchaseRequisition.
DATA(lv_pr_item) = <ls_keys>-%key-PurchaseRequisitionItem.
DATA(lv_pr_type) = lt_pr_data[
%key-PurchaseRequisition = <ls_keys>-%key-PurchaseRequisition ]-PurchaseRequisitionType.
IF <ls_keys>-%cid IS NOT INITIAL AND lines( keys ) = 1.
DATA(lv_cid) = <ls_keys>-%cid.
ELSE.
lv_cid = 'My%CID_1'.
ENDIF.
lt_rap_pr_header = VALUE #( ( %cid = lv_cid "'My%CID_1'
%data-PurchaseRequisitionType = lv_pr_type " lt_pr_data[ 1 ]-%data-PurchaseRequisitionType
"%control-PurchaseRequisitionType = if_abap_behv=>mk-on
%data-PurReqnDescription = <ls_keys>-%param-PurchaseRequisitionDesc ) ).
LOOP AT lt_pr_data INTO DATA(ls_pr_data) WHERE %key-PurchaseRequisition = lv_pr
AND %key-PurchaseRequisitionItem = lv_pr_item.
CLEAR : ls_pr_line_rap_create,
ls_rap_pr_acct_cba,
ls_rap_pr_addr_cba,
ls_target_acc_cba,
ls_target_item_cba,
ls_rap_pr_item_cba-%target.
lv_cid_item_numbering += 1.
ls_pr_line_rap = CORRESPONDING #( ls_pr_data ).
ls_pr_line_rap_create = CORRESPONDING #( ls_pr_line_rap CHANGING CONTROL " %Control fields are also filled if non-initial
EXCEPT PurReqnReleaseStatus CreatedByUser ItemDeliveryAddressID
LastChangeDateTime PurchaseReqnItemUniqueID ). " Display only fields removed
ls_target_item_cba = CORRESPONDING #( ls_pr_line_rap_create ).
ls_target_item_cba-%cid = |My%ItemCID_{ lv_cid_item_numbering }|. "'My%ItemCID_1'. " ls_target_item_cba-purchaserequisitionitem.
ls_target_item_cba-%data-RequestedQuantity = <ls_keys>-%param-RequestedQuantity.
ls_target_item_cba-%data-OrderedQuantity = 0.
ls_target_item_cba-%data-IsDeleted = abap_false.
ls_target_item_cba-%data-ProcessingStatus = 'N'.
ls_target_item_cba-%data-PurReqnReleaseStatus = '02'.
CLEAR: ls_target_item_cba-%data-PurchasingDocument,
ls_target_item_cba-%data-PurchasingDocumentItem.
ls_rap_pr_item_cba-%cid_ref = lv_cid. "'My%CID_1'. " Give same CID of PR header
APPEND ls_target_item_cba TO ls_rap_pr_item_cba-%target.
" Fill in Accounting
SELECT FROM I_PurchaseReqnAcctAssgmtTP
FIELDS *
WHERE PurchaseRequisition = @lv_pr
AND PurchaseRequisitionItem = @lv_pr_item
INTO TABLE @DATA(lt_pr_item_acctassgmt).
LOOP AT lt_pr_item_acctassgmt INTO DATA(ls_pr_accounting).
ls_pr_acct_rap_rview = CORRESPONDING #( ls_pr_accounting ).
ls_pr_acct_rap_create = CORRESPONDING #( ls_pr_acct_rap_rview CHANGING CONTROL ).
ls_pr_acct_rap_create-%control-PurchaseReqnAcctAssgmtNumber = if_abap_behv=>mk-off.
ls_target_acc_cba = CORRESPONDING #( ls_pr_acct_rap_create ).
CONCATENATE 'Accnt' 'My%ItemCID_' lv_cid_item_numbering ls_pr_acct_rap_create-PurchaseReqnAcctAssgmtNumber
INTO ls_target_acc_cba-%cid.
APPEND ls_target_acc_cba TO ls_rap_pr_acct_cba-%target.
ls_rap_pr_acct_cba-%cid_ref = |My%ItemCID_{ lv_cid_item_numbering }|. "'My%ItemCID_1'.
ENDLOOP.
IF ls_rap_pr_acct_cba IS NOT INITIAL.
APPEND ls_rap_pr_acct_cba TO lt_rap_pr_acct_cba.
ENDIF.
" Fill in Address
SELECT SINGLE FROM I_PurchaseReqnDelivAddrTP
FIELDS *
WHERE PurchaseRequisition = @lv_pr
AND PurchaseRequisitionItem = @lv_pr_item
INTO @DATA(ls_pr_item_addr).
IF ls_pr_item_addr IS NOT INITIAL.
" ls_rap_pr_addr_cba-%cid_ref = 'My%ItemCID_1'.
ls_rap_pr_addr_cba-%cid_ref = |My%ItemCID_{ lv_cid_item_numbering }|. "'My%ItemCID_1'. " ls_pr_line_rap_create-%cid.
APPEND INITIAL LINE TO ls_rap_pr_addr_cba-%target ASSIGNING FIELD-SYMBOL(<fs_rap_pr_addr_cba>).
ls_pr_addr_rap-AddressID = ls_pr_item_addr-AddressID.
ls_pr_addr_rap-BusinessPartnerName1 = ls_pr_item_addr-BusinessPartnerName1.
ls_pr_addr_rap-BusinessPartnerName2 = ls_pr_item_addr-BusinessPartnerName2.
ls_pr_addr_rap-Country = ls_pr_item_addr-Country.
<fs_rap_pr_addr_cba> = CORRESPONDING #( ls_pr_addr_rap CHANGING CONTROL
EXCEPT AddressID PurchasingDeliveryAddressType ManualDeliveryAddressID FullName LastChangeDateTime ).
CONCATENATE 'Deliv' 'My%ItemCID_' lv_cid_item_numbering INTO <fs_rap_pr_addr_cba>-%cid.
APPEND ls_rap_pr_addr_cba TO lt_rap_pr_addr_cba.
ENDIF.
ENDLOOP.
IF ls_rap_pr_item_cba IS NOT INITIAL.
APPEND ls_rap_pr_item_cba TO lt_rap_pr_items_cba.
ENDIF.
ENDLOOP.
MODIFY ENTITIES OF i_purchaserequisitiontp
ENTITY purchaserequisition CREATE FROM lt_rap_pr_header
CREATE BY \_purchaserequisitionitem FROM lt_rap_pr_items_cba
ENTITY purchaserequisitionitem
CREATE BY \_purchasereqnacctassgmt FROM lt_rap_pr_acct_cba
ENTITY purchaserequisitionitem
CREATE BY \_purchasereqndelivaddress FROM lt_rap_pr_addr_cba
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 = '040'
severity = if_abap_behv_message=>severity-success
v1 = '' ) )
TO reported-prmonitor.
ELSE.
IF ls_reported-PurchaseRequisition 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.
APPEND VALUE #( %msg = new_message_with_text(
severity = ls_reported-PurchaseRequisitionItem[ 1 ]-%msg->m_severity
text = ls_reported-PurchaseRequisitionItem[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-prmonitor.
ENDIF.
IF ls_reported-purreqnitmaccountassignment IS NOT INITIAL.
APPEND VALUE #(
%msg = new_message_with_text(
severity = ls_reported-purreqnitmaccountassignment[ 1 ]-%msg->m_severity
text = ls_reported-purreqnitmaccountassignment[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-prmonitor.
ENDIF.
IF ls_reported-purreqnitmdeliveryaddress IS NOT INITIAL.
APPEND VALUE #(
%msg = new_message_with_text(
severity = ls_reported-purreqnitmdeliveryaddress[ 1 ]-%msg->m_severity
text = ls_reported-purreqnitmdeliveryaddress[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-prmonitor.
ENDIF.
APPEND VALUE #( PurchaseRequisition = keys[ 1 ]-PurchaseRequisition
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem )
TO failed-prmonitor.
ENDIF.
Bestellanforderung mit Positionen lesen
READ ENTITIES OF i_purchaserequisitiontp
ENTITY purchaserequisitionitem
FROM VALUE #( ( PurchaseRequisition = ls_opr-banfn
PurchaseRequisitionItem = ls_opr-bnfpo ) )
RESULT DATA(lt_pr_items).
Bestellanforderungsposition ändern
DATA lt_read_result TYPE TABLE FOR READ RESULT yc_prmonitor\\prmonitor.
DATA ls_read_failed TYPE RESPONSE FOR FAILED EARLY yc_prmonitor.
DATA ls_read_reported TYPE RESPONSE FOR REPORTED EARLY yc_prmonitor.
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-prmonitor.
RETURN.
ENDIF.
MODIFY ENTITIES OF i_purchaserequisitiontp
ENTITY purchaserequisitionitem UPDATE FROM VALUE #(
( PurchaseRequisition = keys[ 1 ]-PurchaseRequisition
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem
%data-RequestedQuantity = keys[ 1 ]-%param-RequestedQuantity
%data-DeliveryDate = keys[ 1 ]-%param-DeliveryDate
%data-Plant = keys[ 1 ]-%param-PLant
%data-StorageLocation = keys[ 1 ]-%param-StorageLocation
%data-PurchasingOrganization = keys[ 1 ]-%param-PurchasingOrganization
%data-PurchasingGroup = keys[ 1 ]-%param-PurchasingGroup
%control-RequestedQuantity = COND #( WHEN keys[ 1 ]-%param-RequestedQuantity <> lt_read_result[ 1 ]-RequestedQuantity
THEN if_abap_behv=>mk-on )
%control-DeliveryDate = COND #( WHEN keys[ 1 ]-%param-DeliveryDate <> lt_read_result[ 1 ]-DeliveryDate
THEN if_abap_behv=>mk-on )
%control-Plant = COND #( WHEN keys[ 1 ]-%param-Plant <> lt_read_result[ 1 ]-Plant
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 )
%control-PurchasingOrganization = COND #( WHEN keys[ 1 ]-%param-PurchasingOrganization <> lt_read_result[ 1 ]-PurchasingOrganization
THEN if_abap_behv=>mk-on )
%control-PurchasingGroup = COND #( WHEN keys[ 1 ]-%param-PurchasingGroup <> lt_read_result[ 1 ]-PurchasingGroup
THEN if_abap_behv=>mk-on ) ) )
REPORTED DATA(ls_update_reported)
FAILED DATA(ls_update_failed)
" TODO: variable is assigned but never used (ABAP cleaner)
MAPPED DATA(ls_update_mappend).
IF ls_update_failed IS INITIAL.
APPEND VALUE #( %msg = new_message( id = ycl_p2p_prmonitor_constants=>cv_message_class
number = '046'
severity = if_abap_behv_message=>severity-success ) )
TO reported-prmonitor.
APPEND VALUE #( %cid = keys[ 1 ]-%cid
PurchaseRequisition = keys[ 1 ]-PurchaseRequisition
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem ) TO mapped-prmonitor.
RETURN.
ELSE.
IF ls_update_reported-PurchaseRequisitionItem IS NOT INITIAL.
APPEND VALUE #(
%msg = new_message_with_text(
severity = ls_update_reported-PurchaseRequisitionItem[ 1 ]-%msg->m_severity
text = ls_update_reported-PurchaseRequisitionItem[ 1 ]-%msg->if_message~get_text( ) ) )
TO reported-prmonitor.
ENDIF.
APPEND VALUE #( PurchaseRequisition = keys[ 1 ]-PurchaseRequisition
PurchaseRequisitionItem = keys[ 1 ]-PurchaseRequisitionItem )
TO failed-prmonitor.
ENDIF.
Bestellanforderungsposition 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.
Bestellanforderungsposition Löschkennzeichen zurücknehmen
DATA lt_undo TYPE TABLE FOR UPDATE I_PurchaseRequisitionTP\\PurchaseRequisitionItem.
lt_undo = CORRESPONDING #( keys ).
LOOP AT lt_undo ASSIGNING FIELD-SYMBOL(<ls_undo>).
<ls_undo>-IsDeleted = abap_false.
<ls_undo>-%data-IsDeleted = abap_false.
<ls_undo>-%control-IsDeleted = if_abap_behv=>mk-on.
ENDLOOP.
MODIFY ENTITIES OF i_purchaserequisitiontp
ENTITY PurchaseRequisitionItem UPDATE FROM lt_undo
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 = '044'
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.
" TODO: variable is assigned but never used (ABAP cleaner)
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.