ABAP Select data from SAP table PARLINEITEM1 into internal table

Get Example source ABAP code based on a different SAP table
  

Below is a number of ABAP code snippets to demonstrate how to select data from SAP PARLINEITEM1 table and store it within an internal table, including using the newer @DATA inline declaration methods. It also shows you various ways to process this data using ABAP work area, inline declaration or field symbols including executing all the relevant CONVERSION_EXIT routines specific to PARLINEITEM1. See here for more generic Select statement tips.

Sometimes data within SAP is stored within the database table in a different format to what it is displayed to the user. These input/output conversation FM routines are what translates the data between the two formats.

There is also a full declaration of the PARLINEITEM1 table where each field has a char/string type for you to simply copy and paste. This allows you to use processing that is only available to these field types such as the CONCATENATE statement.

DATA: IT_PARLINEITEM1 TYPE STANDARD TABLE OF PARLINEITEM1,
      WA_PARLINEITEM1 TYPE PARLINEITEM1,
      GD_STR TYPE STRING.

DATA: lo_typedescr type REF TO cl_abap_typedescr.
DATA: lv_fieldname type fieldname.

FIELD-SYMBOLS: <FIELD> TYPE any.
FIELD-SYMBOLS: <PARLINEITEM1> TYPE PARLINEITEM1.

*Process all fields in table header/work area as string values
  PERFORM process_as_string_field_values CHANGING wa_PARLINEITEM1.

SELECT *
*restrict ABAP select to first 10 rows
 UP TO 10 ROWS      
  FROM PARLINEITEM1
  INTO TABLE IT_PARLINEITEM1.

*Select data and declare internal table using in-line method @DATA
*SELECT *
*  FROM PARLINEITEM1
*  INTO TABLE @DATA(IT_PARLINEITEM12).
*--Further methods of using ABAP code to  select data from SAP database tables

*You can also declare the header/work area using the in-line DATA declaration method
READ TABLE IT_PARLINEITEM1 INDEX 1 INTO DATA(WA_PARLINEITEM12).


*Demonstrate how to loop at an internal table and update values using a FIELD-SYMBOL
LOOP AT IT_PARLINEITEM1 ASSIGNING <PARLINEITEM1>.
*To update a field value using a field symbol simply change the value via the field symbol pointer
<PARLINEITEM1>-MANDT = 1.
<PARLINEITEM1>-COMPANYCODE = 1.
<PARLINEITEM1>-ACCOUNTINGDOCUMENT = 1.
<PARLINEITEM1>-FISCALYEAR = 1.
<PARLINEITEM1>-ACCOUNTINGDOCUMENTITEM = 1.
ENDLOOP.

LOOP AT IT_PARLINEITEM1 INTO WA_PARLINEITEM1.
*Write horizonal line to screen report.
  WRITE:/ sy-uline.

*Write selected data to screen/report before conversion.
  WRITE:/ sy-vline,   WA_PARLINEITEM1-LANGUAGE, sy-vline,
WA_PARLINEITEM1-KEYDT2, sy-vline,
WA_PARLINEITEM1-PAYMENTDIFFERENCEREASON, sy-vline,
WA_PARLINEITEM1-DEBTOR, sy-vline,
WA_PARLINEITEM1-CLEARINGDATE, sy-vline,
WA_PARLINEITEM1-CLEARINGDOCFISCALYEAR, sy-vline.
ENDLOOP. *Add any further fields from structure WA_PARLINEITEM1 you want to display... WRITE:/ sy-uline. * Aternatively use generic code to Write field values (and NAME) to screen report DO. ASSIGN COMPONENT sy-index OF STRUCTURE wa_PARLINEITEM1 TO <field>. IF sy-subrc <> 0. EXIT. ENDIF. WRITE:/ 'Field Value', <field>, sy-vline. gd_str = <field> . lo_typedescr ?= CL_ABAP_DATADESCR=>DESCRIBE_BY_DATA( <field> ). lv_fieldname = lo_typedescr->GET_RELATIVE_NAME( ). WRITE:/ 'Field Name', lv_fieldname. ENDDO. *Redo loop but convert all fields from internal to out value LOOP AT IT_PARLINEITEM1 INTO WA_PARLINEITEM1. *Write horizonal line to screen report. WRITE:/ sy-uline. *Convert all fields to display/output versions using conversion routines PERFORM convert_all_field_values CHANGING wa_EKKO. ENDLOOP. *&---------------------------------------------------------------------* *& Form convert_all_field_values *&---------------------------------------------------------------------* FORM convert_all_field_values CHANGING p_EKKO LIKE wa_EKKO. DATA: ld_input(1000) TYPE c, ld_output(1000) TYPE C.

*Conversion exit ALPHA, internal->external for field ACCOUNTINGDOCUMENT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-ACCOUNTINGDOCUMENT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-ACCOUNTINGDOCUMENT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit GJAHR, internal->external for field FISCALYEAR CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_PARLINEITEM1-FISCALYEAR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-FISCALYEAR.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field DEBTOR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-DEBTOR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-DEBTOR.
WRITE:/ 'New Value:', ld_input.

