Daily & Monthly Backlog Reports and Printing program

•     <b>Labeling program for Deliveries</b>: This program picks all deliveries created/updated on the current day, validates them by checking whether they have the required labeling information. If the program finds that the labeling information is missing, it populates WMS structures (header & detail) for further.
•     <b>Daily & Monthly Backlog Reports and Printing program</b>: This program calls 2 separate reports (Daily & Qtrly. Backlog Reports), based on user selection, and directly prints the reports as well as converts them to PDF format and emails them as attachments to the MD.
          Please provide me the solution.

For First program :
Use table LIKP (SD Document: Delivery Header Data) & LIPS(item Data) for fetch inf all the data for selected date use field ERZET(Entry time) & ERDAT(Date creation of record) for created deliveries & refer TABLES - CDPOS and CDHDR for modified deliveries
For Second object:
Call multiple programs by using SUBMIT <program> with selection screen params.
Print as per requirement by passing print parameters to Structure PRI_PARAMS &
   call function 'GET_PRINT_PARAMETERS'                     
   exporting destination = liprintr                         
             mode        = 'CURRENT'                        
             no_dialog   = 'X'                              
   importing out_parameters = pri_params.                       
*To Convert ABAP List and SAP Script to PDF files use program - "RSTXPDFT4"
ALSO REFER this nice weblog >
/people/erwan.lebrun/blog/2007/04/16/tips-tricks-email-fax-through-the-same-output-type
Hope it will help.
Vishal
Message was edited by:
        Vishal Tyagi

