Archive

Archive for the ‘SAP’ Category

SAP MM – BAPI : BAPI_PO_CREATE1

February 3rd, 2010 No comments

Exemple d’utilisation de la BAPI :   BAPI_PO_CREATE1 pour la création d’une commande achat (Purchase order).

Je l’utilise depuis un avis QM pour automatiser la création du PO sur ordre de service afin de facturer des coûts de garantie. Pour info : La réception de ce PO est aussi automatisée via la barre d’activités de l’avis et la BAPI  :   BAPI_GOODSMVT_CREATE  .

 - Dans cet exemple on ne crée qu’un seul poste dans le PO

DATA : ws_poheader     TYPE bapimepoheader,
             ws_poheaderx     TYPE bapimepoheaderx,
             wt_poitem            TYPE TABLE OF bapimepoitem,
             ws_poitem            TYPE bapimepoitem,
             wt_poitemx          TYPE TABLE OF bapimepoitemx,
             ws_poitemx          TYPE bapimepoitemx,
             wt_poaccount     TYPE TABLE OF bapimepoaccount,
             ws_poaccount     TYPE bapimepoaccount,
             ws_poaccountx   TYPE bapimepoaccountx,
             wt_poaccountx   TYPE TABLE OF bapimepoaccountx,
             wt_pocondx         TYPE TABLE OF bapimepocondx,
             ws_pocondx        TYPE bapimepocondx,
             wt_pocond           TYPE TABLE OF bapimepocond,
             ws_pocond          TYPE bapimepocond,
             wt_return             TYPE TABLE OF bapiret2,
             ws_return            TYPE bapiret2.

  DATA : wv_waers TYPE bstwa,
              wv_netpr TYPE bprei.

  CONSTANTS : wc_avtf(4) VALUE ’AVTF’,
                           wc_604(10) VALUE ’0060411150′,
                           wc_1000(4) value ’1000′,
                           wc_gar(8)  value ’GARANTIE’.

*… Récupération des données

********************************************
*            Entete                        *
********************************************
  
CLEAR ws_poheader.
  ws_poheader-doc_type = ’NB’.
  ws_poheader-comp_code = wc_avtf.
  ws_poheader-purch_org = wc_avtf.
  ws_poheader-pur_group = ws_zq14-ekgrp.
  ws_poheader-vendor = ws_zq14-lifnr.
  ws_poheader-our_ref = i_viqmel-qmnum.
  ws_poheader-item_intvl = 00010.
  ws_poheader-currency = wv_waers.
  CLEAR ws_poheaderx.
  ws_poheaderx-doc_type = ’X’.
  ws_poheaderx-comp_code = ’X’.
  ws_poheaderx-purch_org = ’X’.
  ws_poheaderx-pur_group = ’X’.
  ws_poheaderx-vendor = ’X’.
  ws_poheaderx-our_ref = ’X’.
  ws_poheaderx-item_intvl = ’X’.
  ws_poheader-currency = ’X’.
*  ws_poheaderx-our_ref = ’X’.
**********************************************
*                Poste                       *
**********************************************
  CLEAR ws_poitem. REFRESH wt_poitem.
  CLEAR ws_poitemx. REFRESH wt_poitemx.
  ws_poitem-plant  = wc_1000.
  ws_poitemx-plant = ’X’.
  ws_poitem-stge_loc  = ws_zq14-lgort.
  ws_poitemx-stge_loc = ’X’.
  ws_poitem-matl_group  = wc_gar.
  ws_poitemx-matl_group = ’X’.
  ws_poitem-short_text  = text-607.
  ws_poitemx-short_text = ’X’.
  ws_poitem-po_item  = ’00010′.
  ws_poitemx-po_item = ’00010′.
  ws_poitemx-po_itemx = ’X’.
  ws_poitem-po_unit  = ’ST’.
  ws_poitemx-po_unit = ’X’.
  ws_poitem-quantity  = ’1′.
  ws_poitemx-quantity = ’X’.
  ws_poitem-acctasscat  = ’F’.
  ws_poitemx-acctasscat = ’X’.

  APPEND ws_poitem TO wt_poitem.
  APPEND ws_poitemx TO wt_poitemx.
*********************************************
*          Onglet imputation                *
*********************************************
 
 CLEAR ws_poaccount. REFRESH wt_poaccount.
  CLEAR ws_poaccountx. REFRESH wt_poaccountx.

  ws_poaccount-po_item  = ’00010′.
  ws_poaccountx-po_item = ’00010′.
  ws_poaccountx-po_itemx = ’X’.
  ws_poaccount-gl_account  = wc_604. 
  ws_poaccountx-gl_account = ’X’.
  ws_poaccount-orderid  = wv_aufnr. 
  ws_poaccountx-orderid = ’X’.
  ws_poaccount-co_area  = ’HVT’.
  ws_poaccountx-co_area = ’X’.
  ws_poaccount-bus_area = ’1′.
  ws_poaccountx-bus_area = ’X’.

  APPEND ws_poaccount  TO wt_poaccount.
  APPEND ws_poaccountx TO wt_poaccountx.