*Conversion exit GJAHR, internal->external for field CLEARINGDOCFISCALYEAR CALL FUNCTION 'CONVERSION_EXIT_GJAHR_OUTPUT' EXPORTING input = WA_PARLINEITEM1-CLEARINGDOCFISCALYEAR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-CLEARINGDOCFISCALYEAR.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field CLEARINGACCOUNTINGDOCUMENT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-CLEARINGACCOUNTINGDOCUMENT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-CLEARINGACCOUNTINGDOCUMENT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field ALTERNATIVEGLACCOUNT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-ALTERNATIVEGLACCOUNT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-ALTERNATIVEGLACCOUNT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field PARTNERCOMPANY CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-PARTNERCOMPANY IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-PARTNERCOMPANY.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field COSTCENTER CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-COSTCENTER IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-COSTCENTER.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field ORDERID CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-ORDERID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-ORDERID.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field BILLINGDOCUMENT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-BILLINGDOCUMENT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-BILLINGDOCUMENT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field SALESDOCUMENT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-SALESDOCUMENT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-SALESDOCUMENT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field MASTERFIXEDASSET CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-MASTERFIXEDASSET IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-MASTERFIXEDASSET.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field FIXEDASSET CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-FIXEDASSET IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-FIXEDASSET.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field GLACCOUNT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-GLACCOUNT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-GLACCOUNT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field BRANCH CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-BRANCH IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-BRANCH.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field PURCHASINGDOCUMENT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-PURCHASINGDOCUMENT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-PURCHASINGDOCUMENT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field PROFITCENTER CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-PROFITCENTER IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-PROFITCENTER.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field ASSETCONTRACT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-ASSETCONTRACT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-ASSETCONTRACT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ABPSP, internal->external for field WBSELEMENT CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT' EXPORTING input = WA_PARLINEITEM1-WBSELEMENT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-WBSELEMENT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field PAYMENTCARDPAYMENTSETTLEMENT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-PAYMENTCARDPAYMENTSETTLEMENT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-PAYMENTCARDPAYMENTSETTLEMENT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit IMKEY, internal->external for field REALESTATEOBJECT CALL FUNCTION 'CONVERSION_EXIT_IMKEY_OUTPUT' EXPORTING input = WA_PARLINEITEM1-REALESTATEOBJECT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-REALESTATEOBJECT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field OFFSETTINGACCOUNT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-OFFSETTINGACCOUNT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-OFFSETTINGACCOUNT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field RECEIVABLEALTERNATIVEPAYER CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-RECEIVABLEALTERNATIVEPAYER IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-RECEIVABLEALTERNATIVEPAYER.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field CUSTOMERCITYCODE CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-CUSTOMERCITYCODE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-CUSTOMERCITYCODE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field RECONCILIATIONACCOUNT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-RECONCILIATIONACCOUNT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-RECONCILIATIONACCOUNT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field CUSTOMERHEADOFFICE CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-CUSTOMERHEADOFFICE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-CUSTOMERHEADOFFICE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field ALTERNATIVEPAYERACCOUNT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-ALTERNATIVEPAYERACCOUNT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-ALTERNATIVEPAYERACCOUNT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field CUSTOMERSUPPLIERACCOUNT CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-CUSTOMERSUPPLIERACCOUNT IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-CUSTOMERSUPPLIERACCOUNT.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field INVOICEREFERENCE CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-INVOICEREFERENCE IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-INVOICEREFERENCE.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field CASEID CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-CASEID IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-CASEID.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field CREDITOR CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-CREDITOR IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-CREDITOR.
WRITE:/ 'New Value:', ld_input.

