Mass Update Personal Numbers of Customer KNVP – Full ABAP Code

SAP MASS

Mass Update Personal Numbers of Customer KNVP: This sample ABAP Code covers mass updating Personal Numbers for Customers.

Mass Update Personal Numbers of Customer KNVP

You can change this program to update ( remplace PERNR by ):Customer number of business partner ( KUNN2 )

  • Account Number of Vendor or Creditor ( LIFNR )
  • Personnel Number ( PERNR )
  • Number of contact person ( PARNR )
  DATA: lt_knvp_old TYPE TABLE OF knvp.
  DATA: lt_knvp_new TYPE TABLE OF knvp.
  DATA: lv_index    TYPE          sy-tabix.
  DATA: ls_knvv     LIKE LINE OF  lt_knvv.
  DATA: ls_knvp_old LIKE LINE OF  lt_knvp.
  DATA: ls_knvp_new LIKE LINE OF  lt_knvp.
  DATA: lv_parza    TYPE          parza.

  FIELD-SYMBOLS: <fs_knvp_new> LIKE  LINE OF lt_knvp_new.
  FIELD-SYMBOLS: <fs_knvp_old> LIKE  LINE OF lt_knvp_old.
  FIELD-SYMBOLS: <fs_team>   LIKE  LIKE OF pt_teams.

" lt_teams contains the list of 
" Customer / Comm. Org / Personal Numbers / Role to be uploaded

  " Retrive list of existing function partners
  SELECT * FROM knvp INTO TABLE lt_knvp_old
    FOR ALL ENTRIES IN pt_teams
    WHERE kunnr = pt_teams-kunnr
    AND   pernr IS NOT NULL.
  IF sy-subrc = 0 .
    SORT lt_knvp_old BY kunnr vkorg vtweg spart parvw ." parza.
  ENDIF.

  LOOP AT pt_teams ASSIGNING <fs_team>.

    CLEAR lv_parza.

    APPEND INITIAL LINE TO lt_knvp_new ASSIGNING <fs_knvp_new>.

    <fs_knvp_new>-kunnr = <fs_team>-kunnr.
    <fs_knvp_new>-vkorg = <fs_team>-vkorg.
    <fs_knvp_new>-vtweg = <fs_team>-vtweg.
    <fs_knvp_new>-spart = <fs_team>-spart.
    <fs_knvp_new>-parvw = <fs_team>-parvw.
    <fs_knvp_new>-pernr = <fs_team>-pernr.

    CLEAR <fs_knvp_new>-parza.

    " Get number PARZA
    READ TABLE lt_knvp_old INTO ls_knvp_old
    WITH KEY  kunnr = <fs_knvp_new>-kunnr
              vkorg = <fs_knvp_new>-vkorg
              vtweg = <fs_knvp_new>-vtweg
              spart = <fs_knvp_new>-spart
              parvw = <fs_knvp_new>-parvw BINARY SEARCH.
    IF sy-subrc = 0 .
      lv_index = sy-tabix.
    ELSE.
      CONTINUE.
    ENDIF.

    LOOP AT lt_knvp_old ASSIGNING <fs_knvp_old> FROM lv_index.
      IF NOT ( <fs_knvp_old>-kunnr = <fs_knvp_new>-kunnr
         AND  <fs_knvp_old>-vkorg = <fs_knvp_new>-vkorg
         AND  <fs_knvp_old>-vtweg = <fs_knvp_new>-vtweg
         AND  <fs_knvp_old>-spart = <fs_knvp_new>-spart
         AND  <fs_knvp_old>-parvw = <fs_knvp_new>-parvw ) .
        EXIT.
      ENDIF.
      ADD 1 TO lv_parza.
    ENDLOOP.

    <fs_knvp_new>-parza = lv_parza.


  ENDLOOP.
  
  "Mass Update Personal Numbers of Customer KNVP
  IF lt_knvp_new[] IS NOT INITIAL .
    MODIFY knvp FROM TABLE lt_knvp_new[].
    IF sy-subrc = 0 .
      COMMIT WORK AND WAIT .
    ENDIF.
  ENDIF.

Check also?The 3 ways to Mass Update Contacts of Customer in SAP

Caution: This method updates directly SAP Table which is not recommended by SAP best practise.?