*********************************************
*           Conditions                      *
*********************************************
  CLEAR ws_pocond. REFRESH wt_pocond.
  CLEAR ws_pocondx. REFRESH wt_pocondx.

  ws_pocond-itm_number  = ’00010′.
  ws_pocondx-itm_number = ’00010′.
  ws_pocondx-itm_numberx = ’X’.
  ws_pocond-cond_value  = wv_netpr.
  ws_pocondx-cond_value = ’X’.
  ws_pocond-change_id  = ’I’.
  ws_pocondx-change_id = ’X’.
  ws_pocond-cond_type  = ’PB00′.
  ws_pocondx-cond_type = ’X’.

  APPEND ws_pocond TO wt_pocond.
  APPEND ws_pocondx TO wt_pocondx.

  CALL FUNCTION ‘BAPI_PO_CREATE1′
    EXPORTING
      poheader         = ws_poheader
      poheaderx        = ws_poheaderx
    IMPORTING
      exppurchaseorder = wv_ebeln
    TABLES
      return           = wt_return
      poitem           = wt_poitem
      poitemx          = wt_poitemx
      poaccount        = wt_poaccount
      poaccountx       = wt_poaccountx
      pocond           = wt_pocond
      pocondx          = wt_pocondx.

  CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
    EXPORTING
      wait = ’X‘.

Categories: SAP Tags: , ,

SAP QM – Avis QM – Dérogation client

December 18th, 2009 No comments

QM notification

On connait les avis QM dans les flux standards comme le contrôle lors d’une entrée marchandise ou en cours de production… Mais on peut utiliser les avis pour toutes sortes de problématiques qui ne sont pas directement liées au flux SAP.

Ici, je vais vous présenter un exemple de ces utilisations pour traiter la dérogation d’un produit finis pour un client donné. L’objectif est de voir apparaitre la dérogation (Avis de type D1 / D2) dans l’historique du S/N et de garder une trace de toutes les actions.

- Je profite de l’occasion pour présenter également la barre d’activité des avis QM -

Avis_D1

Avis D1 :

3 Parties : 1- Faits(description de la dérogation); 2-les interventions(Suivi des actions); 3- Les partenaires(Ligne de production, client…)

Le barre d’activités :

Elle sert a déclencher des actions depuis l’avis, c’est à dire mail, impression de formulaire….Et tout cela tracé par une intervention ( ou activité).

Je vais zoomer sur le bouton : Avis_D1_2

Il va permettre d’associer à la dérogation générique (Avis de type D1)  une liste de S/N via un nouvel avis (D2). Et c’est cet avis que l’on retrouvera dans l’historique du S/N.

J’utilise un ALV pour saisir la liste des S/N :

Avis_D1_3

Des avis QM sont automatiquement créés via la BAPI :   IQS4_CREATE_NOTIFICATION .

Nous les retrouvons via le flux de documents :

Avis_D1_4

Avis  D1 en 0008XXX et avis D2 en 0004XXX

Avis D2 :

Avis_D1_5

Historique du S/N :

Avis_D1_6

On voit en première position la dérogation client.

Categories: SAP Tags:

SAP – ALV – Groupes de zones – LVC_T_SGRP – IT_SPECIAL_GROUPS

December 9th, 2009 1 comment

Un post pour expliquer comment ajouter des groupes de zones dans la fonctionnalité de mise en forme des ALV. C’est trés pratique surtout si on utilise beacoup de zones.

groupe_zone

 

  Data : wt_groups type LVC_T_SGRP,
              ws_groups type LVC_S_SGRP.

Dans la methode de mise en forme de l’ALV (Tri, layout…)

* groupes spécials
    CLEAR ws_groups. REFRESH wt_groups.
    ws_groups-sp_group = ’01′.
    ws_groups-text = text-g01.  ”‘Avis QM’.
    APPEND ws_groups TO wt_groups.
    CLEAR ws_groups.
    ws_groups-sp_group = ’02′.
    ws_groups-text = text-g03. “‘Données CO’.
    APPEND ws_groups TO wt_groups.
    CLEAR ws_groups.
    ws_groups-sp_group = ’03′.
    ws_groups-text = text-g02. “‘Données CS’.
    APPEND ws_groups TO wt_groups.

Dans la methode la mise en forme du catalogue de l’ALV

      CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
          EXPORTING
             i_structure_name = ’ZST_GARANTIE’
          CHANGING
            ct_fieldcat      = wt_fieldcat.
    LOOP AT wt_fieldcat INTO ws_field.
      CASE ws_field-fieldname.

…   

       WHEN ’QMKAT’.
          ws_field-no_out = ’X’.
          ws_field-sp_group = ’01′.
        WHEN OTHERS.
          ws_field-no_out = ’X’.
          ws_field-sp_group = ’02′.
      ENDCASE.
      MODIFY wt_fieldcat FROM ws_field.
    ENDLOOP.

Dans l’appel de la methode   : “set_table_for_first_display”  

wo_alv->set_table_for_first_display( EXPORTING
                                         is_layout            = ws_layout
                                         is_variant           = ws_disvariant
                                         i_save               = ’A’
                                         IT_SPECIAL_GROUPS    = wt_groups
                                         CHANGING
                                          it_fieldcatalog       = wt_fieldcat
                                          it_sort               = wt_sort
                                          it_outtab             = wt_garantie
                                          ).

Categories: SAP Tags: , ,