BAdi /SAPAPO/SDP_DISTR

Hello,
Did anybody used the BAdi /SAPAPO/SDP_DISTR?  Can this be used for defining custom fair share rules in Deployment.
Please let me know if anybody has used this before and has some insights into this.
Thanks

Hi
I have used BADI /SAPAPO/FS_USER insted of the /SAPAPO/SDP_DISTR for user defined fairshare distribution.
Regards,
Raghu.

Similar Messages

  • BADI /SAPAPO/AM_ALERTLIST - How to fill values in new field catalogue

    Hi,
    I need some help for passing values into the field Catalog of an ALERT Monitor.
    The requirement is to add new fields in the ALERT Monitor and then populate them with values form the PRODUCT view.
    I have implemented method MODIFY_ALERTLIST of BADI /SAPAPO/AM_ALERTLIST. I am able to add the new columns but I am unable to add the values. Actually while debugging i found that even though the NEW values are going into the table T_ALERTS, but the space between the New Added values and the original value is HUGE. Therefore when the Field Catalog is displayed in the Alert Monitor, the NEW Values are not shown.
    I am attaching my Code
      DATA: l_table_ref TYPE REF TO data,
      l_table_ref_1 TYPE REF TO data,
      l_fieldcat_str TYPE /sapapo/am_aot_fieldcat_str,
      ls_fieldcat TYPE LINE OF lvc_t_fcat,
      ls_t_fieldcat LIKE LINE OF t_fieldcat,
      l_alert_str TYPE LINE OF /sapapo/alert_tab,
      l_str_ref TYPE REF TO data,
      l_str_ref_1 TYPE REF TO data.
      FIELD-SYMBOLS: <aot_tab> TYPE STANDARD TABLE,
      <aot_tab_1> TYPE STANDARD TABLE,
      <alert_str> TYPE /sapapo/alert_str,
      <aot_str> TYPE ANY,
      <alert_str1> TYPE c,
      <alert_str_uc> TYPE c.
      FIELD-SYMBOLS: <zat103> TYPE c. "ANY.
      DATA : l_col_pos TYPE i,
      gv_entries TYPE i,
      xlength TYPE i.
      FIELD-SYMBOLS : <info> TYPE ANY,
                      <aot_str1> TYPE ANY.
      DATA olen1 TYPE i.
      DATA: t_pegid TYPE STANDARD TABLE OF /sapapo/amopegid_tab,
            t_ordid TYPE STANDARD TABLE OF /sapapo/amoordid_tab.
      CLEAR: l_alert_str,
        l_table_ref ,
        l_table_ref_1 ,
        l_fieldcat_str ,
        ls_fieldcat ,
        ls_t_fieldcat ,
        l_str_ref  .
    *Add new column
      READ TABLE t_fieldcat INTO ls_t_fieldcat INDEX 1.
      DATA: x1 TYPE lvc_t_fcat,
           y1 LIKE LINE OF x1.
      x1 = ls_t_fieldcat-fieldcat.
      LOOP AT x1 INTO y1 WHERE reptext NE space.
        CHECK y1-fieldname NE 'DELIVERY_DATE'.
        xlength = xlength + y1-intlen.
      ENDLOOP.
      DESCRIBE TABLE  x1 LINES gv_entries.
    Appending Delivery Date
      ls_fieldcat-col_pos = gv_entries + 1.
      ls_fieldcat-fieldname = 'DELIVERY_DATE'.
      ls_fieldcat-ifieldname = 'DELIVERY_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Delivery Date'.
      ls_fieldcat-outputlen = '10'.
    ls_fieldcat-rollname = '/SAPAPO/DELIVERY_DATE' . "'DATS'.
      ls_fieldcat-domname = '/SAPAPO/CHAR20'."'/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Delivery Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Start Date
      ls_fieldcat-col_pos = gv_entries + 2.
      ls_fieldcat-fieldname = 'STARTDAT'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Start Date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Start Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Required Shelf Life Date
      ls_fieldcat-col_pos = gv_entries + 3.
      ls_fieldcat-fieldname = 'SL_MIN_DAT'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Req.SL dte'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Req.SL dte'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Shelf Life Date/Required Maximum Shelf life Date
      ls_fieldcat-col_pos = gv_entries + 4.
      ls_fieldcat-fieldname = 'SL_MAX_DAT'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'SL Date 2'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'SL Date 2'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending (Availability/Requirements) Date of a Schedule Line
      ls_fieldcat-col_pos = gv_entries + 5.
      ls_fieldcat-fieldname = 'AVL_REQ_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Schedule Date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Schedule Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Req Date/ Shipment end date
      ls_fieldcat-col_pos = gv_entries + 6.
      ls_fieldcat-fieldname = 'SHIP_MAX_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Req Date/ Shipment end date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Req Date/ Shipment end date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Expected Grading Date
      ls_fieldcat-col_pos = gv_entries + 7.
      ls_fieldcat-fieldname = 'GRAD_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Expected Grading Date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Expected Grading Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Available Date
      ls_fieldcat-col_pos = gv_entries + 8.
      ls_fieldcat-fieldname = 'AVAIL_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Available Date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Available Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
      MODIFY TABLE t_fieldcat FROM ls_t_fieldcat.
      DATA lvc_t_fcat TYPE lvc_t_fcat.
    *CODE FOR ADDING THE NEW VALUES*
    ASSIGN Alert Structure to Field Symbols for Unicode
      ASSIGN COMPONENT 0 OF STRUCTURE l_alert_str
                         TO            <alert_str>           CASTING.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = ls_t_fieldcat-fieldcat
        IMPORTING
          ep_table        = l_table_ref.
    *assign dynamic structure
      ASSIGN l_table_ref->* TO <aot_tab>.
      CREATE DATA l_str_ref LIKE LINE OF <aot_tab>.
      ASSIGN l_str_ref->* TO <aot_str>.
      ASSIGN l_str_ref->* TO <alert_str_uc> CASTING.
      LOOP AT t_alerts INTO l_alert_str.
       READ TABLE t_fieldcat WITH KEY aot = l_alert_str-aot
       INTO l_fieldcat_str.
       CALL FUNCTION '/SAPAPO/ATAB_FIELDCAT_GET'
         EXPORTING
           aot        = l_fieldcat_str-aot
           mview      = l_fieldcat_str-mview
         IMPORTING
           table_ref  = l_table_ref
           t_fieldcat = lvc_t_fcat.
        ASSIGN l_alert_str TO <alert_str>.
    *copy alert to aot-specific structure
        MOVE <alert_str>-info TO <alert_str_uc>.
    *Write this code inside the loop
        ASSIGN COMPONENT 'DELIVERY_DATE' OF STRUCTURE <aot_str> TO <zat103>.  "CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'STARTDAT' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'SL_MIN_DAT' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'SL_MAX_DAT' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'AVL_REQ_DATE' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'SHIP_MAX_DATE' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'GRAD_DATE' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'AVAIL_DATE' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        MOVE <alert_str_uc> TO <alert_str>-info.
        MODIFY t_alerts FROM l_alert_str INDEX sy-tabix.
        CLEAR : <alert_str>, <alert_str_uc>.
      ENDLOOP.
    I have even tried Concatenating Values,  with that method even though the NEW Values are available but they do not fall under the correct Column.
    PLEASE help me out cos I am really Stuck.
    Regards
    Abhishek Sahi

    Hi,
    I need some help for passing values into the field Catalog of an ALERT Monitor.
    The requirement is to add new fields in the ALERT Monitor and then populate them with values form the PRODUCT view.
    I have implemented method MODIFY_ALERTLIST of BADI /SAPAPO/AM_ALERTLIST. I am able to add the new columns but I am unable to add the values. Actually while debugging i found that even though the NEW values are going into the table T_ALERTS, but the space between the New Added values and the original value is HUGE. Therefore when the Field Catalog is displayed in the Alert Monitor, the NEW Values are not shown.
    I am attaching my Code
      DATA: l_table_ref TYPE REF TO data,
      l_table_ref_1 TYPE REF TO data,
      l_fieldcat_str TYPE /sapapo/am_aot_fieldcat_str,
      ls_fieldcat TYPE LINE OF lvc_t_fcat,
      ls_t_fieldcat LIKE LINE OF t_fieldcat,
      l_alert_str TYPE LINE OF /sapapo/alert_tab,
      l_str_ref TYPE REF TO data,
      l_str_ref_1 TYPE REF TO data.
      FIELD-SYMBOLS: <aot_tab> TYPE STANDARD TABLE,
      <aot_tab_1> TYPE STANDARD TABLE,
      <alert_str> TYPE /sapapo/alert_str,
      <aot_str> TYPE ANY,
      <alert_str1> TYPE c,
      <alert_str_uc> TYPE c.
      FIELD-SYMBOLS: <zat103> TYPE c. "ANY.
      DATA : l_col_pos TYPE i,
      gv_entries TYPE i,
      xlength TYPE i.
      FIELD-SYMBOLS : <info> TYPE ANY,
                      <aot_str1> TYPE ANY.
      DATA olen1 TYPE i.
      DATA: t_pegid TYPE STANDARD TABLE OF /sapapo/amopegid_tab,
            t_ordid TYPE STANDARD TABLE OF /sapapo/amoordid_tab.
      CLEAR: l_alert_str,
        l_table_ref ,
        l_table_ref_1 ,
        l_fieldcat_str ,
        ls_fieldcat ,
        ls_t_fieldcat ,
        l_str_ref  .
    *Add new column
      READ TABLE t_fieldcat INTO ls_t_fieldcat INDEX 1.
      DATA: x1 TYPE lvc_t_fcat,
           y1 LIKE LINE OF x1.
      x1 = ls_t_fieldcat-fieldcat.
      LOOP AT x1 INTO y1 WHERE reptext NE space.
        CHECK y1-fieldname NE 'DELIVERY_DATE'.
        xlength = xlength + y1-intlen.
      ENDLOOP.
      DESCRIBE TABLE  x1 LINES gv_entries.
    Appending Delivery Date
      ls_fieldcat-col_pos = gv_entries + 1.
      ls_fieldcat-fieldname = 'DELIVERY_DATE'.
      ls_fieldcat-ifieldname = 'DELIVERY_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Delivery Date'.
      ls_fieldcat-outputlen = '10'.
    ls_fieldcat-rollname = '/SAPAPO/DELIVERY_DATE' . "'DATS'.
      ls_fieldcat-domname = '/SAPAPO/CHAR20'."'/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Delivery Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Start Date
      ls_fieldcat-col_pos = gv_entries + 2.
      ls_fieldcat-fieldname = 'STARTDAT'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Start Date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Start Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Required Shelf Life Date
      ls_fieldcat-col_pos = gv_entries + 3.
      ls_fieldcat-fieldname = 'SL_MIN_DAT'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Req.SL dte'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Req.SL dte'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Shelf Life Date/Required Maximum Shelf life Date
      ls_fieldcat-col_pos = gv_entries + 4.
      ls_fieldcat-fieldname = 'SL_MAX_DAT'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'SL Date 2'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'SL Date 2'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending (Availability/Requirements) Date of a Schedule Line
      ls_fieldcat-col_pos = gv_entries + 5.
      ls_fieldcat-fieldname = 'AVL_REQ_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Schedule Date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Schedule Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Req Date/ Shipment end date
      ls_fieldcat-col_pos = gv_entries + 6.
      ls_fieldcat-fieldname = 'SHIP_MAX_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Req Date/ Shipment end date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Req Date/ Shipment end date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Expected Grading Date
      ls_fieldcat-col_pos = gv_entries + 7.
      ls_fieldcat-fieldname = 'GRAD_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Expected Grading Date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Expected Grading Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
    Appending Available Date
      ls_fieldcat-col_pos = gv_entries + 8.
      ls_fieldcat-fieldname = 'AVAIL_DATE'.
      ls_fieldcat-tabname = '1'.
      ls_fieldcat-seltext = 'Available Date'.
      ls_fieldcat-outputlen = '10'.
      ls_fieldcat-rollname = 'DATS'.
      ls_fieldcat-domname = '/SAPAPO/DATUM'.
      ls_fieldcat-coltext = 'Available Date'.
      APPEND ls_fieldcat TO ls_t_fieldcat-fieldcat.
      MODIFY TABLE t_fieldcat FROM ls_t_fieldcat.
      DATA lvc_t_fcat TYPE lvc_t_fcat.
    *CODE FOR ADDING THE NEW VALUES*
    ASSIGN Alert Structure to Field Symbols for Unicode
      ASSIGN COMPONENT 0 OF STRUCTURE l_alert_str
                         TO            <alert_str>           CASTING.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = ls_t_fieldcat-fieldcat
        IMPORTING
          ep_table        = l_table_ref.
    *assign dynamic structure
      ASSIGN l_table_ref->* TO <aot_tab>.
      CREATE DATA l_str_ref LIKE LINE OF <aot_tab>.
      ASSIGN l_str_ref->* TO <aot_str>.
      ASSIGN l_str_ref->* TO <alert_str_uc> CASTING.
      LOOP AT t_alerts INTO l_alert_str.
       READ TABLE t_fieldcat WITH KEY aot = l_alert_str-aot
       INTO l_fieldcat_str.
       CALL FUNCTION '/SAPAPO/ATAB_FIELDCAT_GET'
         EXPORTING
           aot        = l_fieldcat_str-aot
           mview      = l_fieldcat_str-mview
         IMPORTING
           table_ref  = l_table_ref
           t_fieldcat = lvc_t_fcat.
        ASSIGN l_alert_str TO <alert_str>.
    *copy alert to aot-specific structure
        MOVE <alert_str>-info TO <alert_str_uc>.
    *Write this code inside the loop
        ASSIGN COMPONENT 'DELIVERY_DATE' OF STRUCTURE <aot_str> TO <zat103>.  "CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'STARTDAT' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'SL_MIN_DAT' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'SL_MAX_DAT' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'AVL_REQ_DATE' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'SHIP_MAX_DATE' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'GRAD_DATE' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        ASSIGN COMPONENT 'AVAIL_DATE' OF STRUCTURE <aot_str> TO <zat103> CASTING.
        IF sy-subrc = 0.
          CLEAR <zat103>.
    *Fetch ur own custom value and move to the field symbol. This
    *dynamically populates ur structure.
          <zat103> = '22.11.1999'.
        ENDIF.
        MOVE <alert_str_uc> TO <alert_str>-info.
        MODIFY t_alerts FROM l_alert_str INDEX sy-tabix.
        CLEAR : <alert_str>, <alert_str_uc>.
      ENDLOOP.
    I have even tried Concatenating Values,  with that method even though the NEW Values are available but they do not fall under the correct Column.
    PLEASE help me out cos I am really Stuck.
    Regards
    Abhishek Sahi

  • Use of BADI /SAPAPO/SDP_RELDATA METHOD CHANGE_PROD_LOC

    We have a requirement for a small number of product/locations to re-direct them onto a customer location when releasing the forecasts to SNP.
    We have been pointed in the direction of the BADI /SAPAPO/SDP_RELDATA method CHANGE_PROD_LOC.
    Unfortunately we can not find any documentation on the use of this BADI/Method, we've tried to change the location using the parameter CT_MATID_LOCID, also setting the parameter CV_CHANGE_PROD_LOC where a change has been made, but it doesn't seem to work.
    Has anyone used this BADI/Method and has advice on it's usage?
    Regards, Mark

    Hi Mark - Changing the CT_MATID_LOCID table alone will not associate the change with a plobj or CV. I am surprised you do not get an error. You will also need to update the CT_MATLOC_PLOBJ table - find the entry for the old matid/locid then update that with the new matid/locid. Also the CT_PLOBJ_CHAR table needs to be updated as well - find the same plobj and update matid/locid accordingly.
    Regards
    Andy

  • BAdI /SAPAPO/DM_PO_MNTN - CT_ORDKEY is not populated with the order data for PO Memo

    Dear All,
    I have done enhancement in the ERP system by adding the customer specific field ZZ_RESWK in structure CIFPUORCUS. This field is filled in the ERP user exit EXIT_SAPLMEAP_001, for the Purchase order (category BF & BG) and PO Memo (Category AH).
    Now, in APO I have implemented the BAdI /sapapo/dm_po_mntn, and in the method "Change" I am passing the field zz_reswk to ct_ordkey table field reswk, so to write the field in livecache.
    This set up is working for order category BF and BG. However, when I am transferring the PO memo (Category AH) from ERP to APO, the the BAdI internal table ct_ordkey is having no records. Hence I am not able to write field reswk for the PO memo in the live cache.
    Any one have any idea, why there is not data in ct_ordkey for PO memo ?
    Note: The data transfer from ERP to APO is using IDOC.
    Please Help.
    Regards,
    SC

    Hi,
    If you don't do what I told you, I can not do anything more....
    Your code should look like this:
    loop at it_item into ls_item.
    ls_cust-refobject = 'POITEM'.
    ls_cust-fieldname = 'CATALOGID'.
    ls_cust-REFFIELD1 = 'PO_ITEM'. <b>and not 'POITEM'</b>
    ls_cust-REFVAL1 = ls_item-number_int. <b>and not a fixed value</b>
    ls_cust-container = ls_item-catalogid.
    append ls_cust to ct_bapi_customer_fields.
    endloop.
    For R/3 mapping table BBP_CUFMAP:
    DOC_TYPE = PO
    KEY_TYPE = Z
    CUF_FIELD = CATALOGID
    R3_FIELD = ZSRMCATALOGID
    Rgds
    Christophe

  • Reading data from Table type from Badi /sapapo/curto_create

    Hi,
    I have been trying to read data from badi /sapapo/curto_create . In this badi there is method CS_PPDS_RTO.
    which has nested structure upto 8 level. I have been trying to read data but i am not suceesfull in reading data from the stsructre
    which is present at lowest level.
    The  nested structure of the BEFORE_SAVE is following way.
    BEFORE_SAVE-CS_PPDS_RTO-HIRARCHY-ADD_APPLICTN_DATA-MODES-BODY-CAP_REQS-RESUID.
    I have to read the value of reusid bt i am not sure whow to read this value can you please help me by giving some Bapi or method
    to read the value of Reusid .
    Thanks

    Hi!
    DATA: lv_resuid TYPE resuid.
    LOOP AT CS_PPDS_RTO-HIRARCHY-ADD_APPLICTN_DATA-MODES-BODY-CAP_REQS-RESUID
    INTO lv_resuid.
    ENDLOOP. 

  • SDP94 Hide Buttons with Badi /SAPAPO/SDP_INTERACTmethod FCODES_EXCLUDE

    Hello,
    The Promotion Planning in transaction SDP94 contains buttons for removing objects from the Promotion (fcode PM_CUT and fcode PM_CUT_ALL).
    Problem: The user should not be allowed to add or remove objects (materials) to the promotion.
    It works to remove the buttons for assigning objects (PROM_OBJT or PROM_MOBJT) but it ist not possible to remove the buttons for removing the objects (fcode PM_CUT or PM_CUT_ALL).
    I tried it with BadI /SAPAPO/SDP_INTERACTmethod FCODES_EXCLUDE
    can anyone help me? Thanks
    bernhard

    hello,
    thanks for your answer,
    with the authorization object C_APO_PROM i can only prevent a user completely from changing a promotion. But the goal is that the user can plan data in the promotion, but he should not be allowed to add or remove objects (materials).
    Therefore the only thing i want to do is setting some buttons inactive.
    it is possible to set the buttons for adding objects inactive, but ist ist not possible to set the buttons for removing (PM_CUT) inactive.
    any ideas?

  • APO DP - use of BADI /sapapo/sdp_fcst4

    I am wanting to use BADI /sapapo/sdp_fcst4 to store forecast errors in mass processing.
    My question is:
    How do I see/use these stored forecast errors when I am working in interactive DP.
    Thanks,
    Bob Austin, Atos Origin

    Dear Bob
    I suggest you to check this document: to extract the forecasting results from SAP APO
    I also suggest you to look at this [thread: APO DP - BADI for storing forecast error in mass processing.|;
    Best regards,
    Carlos Eduardo Rodríguez

  • Badi /SAPAPO/SDP_SELECTOR.

    Hi Techies ,
    I need to add some extra selection fields in the selection window using this badi /SAPAPO/SDP_SELECTOR,and the method used for the selection is F4 .
    Now kindly let me know how to implement this standard badi so that i can do my custom changes to the method .
    In addition to the standard fields available in selection profile, we add these fields for selection in the planning book.
    Implement the definition /SAPAPO/SDP_SELECTOR. Method F4 is triggered when the user clicks on the value help for the additional fields. Method INIT_OBJECT_LIST is triggered when the planning book is loaded using the transaction /SAPAPO/SDP94. Method LOC_PROD_VALUE_LIST is triggered when the user enters the selection criteria in the selection profile and hits ENTER.
    Now let me know how to proceed with this modification using this BADI , swift responses would be really appreciated !!
    Thanks,
    PKP.

    Hi PKP,
    Its not very clear what issue you are facing.
    You need to use the method INIT_OBJECT_LIST if you want to add more selection criteria to the shuffler than the ones available in standard. You can use the method ADD_FIELD_TO_SELECTOR within INIT_OBJECT_LIST to add the new selection criteria.
    By default, you won't see any F4 help against these newly added selection criteria. If you want to add the same, you would need to add code in F4.
    Thanks - Pawan

  • Implementation for BADI - /SAPAPO/ADVX

    Hi,
    I have created and activated an implementation for the BADI /SAPAPO/ADVX for the method USER_EXIT_MACRO. But this implementation is not triggering when i execute a macro in Transaction /SAPAPO/SDP94. Could you please let me know how to achieve this? (I am implementing this BADI to display the Units in SUOM instead of Base UOM).
    Do we have any other BADI for changing the stock from UOM to SUOM?
    Thanks,
    Rajinikanth

    Hello Experts,
             I have created one Z class in which i am using the methods of BADI /sapapo/advx , i have hard coded my macro id ,layout id and view id so that it will execute my code on execution of that particular macro.now my problem is how to read the data for particular keyfigure from the internal tables of this interface.i am not getting how to read te data and process it.
    please help me on this.
    Regards,
    Saurabh Kulkarni

  • Use of APO BADI /SAPAPO/SNP_ADV_SFT

    I am using APO SNP safety stock planning.
    I want to store the calculated 'demand forecast error' from the safety stock program on a field on the APO product master.
    Is the BADI /SAPAPO/SNP_ADV_SFT suitable for this (method GET_FORECAST_ERROR)?
    Or is there a better approach?
    Thanks for any advice on this...

    Is these products are unique?  If yes, then you can use Location split functionality.

  • BADI  /SAPAPO/SDP_FCSTAUTH

    Hi!
    I would like to restrict the forecast profile list that the user see when he run an univariate forecast manually in SDP94. For example, for version 000, only profiles witch start with 'ACT' should appear.
    I found note Note 394076 (Consulting: USER-EXITS and BAdIs in the forecast environment) and badi  /SAPAPO/SDP_FCSTAUTH. I created an implementation in se19. I put a break-point in method AUTH_CHECK1 but the program doesn't stop when i run a forecast manually.
    Maybe there are others solutions.
    Can you give me some help please?

    Dear Guest,
    From SAP Note 394076 - Consulting: USER-EXITS and BAdIs in the forecast environment
    BAdI /SAPAPO/SDP_FCSTAUTH: (as of SCM 4.0)
    BAdI for special authorization checks in the forecast enfironment.
    For example you can define naming conventions for LIKE profiles or other objects in the forecast.
    I think this BAdI is related to Like Modeling, you should look for an authorization object instead of a BAdI.
    Please Take a Look at [SAP Note 400434 - Authorizations in APO demand planning|https://service.sap.com/sap/support/notes/400434]
    Best regards,
    Carlos R.

  • BADI /SAPAPO/SDP_INTERACT (Method 'DVIEW_DISPLAY_MODE_SET)

    Hi All,
    Is there a way to restrict the planners have both change /display access in 001(sim version) and selected planners to have display only acesss in 000 (active version).
    I went through the BADI /SAPAPO/SDP_INTERACT (Method 'DVIEW_DISPLAY_MODE_SET) info. It says that the display/change mode can be altered for specific users with the user parameter '/SAPAPO/SDP94_D_MODE'/.
    Can this be done?  and if so pls give me the steps to make changes in  BADI and implement it.
    Thanks in advance for your help and support.
    Kind Regards,
    SSP

    Hi,
    You need to give this BADI  /SAPAPO/SDP_INTERACT name to your developer, he / she should be able to imlement and write the code according to your need.
    See OSS note 401830 for parameter id.
    user parameter '/SAPAPO/SDP94_D_MODE'
    Parameter:
    - I (Initial)Started in display mode, switch to change mode possible
    - A (Always)Started in display mode, switch to change mode not possible
    - C (Change)Started in change mode (if the planning book/ data view permits the change mode)
    cheers
    Pavan Verma

  • BADI  /SAPAPO/SDP_SAVE

    Hi Experts,
    Please explain me how to use the  BADI
    /SAPAPO/SDP_SAVE.
    I need to work on the method SAVE_CHECK.
    What values will be given to the import parameters IV_PAREAID, IS_WRITE_OPTIONS, IT_SELECTION, IT_PLOB_VALUES and IT_COLS.
    And would be the values returned to CT_LINES and CT_TAB.
    Thanks and would appreciate your help.
    Regards
    Srini

    Hi Visu,
    Thank you very much for the detailed reply.
    I am working as you suggested. I will update the result.
    Actually the pseudo code given to me is:
    BADI name     /SAPAPO/SDP_SAVE
    Method name     SAVE_CHECK
    Parameters:
    IV_PAREAID   Importing (planning area for the source / target
    IS_WRITE_OPTIONS   Importing
    IT_SELECTION  Importing  (looks like this an infoobject so relevant KF)
    IT_PLOB_VALUES       Importing
    IT_COLS              Importing
    CT_LINES                     Changing
    CT_TAB               Changing
    Can we use this BADI for the same requirement?
    Please explain.
    Thanks and would appreciate your help.
    Regards
    Srini

  • Split SNP PDS using BADI /SAPAPO/CURTO_SNP Method CIF_IMPORT

    Hello APO ABAP experts,
    The requirement is to split SNP PDS based on the number of modes. Meaning, the PDS should have only Mode per Activity in the Operations.
    My plan was to change the changing internal tables in the method CIF_IMPORT to create number of SNP PDS depending up on Modes. But, i am not sure whether it is possible or not. Please suggest.
    Note: BADI will be triggered once per each PDS.
    Thanks,
    Shaun.

    Saurabh,
    Let me explain you what i am doing:
    Since i need to split one PDS into multiple PDS, I am changing the fields EXT_PLANNR and EXT_NAME just by appending a counter. Once after i change them, adding the entries to the changing internal tables (CT_*). At the end of CIF_IMPORT, i am deleting the original PDS entries.
    Example code:
      LOOP AT ct_planactz INTO ls_planactz.
        ls_planactz-ext_plannr = lv_new_ext_plannr.
        APPEND ls_planactz TO lt_planactz.
      ENDLOOP.
      APPEND LINES OF lt_planactz TO ct_planactz.
    Right now, for testing purpose - i am not splitting the PDS. I am just trying to create 2 SNP PDS by using one PDS. I want to test my code first to create multiple PDS.
    When doing this, i get the following error:
    Error: Activity 250006007010001-012 000600000004 P  does not exist
    Message no. /SAPAPO/CURTO005
    Piece of standard code cuasing the problem:
    LN 64 in method GET_APO_GUIDS.
        READ TABLE ct_cif_planactz INTO ls_cif_planactz
                  WITH KEY actnr   = ls_apo_planactz-r3actnr
                           plnkn   = ls_apo_planactz-plnkn
                           zaehl   = ls_apo_planactz-zaehl
                           phasenr = ls_apo_planactz-phasenr
                           uvorn   = ls_apo_planactz-uvorn
                  BINARY SEARCH.
    Call stack:
    METHOD     GET_APO_GUIDS
    METHOD     CREATE_RTO
    METHOD     CREATE_SNP_RTO
    FUNCTION     /SAPAPO/CUSLNTRTO_CREATE_RTO
    Question:
    May i know what is the significance of other fields in internal table ct_cif_planactz ? Since i am chaning only EXT_PLANNR field, above binary search is picking up the same entries and ignoring my second PDS.
    I would appreciate if you can share your ideas.
    Thanks,
    Shaun.

  • BAdi /SAPAPO/SDP_SELECTOR to secure by Navigational Attribute

    Hello All - I am hoping you can help me.  I have been trying to find a way to secure updates to a shared planning book in DP by Sales-Org.  The Sales-Org in our environment is a "navigational attribute" and not a "characteristic".  I tried creating a custom object using RSSM to no avail.  I found some documentation that said you could use a user exit or BAdi method "SELECTION CHECK' (/SAPAPO/SDP_SELECTOR) to run additional authorization checks.  I need to know whether this method could be used to secure a Navigational Attribute?  If so, what information do I need to provide to the developer to implement this exit?

    Hi,
      As a SAP APO technical consultant we have implemented the BADI but am not sure if it meets your requirement:
      You can use the implementation as a reference for the method you are trying to implement:
    http://wiki.sdn.sap.com/wiki/display/SCM/ImplementingBADIin+APO
    cheers
    Aveek

Maybe you are looking for