J'ai le morceau de code suivant.
REPORT ZZY.
CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
PUBLIC SECTION.
CLASS-METHODS:
convert_to_xstring
IMPORTING
i_param1 TYPE i
i_param2 TYPE i
RETURNING
VALUE(rv_result) TYPE xstring,
main.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD convert_to_xstring.
ENDMETHOD.
METHOD main.
DATA: lt_binary_tab TYPE STANDARD TABLE OF x.
DATA(lv_result) = convert_to_xstring( i_param1 = 1 i_param2 = 2 ).
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lcl_main=>convert_to_xstring(
EXPORTING
i_param1 = 1
i_param2 = 2
)
TABLES
binary_tab = lt_binary_tab.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
lcl_main=>main( ).
Un appel de méthode fonctionnelle qui ne fait pas partie d'un appel de module de fonction peut être écrit de cette manière.
DATA(lv_result) = convert_to_xstring( i_param1 = 1 i_param2 = 2 ).
Cependant, lorsque je veux l'utiliser exactement comme indiqué ci-dessus
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lcl_main=>convert_to_xstring( i_param1 = 1 i_param2 = 2 )
TABLES
binary_tab = lt_binary_tab.
J'obtiens l'erreur de syntaxe suivante.
Le champ "CONVERT_TO_XSTRING(" est inconnu. Il s'agit de ni défini par une instruction "DATA". Instruction "DATA".
Il semble que le compilateur ait besoin de conseils dans ce cas pour faire la distinction entre un attribut et une méthode. Pourquoi serait-il ambigu pour le compilateur de laisser un tel cas sans écrire EXPORTING
?
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lcl_main=>convert_to_xstring( EXPORTING i_param1 = 1 i_param2 = 2 )
TABLES
binary_tab = lt_binary_tab.