SAP資格過去問ならSAPnavi

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

SAP過去問 (SAP Exam)

Example Program for Processing an IDoc

使用する

FUNCTION IDOC_INPUT_XAMPLE.*"----------------------------------------------------------------------*"*"Lokale Schnittstelle:*" IMPORTING*" VALUE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD*" VALUE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC*" EXPORTING*" VALUE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT*" VALUE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR*" VALUE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK*" VALUE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS*" TABLES*" IDOC_CONTRL STRUCTURE EDIDC*" IDOC_DATA STRUCTURE EDIDD*" IDOC_STATUS STRUCTURE BDIDOCSTAT*" RETURN_VARIABLES STRUCTURE BDWFRETVAR*" SERIALIZATION_INFO STRUCTURE BDI_SER*" EXCEPTIONS*" WRONG_FUNCTION_CALLED*"----------------------------------------------------------------------* Example function module for processing inbound IDocs for ALE or EDI.* This example applies for processing** with - one IDoc at a time** without - serialization* - customer-exits* - calling an ALE-enabled transaction* - mass processing (more than one IDoc at a time)* -------------------- Naming conventions ------------------------------* Internal tables start with 't_'* Internal field strings start with 'f_'* ----------------------------------------------------------------------* >> The following line must appear in the global part of your* >> function group:* include mbdconwf. "Report containing the ALE constants.* The ALE constants start with 'c_'.DATA: SUBRC LIKE SY-SUBRC,OBJECT_NUMBER LIKE XHEAD-DOCMNT_NO.* Initialize variablesSUBRC = 0.* Read the IDoc's control recordREAD TABLE IDOC_CONTRL INDEX 1.* Process the IDoc and post the data to the databasePERFORM IDOC_PROCESS_XAMPLE TABLES IDOC_DATAIDOC_STATUSUSING IDOC_CONTRLCHANGING OBJECT_NUMBERSUBRC.* Fill the ALE export parametersCLEAR IN_UPDATE_TASK.CLEAR CALL_TRANSACTION_DONE. "Call Transaction is not used.IF SUBRC <> 0. "Error occurredWORKFLOW_RESULT = C_WF_RESULT_ERROR.RETURN_VARIABLES-WF_PARAM = C_WF_PAR_ERROR_IDOCS.RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.APPEND RETURN_VARIABLES.ELSE. "IDoc processed successfullyWORKFLOW_RESULT = C_WF_RESULT_OK.RETURN_VARIABLES-WF_PARAM = C_WF_PAR_PROCESSED_IDOCS.RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.APPEND RETURN_VARIABLES.RETURN_VARIABLES-WF_PARAM = C_WF_PAR_APPL_OBJECTS.RETURN_VARIABLES-DOC_NUMBER = OBJECT_NUMBER.APPEND RETURN_VARIABLES.ENDIF.ENDFUNCTION.*---------------------------------------------------------------------** FORM IDOC_PROCESS_XAMPLE **---------------------------------------------------------------------** This routine creates an application document based on the IDoc's ** contents. Object_Number contains the new document's number. ** If an error occurs, subrc is non-zero, t_idoc_status is filled. ** Note: if more than one error is detected, t_idoc_status contains ** more than one status record. **---------------------------------------------------------------------** --> F_IDOC_CONTRL IDoc control record ** --> T_IDOC_DATA IDoc data records ** <-- T_IDOC_STATUS IDoc status records ** <-- OBJECT_NUMBER Created document's number ** <-- SUBRC Return code **---------------------------------------------------------------------*FORM IDOC_PROCESS_XAMPLETABLES T_IDOC_DATA STRUCTURE EDIDDT_IDOC_STATUS STRUCTURE BDIDOCSTATUSING F_IDOC_CONTRL STRUCTURE EDIDCCHANGING OBJECT_NUMBER LIKE XHEAD-DOCMNT_NOSUBRC LIKE SY-SUBRC.* Internal field string for the document header.DATA: F_XHEAD LIKE XHEAD.* Internal table for the document items.DATA: T_XITEM LIKE XITEM OCCURS 0 WITH HEADER LINE.* Number given to the created documentDATA: DOCUMENT_NUMBER LIKE F_XHEAD-DOCMNT_NO.* Move the data in the IDoc to the internal structures/tables* f_xhead and t_xitem.PERFORM IDOC_INTERPRET TABLES T_IDOC_DATAT_XITEMT_IDOC_STATUSUSING F_IDOC_CONTRLCHANGING F_XHEADSUBRC.* Create the application object if no error occurred so far.IF SUBRC = 0.* This fictitious function module creates a new object based on the* data that was read from the IDoc. The new object's ID is returned* in the parameter 'document_number'.* The function module checks that the data is correct, and raises* an exception if an error is detected.CALL FUNCTION 'XAMPLE_OBJECT_CREATE'EXPORTINGXHEAD = F_XHEADIMPORTINGDOCUMENT_NUMBER = DOCUMENT_NUMBERTABLESXITEM = T_XITEMEXCEPTIONSOTHERS = 1.IF SY-SUBRC <> 0.SUBRC = 1.* Put the error message into 't_idoc_status'PERFORM STATUS_FILL_SY_ERRORTABLES T_IDOC_STATUSUSING T_IDOC_DATASY'' "Field name'idoc_process_xample'. "Form routineELSE.* Fill the remaining export parametersOBJECT_NUMBER = DOCUMENT_NUMBER. "New document's numbert_idoc_status-docnum = f_idoc_contrl-docnum.t_idoc_status-status = c_idoc_status_ok.t_idoc_status-msgty = 'S'.t_idoc_status-msgid = your_msgid. "Global variable.t_idoc_status-msgno = msgno_success."Global variable.t_idoc_status-msgv1 = object_number.APPEND T_IDOC_STATUS.ENDIF. "if sy-subrc <> 0.ENDIF. "if subrc = 0.ENDFORM.*---------------------------------------------------------------------** FORM IDOC_INTERPRET **---------------------------------------------------------------------** This routine checks that the correct message type is being used, ** and then converts and moves the data from the IDoc segments to the ** internal structure f_xhead and internal table t_xitem. ** If an error occurs, t_idoc_status is filled an subrc <> 0. **---------------------------------------------------------------------** --> T_IDOC_STATUS ** --> T_XITEM ** --> F_IDOC_DATA ** --> F_XHEAD ** --> SUBRC **---------------------------------------------------------------------*FORM IDOC_INTERPRET TABLES T_IDOC_DATA STRUCTURE EDIDDT_XITEM STRUCTURE XITEMT_IDOC_STATUS STRUCTURE BDIDOCSTATUSING F_IDOC_CONTRL STRUCTURE EDIDCCHANGING F_XHEAD STRUCTURE XHEADSUBRC LIKE SY-SUBRC.* Check that the IDoc contains the correct message type.* Note: if your message-type is reducible, check field 'idoctp'* (IDoc type) instead of 'mestyp'.IF F_IDOC_CONTRL-MESTYP <> 'XAMPLE'.MESSAGE ID YOUR_MSGID "Global variableTYPE 'E'NUMBER MSGNO_WRONG_FUNCTION "Global variableWITH F_IDOC_CONTRL-MESTYP "message type'IDOC_INPUT_XAMPLE' "Your function module.F_IDOC_CONTRL-SNDPRT "Sender partner typeF_IDOC_CONTRL-SNDPRN "Sender number.RAISING WRONG_FUNCTION_CALLED.ENDIF.* Loop through the IDoc's segments and convert the data from the IDoc* format to the internal format.LOOP AT T_IDOC_DATA WHERE DOCNUM = F_IDOC_CONTRL-DOCNUM.CASE T_IDOC_DATA-SEGNAM.WHEN 'E1XHEAD'.PERFORM E1XHEAD_PROCESS TABLES T_IDOC_STATUSUSING T_IDOC_DATACHANGING F_XHEADSUBRC.WHEN 'E1XITEM'.PERFORM E1XITEM_PROCESS TABLES T_XITEMT_IDOC_STATUSUSING F_XHEAD-CURRENCYT_IDOC_DATACHANGING SUBRC.ENDCASE.ENDLOOP.ENDFORM.*---------------------------------------------------------------------** FORM E1XHEAD_PROCESS **---------------------------------------------------------------------** This routine fills 'f_xhead' out of segment e1xhead. ** If an error occurs, subrc is non-zero, t_idoc_status is filled. **---------------------------------------------------------------------** --> F_IDOC_DATA IDoc segment containing e1xhead fields ** <-- F_XHEAD Internal structure containing doc. header ** <-- T_IDOC_STATUS Status fields for error handling ** <-- SUBRC Return code: non-zero if an error occurred **---------------------------------------------------------------------*FORM E1XHEAD_PROCESS TABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING F_IDOC_DATA STRUCTURE EDIDDCHANGING F_XHEAD STRUCTURE XHEADSUBRC LIKE SY-SUBRC.DATA: F_E1XHEAD LIKE E1XHEAD.F_E1XHEAD = F_IDOC_DATA-SDATA.* Process fields that need conversion from ISO-codes to SAP-codesPERFORM E1XHEAD_CODES_ISO_TO_SAPTABLES T_IDOC_STATUSUSING F_E1XHEADF_IDOC_DATACHANGING F_XHEADSUBRC.* Process fields containing dates or timesPERFORM E1XHEAD_DATE_TIME USING F_E1XHEADCHANGING F_XHEAD.ENDFORM. "e1xhead_process*---------------------------------------------------------------------** FORM E1XITEM_PROCESS **---------------------------------------------------------------------** This routine converts the data in the segment 'e1xitem' for ** to the format of table 't_xitem' and appends it to the table. ** If an error occurs, subrc is non-zero, t_idoc_status is filled. **---------------------------------------------------------------------** --> F_IDOC_DATA IDoc segment ** <-- T_XITEM Document items to be updated to database ** <-- T_IDOC_STATUS Status fields filled if an error occurred ** <-- SUBRC Return code: 0 if all OK **---------------------------------------------------------------------*FORM E1XITEM_PROCESS TABLES T_XITEM STRUCTURE XITEMT_IDOC_STATUS STRUCTURE BDIDOCSTATUSING CURRENCY LIKE XHEAD-CURRENCYF_IDOC_DATA STRUCTURE EDIDDCHANGING SUBRC LIKE SY-SUBRC.DATA: F_E1XITEM LIKE E1XITEM.F_E1XITEM = F_IDOC_DATA-SDATA.* Fields of type CHAR, NUMC, QUAN need no conversion.T_XITEM-ITEM_NO = F_E1XITEM-ITEM_NO.T_XITEM-MATERIALID = F_E1XITEM-MATERIALID.T_XITEM-DESCRIPT = F_E1XITEM-DESCRIPT.T_XITEM-QUANTITY = F_E1XITEM-QUANTITY.* Process fields that need conversion from ISO-codes to SAP-codesPERFORM E1XITEM_CODES_ISO_TO_SAP TABLES T_IDOC_STATUSUSING F_E1XITEMF_IDOC_DATACHANGING T_XITEMSUBRC.* Process fields that contain monetary valuesPERFORM E1XITEM_VALUE_IDOC_TO_SAP TABLES T_IDOC_STATUSUSING F_E1XITEMCURRENCYF_IDOC_DATACHANGING T_XITEMSUBRC.APPEND T_XITEM.ENDFORM.*---------------------------------------------------------------------** FORM E1XHEAD_CODES_ISO_TO_SAP **---------------------------------------------------------------------** Converts ISO-Codes in f_e1xhead to SAP-codes in f_xhead. ** f_idoc_data, t_idoc_status and subrc are used for error handling. **---------------------------------------------------------------------*FORM E1XHEAD_CODES_ISO_TO_SAPTABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING F_E1XHEAD STRUCTURE E1XHEADF_IDOC_DATA STRUCTURE EDIDDCHANGING F_XHEAD STRUCTURE XHEADSUBRC.* f_xhead-currency Type CUKY => convert ISO-Code to SAP-Code.PERFORM CURRENCY_CODE_ISO_TO_SAPTABLES T_IDOC_STATUSUSING F_E1XHEAD-CURRENCYF_IDOC_DATA'CURRENCY'CHANGING F_XHEAD-CURRENCYSUBRC.CHECK SUBRC = 0.* f_xhead-country Contains a country => convert from ISO to SAP code.PERFORM COUNTRY_CODE_ISO_TO_SAPTABLES T_IDOC_STATUSUSING F_E1XHEAD-COUNTRYF_IDOC_DATA'COUNTRY'CHANGING F_XHEAD-COUNTRYSUBRC.ENDFORM.*---------------------------------------------------------------------** FORM E1XITEM_CODES_ISO_TO_SAP **---------------------------------------------------------------------** Converts ISO-Codes in f_e1xitem to SAP-codes in f_xitem ** f_idoc_data, t_idoc_status and subrc are used for error handling. **---------------------------------------------------------------------*FORM E1XITEM_CODES_ISO_TO_SAPTABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING F_E1XITEM STRUCTURE E1XITEMF_IDOC_DATA STRUCTURE EDIDDCHANGING F_XITEM STRUCTURE XITEMSUBRC LIKE SY-SUBRC.* f_xitem-unit Type UNIT => convert ISO-Code to SAP-Code.PERFORM UNIT_OF_MEASURE_ISO_TO_SAPTABLES T_IDOC_STATUSUSING F_E1XITEM-UNITF_IDOC_DATA'unit'CHANGING F_XITEM-UNITSUBRC.* f_xitem-ship_inst Contains shipping instructions => ISO to SAP code.PERFORM SHIPPING_INSTRUCT_ISO_TO_SAPTABLES T_IDOC_STATUSUSING F_E1XITEM-SHIP_INSTF_IDOC_DATA'ship_inst'CHANGING F_XITEM-SHIP_INSTSUBRC.ENDFORM.*---------------------------------------------------------------------** FORM E1XITEM_VALUE_IDOC_TO_SAP **---------------------------------------------------------------------** Converts fields containing monetary values in f_e1xitem to ** the internal representation in f_xitem. ** f_idoc_data, t_idoc_status and subrc are used for error handling. **---------------------------------------------------------------------*FORM E1XITEM_VALUE_IDOC_TO_SAPTABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING F_E1XITEM STRUCTURE E1XITEMCURRENCY LIKE XHEAD-CURRENCYF_IDOC_DATA STRUCTURE EDIDDCHANGING F_XITEM STRUCTURE XITEMSUBRC LIKE SY-SUBRC.* f_xitem-value Type CURR => convert IDoc amount to internal amount.* N.B. the currency code used here must be the SAP-internal one, not* the one contained in the IDoc!CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP'EXPORTINGCURRENCY = CURRENCYIDOC_AMOUNT = F_E1XITEM-VALUEIMPORTINGSAP_AMOUNT = F_XITEM-VALUEEXCEPTIONSOTHERS = 1.IF SY-SUBRC <> 0.SUBRC = 1.* Put the error message into 't_idoc_status'PERFORM STATUS_FILL_SY_ERRORTABLES T_IDOC_STATUSUSING F_IDOC_DATASY'value' "Field name'e1xitem_value_idoc_to_sap'. "Form routineENDIF. "if sy-subrc <> 0.ENDFORM.*---------------------------------------------------------------------** FORM E1XHEAD_DATE_TIME **---------------------------------------------------------------------** Moves date and time fields in f_e1xhead to the fields in f_xhead. **---------------------------------------------------------------------*FORM E1XHEAD_DATE_TIME USING F_E1XHEAD STRUCTURE E1XHEADCHANGING F_XHEAD STRUCTURE XHEAD.* f_xhead-date Type DATS => initial value is not 'blank'.IF E1XHEAD-DATE IS INITIAL.CLEAR F_XHEAD-DATE.ELSE.F_XHEAD-DATE = F_E1XHEAD-DATE.ENDIF.ENDFORM.*---------------------------------------------------------------------** FORM CURRENCY_CODE_ISO_TO_SAP **---------------------------------------------------------------------** Converts ISO currency code 'iso_currency_code' to SAP code in ** 'sap_currency_code' ** f_idoc_data, field_name, t_idoc_status and subrc are used for ** for error handling. **---------------------------------------------------------------------*FORM CURRENCY_CODE_ISO_TO_SAPTABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING ISO_CURRENCY_CODE LIKE TCURC-ISOCDF_IDOC_DATA STRUCTURE EDIDDFIELD_NAME LIKE BDIDOCSTAT-SEGFLDCHANGING SAP_CURRENCY_CODE LIKE TCURC-WAERSSUBRC LIKE SY-SUBRC.IF ISO_CURRENCY_CODE IS INITIAL.CLEAR SAP_CURRENCY_CODE.ELSE.CALL FUNCTION 'CURRENCY_CODE_ISO_TO_SAP'EXPORTINGISO_CODE = ISO_CURRENCY_CODEIMPORTINGSAP_CODE = SAP_CURRENCY_CODEEXCEPTIONSOTHERS = 1.IF SY-SUBRC <> 0.SUBRC = 1.* Put the error message into 't_idoc_status'PERFORM STATUS_FILL_SY_ERRORTABLES T_IDOC_STATUSUSING F_IDOC_DATASYFIELD_NAME'currency_code_iso_to_sap'. "Form routineENDIF. "if sy-subrc <> 0.ENDIF. "if iso_currency_code is initial.ENDFORM.*---------------------------------------------------------------------** FORM COUNTRY_CODE_ISO_TO_SAP **---------------------------------------------------------------------** Converts ISO country code 'iso_country_code' to SAP code in ** 'sap_country_code' ** f_idoc_data, field_name, t_idoc_status and subrc are used for ** for error handling. **---------------------------------------------------------------------*FORM COUNTRY_CODE_ISO_TO_SAPTABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING ISO_COUNTRY_CODE LIKE T005-INTCAF_IDOC_DATA STRUCTURE EDIDDFIELD_NAME LIKE BDIDOCSTAT-SEGFLDCHANGING SAP_COUNTRY_CODE LIKE T005-LAND1SUBRC LIKE SY-SUBRC.* Only convert if the field is not initial.IF ISO_COUNTRY_CODE IS INITIAL.CLEAR SAP_COUNTRY_CODE.ELSE.CALL FUNCTION 'COUNTRY_CODE_ISO_TO_SAP'EXPORTINGISO_CODE = ISO_COUNTRY_CODEIMPORTINGSAP_CODE = SAP_COUNTRY_CODEEXCEPTIONSOTHERS = 1.IF SY-SUBRC <> 0.SUBRC = 1.* Put the error message into 't_idoc_status'PERFORM STATUS_FILL_SY_ERRORTABLES T_IDOC_STATUSUSING F_IDOC_DATASYFIELD_NAME'country_code_iso_to_sap'. "Form routineENDIF. "if sy-subrc <> 0.ENDIF. "if iso_country_code is initial.ENDFORM.*---------------------------------------------------------------------** FORM UNIT_OF_MEASURE_ISO_TO_SAP **---------------------------------------------------------------------** Converts ISO unit of measure code 'iso_unit_of_measure' to SAP ** code in 'sap_unit_of_measure'. ** f_idoc_data, field_name, t_idoc_status and subrc are used for ** for error handling. **---------------------------------------------------------------------*FORM UNIT_OF_MEASURE_ISO_TO_SAPTABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING ISO_UNIT_OF_MEASURE LIKE T006-ISOCODEF_IDOC_DATA STRUCTURE EDIDDFIELD_NAME LIKE BDIDOCSTAT-SEGFLDCHANGING SAP_UNIT_OF_MEASURE LIKE T006-MSEHISUBRC LIKE SY-SUBRC.* Only convert the field if it is not empty.IF ISO_UNIT_OF_MEASURE IS INITIAL.CLEAR SAP_UNIT_OF_MEASURE.ELSE.CALL FUNCTION 'UNIT_OF_MEASURE_ISO_TO_SAP'EXPORTINGISO_CODE = ISO_UNIT_OF_MEASUREIMPORTINGSAP_CODE = SAP_UNIT_OF_MEASUREEXCEPTIONSOTHERS = 1.IF SY-SUBRC <> 0.SUBRC = 1.* Put the error message into 't_idoc_status'PERFORM STATUS_FILL_SY_ERRORTABLES T_IDOC_STATUSUSING F_IDOC_DATASYFIELD_NAME'unit_of_measure_iso_to_sap'. "Form routineENDIF. "if sy-subrc <> 0.ENDIF. "if iso_unit_of_measure_code is initial.ENDFORM.*---------------------------------------------------------------------** FORM SHIPPING_INSTRUCT_ISO_TO_SAP **---------------------------------------------------------------------** Converts ISO package code 'iso_package_type' to SAP code for ** purchasing shipping instructions in 'sap_shipping_instructions'. ** f_idoc_data, field_name, t_idoc_status and subrc are used for ** for error handling. **---------------------------------------------------------------------*FORM SHIPPING_INSTRUCT_ISO_TO_SAPTABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING ISO_PACKAGE_TYPE LIKE T027A-IVERSF_IDOC_DATA STRUCTURE EDIDDFIELD_NAME LIKE BDIDOCSTAT-SEGFLDCHANGING SAP_SHIPPING_INSTRUCTIONS LIKE T027A-EVERSSUBRC LIKE SY-SUBRC.* Only convert the field if it is not empty.IF ISO_PACKAGE_TYPE IS INITIAL.CLEAR SAP_SHIPPING_INSTRUCTIONS.ELSE.CALL FUNCTION 'ISO_TO_SAP_PACKAGE_TYPE_CODE'EXPORTINGISO_CODE = ISO_PACKAGE_TYPEIMPORTINGSAP_CODE = SAP_SHIPPING_INSTRUCTIONSEXCEPTIONSOTHERS = 1.IF SY-SUBRC <> 0.SUBRC = 1.* Put the error message into 't_idoc_status'PERFORM STATUS_FILL_SY_ERRORTABLES T_IDOC_STATUSUSING F_IDOC_DATASYFIELD_NAME'shipping_instruct_iso_to_sap'. "Form rout.ENDIF. "if sy-subrc <> 0.ENDIF. "if iso_unit_of_measure_code is initial.ENDFORM.*---------------------------------------------------------------------** FORM STATUS_FILL_SY_ERROR **---------------------------------------------------------------------** Fills the structure t_idoc_status with the import parameters ** plus the relevant sy fields. **---------------------------------------------------------------------** --> IDOC_NUMBER IDoc number ** --> SEGNUM Segment number ** --> SEGFLD Field in segment ** --> ROUTID Name of routine ** <-- T_IDOC_STATUS Status fields **---------------------------------------------------------------------*FORM STATUS_FILL_SY_ERROR TABLES T_IDOC_STATUS STRUCTURE BDIDOCSTATUSING F_IDOC_DATA STRUCTURE EDIDDVALUE(F_SY) STRUCTURE SYSEGFLD LIKE BDIDOCSTAT-SEGFLDROUTID LIKE BDIDOCSTAT-ROUTID.t_idoc_status-docnum = f_idoc_data-docnum.t_idoc_status-status = c_idoc_status_error.t_idoc_status-msgty = f_sy-msgty.t_idoc_status-msgid = f_sy-msgid.T_IDOC_STATUS-MSGNO = F_SY-MSGNO.t_idoc_status-msgv1 = f_sy-msgv1.t_idoc_status-msgv2 = f_sy-msgv2.t_idoc_status-msgv3 = f_sy-msgv3.t_idoc_status-msgv4 = f_sy-msgv4.t_idoc_status-segnum = f_idoc_data-segnum.t_idoc_status-segfld = segfld.t_idoc_status-repid = f_sy-repid.t_idoc_status-routid = routid.APPEND T_IDOC_STATUS.ENDFORM.         

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