Similar Messages

  • Standard samrtforms and print program for  Bill of Lading in delivery

    Is there a standard smartform  and print program for  Bill of Lading for delivery?

    Hi
    Check this:
    Print Program: RLE_DELNOTE.
    Smartform:   LE_SHP_DELNOTE.
    Regards,
    Vishwa.

  • Require details or list of seeded reports and import programs in fusion HCM

    Hello All,
    Kindly provide me the list of seeded reports and Import programs available in Oracle Fusion HCM .
    Regards,
    S Rao

    Please raise a SR

  • Standard smartform and print program for sales document

    HI All,
    Is there a standard smartform and print program for sales document or sales order. If someone has worked with it do reply.

    Hi Shashank,
    What exactly you would like to print for Sales Orders in Smartforms..?
    regards,
    Ram.

  • Will this SB1 reporting and printing forum will override the B1 forum ?

    Hi All,
    Will this SB1 reporting and printing forum will override the B1 forum ? If not, it means that the B1 will be purely the application or functional such as query FMS, store procedure or any work around.
    Rgds,

    Hello Jimmy,
    There is today a demand for a forum relating to printing and reporting for SAP Business One. We have taken the strategy to go for functional forums like this. This forum will in no way replace the main Business One forum, it is intended to compliment it. As we move further into the forums and as we reach ceilings in forums we will break them down into further functional forums such as this. There is a lot of threads relating to printing and reporting and Crystal Reports so we created this thread. I know you are a large contributor and hope that you can share your knowledge to these new forums.
    Regards,
    Paul Finneran
    SAP Business One Forums Team

  • Develop a form and print program using VBAP, VBAK, MRKT.

    I have 2 tables VBAK [fields: VBELN, ERDAT, ERNAM, AUDAT, VBTYP, VKORG] and VBAP [Fields: POSNR, MATNR, CHARG, WAERK] and In output(form) i need the following fields,
    Output table:
    -VBELN
    -ERDAT
    -VKORG
    -POSNR
    -MATNR
    -MAKTX <- this field is from table MAKT. (I need the Material descriptions too for all the materials.)
    Form Layout should have Header, Logo (SAP ENJOY), Main, Footer.
    Problem is that i need footer only after the End of Complete data in Main Window, thats is footer should be placed only in last window. How should i do that ?
    Logic which i thot to make the print program is : First declare an internal table itab1 with VBAP, VBAP using the above fields from two tables and fetch the product based on matnr.
    declare one internal table itab2 and select the records from the table makt by checking the condition itab1 is not initial.
    sample code.
    IF ITAB1 IS NOT INITIAL.
    SELECT FIELD LIST FROM MAKT INTO TABLE ITAB2 WHERE MATNR EQ ITAB1-MATNR.
    ENDIF.
    hope this shuld work. ?????

    Hi
    see the sample script program and do accordingly
    *& Report  ZTEST12121
    *& SAPScripts Example 1
    REPORT  ztest12121.
    *DATABASE TABLES
    TABLES: ekko,ekpo,lfa1.
    *INTERNAL TABLES AND STRUCTURES
    DATA i_ekko LIKE ekko.
    DATA i_ekpo LIKE ekpo OCCURS 0 WITH HEADER LINE.
    DATA i_lfa1 LIKE lfa1.
    *PARAMETERS
    PARAMETERS: p_ebeln LIKE ekko-ebeln.
    *VARIABLES
    DATA MAT TYPE STRING VALUE 'MAT NO'.
    DATA iTe TYPE STRING VALUE 'ITEM NO'.
    DATA QTY TYPE STRING VALUE 'QTY'.
    DATA UOM TYPE STRING VALUE 'UOM'.
    DATA NET TYPE STRING VALUE 'NET PRICE'.
    Data var type integer value 0.
    *DATABASE SELECTS
    *Header data
    SELECT SINGLE * FROM ekko INTO i_ekko WHERE ekko~ebeln = p_ebeln.
    IF sy-subrc = 0.
    *Item Data
      SELECT * FROM ekpo INTO  TABLE i_ekpo WHERE ekpo~ebeln = p_ebeln.
      IF sy-subrc NE 0.
        WRITE 'PURCHASE DOCUMENT ITEM DATA ERROR'.
      ELSE.
    *Vendor Details
        SELECT SINGLE * FROM lfa1 INTO i_lfa1 WHERE lfa1~lifnr = i_ekko-lifnr.
        IF sy-subrc NE 0.
          WRITE 'VENDOR DOCUMENT ITEM DATA ERROR'.
        ENDIF.
      ENDIF.
    ELSE.
      WRITE 'THIS PURCHASE DOCUMENT NUMBER DOESNOT EXISTS'.
    ENDIF.
    CALL FUNCTION 'OPEN_FORM'
    EXPORTING
      APPLICATION                       = 'TX'
      ARCHIVE_INDEX                     =
      ARCHIVE_PARAMS                    =
      DEVICE                            = 'PRINTER'
      DIALOG                            = 'X'
        form                              = 'ZSCRIPT_1'
        language                          = sy-langu
      OPTIONS                           =
      MAIL_SENDER                       =
      MAIL_RECIPIENT                    =
      MAIL_APPL_OBJECT                  =
      RAW_DATA_INTERFACE                = '*'
      SPONUMIV                          =
    IMPORTING
      LANGUAGE                          =
      NEW_ARCHIVE_PARAMS                =
      RESULT                            =
    EXCEPTIONS
      CANCELED                          = 1
      DEVICE                            = 2
      FORM                              = 3
      OPTIONS                           = 4
      UNCLOSED                          = 5
      MAIL_OPTIONS                      = 6
      ARCHIVE_ERROR                     = 7
      INVALID_FAX_NUMBER                = 8
      MORE_PARAMS_NEEDED_IN_BATCH       = 9
      SPOOL_ERROR                       = 10
      CODEPAGE                          = 11
      OTHERS                            = 12
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
       ELEMENT                        = 'OFFICEAD'
       FUNCTION                       = 'SET'
       TYPE                           = 'BODY'
       WINDOW                         = 'OFFICEAD'
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
       ELEMENT                        = 'PODET'
       FUNCTION                       = 'SET'
       TYPE                           = 'BODY'
       WINDOW                         = 'PODET'
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
       ELEMENT                        = 'TOP'
       FUNCTION                       = 'SET'
       TYPE                           = 'TOP'
       WINDOW                         = 'MAIN'
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP AT I_EKPO.
    var = i_ekpo-netpr * i_ekpo-menge.
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
       ELEMENT                        = 'BODY'
       FUNCTION                       = 'SET'
       TYPE                           = 'BODY'
       WINDOW                         = 'MAIN'
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDLOOP.
    CALL FUNCTION 'CLOSE_FORM'
    IMPORTING
      RESULT                         =
      RDI_RESULT                     =
    TABLES
      OTFDATA                        =
    EXCEPTIONS
      UNOPENED                       = 1
      BAD_PAGEFORMAT_FOR_PRINT       = 2
      SEND_ERROR                     = 3
      SPOOL_ERROR                    = 4
      CODEPAGE                       = 5
      OTHERS                         = 6
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Structure of a print program
    OPEN_FORM function
    CLOSE_FORM function
    WRITE_FORM
    START_FORM function
    END_FORM function
    CONTROL_FORM function
    The print program is used to print forms. The program retieves the necesary data from datbase tables, defines the order of in which text elements are printed, chooses a form for printing and selects an output device and print options.
    Function modules in a printprogram:
    • When you print a form you must used the staments OPEN_FORM and CLOSE_FORM. To combine forms into a single spool request use START_FORM and END_FORM.
    • To print textelements in a form use WRITE_FORM. The order in which the textelements are printed, is determined by the order of the WRITE_FORM statements. Note: for printing lines in the body, you can also use the WRITE_FORM_LINES function module.
    • To transfer control command to a form use CONTROL_FORM.
    Structure of a print program
    Read data
    Tables: xxx.
    SELECT *
    FROM xxx.
    Open form printing - Must be called before working with any of the other form function modules.
    Must be ended with function module CLOSE FORM
    call function 'OPEN_FORM'.....
    To begin several indentical forms containing different data within a single spool request, begin each form using START_FORM, and end it using END_FORM
    call funtion 'START_FORM'.....
    Write text elements to a window of the form
    call function 'WRITE_FORM'.....
    Ends spool request started with START_FORM
    call funtion 'END_FORM'.....
    Closes form printing
    call function 'CLOSE_FORM'...
    OPEN_FORM function
    Syntax:
    CALL FUNCTION 'OPEN_FORM'
    EXPORTING
    APPLICATION = 'TX'
    ARCHIVE_INDEX =
    ARCHIVE_PARAMS =
    DEVICE = 'PRINTER'
    DIALOG = 'X'
    FORM = ' '
    LANGUAGE = SY-LANGU
    OPTIONS =
    MAIL_SENDER =
    MAIL_RECIPIENT =
    MAIL_APPL_OBJECT =
    RAW_DATA_INTERFACE = '*'
    IMPORTING
    LANGUAGE =
    NEW_ARCHIVE_PARAMS =
    RESULT =
    EXCEPTIONS
    CANCELED = 1
    DEVICE = 2
    FORM = 3
    OPTIONS = 4
    UNCLOSED = 5
    MAIL_OPTIONS = 6
    ARCHIVE_ERROR = 7
    INVALID_FAX_NUMBER = 8
    MORE_PARAMS_NEEDED_IN_BATCH = 9
    SPOOL_ERROR = 10
    OTHERS = 11
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Some important parameters:
    FORM Name of the form
    DEVICE • PRINTER : Print output using spool
    • TELEFAX: Fax output
    • SCREEN: Output to screen
    OPTIONS Used to control attrubutes for printing or faxing (Number of copies, immediate output....
    The input for the parameter is structure ITCPO.
    CLOSE_FORM function
    CALL FUNCTION 'CLOSE_FORM'
    IMPORTING
    RESULT =
    RDI_RESULT =
    TABLES
    OTFDATA =
    EXCEPTIONS
    UNOPENED = 1
    BAD_PAGEFORMAT_FOR_PRINT = 2
    SEND_ERROR = 3
    SPOOL_ERROR = 4
    OTHERS = 5
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Paramerters:
    RESULT Returns status information and print/fax parameters after the form has been printed. RESULT is of structure ITCPP.
    WRITE_FORM function
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    ELEMENT = ' '
    FUNCTION = 'SET'
    TYPE = 'BODY'
    WINDOW = 'MAIN'
    IMPORTING
    PENDING_LINES =
    EXCEPTIONS
    ELEMENT = 1
    FUNCTION = 2
    TYPE = 3
    UNOPENED = 4
    UNSTARTED = 5
    WINDOW = 6
    BAD_PAGEFORMAT_FOR_PRINT = 7
    SPOOL_ERROR = 8
    OTHERS = 9
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Some important parameters:
    ELEMENT Specifies which textelement is printed
    WINDOW Specifies which window is printed
    TYPE Specifies the output area of the main window. This can be:
    • TOP - Used for headers
    • BODY
    • BOTTOM - Used for footers
    FUNCTION Specifies whether text is to be appended, replaced or added
    Example of how to use the WRITE_FORM function module together with a script.
    Form layout of the MAIN window
    /E INTRODUCTION
    Dear Customer
    /E ITEM_HEADER
    IH Carrier, Departure
    /E ITEM_LINE
    IL &SBOOK-CARRID&, &SPFLI-DEPTIME&
    /E CLOSING_REMARK
    The print program
    Writing INTRODUCTION
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    ELEMENT = 'INTRODUCTION'
    FUNCTION = 'SET'
    TYPE = 'BODY'
    WINDOW = 'MAIN'
    EXCEPTIONS
    OTHERS = 8
    Writing ITEM_HEADER
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    ELEMENT = 'ITEM_HEADER'
    FUNCTION = 'SET'
    TYPE = 'BODY'
    WINDOW = 'MAIN'
    EXCEPTIONS
    OTHERS = 8
    Set ITEM_HEADER into TOP area of main window for subsequent pages
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    ELEMENT = 'ITEM_HEADER'
    FUNCTION = 'SET'
    TYPE = 'TOP'
    WINDOW = 'MAIN'
    EXCEPTIONS
    OTHERS = 8
    Write ITEM_LINE
    LOOP AT .....
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    ELEMENT = 'ITEM_LINE'
    FUNCTION = 'SET'
    TYPE = 'BODY'
    WINDOW = 'MAIN'
    EXCEPTIONS
    OTHERS = 8.
    ENDLOOP.
    Delete ITEM_HEADER from TOP area of main window
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    ELEMENT = 'ITEM_HEADER'
    FUNCTION = 'DELETE'
    TYPE = 'TOP'
    WINDOW = 'MAIN'
    EXCEPTIONS
    OTHERS = 8
    Print CLOSING_REMARK
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    ELEMENT = 'CLOSING_REMARK'
    FUNCTION = 'SET'
    TYPE = 'BODY'
    WINDOW = 'MAIN'
    EXCEPTIONS
    OTHERS = 8
    START_FORM function
    CALL FUNCTION 'START_FORM'
    EXPORTING
    ARCHIVE_INDEX =
    FORM = ' '
    LANGUAGE = ' '
    STARTPAGE = ' '
    PROGRAM = ' '
    MAIL_APPL_OBJECT =
    IMPORTING
    LANGUAGE =
    EXCEPTIONS
    FORM = 1
    FORMAT = 2
    UNENDED = 3
    UNOPENED = 4
    UNUSED = 5
    SPOOL_ERROR = 6
    OTHERS = 7
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    END_FORM function
    CALL FUNCTION 'END_FORM'
    IMPORTING
    RESULT =
    EXCEPTIONS
    UNOPENED = 1
    BAD_PAGEFORMAT_FOR_PRINT = 2
    SPOOL_ERROR = 3
    OTHERS = 4
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CONTROL_FORM function
    The CONTROL_FORM function module alows you to create SapScript control statements from within an APAB program.
    Syntax:
    CALL FUNCTION 'CONTROL_FORM'
    EXPORTING
    command =
    EXCEPTIONS
    UNOPENED = 1
    UNSTARTED = 2
    OTHERS = 3
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    Example:
    Protecting the text element ITEM_LINE
    CALL FUNCTION 'CONTROL_FORM'
    EXPORTING
    COMMAND = 'PROTECT'.
    CALL FUNCTION 'WRITE_FORM'
    EXPORTING
    TEXELEMENT = 'ITEM_LINE'.
    CALL FUNCTION 'CONTROL_FORM'
    EXPORTING
    COMMAND = 'ENDPROTECT'.
    Regards
    Anji

  • Month view display and print format

    An earlier version of iCal would display (and print) the current month without showing the last few days of the previous month and the first few days of the next month to fill out a week. Is there any way in version 3.0.7 to display and print in this format again?

    testing and testing and testing
    here the newest info
    it is not the letter size. small or caps letters.
    i added a new pdf. here under the bold number you must see "581*LAVENDER". but with reader 9.x it looks like the printer cardridge goes empty.
    i´ll go crazy with this sh... :-)
    thanks
    markus

  • Customer master report and printing

    hi
    pls advice any customer master report and how to print the record. thanks

    Hi,
    Have you tried with Report: MCTA?
    You may add more key figures by F6.
    Also, you may check report: FBL5N
    You may change Layout by Ctrl+F8.
    Hope this may help you.
    Best Regards,
    Amit

  • How to find output type givenSapscript form name and print program name

    Hi  Experts,
           Can anyone tell me how to find the output type of  a sapscript form if the print program name and sapscript form name is 
    known.

    Hi,
    There are two ways:
    1. Use table TNAPR .. Here is table give PGNAM as your print program name and FONAM as form name.. Now the field KSCHL will be the output type assigned to your script.
    2. You can also check the NACE t-code.. In that select a application(Corresponds to your area) -> click on Output types tab -> Here you get list of output type.. You need click on Processing Routine folder to get all other info..

  • Regarding Smartforms and Print Programs in MM

    HI
    ALL
    I need to customise the all  the standard smartforms  Purchase Requisition , Purchase Order,Goods receipt,Goods issue,Goods return in MM .For this I need the standard smartforms and driven programs(Print Programs) for these . send me the smartforms and printprograms for these.
    Regards
    Venkat

    Hi,
      You can goto 'NACE' transaction and select the Required Application then Click on OUTPUT TYPES and select the required Output type and click on PROCESSING ROUTINES.
      In this way you can get the standard Smartforms.
    Hope this may be helpful,
    Regards,
    Sravanthi

  • Output type and print program

    Hi All ,
    How to find the print program and output types used by a particular t-code.
    Thanks in advance
    vinay

    Hi Vinay,
    Generally all the print programs and output types can be referred in Tcode NACE.
    In NACE all the Print Programs and Output types are stored according to there Application.
    _Application_         _Description_
    CF                     Error Control
    CV                     Document Management
    E1                     Inbound Delivery
    EA                     Purchasing RFQ
    EF                     Purchase Order
    EL                     Purch. SchAgrRelease
    V1                     Sales
    V2                     Shipping
    V3                     Billing
    V5                     Groups
    V6                     Handling Units
    V7                     Transport
    For each Application u have output types.
    For an example let u see for Purchase Order (EF)
    In NACE Select EF..........Purchase Order. Now click on Output types Push Button on the Application tool bar.
    Now u can see all the output types related to that Application.
    Output type   Name
    AUFB           Dunning Ord Confirm
    ERIN           Reminder
    MAHN           Dunning
    MAIL           New PO printout
    NEU           New PO printout
    NEUS           New PO printout
    Now Select output type NEU.....New PO printout and Double click on Processing Routines . Here u can see the MEDIUM, FORM, PROGRAM, FORM ROUTINE.
    reward if helpful
    raam

  • Smart forms and print program needed

    Can anyone provide me with the following print programs and smart forms? I can't find it in my SAP. Thanks.
    Print Program:
    /SMB40/M07DR
    Smart Forms:
    /SMB40/MMGR1_A
    /SMB40/MMGR3_A
    /SMB40/MMGI1_A
    Please kindly email me at [email protected]

    Hi
    I appreciate for your sincierty i cant send through mail but i'm sending directly plz copy all the programs
    INCLUDE /SMB40/M07DRTOP.
    PROGRAM /BPR3PF/m07dr MESSAGE-ID m7.
    DATA  lgortsplit LIKE am07m-xselk.
    DATA  ladr LIKE sadr.
    DATA  *ladr LIKE sadr.
    CONSTANTS: a TYPE c VALUE 'A',
               b TYPE c VALUE 'B',
               c TYPE c VALUE 'C',
               d TYPE c VALUE 'D',
               e TYPE c VALUE 'E',
               f TYPE c VALUE 'F',
               g TYPE c VALUE 'G',
               h TYPE c VALUE 'H',
               i TYPE c VALUE 'I',
               j TYPE c VALUE 'J',
               k TYPE c VALUE 'K',
               l TYPE c VALUE 'L',
               m TYPE c VALUE 'M',
               n TYPE c VALUE 'N',
               o TYPE c VALUE 'O',
               p TYPE c VALUE 'P',
               q TYPE c VALUE 'Q',
               r TYPE c VALUE 'R',
               s TYPE c VALUE 'S',
               t TYPE c VALUE 'T',
               u TYPE c VALUE 'U',
               v TYPE c VALUE 'V',
               w TYPE c VALUE 'W',
               x TYPE c VALUE 'X',
               y TYPE c VALUE 'Y',
               z TYPE c VALUE 'Z'.
    CONSTANTS: plus  TYPE c VALUE '+',
               minus TYPE c VALUE '-',
               punkt TYPE c VALUE '.',
               null  TYPE c VALUE '0',
               eins  TYPE c VALUE '1',
               zwei  TYPE c VALUE '2',
               drei  TYPE c VALUE '3',
               vier  TYPE c VALUE '4',
               fuenf TYPE c VALUE '5',
               sechs TYPE c VALUE '6',
              sieben TYPE c VALUE '7',
               acht  TYPE c VALUE '8',
               neun  TYPE c VALUE '9',
               einsi TYPE i VALUE '1',
               zweii TYPE i VALUE '2',
               dreii TYPE i VALUE '3',
               vieri TYPE i VALUE '4',
               nzwei TYPE i VALUE '02',
               ndrei TYPE i VALUE '03'.
    CONSTANTS: actvt01 LIKE tact-actvt VALUE '01',
               actvt02 LIKE tact-actvt VALUE '02',
               actvt03 LIKE tact-actvt VALUE '03',
               actvt04 LIKE tact-actvt VALUE '04',
               actvt06 LIKE tact-actvt VALUE '06',
               actvt65 LIKE tact-actvt VALUE '65',
               actvt70 LIKE tact-actvt VALUE '70'.
    CONSTANTS: maximum     TYPE f VALUE 9999999999999,
               minimum     TYPE f VALUE -9999999999999,
               maximum_gld TYPE f VALUE  99999999999,
               minimum_gld TYPE f VALUE  -99999999999,
               maxvalue LIKE am07m-maxvalue VALUE 9999999999999,
               minvalue LIKE am07m-maxvalue VALUE -9999999999999,
               cnull(18)   TYPE c VALUE '000000000000000000',
               pf02(4)     TYPE c VALUE 'PF02',
               pf15(4)     TYPE c VALUE 'PF15',
               stern       TYPE c VALUE '*',
               doublestar(2) TYPE c VALUE '**',
               underscore  TYPE c VALUE '_',
               slasch      TYPE c VALUE '/',
               dpunkt      TYPE c VALUE ':',
               curtp00     LIKE smbew-curtp VALUE '00', "Transaktionswährung
               curtp10     LIKE smbew-curtp VALUE '10', "ML in Hauswährung
               auto_best   LIKE mseg-ebeln  VALUE '9999999999',
               modulpool   LIKE sy-repid    VALUE 'SAPMM07M'.
    CONSTANTS: BEGIN OF hlp,
                 b(4) TYPE c VALUE 'HLPB',
                 f(4) TYPE c VALUE 'HLPF',
                 g(4) TYPE c VALUE 'HLPG',
                 m(4) TYPE c VALUE 'HLPM',
                 r(4) TYPE c VALUE 'HLPR',
                 v(4) TYPE c VALUE 'HLPV',
               END OF hlp.
                                           "Equates für Alphabet
    TABLES:
       afko,
       aufk,
       itcpo,
       mkpf,
      *mkpf,
       mseg,
      *mseg,
       ekko,
       ekkn,
      *ekko,
      arc_params,
       ekpo,
       ekbe,
       lfa1,
      *lfa1,
       thead,
       toa_dara,
       am07m,
      *am07m,
       t001,
       t001w,
      *t001w,
       t027b,
       t027c,
       t027d,
       t156,
       t156t,
       t157e,
      *t157e,
       t159m,
       t159n,
       t159o,
       t159p,
       t159s,
       t159e,
       t024,
       t024d,
      *t024,
       t064b,
       nast,
      *nast,
      tnapr.
    TABLES: mabdr,
            mtcom,
            mtcor,
            twlad.
    * Reportinterne Daten                                                 *
    *--- Strukturen ------------------------------------------------------*
    DATA: x_protab TYPE c,
          x_bwart TYPE c,
          bwart LIKE mseg-bwart,
          eintraege LIKE sy-tfill,
          anzahl LIKE mseg-weanz,
          anzahl1(7) TYPE n,
          x_kont TYPE c,                   "Mehrfachkontierung
          x_kont1 TYPE c,              "Einfache Kontierung (WE unbewertet)
          x_form TYPE c,
          x_open TYPE c.
    DATA: BEGIN OF jahr,
            jahr(4) TYPE n,
            monat(2) TYPE n,
            tag(2) TYPE n,
          END OF jahr.
    DATA:
       BEGIN OF we,
         version1 VALUE '1',               "Standardversion
         version2 VALUE '2',               "Version mit Prüftext
         version3 VALUE '3',               "WE-Sammelschein
       END OF we,
       BEGIN OF alt,
          matnr LIKE mseg-matnr,
          bwart LIKE mseg-bwart,
          ebeln LIKE mseg-ebeln,
          usnam LIKE mkpf-usnam,
       END OF alt,
       BEGIN OF kunde,
          kdauf LIKE mseg-kdauf,
          kdpos LIKE mseg-kdpos,
          kdein LIKE mseg-kdein,
       END OF kunde,
       BEGIN OF anlage,
          anln1 LIKE mseg-anln1,
          anln2 LIKE mseg-anln2,
       END OF anlage,
       BEGIN OF belpos,
          mblnr LIKE mseg-mblnr,
          zeile LIKE mseg-zeile,
       END OF belpos,
        xskkz,
        xpsty,
        xkdanr    VALUE 'C',
        xkde      VALUE 'E',
        xfert     VALUE 'F',
        xrvkdanr  VALUE 'A',
        xanlage   VALUE 'A',
        xanln1    VALUE 'I',
        xkostl    VALUE 'K',
        xprojn    VALUE 'P',
        xmunbw    VALUE 'M',
        xumlag    VALUE 'U',
        xvbelg    VALUE 'V',
        xnplan    VALUE 'N',
        xkonsi(2) VALUE 'KB',
        xwabel(2) VALUE 'WA',
        xwibel(2) VALUE 'WI',
        xwebel(2) VALUE 'WE',
         xsele,                            "Position selektiert
         xkont,                            "Kontierungswechsel
         xsamm,                            "Sammel-WE-Schein
         xanha.                            "Mehrfachkontierung
    DATA BEGIN OF theader.
            INCLUDE STRUCTURE thead.
    DATA END OF theader.
    *--- Interne Tabellen -------------------------------------------------*
    DATA:
       BEGIN OF dummy OCCURS 0,
         dummy,
       END OF dummy.
    DATA:
       BEGIN OF ausgabe OCCURS 20,
          mblnr LIKE mseg-mblnr,
       END OF ausgabe.
    DATA: BEGIN OF xekkn OCCURS 50.
            INCLUDE STRUCTURE ekkn.
    DATA: END OF xekkn.
    DATA: BEGIN OF xmseg OCCURS 50.
            INCLUDE STRUCTURE mseg.
    DATA: END OF xmseg.
    DATA: BEGIN OF dtext OCCURS 1.
            INCLUDE STRUCTURE tline.
    DATA: END OF dtext.
    DATA: BEGIN OF dktext OCCURS 1.
            INCLUDE STRUCTURE tline.
    DATA: END OF dktext.
    DATA: BEGIN OF dptext OCCURS 1.
            INCLUDE STRUCTURE thead.
    DATA: END OF dptext.
    DATA: BEGIN OF nast_key,
            mblnr LIKE mkpf-mblnr,
            mjahr LIKE mkpf-mjahr,
            zeile LIKE mseg-zeile,
          END OF nast_key.
    DATA: BEGIN OF beltab OCCURS 20.
            INCLUDE STRUCTURE mseg.
    DATA: vgart LIKE mkpf-vgart,
          blart LIKE mkpf-blart,
          blaum LIKE mkpf-blaum,
          bldat LIKE mkpf-bldat,
          budat LIKE mkpf-budat,
          cpudt LIKE mkpf-cpudt,
          cputm LIKE mkpf-cputm,
          aedat LIKE mkpf-aedat,
          usnam LIKE mkpf-usnam,
          tcode LIKE mkpf-tcode,
          xblnr LIKE mkpf-xblnr,
          bktxt LIKE mkpf-bktxt,
          frath LIKE mkpf-frath,
          frbnr LIKE mkpf-frbnr,
          wever LIKE mkpf-wever,
          kzdru LIKE t156-kzdru,
          END OF beltab.
    DATA: BEGIN OF traptab OCCURS 50.
            INCLUDE STRUCTURE mseg.
    DATA:   vgart LIKE mkpf-vgart,
            blart LIKE mkpf-blart,
            blaum LIKE mkpf-blaum,
            bldat LIKE mkpf-bldat,
            budat LIKE mkpf-budat,
            cpudt LIKE mkpf-cpudt,
            cputm LIKE mkpf-cputm,
            aedat LIKE mkpf-aedat,
            usnam LIKE mkpf-usnam,
            tcode LIKE mkpf-tcode,
            xblnr LIKE mkpf-xblnr,
            bktxt LIKE mkpf-bktxt,
            frath LIKE mkpf-frath,
            frbnr LIKE mkpf-frbnr,
            wever LIKE mkpf-wever,
          END OF traptab.
    DATA: BEGIN OF inthead OCCURS 50.
            INCLUDE STRUCTURE thead.
    DATA: END OF inthead.
    DATA: BEGIN OF intline OCCURS 50.
            INCLUDE STRUCTURE tline.
    DATA: END OF intline.
    DATA: BEGIN OF intline1 OCCURS 50.
            INCLUDE STRUCTURE tline.
    DATA: END OF intline1.
    *-------- Hilfsfelder -------------------------------------------------*
    DATA: index_z LIKE sy-tabix,
          drucker LIKE rm07m-ldest,
          old_tdform LIKE t159o-tdform,
          r_werks LIKE t001w-werks,
          r_name1 LIKE t001w-name1,
          x_form3 TYPE c,
          x_nopdest TYPE c,
          language LIKE t001w-spras,
          zaehler_m LIKE sy-tabix,
          edruck  TYPE c.
    DATA: old_mkpf LIKE mkpf-usnam,
          old_budat LIKE mkpf-budat,
          old_cpudt LIKE mkpf-cpudt,
          old_werks LIKE t001w-werks,
          old_name1 LIKE t001w-name1,
          old_mblnr LIKE mkpf-mblnr,
          old_lifnr LIKE ekko-lifnr,
          old_ebeln LIKE ekko-ebeln,
          old_ekgrp LIKE ekko-ekgrp,
          old_reswk LIKE ekko-reswk,
          old_linam LIKE am07m-name1,
          old_lina2 LIKE am07m-name2,
          old_eknam LIKE t024-eknam,
          old_ektel LIKE t024-ektel,
          old_ematn LIKE mseg-ematn,
          old_lfa1  LIKE lfa1,
          old_lgort LIKE mseg-lgort,
          old_ladr LIKE ladr,
          save_mkpf LIKE mkpf-usnam,
          save_budat LIKE mkpf-budat,
          save_cpudt LIKE mkpf-cpudt,
          save_werks LIKE t001w-werks,
          save_name1 LIKE t001w-name1,
          save_mblnr LIKE mkpf-mblnr,
          save_lifnr LIKE ekko-lifnr,
          save_reswk LIKE ekko-reswk,
          save_ebeln LIKE ekko-ebeln,
          save_ekgrp LIKE ekko-ekgrp,
          save_linam LIKE am07m-name1,
          save_lina2 LIKE am07m-name2,
          save_eknam LIKE t024-eknam,
          save_ektel LIKE t024-ektel,
          save_ematn LIKE mseg-ematn,
          save_lfa1  LIKE lfa1,
          save_lgort LIKE mseg-lgort,
          save_ladr LIKE ladr,
          offwhile TYPE c,
          & TYPE c VALUE '&',
          blank TYPE c VALUE ' ',
          fenster(5) TYPE c VALUE 'WIN  ',
          fcount(2) TYPE c,
          text1(21) TYPE c VALUE 'INTLINE-TDLINE+  (  )',
          text2(22) TYPE c VALUE 'INTLINE1-TDLINE+  (  )',
          text5(22) TYPE c VALUE 'INTLINE1-TDLINE+  (  )',
          hifeld1(21) TYPE c VALUE 'INTLINE-TDLINE+  (10)',
          shift(2) TYPE n,
          fpage LIKE sy-pagno,
          xscreen(1) TYPE c,
          retco LIKE sy-subrc,
          mblnr LIKE mkpf-mblnr,
          zeile LIKE mseg-zeile,
          new_page,
          xkopfdr,                         "Kopf bereits gedruckt
          n_vornr LIKE resb-vornr.         "Netzplanvorgang
    INCLUDE /SMB40/M07DRMTA.
    *------Lesen Tabelle T001----------------------------------------------*
    FORM TAB001_LESEN.
      IF NOT T001-BUKRS = MSEG-BUKRS.
        SELECT SINGLE * FROM T001 WHERE BUKRS = MSEG-BUKRS.
      ENDIF.
    ENDFORM.
    *-------Lesen Tabelle T001w--------------------------------------------*
    FORM TAB001W_LESEN.
      IF NOT T001W-WERKS = MSEG-WERKS.
        SELECT SINGLE * FROM T001W WHERE WERKS = MSEG-WERKS.
      ENDIF.
        R_WERKS = T001W-WERKS.
        R_NAME1 = T001W-NAME1.
    * Sprache für Formular aus Kondition, sonst aus Werk
      IF NOT NAST-SPRAS IS INITIAL.
        LANGUAGE = NAST-SPRAS.
      ELSE.
        LANGUAGE = T001W-SPRAS.
      ENDIF.
      SET LANGUAGE LANGUAGE.
    ENDFORM.
    *-------Lesen Tabelle T001w bei Werkswechsel --------------------------*
    FORM TAB001W_LESEN_2.
      IF NOT MSEG-WERKS = T001W-WERKS.
        SELECT SINGLE * FROM T001W WHERE WERKS = MSEG-WERKS.
      ENDIF.
    ENDFORM.
    *--------Lesen Tabelle T156--------------------------------------------*
    FORM TAB156_LESEN.
      IF NOT T156-BWART = MSEG-BWART.
        SELECT SINGLE * FROM T156 WHERE BWART = MSEG-BWART.
      ENDIF.
    ENDFORM.
    *-------Lesen Tabelle T156t--------------------------------------------*
    FORM TAB156T_LESEN.
      SELECT SINGLE * FROM T156T WHERE SPRAS = LANGUAGE
                                 AND   BWART = MSEG-BWART
                                 AND   SOBKZ = MSEG-SOBKZ
                                 AND   KZBEW = MSEG-KZBEW
                                 AND   KZZUG = MSEG-KZZUG
                                 AND   KZVBR = MSEG-KZVBR.
    ENDFORM.
    *------Lesen Tabelle T024----------------------------------------------*
    FORM TAB024_LESEN.
       IF NOT T024-EKGRP = EKKO-EKGRP.
         SELECT SINGLE * FROM T024 WHERE EKGRP = EKKO-EKGRP.
       ENDIF.
    ENDFORM.
    *------Lesen Tabelle T024D---------------------------------------------*
    FORM TAB024D_LESEN.
       SELECT SINGLE * FROM T024D WHERE WERKS = MSEG-WERKS
                                  AND   DISPO = AFKO-DISPO.
    ENDFORM.
    *---------------------- T027B,C lesen ---------------------------------*
    FORM T027_LESEN.
      SELECT SINGLE * FROM T027B WHERE SPRAS = LANGUAGE
                                 AND   EVERS = MSEG-EVERS.
      CHECK NOT MSEG-EVERE IS INITIAL.
      SELECT SINGLE * FROM T027C WHERE EVERS = MSEG-EVERS
                                 AND   EVERE = MSEG-EVERE.
      IF NOT T027C-EVDRK IS INITIAL.
        SELECT SINGLE * FROM T027D WHERE SPRAS = LANGUAGE
                                   AND   EVERS = MSEG-EVERS
                                   AND   EVERE = MSEG-EVERE.
      ENDIF.
    ENDFORM.
    *------------ Lesen der Tabelle T159P Barcode oder Mehrfachdruck ------*
    *----------------------- gewünscht ? ----------------------------------*
    FORM LESEN_T159P.
      IF NOT T159P-TDDEST = NAST-LDEST.
        SELECT SINGLE * FROM T159P WHERE TDDEST = NAST-LDEST.
      ENDIF.
    ENDFORM.
    *&      Form  T064B_LESEN
    *       Lesen Text zur Bestandsart Qualität/Gesperrt bei WE
    FORM T064B_LESEN.
      DATA: BSTAR LIKE T064B-BSTAR.
      CASE MSEG-INSMK.
        WHEN SPACE.
          CLEAR T064B.
          EXIT.
        WHEN F.
          CLEAR T064B.
          EXIT.
        WHEN X.
          BSTAR = ZWEI.
        WHEN ZWEI.
          BSTAR = ZWEI.
        WHEN S.
          BSTAR = VIER.
        WHEN DREI.
          BSTAR = VIER.
      ENDCASE.
      IF NOT T064B-BSTAR = BSTAR.
        SELECT SINGLE * FROM T064B WHERE SPRAS = LANGUAGE
                                   AND   BSTAR = BSTAR.
      ENDIF.
    ENDFORM.                    " T064B_LESEN
    INCLUDE /SMB40/M07DRMMA.
    *---------Material lesen-----------------------------------------------*
    FORM MATERIAL_LESEN.
      CLEAR MTCOM.
      MTCOM-KENNG = 'MABDR'.
      MTCOM-MATNR = MSEG-MATNR.
      MTCOM-WERKS = MSEG-WERKS.
      MTCOM-LGORT = MSEG-LGORT.
      MTCOM-SPRAS = LANGUAGE.
      MTCOM-NOMUS = 'X'.
      CALL FUNCTION 'MATERIAL_LESEN'
           EXPORTING
                SCHLUESSEL = MTCOM
           IMPORTING
                MATDATEN   = MABDR
                RETURN     = MTCOR
           TABLES
                SEQMAT01   = DUMMY.
      IF NOT T156-KZMHD IS INITIAL.
        IF NOT MABDR-MHDLP IS INITIAL.
          IF T001W-VLFKZ = B.              "Zentrale ?
            PERFORM MHD_BERECHNEN.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDFORM.
    *----------------- Mindesthaltbarkeit berechnen  ---------------------*
    FORM MHD_BERECHNEN.
      IF NOT EKPO-MHDRZ IS INITIAL.
        AM07M-MHDAT = MSEG-VFDAT - ( EKPO-MHDRZ * MABDR-MHDLP / 100 ).
      ELSEIF NOT MABDR-MHDRZ IS INITIAL.
        AM07M-MHDAT = MSEG-VFDAT - ( MABDR-MHDRZ * MABDR-MHDLP / 100 ).
      ENDIF.
    ENDFORM.
    *----------------- Prueftext lesen-------------------------------------*
    FORM PRUEFTEXT_LESEN.
      CLEAR  DPTEXT.
      CLEAR  THEADER.
      REFRESH DPTEXT.
      THEADER-TDID             = 'PRUE'.
      THEADER-TDSPRAS          = LANGUAGE.
      THEADER-TDNAME           = MSEG-MATNR.
      THEADER-TDOBJECT         = 'MATERIAL '.
      CALL FUNCTION 'SELECT_TEXT'
           EXPORTING
                ID         = THEADER-TDID
                LANGUAGE   = THEADER-TDSPRAS
                NAME       = THEADER-TDNAME
                OBJECT     = THEADER-TDOBJECT
           IMPORTING
                ENTRIES    = EINTRAEGE
           TABLES
                SELECTIONS = DPTEXT.
    ENDFORM.
    *                Lesen der Herstellerteilenummer                       *
    FORM LESEN_HTN.
      SELECT SINGLE MFRPN FROM MARA
               INTO (AM07M-MFRPN) WHERE MATNR = MSEG-EMATN.
    ENDFORM.
    INCLUDE /SMB40/M07DRMBE.
    *-------------Bestellung lesen-----------------------------------------*
    FORM BESTELLUNG_LESEN."ORDER READING
      DATA: NAME1 LIKE ADDR1_VAL-NAME1.
      DATA: OLD_LIFNR LIKE EKKO-LIFNR.
      CLEAR AM07M-NAME1.
      CLEAR AM07M-NAME2.
      IF EKKO-EBELN NE MSEG-EBELN.
        SELECT SINGLE * FROM EKKO WHERE EBELN = MSEG-EBELN.
      ENDIF.
      SELECT SINGLE * FROM EKPO WHERE EBELN = MSEG-EBELN
                                AND   EBELP = MSEG-EBELP.
    * Purchase order history because of XBLNR read, since from MKPF can
    *deviate
      SELECT SINGLE * FROM EKBE WHERE EBELN = MSEG-EBELN
                                AND   EBELP = MSEG-EBELP
                                AND   VGABE = '1'
                                AND   GJAHR = MSEG-MJAHR
                                AND   BELNR = MSEG-MBLNR
                                AND   BUZEI = MSEG-ZEILE.
      IF NOT SY-SUBRC IS INITIAL.
        CLEAR EKBE.
      ELSE.
        IF NOT EKBE-XBLNR IS INITIAL.
          MKPF-XBLNR = EKBE-XBLNR.
        ENDIF.
      ENDIF.
      CALL FUNCTION 'MM_ADDRESS_GET'
           EXPORTING  I_EKKO    = EKKO
           IMPORTING  E_NAME1   = NAME1
           EXCEPTIONS OTHERS    = 1.
      AM07M-NAME1 = NAME1.
      IF NOT EKKO-LLIEF IS INITIAL.
        OLD_LIFNR = EKKO-LIFNR.
        EKKO-LIFNR = EKKO-LLIEF.
        CALL FUNCTION 'MM_ADDRESS_GET'
             EXPORTING  I_EKKO    = EKKO
             IMPORTING  E_NAME1   = NAME1
             EXCEPTIONS OTHERS    = 1.
        AM07M-NAME2 = NAME1.
        EKKO-LIFNR = OLD_LIFNR.
      ENDIF.
      XPSTY = EKPO-KNTTP.
      CASE XPSTY.
        WHEN B.
          XPSTY = XKDE.
        WHEN D.
          XPSTY = XKDE.
        WHEN G.
          XPSTY = XPROJN.
        WHEN O.
          XPSTY = XPROJN.
        WHEN Q.
          XPSTY = XPROJN.
      ENDCASE.
    ENDFORM.
    *----------Bestelltext lesen, wenn Matnr. = 0--------------------------*
    FORM BESTELLTEXT_LESEN.
       CLEAR:   THEADER,
                THEAD,
                DTEXT.
       REFRESH
                DTEXT.
       THEADER-TDID          = 'F01 '.
       THEADER-TDSPRAS       = EKKO-SPRAS.
       THEADER-TDNAME(10)    = MSEG-EBELN.
       THEADER-TDNAME+10(5)  = MSEG-EBELP.
       THEADER-TDOBJECT      = 'EKPO      '.
       CALL FUNCTION 'READ_TEXT'
          EXPORTING ID          = THEADER-TDID
                    LANGUAGE    = THEADER-TDSPRAS
                    NAME        = THEADER-TDNAME
                    OBJECT      = THEADER-TDOBJECT
         IMPORTING  HEADER      = THEAD
         TABLES     LINES       = DTEXT
         EXCEPTIONS ID          = 1
                    LANGUAGE    = 2
                    NAME        = 3
                    NOT_FOUND   = 4
                    OBJECT      = 5.
    ENDFORM.
    *------------Bestellkopf lesen für WE-Version 2.-----------------------*
    FORM BESTELLKOPF_LESEN.
       CLEAR:   THEADER,
                THEAD,
                DKTEXT.
       REFRESH:
                DKTEXT.
       THEADER-TDID           = 'F01 '.
       THEADER-TDSPRAS        = EKKO-SPRAS.
       THEADER-TDNAME(10)     = MSEG-EBELN.
       THEADER-TDOBJECT       = 'EKKO      '.
       CALL FUNCTION 'READ_TEXT'
          EXPORTING ID        = THEADER-TDID
                    LANGUAGE  = THEADER-TDSPRAS
                    NAME      = THEADER-TDNAME
                    OBJECT    = THEADER-TDOBJECT
         IMPORTING  HEADER    = THEAD
         TABLES     LINES     = DKTEXT
         EXCEPTIONS ID        = 1
                    LANGUAGE  = 2
                    NAME      = 3
                    NOT_FOUND = 4
                    OBJECT    = 5.
    ENDFORM.
    INCLUDE /SMB40/M07DRMFA.
    *------ Auftragskopf lesen --------------------------------------------*
    FORM AUFTRAG_LESEN.
      SELECT SINGLE * FROM AFKO WHERE AUFNR = MSEG-AUFNR.
      IF MSEG-MATNR IS INITIAL.
        SELECT SINGLE * FROM AUFK WHERE AUFNR = MSEG-AUFNR.
        IF NOT SY-SUBRC IS INITIAL.
          MESSAGE E001 WITH 'AUFK' MSEG-AUFNR.
        ELSE.
          MABDR-MAKTX = AUFK-KTEXT.
        ENDIF.
      ENDIF.
    ENDFORM.
    INCLUDE /SMB40/M07DRKON.
    FORM KONTIERUNG_LESEN.
       REFRESH XEKKN. CLEAR XEKKN.
       SELECT * FROM EKKN WHERE EBELN = EKPO-EBELN
                          AND   EBELP = EKPO-EBELP.
         MOVE-CORRESPONDING EKKN TO XEKKN.
         APPEND XEKKN.
    *    x_kont = x.
       ENDSELECT.
       DESCRIBE TABLE XEKKN LINES INDEX_Z.
       IF INDEX_Z GT 1.
         X_KONT = X.
       ELSE.
         X_KONT1 = X.
       ENDIF.
    ENDFORM.
    * Network plan process determine.
    FORM NW_VORGANG_LESEN USING F_AUFPL F_APLZL.
      CALL FUNCTION 'READ_NETWORK_NPLNR_VORNR'
           EXPORTING
                APLZL     = F_APLZL
                AUFPL     = F_AUFPL
           IMPORTING
                VORNR     = N_VORNR
           EXCEPTIONS
                NOT_FOUND = 01.
    ENDFORM.
    *       FORM PSP_CONVERT                                               *
    *       Konvertierung des internen Felds PS_PSP_PNR zur Ausgabe        *
    FORM PSP_CONVERT USING PSPNR LIKE MSEG-PS_PSP_PNR.
      CALL FUNCTION 'CJPN_INTERN_TO_EXTERN_CONV'
           EXPORTING
                INT_NUM = PSPNR
           IMPORTING
                EXT_NUM = AM07M-KONTIERUNG.
    ENDFORM.
    INCLUDE /SMB40/M07DRF01.
    FORM WF01_DRUCK.
       CALL FUNCTION 'START_FORM'
          EXPORTING FORM = TNAPR-FONAM
                LANGUAGE = LANGUAGE.
          BELPOS-MBLNR = MKPF-MBLNR.
          BELPOS-ZEILE = MSEG-ZEILE.
          CONDENSE BELPOS NO-GAPS.
          AM07M-BELPOS = BELPOS.
          IF T156-SHKZG = H.
            AM07M-HDLNE = TEXT-020.
          ELSE.
            AM07M-HDLNE = TEXT-010.
          ENDIF.
          IF NOT T159P-BACOD IS INITIAL.
            CALL FUNCTION 'WRITE_FORM'
                 EXPORTING ELEMENT = 'W1BACOKOPF'.
          ELSE.
             CALL FUNCTION 'WRITE_FORM'
                 EXPORTING ELEMENT = 'W1KOPF'.
          ENDIF.
          IF XPSTY       IS INITIAL.
             IF MSEG-XBLVS IS INITIAL.
                PERFORM WF1_LAGERMATERIAL.             "Lagermaterial
             ELSE.
                PERFORM WF1_LVSMATERIAL.               "LVS-Material
             ENDIF.
          ELSE.
             PERFORM WF1_VERBRAUCHSMATERIAL.
          ENDIF.
       CALL FUNCTION 'END_FORM'.
       PERFORM MKTO_DRUCK.
    ENDFORM.
    *------------ Drucken Lagermaterial ---------------------------------*
    FORM WF1_LAGERMATERIAL.
       CALL FUNCTION 'WRITE_FORM'
          EXPORTING ELEMENT = 'W1LGMAT'.
       IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
         SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                    AND   GRUND = MSEG-GRUND
                                    AND   SPRAS = LANGUAGE.
         CALL FUNCTION 'WRITE_FORM'
              EXPORTING ELEMENT = 'RUELGGRUND'.
       ENDIF.
       CALL FUNCTION 'WRITE_FORM'
            EXPORTING ELEMENT = 'LGAUSST'.
    ENDFORM.
    FORM WF1_LVSMATERIAL.
       CALL FUNCTION 'WRITE_FORM'
          EXPORTING ELEMENT = 'W1LVSMAT'.
       IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
         SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                    AND   GRUND = MSEG-GRUND
                                    AND   SPRAS = LANGUAGE.
         CALL FUNCTION 'WRITE_FORM'
              EXPORTING ELEMENT = 'RUELVSGRUND'.
       ENDIF.
       CALL FUNCTION 'WRITE_FORM'
            EXPORTING ELEMENT = 'LVSAUSST'.
    ENDFORM.
    *-------------Drucken Verbrauchsmaterial------------------------------*
    FORM WF1_VERBRAUCHSMATERIAL.
       CASE XPSTY.
         WHEN XKDANR.                             "Kundenauftrag
           MOVE SPACE TO KUNDE.
           CLEAR AM07M-KOTXT.
           AM07M-KOTXT = TEXT-030.
           KUNDE-KDAUF = MSEG-KDAUF.
           KUNDE-KDPOS = MSEG-KDPOS.
           KUNDE-KDEIN = MSEG-KDEIN.
           MOVE SPACE TO AM07M-KONTIERUNG.
           CONDENSE KUNDE NO-GAPS.
           AM07M-KONTIERUNG = KUNDE.
         WHEN XANLAGE.                            "Anlage
           MOVE SPACE TO ANLAGE.
           CLEAR AM07M-KOTXT.
           AM07M-KOTXT = TEXT-040.
           ANLAGE-ANLN1 = MSEG-ANLN1.
           ANLAGE-ANLN2 = MSEG-ANLN2.
           MOVE SPACE TO AM07M-KONTIERUNG.
           CONDENSE ANLAGE NO-GAPS.
           AM07M-KONTIERUNG = ANLAGE.
         WHEN XKOSTL.                             "Kostenstelle
           CLEAR AM07M-KOTXT.
           AM07M-KOTXT = TEXT-050.
           AM07M-KONTIERUNG = MSEG-KOSTL.
         WHEN XPROJN.                             "Projekt/Netzplan
           CLEAR AM07M-KOTXT.
           IF MSEG-NPLNR IS INITIAL.
             AM07M-KOTXT = TEXT-060.
             PERFORM PSP_CONVERT USING MSEG-PS_PSP_PNR.
           ELSE.
             AM07M-KOTXT = TEXT-061.
             AM07M-KONTIERUNG = MSEG-NPLNR.
             PERFORM NW_VORGANG_LESEN USING MSEG-AUFPL MSEG-APLZL.
             IF NOT N_VORNR IS INITIAL.
               MOVE '/'     TO AM07M-KONTIERUNG+12.
               MOVE N_VORNR TO AM07M-KONTIERUNG+13.
             ENDIF.
           ENDIF.
       ENDCASE.
       CALL FUNCTION 'WRITE_FORM'
         EXPORTING ELEMENT = 'W1VERBRMAT'.
       IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
         SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                    AND   GRUND = MSEG-GRUND
                                    AND   SPRAS = LANGUAGE.
         CALL FUNCTION 'WRITE_FORM'
              EXPORTING ELEMENT = 'RUELVERBRGRUND'.
       ENDIF.
       CALL FUNCTION 'WRITE_FORM'
            EXPORTING ELEMENT = 'VERBRAUSST'.
    ENDFORM.
    INCLUDE /SMB40/M07DRF02.
    FORM WF02_DRUCK.
       T001W-WERKS = R_WERKS.
       T001W-NAME1 = R_NAME1.
       CALL FUNCTION 'START_FORM'
            EXPORTING FORM = TNAPR-FONAM
                  LANGUAGE = LANGUAGE.
       PERFORM PRUEFTEXT_LESEN.
          IF T156-SHKZG = 'H'.           "Kennzeichen Haben ?
            AM07M-HDLNE = TEXT-020.
          ELSE.
            AM07M-HDLNE = TEXT-010.
          ENDIF.
          IF NOT T159P-BACOD IS INITIAL.
            BELPOS-MBLNR = MKPF-MBLNR.
            BELPOS-ZEILE = MSEG-ZEILE.
            CONDENSE BELPOS NO-GAPS.
            AM07M-BELPOS = BELPOS.
            CALL FUNCTION 'WRITE_FORM'
                 EXPORTING ELEMENT = 'WE2BACOKOPF'.
          ELSE.
            CALL FUNCTION 'WRITE_FORM'
                 EXPORTING ELEMENT = 'WE2KOPF'.
          ENDIF.
          IF XPSTY       IS INITIAL.        "Lagermaterial ?
             PERFORM W2_LAGERMATERIAL.
          ELSE.
             PERFORM W2_VERBRAUCHSMATERIAL.
          ENDIF.
       CALL FUNCTION 'END_FORM'.
       PERFORM MKTO_DRUCK.
    ENDFORM.
    *-------------- Lagermaterial WE-Version 2 ---------------------------*
    FORM WF2_LAGERMATERIAL.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING ELEMENT = 'WE2LGMAT'.
      IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
        SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                   AND   GRUND = MSEG-GRUND
                                   AND   SPRAS = LANGUAGE.
        CALL FUNCTION 'WRITE_FORM'
             EXPORTING ELEMENT = 'RUELGGRUND'.
      ENDIF.
        THEAD-TDID     = THEADER-TDID.
        THEAD-TDNAME   = THEADER-TDNAME.
        THEAD-TDOBJECT = THEADER-TDOBJECT.
        THEAD-TDSPRAS  = THEADER-TDSPRAS.
        CALL FUNCTION 'WRITE_FORM'
            EXPORTING ELEMENT = 'PRTXTLGMAT'.
    ENDFORM.
    *------------ Verbrauchsmaterial WE-Version 2 ----------------------*
    FORM WF2_VERBRAUCHSMATERIAL.
        CASE XPSTY.
           WHEN XKDANR.
              MOVE SPACE TO KUNDE.
              CLEAR AM07M-KOTXT.
              AM07M-KOTXT = TEXT-030.
              KUNDE-KDAUF = MSEG-KDAUF.
              KUNDE-KDPOS = MSEG-KDPOS.
              KUNDE-KDEIN = MSEG-KDEIN.
              MOVE SPACE TO AM07M-KONTIERUNG.
              CONDENSE KUNDE NO-GAPS.
              AM07M-KONTIERUNG = KUNDE.
           WHEN XANLAGE.
              MOVE SPACE TO ANLAGE.
              CLEAR AM07M-KOTXT.
              AM07M-KOTXT = TEXT-040.
              ANLAGE-ANLN1 = MSEG-ANLN1.
              ANLAGE-ANLN2 = MSEG-ANLN2.
              MOVE SPACE TO AM07M-KONTIERUNG.
              CONDENSE ANLAGE NO-GAPS.
              AM07M-KONTIERUNG = ANLAGE.
           WHEN XKOSTL.
              CLEAR AM07M-KOTXT.
              AM07M-KOTXT = TEXT-050.
              AM07M-KONTIERUNG = MSEG-KOSTL.
           WHEN XPROJN.
              CLEAR AM07M-KOTXT.
              IF MSEG-NPLNR IS INITIAL.
                AM07M-KOTXT = TEXT-060.
                PERFORM PSP_CONVERT USING MSEG-PS_PSP_PNR.
              ELSE.
                AM07M-KOTXT = TEXT-061.
                AM07M-KONTIERUNG = MSEG-NPLNR.
                PERFORM NW_VORGANG_LESEN USING MSEG-AUFPL MSEG-APLZL.
                IF NOT N_VORNR IS INITIAL.
                  MOVE '/'     TO AM07M-KONTIERUNG+12.
                  MOVE N_VORNR TO AM07M-KONTIERUNG+13.
                ENDIF.
              ENDIF.
        ENDCASE.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING ELEMENT = 'WE2VERBRMAT'.
       IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
         SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                    AND   GRUND = MSEG-GRUND
                                    AND   SPRAS = LANGUAGE.
         CALL FUNCTION 'WRITE_FORM'
              EXPORTING ELEMENT = 'RUEVERBRGRUND'.
       ENDIF.
         THEAD-TDID     = THEADER-TDID.
         THEAD-TDNAME   = THEADER-TDNAME.
         THEAD-TDOBJECT = THEADER-TDOBJECT.
         THEAD-TDSPRAS  = THEADER-TDSPRAS.
         CALL FUNCTION 'WRITE_FORM'
              EXPORTING ELEMENT = 'PRTXTVERBRMAT'.
    ENDFORM.
    INCLUDE /SMB40/M07DRE01.
    FORM WE01_DRUCK.
       T001W-WERKS = R_WERKS.
       T001W-NAME1 = R_NAME1.
    ENDFORM.
    *------------ Drucken Lagermaterial ---------------------------------*
    FORM W1_LAGERMATERIAL.
       CALL FUNCTION 'WRITE_FORM'
          EXPORTING ELEMENT = 'W1LGMAT'.
       IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
         SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                    AND   GRUND = MSEG-GRUND
                                    AND   SPRAS = LANGUAGE.
         CALL FUNCTION 'WRITE_FORM'
              EXPORTING ELEMENT = 'RUELGGRUND'.
       ENDIF.
       CALL FUNCTION 'WRITE_FORM'
            EXPORTING ELEMENT = 'LGAUSST'.
    ENDFORM.
    FORM W1_LVSMATERIAL.
       CALL FUNCTION 'WRITE_FORM'
          EXPORTING ELEMENT = 'W1LVSMAT'.
       IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
         SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                    AND   GRUND = MSEG-GRUND
                                    AND   SPRAS = LANGUAGE.
         CALL FUNCTION 'WRITE_FORM'
              EXPORTING ELEMENT = 'RUELVSGRUND'.
       ENDIF.
       CALL FUNCTION 'WRITE_FORM'
            EXPORTING ELEMENT = 'LVSAUSST'.
    ENDFORM.
    *-------------Drucken Verbrauchsmaterial------------------------------*
    FORM W1_VERBRAUCHSMATERIAL.
       CLEAR: AM07M-KOTXT, AM07M-KONTIERUNG.
       CASE XPSTY.
         WHEN XFERT.                            "Fertigungsauftrag
           AM07M-KOTXT = TEXT-062.
           IF X_KONT1 IS INITIAL.
             AM07M-KONTIERUNG = MSEG-AUFNR.
           ELSE.
             AM07M-KONTIERUNG = EKKN-AUFNR.
           ENDIF.
         WHEN XKDE.                             "Kundeneinzelbest.
           MOVE SPACE TO KUNDE.
           AM07M-KOTXT = TEXT-030.
           IF X_KONT1 IS INITIAL.
             KUNDE-KDAUF = MSEG-KDAUF.
             KUNDE-KDPOS = MSEG-KDPOS.
            ELSE.
             KUNDE-KDAUF = EKKN-VBELN.
             KUNDE-KDPOS = EKKN-VBELP.
            ENDIF.
           MOVE SPACE TO AM07M-KONTIERUNG.
           CONDENSE KUNDE NO-GAPS.
           AM07M-KONTIERUNG = KUNDE.
         WHEN XKDANR.                             "Kundenauftrag
           MOVE SPACE TO KUNDE.
           AM07M-KOTXT = TEXT-030.
           IF X_KONT1 IS INITIAL.
             KUNDE-KDAUF = MSEG-KDAUF.
             KUNDE-KDPOS = MSEG-KDPOS.
             KUNDE-KDEIN = MSEG-KDEIN.
            ELSE.
             KUNDE-KDAUF = EKKN-VBELN.
             KUNDE-KDPOS = EKKN-VBELP.
             KUNDE-KDEIN = EKKN-VETEN.
            ENDIF.
           MOVE SPACE TO AM07M-KONTIERUNG.
           CONDENSE KUNDE NO-GAPS.
           AM07M-KONTIERUNG = KUNDE.
         WHEN XANLAGE.                            "Anlage
           MOVE SPACE TO ANLAGE.
           AM07M-KOTXT = TEXT-040.
           IF X_KONT1 IS INITIAL.
             ANLAGE-ANLN1 = MSEG-ANLN1.
             ANLAGE-ANLN2 = MSEG-ANLN2.
           ELSE.
             ANLAGE-ANLN1 = EKKN-ANLN1.
             ANLAGE-ANLN2 = EKKN-ANLN2.
           ENDIF.
           MOVE SPACE TO AM07M-KONTIERUNG.
           CONDENSE ANLAGE NO-GAPS.
           AM07M-KONTIERUNG = ANLAGE.
         WHEN XKOSTL.                             "Kostenstelle
           AM07M-KOTXT = TEXT-050.
           IF X_KONT1 IS INITIAL.
             AM07M-KONTIERUNG = MSEG-KOSTL.
           ELSE.
             AM07M-KONTIERUNG = EKKN-KOSTL.
           ENDIF.
         WHEN XPROJN.                             "Projekt/Netzplan
           IF X_KONT1 IS INITIAL.
             IF MSEG-NPLNR IS INITIAL.
               AM07M-KOTXT = TEXT-060.
               PERFORM PSP_CONVERT USING MSEG-PS_PSP_PNR.
             ELSE.
               AM07M-KOTXT = TEXT-061.
               AM07M-KONTIERUNG = MSEG-NPLNR.
               PERFORM NW_VORGANG_LESEN USING MSEG-AUFPL MSEG-APLZL.
               IF NOT N_VORNR IS INITIAL.
                 MOVE '/'     TO AM07M-KONTIERUNG+12.
                 MOVE N_VORNR TO AM07M-KONTIERUNG+13.
               ENDIF.
             ENDIF.
           ELSE.
             IF EKKN-NPLNR IS INITIAL.
               AM07M-KOTXT = TEXT-060.
               PERFORM PSP_CONVERT USING EKKN-PS_PSP_PNR.
             ELSE.
               AM07M-KOTXT = TEXT-061.
               AM07M-KONTIERUNG = EKKN-NPLNR.
               PERFORM NW_VORGANG_LESEN USING EKKN-AUFPL EKKN-APLZL.
               IF NOT N_VORNR IS INITIAL.
                 MOVE '/'     TO AM07M-KONTIERUNG+12.
                 MOVE N_VORNR TO AM07M-KONTIERUNG+13.
               ENDIF.
             ENDIF.
           ENDIF.
       ENDCASE.
       CLEAR X_KONT1.
    * User-Exit über Erweiterung MBCF0005
       CALL CUSTOMER-FUNCTION '001'
            EXPORTING
                 I_MKPF  = MKPF
                 I_MSEG  = MSEG
                 I_EKKO  = EKKO
                 I_EKPO  = EKPO
                 I_NAST  = NAST
                 I_TNAPR = TNAPR
            TABLES
                 I_EKKN  = XEKKN
            CHANGING
                 C_AM07M = AM07M
            EXCEPTIONS
                 OTHERS  = 0.
       CALL FUNCTION 'WRITE_FORM'
         EXPORTING ELEMENT = 'W1VERBRMAT'.
       IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
         SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                    AND   GRUND = MSEG-GRUND
                                    AND   SPRAS = LANGUAGE.
         CALL FUNCTION 'WRITE_FORM'
              EXPORTING ELEMENT = 'RUELVERBRGRUND'.
       ENDIF.
       CALL FUNCTION 'WRITE_FORM'
            EXPORTING ELEMENT = 'VERBRAUSST'.
    ENDFORM.
    INCLUDE /SMB40/M07DRE02.
    *       FORM WE02_DRUCK                                               *
    FORM WE02_DRUCK.
      T001W-WERKS = R_WERKS.
      T001W-NAME1 = R_NAME1.
      CALL FUNCTION 'START_FORM'
           EXPORTING
                FORM     = TNAPR-FONAM
                LANGUAGE = LANGUAGE.
      PERFORM PRUEFTEXT_LESEN.
      IF NOT MSEG-VFDAT IS INITIAL.
        AM07M-MHTXT = TEXT-105.
      ENDIF.
      IF NOT AM07M-MHDAT IS INITIAL.
        AM07M-MHZTX = TEXT-106.
      ENDIF.
      IF EKKO-BSART = 'UB'.
        AM07M-LITXT = TEXT-101.
        AM07M-LIBZG = EKKO-RESWK.
      ELSE.
        AM07M-LITXT = TEXT-100.
        AM07M-LIBZG = EKKO-LIFNR.
        IF NOT EKKO-LLIEF IS INITIAL.
          AM07M-LIBZ2 = EKKO-LLIEF.
        ELSE.
          AM07M-LIBZ2 = EKKO-LIFNR.
        ENDIF.
      ENDIF.
      IF T156-SHKZG = 'H'.                 "Kennzeichen Haben ?
        AM07M-HDLNE = TEXT-020.
      ELSE.
        AM07M-HDLNE = TEXT-010.
      ENDIF.
      IF NOT T159P-BACOD IS INITIAL.
        BELPOS-MBLNR = MKPF-MBLNR.
        BELPOS-ZEILE = MSEG-ZEILE.
        CONDENSE BELPOS NO-GAPS.
        AM07M-BELPOS = BELPOS.
        CALL FUNCTION 'WRITE_FORM'
             EXPORTING
                  ELEMENT = 'WE2BACOKOPF'.
      ELSE.
        CALL FUNCTION 'WRITE_FORM'
             EXPORTING
                  ELEMENT = 'WE2KOPF'.
      ENDIF.
      IF XPSTY       IS INITIAL.           "Lagermaterial ?
    * User-Exit über Erweiterung MBCF0005
        CALL CUSTOMER-FUNCTION '001'
             EXPORTING
                  I_MKPF  = MKPF
                  I_MSEG  = MSEG
                  I_EKKO  = EKKO
                  I_EKPO  = EKPO
                  I_NAST  = NAST
                  I_TNAPR = TNAPR
             TABLES
                  I_EKKN  = XEKKN
             CHANGING
                  C_AM07M = AM07M
             EXCEPTIONS
                  OTHERS  = 0.
        IF MSEG-XBLVS IS INITIAL.
           PERFORM W2_LAGERMATERIAL.             "Lagermaterial
        ELSE.
           PERFORM W2_LVSMATERIAL.               "LVS-Material
        ENDIF.
      ELSE.
        PERFORM W2_VERBRAUCHSMATERIAL.
      ENDIF.
      CALL FUNCTION 'END_FORM'.
      PERFORM MKTO_DRUCK.
    ENDFORM.
    *-------------- Lagermaterial WE-Version 2 ---------------------------*
    FORM W2_LAGERMATERIAL.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT = 'WE2LGMAT'.
      IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
        SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                   AND   GRUND = MSEG-GRUND
                                   AND   SPRAS = LANGUAGE.
        CALL FUNCTION 'WRITE_FORM'
             EXPORTING
                  ELEMENT = 'RUELGGRUND'.
      ENDIF.
      THEAD-TDID     = THEADER-TDID.
      THEAD-TDNAME   = THEADER-TDNAME.
      THEAD-TDOBJECT = THEADER-TDOBJECT.
      THEAD-TDSPRAS  = THEADER-TDSPRAS.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT = 'PRTXTLGMAT'.
    ENDFORM.
    *-------------- LVS-Daten     WE-Version 2 ---------------------------*
    FORM W2_LVSMATERIAL.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT = 'W1LVSMAT'.
      IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
        SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                   AND   GRUND = MSEG-GRUND
                                   AND   SPRAS = LANGUAGE.
        CALL FUNCTION 'WRITE_FORM'
             EXPORTING
                  ELEMENT = 'RUELVSGRUND'.
      ENDIF.
      THEAD-TDID     = THEADER-TDID.
      THEAD-TDNAME   = THEADER-TDNAME.
      THEAD-TDOBJECT = THEADER-TDOBJECT.
      THEAD-TDSPRAS  = THEADER-TDSPRAS.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT = 'PRTXTLVSMAT'.
    ENDFORM.
    *------------ Verbrauchsmaterial WE-Version 2 ----------------------*
    FORM W2_VERBRAUCHSMATERIAL.
      CLEAR: AM07M-KOTXT, AM07M-KONTIERUNG.
      CASE XPSTY.
        WHEN XFERT.                        "Fertigungsauftrag
          AM07M-KOTXT = TEXT-062.
          IF X_KONT1 IS INITIAL.
            AM07M-KONTIERUNG = MSEG-AUFNR.
          ELSE.
            AM07M-KONTIERUNG = EKKN-AUFNR.
          ENDIF.
        WHEN XKDE.
          MOVE SPACE TO KUNDE.
          AM07M-KOTXT = TEXT-030.
          IF X_KONT1 IS INITIAL.
            KUNDE-KDAUF = MSEG-KDAUF.
            KUNDE-KDPOS = MSEG-KDPOS.
          ELSE.
            KUNDE-KDAUF = EKKN-VBELN.
            KUNDE-KDPOS = EKKN-VBELP.
          ENDIF.
          MOVE SPACE TO AM07M-KONTIERUNG.
          CONDENSE KUNDE NO-GAPS.
          AM07M-KONTIERUNG = KUNDE.
        WHEN XKDANR.
          MOVE SPACE TO KUNDE.
          AM07M-KOTXT = TEXT-030.
          IF X_KONT1 IS INITIAL.
            KUNDE-KDAUF = MSEG-KDAUF.
            KUNDE-KDPOS = MSEG-KDPOS.
            KUNDE-KDEIN = MSEG-KDEIN.
          ELSE.
            KUNDE-KDAUF = EKKN-VBELN.
            KUNDE-KDPOS = EKKN-VBELP.
            KUNDE-KDEIN = EKKN-VETEN.
          ENDIF.
          MOVE SPACE TO AM07M-KONTIERUNG.
          CONDENSE KUNDE NO-GAPS.
          AM07M-KONTIERUNG = KUNDE.
        WHEN XANLAGE.
          MOVE SPACE TO ANLAGE.
          AM07M-KOTXT = TEXT-040.
          IF X_KONT1 IS INITIAL.
            ANLAGE-ANLN1 = MSEG-ANLN1.
            ANLAGE-ANLN2 = MSEG-ANLN2.
          ELSE.
            ANLAGE-ANLN1 = EKKN-ANLN1.
            ANLAGE-ANLN2 = EKKN-ANLN2.
          ENDIF.
          MOVE SPACE TO AM07M-KONTIERUNG.
          CONDENSE ANLAGE NO-GAPS.
          AM07M-KONTIERUNG = ANLAGE.
        WHEN XKOSTL.
          AM07M-KOTXT = TEXT-050.
          IF X_KONT1 IS INITIAL.
            AM07M-KONTIERUNG = MSEG-KOSTL.
          ELSE.
            AM07M-KONTIERUNG = EKKN-KOSTL.
          ENDIF.
        WHEN XPROJN.
          IF X_KONT1 IS INITIAL.
            IF MSEG-NPLNR IS INITIAL.
              AM07M-KOTXT = TEXT-060.
              PERFORM PSP_CONVERT USING MSEG-PS_PSP_PNR.
            ELSE.
              AM07M-KOTXT = TEXT-061.
              AM07M-KONTIERUNG = MSEG-NPLNR.
              PERFORM NW_VORGANG_LESEN USING MSEG-AUFPL MSEG-APLZL.
              IF NOT N_VORNR IS INITIAL.
                MOVE '/'     TO AM07M-KONTIERUNG+12.
                MOVE N_VORNR TO AM07M-KONTIERUNG+13.
              ENDIF.
            ENDIF.
          ELSE.
            IF EKKN-NPLNR IS INITIAL.
              AM07M-KOTXT = TEXT-060.
              PERFORM PSP_CONVERT USING EKKN-PS_PSP_PNR.
            ELSE.
              AM07M-KOTXT = TEXT-061.
              AM07M-KONTIERUNG = EKKN-NPLNR.
              PERFORM NW_VORGANG_LESEN USING EKKN-AUFPL EKKN-APLZL.
              IF NOT N_VORNR IS INITIAL.
                MOVE '/'     TO AM07M-KONTIERUNG+12.
                MOVE N_VORNR TO AM07M-KONTIERUNG+13.
              ENDIF.
            ENDIF.
          ENDIF.
      ENDCASE.
      CLEAR X_KONT1.
    * User-Exit über Erweiterung MBCF0005
      CALL CUSTOMER-FUNCTION '001'
           EXPORTING
                I_MKPF  = MKPF
                I_MSEG  = MSEG
                I_EKKO  = EKKO
                I_EKPO  = EKPO
                I_NAST  = NAST
                I_TNAPR = TNAPR
           TABLES
                I_EKKN  = XEKKN
           CHANGING
                C_AM07M = AM07M
           EXCEPTIONS
                OTHERS  = 0.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT = 'WE2VERBRMAT'.
      IF T156-SHKZG = H AND
        NOT MSEG-GRUND IS INITIAL.
        SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                   AND   GRUND = MSEG-GRUND
                                   AND   SPRAS = LANGUAGE.
        CALL FUNCTION 'WRITE_FORM'
             EXPORTING
                  ELEMENT = 'RUEVERBRGRUND'.
      ENDIF.
      THEAD-TDID     = THEADER-TDID.
      THEAD-TDNAME   = THEADER-TDNAME.
      THEAD-TDOBJECT = THEADER-TDOBJECT.
      THEAD-TDSPRAS  = THEADER-TDSPRAS.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT = 'PRTXTVERBRMAT'.
    ENDFORM.
    INCLUDE /SMB40/M07DRE03.
    *       FORM WE03_AUSGABE                                             *
    FORM WE03_AUSGABE using lgortsplit.
    *----------------Drucken WE-Version 3 Überschrift---------------------*
      if lgortsplit is initial.
         ON CHANGE OF MKPF-MBLNR OR MSEG-EBELN OR MSEG-BWART
                                 OR NAST-KSCHL OR MSEG-WERKS.
         CLEAR XKOPFDR.
         endon.
      else.
         ON CHANGE OF MKPF-MBLNR OR MSEG-EBELN OR MSEG-BWART
                                 OR NAST-KSCHL OR MSEG-WERKS
                                 OR MSEG-LGORT.
         CLEAR XKOPFDR.
         endon.
      endif.
      IF XKOPFDR IS INITIAL.
        XKOPFDR = X.
        IF NEW_PAGE = X.
          CALL FUNCTION 'CONTROL_FORM'
               EXPORTING
                    COMMAND = 'NEW-PAGE'.
        ENDIF.
        IF EKKO-BSART = 'UB'.
          AM07M-LITXT = TEXT-101.
          AM07M-LIBZG = EKKO-RESWK.
        ELSE.
          AM07M-LITXT = TEXT-100.
          AM07M-LIBZG = EKKO-LIFNR.
          IF NOT EKKO-LLIEF IS INITIAL.
            AM07M-LIBZ2 = EKKO-LLIEF.
          ELSE.
            AM07M-LIBZ2 = EKKO-LIFNR.
          ENDIF.
        ENDIF.
        IF T156-SHKZG = H.
          AM07M-HDLNE = TEXT-020.
        ELSE.
          AM07M-HDLNE = TEXT-010.
        ENDIF.
        IF XPSTY       IS INITIAL.         "Lagermaterial ?
          IF MSEG-XBLVS IS INITIAL.
            IF T156-SHKZG = H AND
               NOT MSEG-GRUND IS INITIAL.
              IF NOT T159P-BACOD IS INITIAL.
                CALL FUNCTION 'WRITE_FORM'
                     EXPORTING
                          ELEMENT = 'WE3BACOKOPF'
                          WINDOW  = 'RÜKOPF'.
                NEW_PAGE = X.
              ELSE.
                CALL FUNCTION 'WRITE_FORM'
                     EXPORTING
                          ELEMENT = 'WE3KOPF'
                          WINDOW  = 'RÜKOPF'.
                NEW_PAGE = X.
              ENDIF.
            ELSE.
              IF NOT T159P-BACOD IS INITIAL.
                CALL FUNCTION 'WRITE_FORM'
                     EXPORTING
                          ELEMENT = 'WE3BACOKOPF'
                          WINDOW  = 'KOPF'.
                NEW_PAGE = X.
              ELSE.
                CALL FUNCTION 'WRITE_FORM'
                     EXPORTING
                          ELEMENT = 'WE3KOPF'
                          WINDOW  = 'KOPF'.
                NEW_PAGE = X.
              ENDIF.
            ENDIF.
          ELSE.
            IF T156-SHKZG = H AND
               NOT MSEG-GRUND IS INITIAL.
              IF NOT T159P-BACOD IS INITIAL.
                CALL FUNCTION 'WRITE_FORM'
                     EXPORTING
                          ELEMENT = 'WE3BACOLVSKOPF'
                          WINDOW  = 'RÜKOPF'.
                NEW_PAGE = X.
              ELSE.
                CALL FUNCTION 'WRITE_FORM'
                     EXPORTING
                          ELEMENT = 'WE3LVSKOPF'  "RL-Material
                          WINDOW  = 'RÜKOPF'.
                NEW_PAGE = X.
              ENDIF.
            ELSE.
              IF NOT T159P-BACOD IS INITIAL.
                CALL FUNCTION 'WRITE_FORM'
                     EXPORTING
                          ELEMENT = 'WE3BACOLVSKOPF'
                          WINDOW  = 'KOPF'.
                NEW_PAGE = X.
              ELSE.
                CALL FUNCTION 'WRITE_FORM'
                     EXPORTING
                          ELEMENT = 'WE3LVSKOPF'  "RL-Material
                          WINDOW  = 'KOPF'.
                NEW_PAGE = X.
              ENDIF.
            ENDIF.
          ENDIF.
        ELSE.
          IF T156-SHKZG = H AND
             NOT MSEG-GRUND IS INITIAL.
            IF NOT T159P-BACOD IS INITIAL.
              CALL FUNCTION 'WRITE_FORM'
                   EXPORTING
                        ELEMENT = 'WE3BACOKOPF1'
                        WINDOW  = 'RÜKOPF'.
              NEW_PAGE = X.
            ELSE.
              CALL FUNCTION 'WRITE_FORM'
                   EXPORTING
                        ELEMENT = 'WE3KOPF1'
                        WINDOW  = 'RÜKOPF'.
              NEW_PAGE = X.
            ENDIF.
          ELSE.
            IF NOT T159P-BACOD IS INITIAL.
              CALL FUNCTION 'WRITE_FORM'
                   EXPORTING
                        ELEMENT = 'WE3BACOKOPF1'
                        WINDOW  = 'KOPF'.
              NEW_PAGE = X.
            ELSE.
              CALL FUNCTION 'WRITE_FORM'
                   EXPORTING
                        ELEMENT = 'WE3KOPF1'
                        WINDOW  = 'KOPF'.
              NEW_PAGE = X.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    *------------- Drucken WE-Version 3 Position --------------------------*
    **perform w3_lieferplan.                  "Routine Lieferplan
      CLEAR T157E.
      IF T156-SHKZG = H AND
         NOT MSEG-GRUND IS INITIAL.
        SELECT SINGLE * FROM T157E WHERE BWART = MSEG-BWART
                                   AND   GRUND = MSEG-GRUND
                                   AND   SPRAS = LANGUAGE.
      ENDIF.
      IF MSEG-EBELN IS INITIAL.
        IF NOT MABDR-MAKTX IS INITIAL.
          EKPO-TXZ01 = MABDR-MAKTX.
        ENDIF.
      ENDIF.
      IF MABDR-WERTU IS INITIAL AND
         MABDR-MENGU = X   OR              "Bestandsfuehrung = UNBW oder
         XPSTY       IS INITIAL.           "Lagermaterial ?
    * User-Exit über Erweiterung MBCF0005
        CALL CUSTOMER-FUNCTION '001'
             EXPORTING
                  I_MKPF  = MKPF
                  I_MSEG  = MSEG
                  I_EKKO  = EKKO
                  I_EKPO  = EKPO
                  I_NAST  = NAST
                  I_TNAPR = TNAPR
             TABLES
                  I_EKKN  = XEKKN
             CHANGING
                  C_AM07M = AM07M
             EXCEPTIONS
                  OTHERS  = 0.
        IF MSEG-XBLVS IS INITIAL.
          PERFORM W3_LAGERMATERIAL.        "Routine Lagermaterial
        ELSE.
          PERFORM W3_LVSMATERIAL.          "Routine RL-Material
        ENDIF.
      ELSE.
        PERFORM W3_VERBRAUCHSMATERIAL.     "Routine Verbrauchsmaterial
      ENDIF.
    *-------------- Drucken WE-Version 3 Seitenfuss ----------------------*
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT  = 'WE3FUSS'
                WINDOW   = 'FUSS'
                FUNCTION = 'APPEND'.
    ENDFORM.
    *--------------Unteroutinen für Positionsdruck -----------------------*
    FORM W3_LAGERMATERIAL.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT = 'WE3LGMAT'.
    ENDFORM.
    *       FORM W3_LVSMATERIAL                                           *
    FORM W3_LVSMATERIAL.
      CALL FUNCTION 'WRITE_FORM'
           EXPORTING
                ELEMENT = 'WE3LVSMAT'.
    ENDFORM.
    *       FORM W3_VERBRAUCHSMATERIAL                                    *
    FORM W3_VERBRAUCHSMATERIAL.
      CLEAR: AM07M-KONTIERUNG.
      AM07M-RSTYP = XPSTY.
      CASE XPSTY.
        WHEN XFERT.                        "Fertigungsauftrag
          IF X_KONT1 IS INITIAL.
            AM07M-KONTIERUNG = MSEG-AUFNR.
          ELSE.
            AM07M-KONTIERUNG = EKKN-AUFNR.
          ENDIF.
        WHEN XANLAGE.
          MOVE SPACE TO ANLAGE.
          IF X_KONT1 IS INITIAL.
            ANLAGE-ANLN1 = MSEG-ANLN1.
            ANLAGE-ANLN2 = MSEG-ANLN2.
          ELSE.
            ANLAGE-ANLN1 = EKKN-ANLN1.
            ANLAGE-ANLN2 = EKKN-ANLN2.
          ENDIF.
          MOVE SPACE TO AM07M-KONTIERUNG.
          CONDENSE ANLAGE NO-GAPS.
          AM07M-KONTIERUNG = ANLAGE.
        WHEN   XKDE.                     "Kundeneinzelbestand?
          MOVE SPACE TO KUNDE.
          IF X_KONT1 IS INITIAL.
            KUNDE-KDAUF = MSEG-KDAUF.
            KUNDE-KDPOS = MSEG-KDPOS.
          ELSE.
            KUNDE-KDAUF = EKKN-VBELN.
            KUNDE-KDPOS = EKKN-VBELP.
          ENDIF.
          MOVE SPACE TO AM07M-KONTIERUNG.
          CONDENSE KUNDE NO-GAPS.
          AM07M-KONTIERUNG = KUNDE.
        WHEN   XKDANR.                     "Kundenauftrag ?
          MOVE SPACE TO KUNDE.
          IF X_KONT1 IS INITIAL.
            KUNDE-KDAUF = MSEG-KDAUF.
            KUNDE-KDPOS = MSEG-KDPOS.
            KUNDE-KDEIN = MSEG-KDEIN.
          ELSE.
            KUNDE-KDAUF = EKKN-VBELN.
            KUNDE-KDPOS = EKKN-VBELP.
            KUNDE-KDEIN = EKKN-VETEN.
          ENDIF.
          MOVE SPACE TO AM07M-KONTIERUNG.
          CONDENSE KUNDE NO-GAPS.
          AM07M-KONTIERUNG = KUNDE.
        WHEN   XKOSTL.                     "auf Kostenstelle kontiert
          IF X_KONT1 IS INITIAL.
            AM07M-KONTIERUNG = MSEG-KOSTL.
          ELSE.
            AM07M-KONTIERUNG = EKKN-KOSTL.
          ENDIF.
        WHEN   XPROJN.                     "auf Projekt/Netzplan
          IF X_KONT1 IS INITIAL.
            IF MSEG-NPLNR IS INITIAL.
              PERFORM PSP_CONVERT USING MSEG-PS_PSP_PNR.
            ELSE.
              AM07M-KONTIERUNG = MSEG-NPLNR.
              PERFORM NW_VORGANG_LESEN USING MSEG-AUFPL MSEG-APLZL.
              IF NOT N_VORNR IS INITIAL.
                MOVE '/'     TO AM07M-KONTIERUNG+12.
                MOVE N_VORNR TO AM07M-KONTIERUNG+13.
              ENDIF.
            ENDIF.
          ELSE.
            IF EKKN-NPLNR IS INITIAL.
              PERFORM PSP_CONVERT USING EKKN-PS_PSP_PNR.
            ELSE.
              AM07M-KONTIERUNG = EKKN-NPLNR.
              PERFORM NW_VORGANG_LESEN USING EKKN-AUFPL EKKN-APLZL.
              IF NOT N_VORNR IS INITIAL.
      

  • Reg: Smart forms and print programs

    Hi
    I would like to locate the print programs and the corresponding smart forms. say for invoice we have a smart form available and how to track the print program for it. pls advise.
    thkx
    Prabhu

    Hi Prabhu,
          You can track the Program through mainintaing table TNAPR.  TNAPR is the table which is having entries for "Processing Programs for output".
    Here you have fields like
    pgnam - Program Name
    sform -   Smartform Name
    fonam -  Script Name
    kschl -  Output type
    Here,You can maintain form against a program name.
    Hope you are clear.
    Regards,
    Siddhesh Sanghvi.

  • Forms and Print program  Urgent please!!

    I have created a copy from a standard form (F150_dunn_01) and a print program (SAPLF150). Now, Could you tell me how can I know if the form is assigned to the program? or How to assign the program to the form?
    I mean, assign to the Zform and Zprogram
    Thanks and regards.

    Hi .
        There are two ways to find out the corresponding   
        print program for a sapscript form .
    they are ,
    1.go to the change editor of ur sapscript form in transaction se78 ,place ur cursor  at any of ur screen field and goto ->print program ->symbol definition with dialog .
    here u can find out the print program of ur corrsponding form.
    2.when u r in ur main screen of tansaction se78 ,goto
    form->check->texts.
    here u can find out the print program of ur corrsponding form.
    these r the two ways in finding out ur print programs of sapscript form.
    reg any doubt reply me .
    with regs,
    karthik srinivasan

  • How to use Text lements(/E) in Scripts and print program

    Hi all,
    I need to use Text elements from print program to Script output.
    I have included the text element name in WRITE_FORM and defined in the script with (/E) also.
    Still the data is not displaying.
    Please let me know how to use the text elements.
    thanks in advance..
    Rakesh
    <removed_by_moderator>
    Edited by: Julius Bussche on Nov 25, 2008 10:08 AM

    For printing the text directly on the formm the text element in form wud be as
    /E   ITEM_HEADER
    MH Quantity,,,,Description,,UOM,,Net Weight,,Gross Weight
    If you have variable define in the driver prog and you want to display,text elt. wud be as
    /E   ITEM LINE
    MH &CONF_OUT-ATBEZ&,,&CONF_OUT-ATWTB&
    where CONF_OUT is a structure with fields ATBEZ and ATWTB
    MH is the paragraph format
    Hope this clears your doubt.
    Regards,
    Prashant

Maybe you are looking for