*Conversion exit ALPHA, internal->external for field REFERENCEDOCUMENTLOGICALSYSTEM CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT' EXPORTING input = WA_PARLINEITEM1-REFERENCEDOCUMENTLOGICALSYSTEM IMPORTING output = ld_input.
WRITE:/ 'Org Value:', WA_PARLINEITEM1-REFERENCEDOCUMENTLOGICALSYSTEM.
WRITE:/ 'New Value:', ld_input.
ENDFORM. *&---------------------------------------------------------------------* *& Form process_as_string_field_values *&---------------------------------------------------------------------* FORM process_as_string_field_values CHANGING p_EKKO LIKE wa_EKKO. TYPES: BEGIN OF T_PARLINEITEM1_STR,
MANDT TYPE STRING,
COMPANYCODE TYPE STRING,
ACCOUNTINGDOCUMENT TYPE STRING,
FISCALYEAR TYPE STRING,
ACCOUNTINGDOCUMENTITEM TYPE STRING,
LANGUAGE TYPE STRING,
KEYDT2 TYPE STRING,
PAYMENTDIFFERENCEREASON TYPE STRING,
DEBTOR TYPE STRING,
CLEARINGDATE TYPE STRING,
CLEARINGDOCFISCALYEAR TYPE STRING,
CLEARINGACCOUNTINGDOCUMENT TYPE STRING,
POSTINGKEY TYPE STRING,
FINANCIALACCOUNTTYPE TYPE STRING,
SPECIALGLCODE TYPE STRING,
SPECIALGLTRANSACTIONTYPE TYPE STRING,
DEBITCREDITCODE TYPE STRING,
BUSINESSAREA TYPE STRING,
TAXCODE TYPE STRING,
TAXCOUNTRY TYPE STRING,
TAXREPORTINGDATE TYPE STRING,
ALTERNATIVEGLACCOUNT TYPE STRING,
AMOUNTINCOMPANYCODECURRENCY TYPE STRING,
AMOUNTINTRANSACTIONCURRENCY TYPE STRING,
AMOUNTINBALANCETRANSACCRCY TYPE STRING,
BALANCETRANSACTIONCURRENCY TYPE STRING,
WITHHOLDINGTAXBASEAMOUNT TYPE STRING,
VALUATIONDIFFAMTINCOCODECRCY TYPE STRING,
VALUATIONDIFFAMTINADDLCRCY1 TYPE STRING,
VALUEDATE TYPE STRING,
ASSIGNMENTREFERENCE TYPE STRING,
DOCUMENTITEMTEXT TYPE STRING,
PARTNERCOMPANY TYPE STRING,
COSTCENTER TYPE STRING,
ORDERID TYPE STRING,
BILLINGDOCUMENT TYPE STRING,
SALESDOCUMENT TYPE STRING,
SALESDOCUMENTITEM TYPE STRING,
SCHEDULELINE TYPE STRING,
MASTERFIXEDASSET TYPE STRING,
FIXEDASSET TYPE STRING,
ISUSEDINPAYMENTTRANSACTION TYPE STRING,
GLACCOUNT TYPE STRING,
BRANCH TYPE STRING,
DUECALCULATIONBASEDATE TYPE STRING,
PAYMENTTERMS TYPE STRING,
CASHDISCOUNT1DAYS TYPE STRING,
CASHDISCOUNT2DAYS TYPE STRING,
NETPAYMENTDAYS TYPE STRING,
CASHDISCOUNT1PERCENT TYPE STRING,
CASHDISCOUNT2PERCENT TYPE STRING,
CASHDISCOUNTBASEAMOUNT TYPE STRING,
CASHDISCOUNTAMTINCOCODECRCY TYPE STRING,
CASHDISCOUNTAMOUNT TYPE STRING,
PAYMENTMETHOD TYPE STRING,
PAYMENTBLOCKINGREASON TYPE STRING,
FIXEDCASHDISCOUNT TYPE STRING,
FOLLOWONDOCUMENTTYPE TYPE STRING,
STATECENTRALBANKPAYMENTREASON TYPE STRING,
SUPPLYINGCOUNTRY TYPE STRING,
INVOICELIST TYPE STRING,
BILLOFEXCHANGEUSAGE TYPE STRING,
DUNNINGKEY TYPE STRING,
DUNNINGBLOCKINGREASON TYPE STRING,
LASTDUNNINGDATE TYPE STRING,
DUNNINGLEVEL TYPE STRING,
DUNNINGAREA TYPE STRING,
WITHHOLDINGTAXAMOUNT TYPE STRING,
WITHHOLDINGTAXEXEMPTIONAMT TYPE STRING,
PLANT TYPE STRING,
PURCHASINGDOCUMENT TYPE STRING,
PURCHASINGDOCUMENTITEM TYPE STRING,
PROFITCENTER TYPE STRING,
TREASURYCONTRACTTYPE TYPE STRING,
ASSETCONTRACT TYPE STRING,
CASHFLOWTYPE TYPE STRING,
WBSELEMENT TYPE STRING,
AMOUNTINADDITIONALCURRENCY1 TYPE STRING,
AMOUNTINADDITIONALCURRENCY2 TYPE STRING,
AMOUNTINFUNCTIONALCURRENCY TYPE STRING,
VALUATIONDIFFAMTINADDLCRCY2 TYPE STRING,
CLEARINGISREVERSED TYPE STRING,
PAYMENTMETHODSUPPLEMENT TYPE STRING,
REFERENCE1IDBYBUSINESSPARTNER TYPE STRING,
REFERENCE2IDBYBUSINESSPARTNER TYPE STRING,
PAYMENTCARDITEM TYPE STRING,
PAYMENTCARDPAYMENTSETTLEMENT TYPE STRING,
REFERENCE3IDBYBUSINESSPARTNER TYPE STRING,
DATAEXCHANGEINSTRUCTION1 TYPE STRING,
DATAEXCHANGEINSTRUCTION2 TYPE STRING,
DATAEXCHANGEINSTRUCTION3 TYPE STRING,
DATAEXCHANGEINSTRUCTION4 TYPE STRING,
HASPAYMENTORDER TYPE STRING,
PAYMENTREFERENCE TYPE STRING,
HEDGEDAMOUNT TYPE STRING,
PAYMENTCURRENCY TYPE STRING,
AMOUNTINPAYMENTCURRENCY TYPE STRING,
BUSINESSPLACE TYPE STRING,
TAXSECTION TYPE STRING,
ACCOUNTSRECEIVABLEISPLEDGED TYPE STRING,
REALESTATEOBJECT TYPE STRING,
FUNDSCENTER TYPE STRING,
SETTLEMENTREFERENCEDATE TYPE STRING,
ISSALESRELATED TYPE STRING,
POSTINGDATE TYPE STRING,
ACCOUNTINGDOCUMENTCATEGORY TYPE STRING,
FISCALPERIOD TYPE STRING,
DOCUMENTDATE TYPE STRING,
ACCOUNTINGDOCUMENTTYPE TYPE STRING,
TRANSACTIONCURRENCY TYPE STRING,
PLANNEDAMTINTRANSACTIONCRCY TYPE STRING,
NETDUEDATE TYPE STRING,
CASHDISCOUNT1DUEDATE TYPE STRING,
SOURCECOMPANYCODE TYPE STRING,
DOCUMENTREFERENCEID TYPE STRING,
ACCOUNTINGDOCUMENTCREATIONDATE TYPE STRING,
ACCOUNTINGDOCCREATEDBYUSER TYPE STRING,
ADDITIONALCURRENCY1 TYPE STRING,
ADDITIONALCURRENCY2 TYPE STRING,
FUNCTIONALCURRENCY TYPE STRING,
TAXBASEAMOUNTINCOCODECRCY TYPE STRING,
TAXAMOUNTINCOCODECRCY TYPE STRING,
OFFSETTINGACCOUNT TYPE STRING,
OFFSETTINGACCOUNTTYPE TYPE STRING,
ACCTGDOCTYPEAUTHORIZATIONGROUP TYPE STRING,
HWBASSTE TYPE STRING,
ITEM_TYPE_BRANCH TYPE STRING,
DPNOTDUE TYPE STRING,
DOCUMENTISARCHIVED TYPE STRING,
TARGETTAXCODE TYPE STRING,
KEYDATE TYPE STRING,
TOTAL_AMOUNT_TAX TYPE STRING,
COMPANYCODECURRENCY TYPE STRING,
BPBANKACCOUNTINTERNALID TYPE STRING,
HOUSEBANK TYPE STRING,
HOUSEBANKACCOUNT TYPE STRING,
RECEIVABLEALTERNATIVEPAYER TYPE STRING,
ALTERNATIVEPAYERISALLOWED TYPE STRING,
CUSTOMERSEARCHTEXT TYPE STRING,
CUSTOMERNAME TYPE STRING,
CUSTOMERCREATEDBYUSER TYPE STRING,
CUSTOMERCREATIONDATE TYPE STRING,
CUSTOMERACCOUNTGROUP TYPE STRING,
CUSTOMERVATREGISTRATION TYPE STRING,
CUSTOMERINDUSTRY TYPE STRING,
DELIVERYISBLOCKEDFORCUSTOMER TYPE STRING,
POSTINGISBLOCKEDFORCUSTOMER TYPE STRING,
CUSTOMERCORPORATEGROUP TYPE STRING,
CUSTOMERTAXID1 TYPE STRING,
CUSTOMERTAXID2 TYPE STRING,
CUSTOMERTAXID3 TYPE STRING,
CUSTOMERTAXID4 TYPE STRING,
CUSTOMERTAXID5 TYPE STRING,
CUSTOMERTAXJURISDICTION TYPE STRING,
CUSTOMERISONETIMEACCOUNT TYPE STRING,
CUSTOMERCOUNTRY TYPE STRING,
CUSTOMERCITYNAME TYPE STRING,
CUSTOMERPOBOX TYPE STRING,
CUSTOMERPOBOXPOSTALCODE TYPE STRING,
CUSTOMERPOSTALCODE TYPE STRING,
CUSTOMERREGION TYPE STRING,
CUSTOMERCITYCODE TYPE STRING,
CUSTOMERCOUNTY TYPE STRING,
ACCOUNTINGCLERK TYPE STRING,
RECONCILIATIONACCOUNT TYPE STRING,
INTERESTCALCULATIONCODE TYPE STRING,
CUSTOMERHEADOFFICE TYPE STRING,
ALTERNATIVEPAYERACCOUNT TYPE STRING,
CUSTOMERPAYMENTBLOCKINGREASON TYPE STRING,
INTERESTCALCULATIONDATE TYPE STRING,
INTRSTCALCFREQUENCYINMONTHS TYPE STRING,
APARTOLERANCEGROUP TYPE STRING,
ITEMISTOBEPAIDSEPARATELY TYPE STRING,
PAYTADVICEISSENTBYEDI TYPE STRING,
CUSTOMERACCOUNTNOTE TYPE STRING,
CUSTOMERBASICAUTHORIZATIONGRP TYPE STRING,
CUSTOMERFINSAUTHORIZATIONGRP TYPE STRING,
COMPANYCODENAME TYPE STRING,
ISDISPUTED TYPE STRING,
CUSTOMERSUPPLIERACCOUNT TYPE STRING,
INVOICEREFERENCE TYPE STRING,
FISCALYEARPERIOD TYPE STRING,
ISCLEARED TYPE STRING,
NET_GROSS_RATIO TYPE STRING,
CREDITCONTROLAREA TYPE STRING,
NETDUEARREARSDAYS TYPE STRING,
CASHDISCOUNT1ARREARSDAYS TYPE STRING,
ZFBDT_TODAY TYPE STRING,
VALUATEDAMTINCOMPANYCODECRCY TYPE STRING,
VALUATEDAMTINADDITIONALCRCY1 TYPE STRING,
VALUATEDAMTINADDITIONALCRCY2 TYPE STRING,
DUEITEMTYPE TYPE STRING,
CASEID TYPE STRING,
DISPUTECASEPRIORITY TYPE STRING,
DISPUTECASEPRIORITYNAME TYPE STRING,
DISPUTECASETITLE TYPE STRING,
DISPUTECASEREASON TYPE STRING,
DISPUTECASEREASONNAME TYPE STRING,
DISPUTECASESTATUS TYPE STRING,
DISPUTECASESTATUSNAME TYPE STRING,
DISPUTECASEPROCESSOR TYPE STRING,
DISPUTECASEPROCESSORFULLNAME TYPE STRING,
DISPUTECASEUUID TYPE STRING,
CREDITOR TYPE STRING,
ADDITIONALCURRENCY1ROLE TYPE STRING,
ADDITIONALCURRENCY2ROLE TYPE STRING,
BRANCHCODE TYPE STRING,
REFERENCEDOCUMENTTYPE TYPE STRING,
ORIGINALREFERENCEDOCUMENT TYPE STRING,
REFERENCEDOCUMENTLOGICALSYSTEM TYPE STRING,END OF T_EKKO_STR. DATA: WA_PARLINEITEM1_STR type T_EKKO_STR. DATA: ld_text TYPE string. LOOP AT IT_EKKO INTO WA_EKKO. MOVE-CORRESPONDING wa_EKKO TO WA_EKKO_STR. CONCATENATE: sy-vline
WA_PARLINEITEM1_STR-MANDT sy-vline
WA_PARLINEITEM1_STR-COMPANYCODE sy-vline
WA_PARLINEITEM1_STR-ACCOUNTINGDOCUMENT sy-vline
WA_PARLINEITEM1_STR-FISCALYEAR sy-vline
WA_PARLINEITEM1_STR-ACCOUNTINGDOCUMENTITEM sy-vline
WA_PARLINEITEM1_STR-LANGUAGE sy-vline
WA_PARLINEITEM1_STR-KEYDT2 sy-vline
WA_PARLINEITEM1_STR-PAYMENTDIFFERENCEREASON sy-vline
WA_PARLINEITEM1_STR-DEBTOR sy-vline
WA_PARLINEITEM1_STR-CLEARINGDATE sy-vline
WA_PARLINEITEM1_STR-CLEARINGDOCFISCALYEAR sy-vline
WA_PARLINEITEM1_STR-CLEARINGACCOUNTINGDOCUMENT sy-vline
WA_PARLINEITEM1_STR-POSTINGKEY sy-vline
WA_PARLINEITEM1_STR-FINANCIALACCOUNTTYPE sy-vline
WA_PARLINEITEM1_STR-SPECIALGLCODE sy-vline
WA_PARLINEITEM1_STR-SPECIALGLTRANSACTIONTYPE sy-vline
WA_PARLINEITEM1_STR-DEBITCREDITCODE sy-vline
WA_PARLINEITEM1_STR-BUSINESSAREA sy-vline
WA_PARLINEITEM1_STR-TAXCODE sy-vline
WA_PARLINEITEM1_STR-TAXCOUNTRY sy-vline
WA_PARLINEITEM1_STR-TAXREPORTINGDATE sy-vline
WA_PARLINEITEM1_STR-ALTERNATIVEGLACCOUNT sy-vline
WA_PARLINEITEM1_STR-AMOUNTINCOMPANYCODECURRENCY sy-vline
WA_PARLINEITEM1_STR-AMOUNTINTRANSACTIONCURRENCY sy-vline
WA_PARLINEITEM1_STR-AMOUNTINBALANCETRANSACCRCY sy-vline
WA_PARLINEITEM1_STR-BALANCETRANSACTIONCURRENCY sy-vline
WA_PARLINEITEM1_STR-WITHHOLDINGTAXBASEAMOUNT sy-vline
WA_PARLINEITEM1_STR-VALUATIONDIFFAMTINCOCODECRCY sy-vline
WA_PARLINEITEM1_STR-VALUATIONDIFFAMTINADDLCRCY1 sy-vline
WA_PARLINEITEM1_STR-VALUEDATE sy-vline
WA_PARLINEITEM1_STR-ASSIGNMENTREFERENCE sy-vline
WA_PARLINEITEM1_STR-DOCUMENTITEMTEXT sy-vline
WA_PARLINEITEM1_STR-PARTNERCOMPANY sy-vline
WA_PARLINEITEM1_STR-COSTCENTER sy-vline
WA_PARLINEITEM1_STR-ORDERID sy-vline
WA_PARLINEITEM1_STR-BILLINGDOCUMENT sy-vline
WA_PARLINEITEM1_STR-SALESDOCUMENT sy-vline
WA_PARLINEITEM1_STR-SALESDOCUMENTITEM sy-vline
WA_PARLINEITEM1_STR-SCHEDULELINE sy-vline
WA_PARLINEITEM1_STR-MASTERFIXEDASSET sy-vline
WA_PARLINEITEM1_STR-FIXEDASSET sy-vline
WA_PARLINEITEM1_STR-ISUSEDINPAYMENTTRANSACTION sy-vline
WA_PARLINEITEM1_STR-GLACCOUNT sy-vline
WA_PARLINEITEM1_STR-BRANCH sy-vline
WA_PARLINEITEM1_STR-DUECALCULATIONBASEDATE sy-vline
WA_PARLINEITEM1_STR-PAYMENTTERMS sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNT1DAYS sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNT2DAYS sy-vline
WA_PARLINEITEM1_STR-NETPAYMENTDAYS sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNT1PERCENT sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNT2PERCENT sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNTBASEAMOUNT sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNTAMTINCOCODECRCY sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNTAMOUNT sy-vline
WA_PARLINEITEM1_STR-PAYMENTMETHOD sy-vline
WA_PARLINEITEM1_STR-PAYMENTBLOCKINGREASON sy-vline
WA_PARLINEITEM1_STR-FIXEDCASHDISCOUNT sy-vline
WA_PARLINEITEM1_STR-FOLLOWONDOCUMENTTYPE sy-vline
WA_PARLINEITEM1_STR-STATECENTRALBANKPAYMENTREASON sy-vline
WA_PARLINEITEM1_STR-SUPPLYINGCOUNTRY sy-vline
WA_PARLINEITEM1_STR-INVOICELIST sy-vline
WA_PARLINEITEM1_STR-BILLOFEXCHANGEUSAGE sy-vline
WA_PARLINEITEM1_STR-DUNNINGKEY sy-vline
WA_PARLINEITEM1_STR-DUNNINGBLOCKINGREASON sy-vline
WA_PARLINEITEM1_STR-LASTDUNNINGDATE sy-vline
WA_PARLINEITEM1_STR-DUNNINGLEVEL sy-vline
WA_PARLINEITEM1_STR-DUNNINGAREA sy-vline
WA_PARLINEITEM1_STR-WITHHOLDINGTAXAMOUNT sy-vline
WA_PARLINEITEM1_STR-WITHHOLDINGTAXEXEMPTIONAMT sy-vline
WA_PARLINEITEM1_STR-PLANT sy-vline
WA_PARLINEITEM1_STR-PURCHASINGDOCUMENT sy-vline
WA_PARLINEITEM1_STR-PURCHASINGDOCUMENTITEM sy-vline
WA_PARLINEITEM1_STR-PROFITCENTER sy-vline
WA_PARLINEITEM1_STR-TREASURYCONTRACTTYPE sy-vline
WA_PARLINEITEM1_STR-ASSETCONTRACT sy-vline
WA_PARLINEITEM1_STR-CASHFLOWTYPE sy-vline
WA_PARLINEITEM1_STR-WBSELEMENT sy-vline
WA_PARLINEITEM1_STR-AMOUNTINADDITIONALCURRENCY1 sy-vline
WA_PARLINEITEM1_STR-AMOUNTINADDITIONALCURRENCY2 sy-vline
WA_PARLINEITEM1_STR-AMOUNTINFUNCTIONALCURRENCY sy-vline
WA_PARLINEITEM1_STR-VALUATIONDIFFAMTINADDLCRCY2 sy-vline
WA_PARLINEITEM1_STR-CLEARINGISREVERSED sy-vline
WA_PARLINEITEM1_STR-PAYMENTMETHODSUPPLEMENT sy-vline
WA_PARLINEITEM1_STR-REFERENCE1IDBYBUSINESSPARTNER sy-vline
WA_PARLINEITEM1_STR-REFERENCE2IDBYBUSINESSPARTNER sy-vline
WA_PARLINEITEM1_STR-PAYMENTCARDITEM sy-vline
WA_PARLINEITEM1_STR-PAYMENTCARDPAYMENTSETTLEMENT sy-vline
WA_PARLINEITEM1_STR-REFERENCE3IDBYBUSINESSPARTNER sy-vline
WA_PARLINEITEM1_STR-DATAEXCHANGEINSTRUCTION1 sy-vline
WA_PARLINEITEM1_STR-DATAEXCHANGEINSTRUCTION2 sy-vline
WA_PARLINEITEM1_STR-DATAEXCHANGEINSTRUCTION3 sy-vline
WA_PARLINEITEM1_STR-DATAEXCHANGEINSTRUCTION4 sy-vline
WA_PARLINEITEM1_STR-HASPAYMENTORDER sy-vline
WA_PARLINEITEM1_STR-PAYMENTREFERENCE sy-vline
WA_PARLINEITEM1_STR-HEDGEDAMOUNT sy-vline
WA_PARLINEITEM1_STR-PAYMENTCURRENCY sy-vline
WA_PARLINEITEM1_STR-AMOUNTINPAYMENTCURRENCY sy-vline
WA_PARLINEITEM1_STR-BUSINESSPLACE sy-vline
WA_PARLINEITEM1_STR-TAXSECTION sy-vline
WA_PARLINEITEM1_STR-ACCOUNTSRECEIVABLEISPLEDGED sy-vline
WA_PARLINEITEM1_STR-REALESTATEOBJECT sy-vline
WA_PARLINEITEM1_STR-FUNDSCENTER sy-vline
WA_PARLINEITEM1_STR-SETTLEMENTREFERENCEDATE sy-vline
WA_PARLINEITEM1_STR-ISSALESRELATED sy-vline
WA_PARLINEITEM1_STR-POSTINGDATE sy-vline
WA_PARLINEITEM1_STR-ACCOUNTINGDOCUMENTCATEGORY sy-vline
WA_PARLINEITEM1_STR-FISCALPERIOD sy-vline
WA_PARLINEITEM1_STR-DOCUMENTDATE sy-vline
WA_PARLINEITEM1_STR-ACCOUNTINGDOCUMENTTYPE sy-vline
WA_PARLINEITEM1_STR-TRANSACTIONCURRENCY sy-vline
WA_PARLINEITEM1_STR-PLANNEDAMTINTRANSACTIONCRCY sy-vline
WA_PARLINEITEM1_STR-NETDUEDATE sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNT1DUEDATE sy-vline
WA_PARLINEITEM1_STR-SOURCECOMPANYCODE sy-vline
WA_PARLINEITEM1_STR-DOCUMENTREFERENCEID sy-vline
WA_PARLINEITEM1_STR-ACCOUNTINGDOCUMENTCREATIONDATE sy-vline
WA_PARLINEITEM1_STR-ACCOUNTINGDOCCREATEDBYUSER sy-vline
WA_PARLINEITEM1_STR-ADDITIONALCURRENCY1 sy-vline
WA_PARLINEITEM1_STR-ADDITIONALCURRENCY2 sy-vline
WA_PARLINEITEM1_STR-FUNCTIONALCURRENCY sy-vline
WA_PARLINEITEM1_STR-TAXBASEAMOUNTINCOCODECRCY sy-vline
WA_PARLINEITEM1_STR-TAXAMOUNTINCOCODECRCY sy-vline
WA_PARLINEITEM1_STR-OFFSETTINGACCOUNT sy-vline
WA_PARLINEITEM1_STR-OFFSETTINGACCOUNTTYPE sy-vline
WA_PARLINEITEM1_STR-ACCTGDOCTYPEAUTHORIZATIONGROUP sy-vline
WA_PARLINEITEM1_STR-HWBASSTE sy-vline
WA_PARLINEITEM1_STR-ITEM_TYPE_BRANCH sy-vline
WA_PARLINEITEM1_STR-DPNOTDUE sy-vline
WA_PARLINEITEM1_STR-DOCUMENTISARCHIVED sy-vline
WA_PARLINEITEM1_STR-TARGETTAXCODE sy-vline
WA_PARLINEITEM1_STR-KEYDATE sy-vline
WA_PARLINEITEM1_STR-TOTAL_AMOUNT_TAX sy-vline
WA_PARLINEITEM1_STR-COMPANYCODECURRENCY sy-vline
WA_PARLINEITEM1_STR-BPBANKACCOUNTINTERNALID sy-vline
WA_PARLINEITEM1_STR-HOUSEBANK sy-vline
WA_PARLINEITEM1_STR-HOUSEBANKACCOUNT sy-vline
WA_PARLINEITEM1_STR-RECEIVABLEALTERNATIVEPAYER sy-vline
WA_PARLINEITEM1_STR-ALTERNATIVEPAYERISALLOWED sy-vline
WA_PARLINEITEM1_STR-CUSTOMERSEARCHTEXT sy-vline
WA_PARLINEITEM1_STR-CUSTOMERNAME sy-vline
WA_PARLINEITEM1_STR-CUSTOMERCREATEDBYUSER sy-vline
WA_PARLINEITEM1_STR-CUSTOMERCREATIONDATE sy-vline
WA_PARLINEITEM1_STR-CUSTOMERACCOUNTGROUP sy-vline
WA_PARLINEITEM1_STR-CUSTOMERVATREGISTRATION sy-vline
WA_PARLINEITEM1_STR-CUSTOMERINDUSTRY sy-vline
WA_PARLINEITEM1_STR-DELIVERYISBLOCKEDFORCUSTOMER sy-vline
WA_PARLINEITEM1_STR-POSTINGISBLOCKEDFORCUSTOMER sy-vline
WA_PARLINEITEM1_STR-CUSTOMERCORPORATEGROUP sy-vline
WA_PARLINEITEM1_STR-CUSTOMERTAXID1 sy-vline
WA_PARLINEITEM1_STR-CUSTOMERTAXID2 sy-vline
WA_PARLINEITEM1_STR-CUSTOMERTAXID3 sy-vline
WA_PARLINEITEM1_STR-CUSTOMERTAXID4 sy-vline
WA_PARLINEITEM1_STR-CUSTOMERTAXID5 sy-vline
WA_PARLINEITEM1_STR-CUSTOMERTAXJURISDICTION sy-vline
WA_PARLINEITEM1_STR-CUSTOMERISONETIMEACCOUNT sy-vline
WA_PARLINEITEM1_STR-CUSTOMERCOUNTRY sy-vline
WA_PARLINEITEM1_STR-CUSTOMERCITYNAME sy-vline
WA_PARLINEITEM1_STR-CUSTOMERPOBOX sy-vline
WA_PARLINEITEM1_STR-CUSTOMERPOBOXPOSTALCODE sy-vline
WA_PARLINEITEM1_STR-CUSTOMERPOSTALCODE sy-vline
WA_PARLINEITEM1_STR-CUSTOMERREGION sy-vline
WA_PARLINEITEM1_STR-CUSTOMERCITYCODE sy-vline
WA_PARLINEITEM1_STR-CUSTOMERCOUNTY sy-vline
WA_PARLINEITEM1_STR-ACCOUNTINGCLERK sy-vline
WA_PARLINEITEM1_STR-RECONCILIATIONACCOUNT sy-vline
WA_PARLINEITEM1_STR-INTERESTCALCULATIONCODE sy-vline
WA_PARLINEITEM1_STR-CUSTOMERHEADOFFICE sy-vline
WA_PARLINEITEM1_STR-ALTERNATIVEPAYERACCOUNT sy-vline
WA_PARLINEITEM1_STR-CUSTOMERPAYMENTBLOCKINGREASON sy-vline
WA_PARLINEITEM1_STR-INTERESTCALCULATIONDATE sy-vline
WA_PARLINEITEM1_STR-INTRSTCALCFREQUENCYINMONTHS sy-vline
WA_PARLINEITEM1_STR-APARTOLERANCEGROUP sy-vline
WA_PARLINEITEM1_STR-ITEMISTOBEPAIDSEPARATELY sy-vline
WA_PARLINEITEM1_STR-PAYTADVICEISSENTBYEDI sy-vline
WA_PARLINEITEM1_STR-CUSTOMERACCOUNTNOTE sy-vline
WA_PARLINEITEM1_STR-CUSTOMERBASICAUTHORIZATIONGRP sy-vline
WA_PARLINEITEM1_STR-CUSTOMERFINSAUTHORIZATIONGRP sy-vline
WA_PARLINEITEM1_STR-COMPANYCODENAME sy-vline
WA_PARLINEITEM1_STR-ISDISPUTED sy-vline
WA_PARLINEITEM1_STR-CUSTOMERSUPPLIERACCOUNT sy-vline
WA_PARLINEITEM1_STR-INVOICEREFERENCE sy-vline
WA_PARLINEITEM1_STR-FISCALYEARPERIOD sy-vline
WA_PARLINEITEM1_STR-ISCLEARED sy-vline
WA_PARLINEITEM1_STR-NET_GROSS_RATIO sy-vline
WA_PARLINEITEM1_STR-CREDITCONTROLAREA sy-vline
WA_PARLINEITEM1_STR-NETDUEARREARSDAYS sy-vline
WA_PARLINEITEM1_STR-CASHDISCOUNT1ARREARSDAYS sy-vline
WA_PARLINEITEM1_STR-ZFBDT_TODAY sy-vline
WA_PARLINEITEM1_STR-VALUATEDAMTINCOMPANYCODECRCY sy-vline
WA_PARLINEITEM1_STR-VALUATEDAMTINADDITIONALCRCY1 sy-vline
WA_PARLINEITEM1_STR-VALUATEDAMTINADDITIONALCRCY2 sy-vline
WA_PARLINEITEM1_STR-DUEITEMTYPE sy-vline
WA_PARLINEITEM1_STR-CASEID sy-vline
WA_PARLINEITEM1_STR-DISPUTECASEPRIORITY sy-vline
WA_PARLINEITEM1_STR-DISPUTECASEPRIORITYNAME sy-vline
WA_PARLINEITEM1_STR-DISPUTECASETITLE sy-vline
WA_PARLINEITEM1_STR-DISPUTECASEREASON sy-vline
WA_PARLINEITEM1_STR-DISPUTECASEREASONNAME sy-vline
WA_PARLINEITEM1_STR-DISPUTECASESTATUS sy-vline
WA_PARLINEITEM1_STR-DISPUTECASESTATUSNAME sy-vline
WA_PARLINEITEM1_STR-DISPUTECASEPROCESSOR sy-vline
WA_PARLINEITEM1_STR-DISPUTECASEPROCESSORFULLNAME sy-vline
WA_PARLINEITEM1_STR-DISPUTECASEUUID sy-vline
WA_PARLINEITEM1_STR-CREDITOR sy-vline
WA_PARLINEITEM1_STR-ADDITIONALCURRENCY1ROLE sy-vline
WA_PARLINEITEM1_STR-ADDITIONALCURRENCY2ROLE sy-vline
WA_PARLINEITEM1_STR-BRANCHCODE sy-vline
WA_PARLINEITEM1_STR-REFERENCEDOCUMENTTYPE sy-vline
WA_PARLINEITEM1_STR-ORIGINALREFERENCEDOCUMENT sy-vline
WA_PARLINEITEM1_STR-REFERENCEDOCUMENTLOGICALSYSTEM sy-vline INTO ld_text SEPARATED BY SPACE. *Add any further fields from structure WA_EKKO_STR you want to CONCATENATE... ENDLOOP. ENDFORM.