SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

Example for Developing the BAPI Function Module

使用する

FUNCTION BAPI_TRAVELAGENCY_CREATE .*"----------------------------------------------------------------------*"*"Lokale Schnittstelle:*"      IMPORTING*"              VALUE(AGENCYDATA_IN) LIKE  BAPISADTIN*"                              STRUCTURE  BAPISADTIN*"      EXPORTING*"              VALUE(AGENCYNUMBER) LIKE  BAPISADETA-AGENCYNUM*"      TABLES*"              EXTENSIONIN STRUCTURE  BAPIPAREX OPTIONAL*"              RETURN STRUCTURE  BAPIRET2 OPTIONAL*"----------------------------------------------------------------------*               global buffer is t_sbuspart, t_stravelag************************************************************************* length of name field for extension table in extension structure        CONSTANTS:                C_LENSTRUC      TYPE I VALUE 30.* work areas for the table extension structures        DATA:                WA_BAPI_TE_SA  LIKE BAPI_TE_SA,                WA_BAPI_TE_SP  LIKE BAPI_TE_SP.* clear workareas for database tables        CLEAR T_SBUSPART.        CLEAR T_STRAVELAG.*************************************************************************               perform authority checks*************************************************************************       check the incoming data of SAP parameter AGENCYDATA_IN        PERFORM CHECK_AGENCYDATA_IN TABLES RETURN                        USING  AGENCYDATA_IN.        CLEAR RETURN.        LOOP AT RETURN WHERE TYPE = 'E' OR TYPE = 'A'.                EXIT.        ENDLOOP.        IF RETURN-TYPE = 'E' OR RETURN-TYPE = 'A'.                EXIT.        ENDIF.*************************************************************************       Here a customer exit should be provided to check all data*       including the EXTENSIONIN parameter.*       This exit should be realised with the new exit technology,*       however this technology is still under construction.*       This example will be extended as soon as this technology is*       available.*       The Exit should have the following parameters:*       -> All BAPI-parameters: AGENCYDATA_IN, EXTENSIONIN*       <- RETURN*       The function module should pass the RETURN parameter from*       the exit to the client. 'E' means that the client can*       'commit' the BAPI call, if there is an 'A' message in the*       RETURN parameter, the client should 'rollback work'.*************************************************************************       get the missing id's STRAVELAG-ID & SBUSPART-BUSPARTNUM        CALL FUNCTION 'NUMBER_GET_NEXT'                EXPORTING                        NR_RANGE_NR             = '01'                        OBJECT                  = 'SBUSPID'                        QUANTITY                = '1'                IMPORTING                        NUMBER                  = AGENCYNUMBER                EXCEPTIONS                        INTERVAL_NOT_FOUND      = 1                        NUMBER_RANGE_NOT_INTERN = 2                        OBJECT_NOT_FOUND        = 3                        QUANTITY_IS_0           = 4                        QUANTITY_IS_NOT_1       = 5                        INTERVAL_OVERFLOW       = 6                        OTHERS                  = 7.        IF SY-SUBRC                             <> 0.                        RETURN-TYPE             = 'E'.                        RETURN-ID               = 'BCTRAIN'.                        RETURN-NUMBER           = '601'.                        RETURN-MESSAGE_V1       = TEXT-500.                        APPEND RETURN.                EXIT.        ENDIF.*************************************************************************       Before adding data to the buffer, subsribe the function module*       to delete this buffer in case of 'rollback work' by the client.CALL FUNCTION 'BUFFER_SUBSCRIBE_FOR_REFRESH'        EXPORTING                NAME_OF_DELETEFUNC      = 'SAGENCY_REFRESH_BUFFER'.*************************************************************************       Fill global buffer for table STRAVELAG.        MOVE-CORRESPONDING AGENCYDATA_IN TO T_STRAVELAG.        T_STRAVELAG-AGENCYNUM = AGENCYNUMBER.        APPEND T_STRAVELAG.*       Fill global buffer for table SBUSPART.        T_SBUSPART-BUSPARTNUM = AGENCYNUMBER.        T_SBUSPART-CONTACT    = T_STRAVELAG-NAME.        T_SBUSPART-CONTPHONO  = T_STRAVELAG-TELEPHONE.        T_SBUSPART-BUSPATYP   = 'TA'.        APPEND T_SBUSPART.*       Collect the appended fields of tables STRAVELAG & SBUSPART.        LOOP AT EXTENSIONIN.                CASE EXTENSIONIN-STRUCTURE.                        WHEN 'BAPI_TE_SA'.                                MOVE EXTENSIONIN+C_LENSTRUC TO WA_BAPI_TE_SA.*       check if table entry to extension entry exist. for that*       we fill the internal given number into the extension table.                                MOVE AGENCYNUMBER TO WA_BAPI_TE_SA-AGENCYNUM.                                READ TABLE T_STRAVELAG                                        WITH KEY AGENCYNUM = AGENCYNUMBER.                                CATCH SYSTEM-EXCEPTIONS CONVERSION_ERRORS       = 1.                                        MOVE-CORRESPONDING WA_BAPI_TE_SA TO T_STRAVELAG.                                ENDCATCH.                                IF SY-SUBRC                     <> 0.                                        RETURN-TYPE             = 'E'.                                        RETURN-ID               = 'BCTRAIN'.                                        RETURN-NUMBER           = '888'.                                        RETURN-MESSAGE_V1       = TEXT-800.                                        RETURN-MESSAGE_V2       = SY-TABIX.                                        RETURN-MESSAGE_V3       = TEXT-900.                                        APPEND RETURN.                                        EXIT.                                ENDIF.                                MODIFY T_STRAVELAG INDEX SY-TABIX.                        WHEN 'BAPI_TE_SP'.                                MOVE EXTENSIONIN+C_LENSTRUC TO WA_BAPI_TE_SP.                                MOVE AGENCYNUMBER TO WA_BAPI_TE_SP-BUSPARTNUM.:                                READ TABLE T_SBUSPART                                        WITH KEY BUSPARTNUM = AGENCYNUMBER.                                CATCH SYSTEM-EXCEPTIONS CONVERSION_ERRORS  = 1.                                        MOVE-CORRESPONDING WA_BAPI_TE_SP TO T_SBUSPART.                                ENDCATCH.                                IF SY-SUBRC                     <> 0.                                        RETURN-TYPE             = 'E'.                                        RETURN-ID               = 'BCTRAIN'.                                        RETURN-NUMBER           = '888'.                                        RETURN-MESSAGE_V1       = TEXT-700.                                        RETURN-MESSAGE_V2       = SY-TABIX.                                        RETURN-MESSAGE_V3       = TEXT-900.                                        APPEND RETURN.                                        EXIT.                                ENDIF.                                MODIFY T_SBUSPART INDEX SY-TABIX.                        ENDCASE.                ENDLOOP.                IF RETURN-TYPE = 'E'.*************************************************************************       If an error of type 'E' occured, we will have to make the*       buffer consistent again by deleting the data from this call.*       Errors of type 'A' can not occur at this point.                DELETE T_SBUSPART WHERE BUSPARTNUM = T_SBUSPART-BUSPARTNUM.                DELETE T_STRAVELAG WHERE AGENCYNUM = T_STRAVELAG-AGENCYNUM.                EXIT.        ENDIF.*************************************************************************       Create agencys from global buffer in update task. This form will*       be performed only once during the 'commit' statement of the*       client, thus the data from all BAPI calls can be written to*       the database with only one array insert for each table                PERFORM CREATE_AGENCYS ON COMMIT.*************************************************************************       Here a customer exit should be provided in some way*       to insert the data from the ExtensionIn parameter.*       This exit should be realised with the new exit technology,*       however this technology is still under construction.*       This example will be extended as soon as this technology is*       available. *       Within this exit, customer should modify db IN UPDATE TASK*       to guarantee consistency of the data !*       Be aware that nothing has happened on database yet so the*       customer cannot read data from this or any previous call in*       this LUW.*       The customer could use buffers too, but has to be aware of*       the refreshing concept!*       -> All BAPI-parameters: AGENCYDATA_IN, EXTENSIONIN and the id*       AGENCYNUMBER.*       Nothing comes back!*************************************************************************       assume that everything is O.K., fill return parameters                RETURN-TYPE             = 'S'.                RETURN-ID               = 'BCTRAIN'.                RETURN-NUMBER           = '603'.                RETURN-MESSAGE_V1       = TEXT-600.                RETURN-MESSAGE_V2       = T_STRAVELAG-AGENCYNUM.                RETURN-MESSAGE_V3       = TEXT-400.                APPEND RETURN.        ENDFUNCTION.         

タイトルとURLをコピーしました