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

Uploader un document vers SAP avec Archive Link

call function 'ARCHIV_CREATE_TABLE'
exporting
ar_object = lr_connection->ar_object
object_id = lr_connection->object_id
sap_object = lr_connection->sap_object
doc_type = conv toadd-doc_type( lr_connection->reserve )
filename = conv toaat-filename( lr_attachment->name )
document = lr_attachment->content
importing
outdoc = ls_outdoc
exceptions
error_archiv = 1
error_communicationtable = 2
error_connectiontable = 3
error_kernel = 4
error_parameter = 5
error_user_exit = 6
error_mandant = 7
blocked_by_policy = 8
others = 9.

lr_attachment->content est une chaîne XSTRING d’un BASE64.