Catégories
Développement ABAP

Aide à la recherche manuelle avec multiples champs retournés

En règle générale, les outils standard de gestion des aides à la recherche sont suffisants. Il suffit par exemple de créer une zone de saisie sur un dynpro, de bien la typer selon un élément du dictionnaire de données qui ait lui-même une aide à la recherche ou une table de référence, et le dynpro proposera cette aide à la recherche automatiquement.

La limitation arrive lorsque l’on souhaite que la liste des valeurs possibles d’une zone soit dépendante de la valeur d’une autre zone, ou encore lorsque l’on veut que l’aide à la recherche retourne une valeur pour plusieurs zones.

J’ai récemment eu à traiter cette double problématique, aussi vais-je en profiter pour détailler la solution que j’ai utilisée. Il en existe peut-être d’autres et je ne garantis pas d’utiliser celle que recommanderait SAP, mais au moins, cela fonctionne.

Catégories
Développement ABAP

Réinitialiser le refus d’une commande d’achat

Pour simuler ME29N > Stratégie de lancement > Réinitialiser refus :

data(lo_po_handler) = cl_po_handler_mm=>get_instance( ).
lo_po_handler->open(
exporting
im_tcode = 'ME29N'
im_trtyp = cl_mmpur_constants=>ver
im_aktyp = cl_mmpur_constants=>ver
im_po_number = lv_po_number
importing
ex_po_data = data(ls_po_data) ).

ls_po_data-data-procstat = '03'.
ls_po_data-datax-procstat = abap_true.

lo_po_handler->set_po( ls_po_data ).
lo_po_handler->po_process( importing ex_messages = lt_message ).
if lt_message is initial.
lo_po_handler->po_check( importing ex_messages = lt_message ).
if lt_message is initial.
lo_po_handler->po_post( importing ex_messages = lt_message ).
endif.
endif.
lo_po_handler->close( ).
free lo_po_handler.

Catégories
Développement ABAP

Afficher dans une popup le contenu d’une table interne BAPIRET2

call function 'FINB_BAPIRET2_DISPLAY'
exporting
it_message = lt_bapiret.

Catégories
Développement ABAP

Utiliser l’expression binding dans les vues XML SAPUI5

Voir https://help.sap.com/doc/saphelp_snc700_ehp04/7.0.4/de-DE/da/f6852a04b44d118963968a1239d2c0/frameset.htm
Exemple : {= isNaN(${NewPurchaseOrder>NetAmount}) ? 0 : ${NewPurchaseOrder>NetAmount} }