lunedì 21 settembre 2015

Leggere un file XML

*----------------------------------------------------------------------* * DECLARATIONS * *----------------------------------------------------------------------* DATA: BEGIN OF gt_xls OCCURS 0, kdmat LIKE VBAP-KDMAT, zhtccd LIKE ZSD_TRU_HTC_MAT-ZHTCCD, ihrez_e LIKE VBKD-IHREZ_E, taxm1(3) TYPE C, kbmeng LIKE VBAP-KBMENG, zzccn LIKE ZSD_TRU_CCN-ZZCCN, zprgccn LIKE VBAP-ZPRGCCN, END OF gt_xls. DATA: BEGIN OF gs_vat, sign TYPE I, rate TYPE F, END OF gs_vat. DATA: BEGIN OF gs_ggd, kdmat LIKE VBAP-KDMAT, kbmeng LIKE VBAP-KBMENG, END OF gs_ggd. DATA: BEGIN OF gt_ggd, ggdln LIKE TABLE OF gs_ggd, END OF gt_ggd. DATA: BEGIN OF gs_xml, zprgccn LIKE VBAP-ZPRGCCN, zhtccd LIKE ZSD_TRU_HTC_MAT-ZHTCCD, ihrez_e LIKE VBKD-IHREZ_E, vattb LIKE TABLE OF gs_vat, ggdtb LIKE TABLE OF gt_ggd, END OF gs_xml. DATA: gt_xml LIKE TABLE OF gs_xml. *----------------------------------------------------------------------* * LAYOUT * *----------------------------------------------------------------------* PARAMETERS: pa_local(255) TYPE C LOWER CASE OBLIGATORY. *----------------------------------------------------------------------* * FORM READ_XML * *----------------------------------------------------------------------* FORM read_xml. DATA: BEGIN OF lt_txt OCCURS 0, line TYPE STRING, END OF lt_txt. DATA: lv_string TYPE STRING. lv_string = pa_local. CALL FUNCTION 'GUI_UPLOAD' EXPORTING FILENAME = lv_string TABLES DATA_TAB = lt_txt. CLEAR lv_string. LOOP AT lt_txt. CONCATENATE lv_string lt_txt-line INTO lv_string. ENDLOOP. CALL TRANSFORMATION ZTRU_CCN SOURCE XML lv_string RESULT root = gt_xml. SEARCH pa_local FOR 'Container_'. SHIFT pa_local BY SY-FDPOS PLACES LEFT. SHIFT pa_local BY 10 PLACES LEFT. REPLACE '_' WITH '/' INTO pa_local. REPLACE '_' WITH '/' INTO pa_local. LOOP AT gt_xml INTO gs_xml. gt_xls-zprgccn = gs_xml-zprgccn. gt_xls-zhtccd = gs_xml-zhtccd. gt_xls-ihrez_e = gs_xml-ihrez_e. LOOP AT gs_xml-vattb INTO gs_vat WHERE sign = 4. IF gs_vat-rate = '18'. gt_xls-taxm1 = '18%'. ELSE. gt_xls-taxm1 = '10%'. ENDIF. ENDLOOP. gt_xls-zzccn = pa_local(23). LOOP AT gs_xml-ggdtb INTO gt_ggd. LOOP AT gt_ggd-ggdln INTO gs_ggd. gt_xls-kdmat = gs_ggd-kdmat. gt_xls-kbmeng = gs_ggd-kbmeng. APPEND gt_xls. ENDLOOP. ENDLOOP. CLEAR gt_xls. ENDLOOP. ENDFORM. "read_xml *----------------------------------------------------------------------* Trasformazione ZTRU_CCN <!--sap.transform simple?--> <tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:cat_ru="urn:customs.ru:CommonAggregateTypes:4.2.0" xmlns:catESAD_ru="urn:customs.ru:ESADCommonAggregateTypes:4.2.0" template="tmpl1"> <tt:root name="ROOT"/> <tt:template name="tmpl1"> <ED_Container xmlns="urn:customs.ru:Information:ExchangeDocuments:ED_Container:4.2.0" xmlns:clt_ru="urn:customs.ru:CommonLeafTypes:4.2.0"> <tt:skip name="cat_ru:DocumentID"/> <FullSetIndicator> <tt:skip/> </FullSetIndicator> <ContainerDoc> <DocBody> <ESADout xmlns="urn:customs.ru:Information:CustomsDocuments:ESADout:4.2.0" xmlns:cltESAD_ru="urn:customs.ru:ESADCommonLeafTypes:4.2.0"> <tt:skip name="cat_ru:DocumentID"/> <CustomsProcedure> <tt:skip/> </CustomsProcedure> <CustomsModeCode> <tt:skip/> </CustomsModeCode> <COMPLECTBL> <tt:skip/> </COMPLECTBL> <ESADoutGoodsShipment> <tt:skip name="catESAD_ru:OriginCountryName"/> <tt:skip name="catESAD_ru:TotalGoodsNumber"/> <tt:skip name="catESAD_ru:TotalPackageNumber"/> <tt:skip name="catESAD_ru:TotalSheetNumber"/> <tt:skip name="catESAD_ru:TotalCustCost"/> <tt:skip name="catESAD_ru:CustCostCurrencyCode"/> <ESADoutConsignor> <tt:skip/> </ESADoutConsignor> <ESADoutConsignee> <tt:skip/> </ESADoutConsignee> <ESADoutFinancialAdjustingResponsiblePerson> <tt:skip/> </ESADoutFinancialAdjustingResponsiblePerson> <ESADoutDeclarant> <tt:skip/> </ESADoutDeclarant> <ESADoutGoodsLocation> <tt:skip/> </ESADoutGoodsLocation> <ESADoutConsigment> <tt:skip/> </ESADoutConsigment> <ESADoutMainContractTerms> <tt:skip/> </ESADoutMainContractTerms> <tt:loop name="line" ref=".ROOT"> <ESADoutGoods> <catESAD_ru:GoodsNumeric> <tt:value ref="$line.zprgccn"/> </catESAD_ru:GoodsNumeric> <tt:skip name="catESAD_ru:GoodsDescription"/> <tt:skip name="catESAD_ru:GrossWeightQuantity"/> <tt:skip name="catESAD_ru:NetWeightQuantity"/> <tt:skip name="catESAD_ru:InvoicedCost"/> <tt:skip name="catESAD_ru:CustomsCost"/> <tt:skip name="catESAD_ru:StatisticalCost"/> <catESAD_ru:GoodsTNVEDCode> <tt:value ref="$line.zhtccd"/> </catESAD_ru:GoodsTNVEDCode> <tt:skip name="catESAD_ru:AdditionalSign"/> <catESAD_ru:OriginCountryCode> <tt:value ref="$line.ihrez_e"/> </catESAD_ru:OriginCountryCode> <tt:skip name="catESAD_ru:OriginCountryName"/> <tt:skip name="catESAD_ru:CountryCodeIndicator"/> <tt:skip name="catESAD_ru:Preferencii"/> <tt:skip name="catESAD_ru:ConformityStatCostIndicator"/> <tt:skip name="catESAD_ru:CustomsCostCorrectMethod"/> <tt:loop name="ggdtb" ref="$line.ggdtb"> <catESAD_ru:GoodsGroupDescription> <tt:skip name="catESAD_ru:GoodsDescription"/> <tt:loop name="ggdln" ref="$ggdtb.ggdln"> <catESAD_ru:GoodsGroupInformation> <tt:skip name="catESAD_ru:Manufacturer"/> <tt:skip name="catESAD_ru:TradeMark"/> <tt:group> <tt:cond frq="?"> <catESAD_ru:GoodsMarking> <tt:value ref="$ggdln.kdmat"/> </catESAD_ru:GoodsMarking> </tt:cond> <tt:cond frq="?"> <catESAD_ru:Dimensions> <tt:skip/> </catESAD_ru:Dimensions> </tt:cond> <tt:cond frq="?"> <catESAD_ru:GoodsGroupQuantity> <catESAD_ru:GoodsQuantity> <tt:value ref="$ggdln.kbmeng"/> </catESAD_ru:GoodsQuantity> <tt:skip name="catESAD_ru:MeasureUnitQualifierName"/> <tt:skip name="catESAD_ru:MeasureUnitQualifierCode"/> </catESAD_ru:GoodsGroupQuantity> </tt:cond> </tt:group> </catESAD_ru:GoodsGroupInformation> </tt:loop> </catESAD_ru:GoodsGroupDescription> </tt:loop> <tt:skip name="catESAD_ru:AdditionalSheetCount"/> <tt:group> <tt:cond frq="?"> <catESAD_ru:FormNumber> <tt:skip/> </catESAD_ru:FormNumber> </tt:cond> </tt:group> <tt:skip name="catESAD_ru:ESADGoodsPackaging"/> <tt:group> <tt:cond frq="?"> <catESAD_ru:SupplementaryGoodsQuantity> <tt:skip/> </catESAD_ru:SupplementaryGoodsQuantity> </tt:cond> </tt:group> <tt:skip name="catESAD_ru:ESADCustomsProcedure"/> <ESADoutPresentedDocument> <tt:skip/> </ESADoutPresentedDocument> <tt:loop name="vattb" ref="$line.vattb"> <ESADoutCustomsPaymentCalculation> <catESAD_ru:CustomsPaymentSign> <tt:value ref="$vattb.sign"/> </catESAD_ru:CustomsPaymentSign> <tt:skip name="catESAD_ru:PaymentModeCode"/> <tt:skip name="catESAD_ru:PaymentAmount"/> <tt:skip name="catESAD_ru:PaymentCurrencyCode"/> <tt:skip name="catESAD_ru:TaxBase"/> <tt:skip name="catESAD_ru:TaxBaseCurrencyCode"/> <catESAD_ru:Rate> <tt:value ref="$vattb.rate"/> </catESAD_ru:Rate> <tt:skip/> </ESADoutCustomsPaymentCalculation> </tt:loop> <ESADoutGoodsOrganization> <tt:skip/> </ESADoutGoodsOrganization> </ESADoutGoods> </tt:loop> <ESADoutPayments> <tt:skip/> </ESADoutPayments> </ESADoutGoodsShipment> </ESADout> </DocBody> </ContainerDoc> <tt:skip/> </ED_Container> </tt:template> </tt:transform>

Nessun commento: