READ_TEXT problem

Hi,
Iam working with QM02 transaction and having some fields and one of them having very long text.
Iam using READ_TEXT function to get long text from QM02 transaction and my program is working fine.
But if the LONG TEXT FIELD is empty the function module is througing error.How to overcome this.Here is the code.
This is from QM module.
DATA:F_TDOBJECT LIKE THEAD-TDOBJECT,
     F_TDNAME   LIKE THEAD-TDNAME,
     F_TDID     LIKE THEAD-TDID,
     ITAB_LINES LIKE tline OCCURS 0 WITH HEADER LINE.
  LOOP AT T_DET.
    F_TDID     = 'LTQM'.       " long description
    F_TDNAME   = T_DET-QMNUM.  " this is to get number
    F_TDOBJECT = 'QMEL'.       " this is the table
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
        CLIENT   = SY-MANDT
        ID       = F_TDID
        LANGUAGE = SY-LANGU
        NAME     = F_TDNAME
        OBJECT   = F_TDOBJECT
      TABLES
        LINES    = ITAB_LINES.
*collecting long text into ITAB.
    DESCRIBE TABLE ITAB_LINES LINES SY-TFILL.
      IF SY-TFILL > 0.
        LOOP AT ITAB_LINES.
          ITAB-QMNUM = T_DET-QMNUM.
          ITAB-DESC = ITAB_LINES-TDLINE.
          APPEND ITAB.
          CLEAR ITAB.
        ENDLOOP.
      ENDIF.
  ENDLOOP.

Hi Kaki,
1. Ideally, this FM does not give error 
   if the long text is empty.
2. However, to avoid error and to detect
  what error it is ,
  call the FM
  using EXCEPTIONS
  EXCEPTIONS
    ID                            = 1
    LANGUAGE                      = 2
    NAME                          = 3
    NOT_FOUND                     = 4
    OBJECT                        = 5
    REFERENCE_CHECK               = 6
    WRONG_ACCESS_TO_ARCHIVE       = 7
    OTHERS                        = 8
3. Using exceptions will not give short dump.
4. Moreover, we can check the value of sy-subrc
  to detect what kind of error occurred.
  May be its some other kind of error.
Regards,
Amit M.

Similar Messages

  • PROBLEM IN PRINTING TEXT .

    Hi
    Good morning to all .
    i am making a classical report in which i want to print in A4 size paper
    here i want to print purchase requisition text  like header text ,item text
    i am using FM READ_TEXT
    PROBLEM IS THAT .
    THE OUT PUT COMES LIKE THIS
    ABAPERRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
    AFTER ONE LINE I AM NOT GETTING TEXT IN SECOND LINE
    PLEASE HELP ME .
    REGARDS
    RAKESH SINGH

    Hi,
    see below coding...
    MOVE : VBRK-VBELN TO NAME.
    CALL FUNCTION 'READ_TEXT'
         EXPORTING
            CLIENT                  = SY-MANDT
              ID                      = '0002'
              LANGUAGE                = SY-LANGU
              NAME                    = NAME
              OBJECT                  = 'VBBK'
            ARCHIVE_HANDLE          = 0
       IMPORTING
            HEADER                  =
         TABLES
              LINES                   = TLINES
         EXCEPTIONS
              ID                      = 1
              LANGUAGE                = 2
              NAME                    = 3
              NOT_FOUND               = 4
              OBJECT                  = 5
              REFERENCE_CHECK         = 6
              WRONG_ACCESS_TO_ARCHIVE = 7
              OTHERS                  = 8.
    LOOP AT TLINES.
    WRITE:/ NAME , TLINES-TDLINE.
    ENDLOOP.
    hope it will help...

  • PROBLEM FOR READ_TEXT in report

    Hi,
    I am reading texts using READ_TEXT in report. Here the problem is if the PO text doesn't contains any text(value)  then my report is not showing the output and if text contains value it's showing me output.
    where is the problem?
    Thanks in Advance.
    Regards.
    Sam.

    Hi ,
    I have a similar requirement to get the Header text data of a PO . I am using READ_TEXT by passing parameters. but the FM does not return any out put.Can youplease tel me the procedure you followed?
    Thank you,
    Lakshmi.

  • Problem while using read_text fm

    Hi,
    iam having one problem if i call read_text fm
    only one line is coming in the output.
    eg: material(Text)
    plant (Text)
    my progaram write only one line ie. material i want to consider f all the line in single line.
    opt should be: materialplant.
    please correct this code
    loop at t_mara.
    *CONCATENATE t_mara-matnr t_mara-dwerks INTO TeMP IN CHARACTER MODE.
    temp = t_mara-matnr .
    temp+19(4) = t_mara-dwerks .
    WRK_NAME = temp.
    *WRITE: / temp..
    CALL FUNCTION 'READ_TEXT'
    EXPORTING
    CLIENT = SY-MANDT
    ID = 'LTXT'
    LANGUAGE = SY-LANGU
    NAME = WRK_NAME
    OBJECT = 'MDTXT'
    IMPORTING
    HEADER =
    TABLES
    LINES = IT_LINES
    EXCEPTIONS
    ID = 1
    LANGUAGE = 2
    NAME = 3
    NOT_FOUND = 4
    OBJECT = 5
    REFERENCE_CHECK = 6
    WRONG_ACCESS_TO_ARCHIVE = 7
    OTHERS .
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    else.
    READ TABLE IT_LINES INDEX 1.
    TXT_TD03 = IT_LINES-TDLINE.
    MOVE TXT_TD03 TO T_MARA-TEXT.
    MODIFY T_MARA.
    ENDIF.

    hai
    DATA wa_it_lines LIKE TLINE.
    DATA WRK_NAME LIKE THEAD-TDNAME.
    data TXT_TD03 (70).
    CONCATENATE W_IT_NUMBER W_IT_DE_NUMBER INTO W_NUMBER.
    *Get the dETAIL NUMBER
    call function 'READ_TEXT'
      exporting
        id                            = 'LTXT'
        language                      = sy-langu
        name                          = WRK_NAME
        object                        = 'MDTXT'
      ARCHIVE_HANDLE                = 0
      LOCAL_CAT                     = ' '
    IMPORTING
      HEADER                        =
      tables
        lines                         = it_lines
    exceptions
       id                            = 1
       language                      = 2
       name                          = 3
       not_found                     = 4
       object                        = 5
       reference_check               = 6
       wrong_access_to_archive       = 7
       others                        = 8
    if sy-subrc <> 0.
    message id sy-msgid type 'I' number sy-msgno
             with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    endif.
    read table it_lines index 1 into wa_it_lines .
    *GET THE NUMBER BY
    TXT_TD03 = IT_LINES-TDLINE.
    MOVE TXT_TD03 TO T_MARA-TEXT.
    MODIFY T_MARA.
    do it like this
    regard
    nawa

  • READ_TEXT: format problem when printing to PDF

    Hello everybody,
    I am using READ_TEXT function module to get long text then display to PDF format.
    I met a problem with format as following:
    The long text has bold format, for e.g.: This is bold text.
    The READ_TEXT FM will then read the data as: <H>This is bold text.</>
    When output to PDF instead of display as This is bold text., it is displaying <H>This is bold text.</>
    Please suggest me how to fix this.
    Thanks,
    Khanh

    Hi Khanh ,
    Below is the sample code for your reference .
    CALL FUNCTION 'READ_TEXT'
    EXPORTING
    CLIENT = SY-MANDT
    ID = 'ZG01'
    LANGUAGE = 'EN'
    NAME = TH_INDATA_F01-VBELN_A
    OBJECT = 'VBBK'
    IMPORTING
    HEADER =
    TABLES
    LINES = TD_LINE
    EXCEPTIONS
    ID = 1
    LANGUAGE = 2
    NAME = 3
    NOT_FOUND = 4
    OBJECT = 5
    REFERENCE_CHECK = 6
    WRONG_ACCESS_TO_ARCHIVE = 7
    OTHERS = 8.
    Here lines = td_line refers to Lines of text read
    The table contains all text lines belonging to a text module. The line structure is defined in table TLINE. The line contents are stored in ITF format.
    Hope this helps you .
    Regards ,
    Navya .

  • Problem in using FM READ_TEXT to read Material Sales Text.

    Hi Guys,
    I am developing a Customer Outstanding report in which I display all the invoices of a particular customer.
    I need  to read "Material Sales Text" which comes under "Item Text" tab in transaction FBL5N.
    I have used READ_TEXT in my program. I have identified the Object, and ID but I am stuck up with the Name. I dont know what Name to pass. I have tried passing the Invoice Number in "Name" but couldnt get the text.
    Request you to please help me out. Please check the below code.
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
      CLIENT                        = SY-MANDT
        id                            =    '0001'
        language                      =  SY-LANGU
        name                          =  -
        object                        =  'VBBP'
      ARCHIVE_HANDLE                = 0
      LOCAL_CAT                     = ' '
    IMPORTING
      HEADER                        =
      tables
        lines                         =  tl001
    EXCEPTIONS
       ID                            = 1
       LANGUAGE                      = 2
       NAME                          = 3
       OTHERS                        = 8
    Thanks.

    *&      Form  READ_TEXT
    FORM read_text  USING    p_tdid  p_tdname
                    CHANGING p_tdline.
      DATA: it_line  TYPE STANDARD TABLE OF tline,
            wa_line  TYPE tline                  ,
            l_tdid   TYPE thead-tdid,
            l_tdname TYPE thead-tdname.
      l_tdid   = p_tdid.
      l_tdname = p_tdname.
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          id       = l_tdid
          language = 'E'
          name     = l_tdname
          object   = 'VBBP'
        TABLES
          lines    = it_line
        EXCEPTIONS
          OTHERS   = 8.
      LOOP AT it_line INTO wa_line.
        IF NOT wa_line-tdline IS INITIAL.
          p_tdline = wa_line-tdline.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " READ_TEXT

  • Problem in read_text   function

    Hi all,
    I want to read multiple rows by read_text functions but it shows me single row only.
    Plz help me how to read multiple rows ..

    >
    ankita patel wrote:
    > Hi kartik...
    > I am using this code because I want to modify my internal table field..
    >
    > If i am not using it , only blank value store in internal table.
    >
    >
    > IF NOT I_TAB-NO_OF_BOX IS  INITIAL.
    >
    >        exit.
    >     ENDIF.
    Hi ankita,
    See.
    What ur code is currently doing is reading one line then
    checking this condition
    IF NOT I_TAB-NO_OF_BOX IS  INITIAL.
           exit.
         ENDIF.
    Condition is true so it exits.
    So its not reading other lines.
    do like this
    CALL FUNCTION 'READ_TEXT'
    EXPORTING
    id = 'B01'
    language = sy-langu
    name = name
    object = 'EBAN'
    TABLES
    lines = lt_text.
    if sy-subrc = 0. "  This is important
    loop at lt_text.
    concatenate  i_TAB-NO_OF_BOX  lt_text-TDLINE to  i_TAB-NO_OF_BOX.
    endloop.
    endif.
    MODIFY I_TAB. "here if u want u can put this check IF NOT I_TAB-NO_OF_BOX IS INITIAL. but i think its not required as now we are looping at lt_text only if sy-subrc is 0
    кu03B1ятu03B9к

  • Problem using Read_text

    Hi,
    I am using the Read_text in the following manner:
    TYPES : BEGIN OF STR_VBRP,
              VGBEL TYPE VBRP-VGBEL,
              VGPOS TYPE VBRP-VGPOS,
              END OF STR_VBRP.
      DATA : IT_VBRP TYPE STANDARD TABLE OF STR_VBRP INITIAL SIZE 0,
             WA_VBRP TYPE STR_VBRP.
    DATA: ITAB_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE.
    CALL FUNCTION 'READ_TEXT'
                      EXPORTING
                       CLIENT                        = SY-MANDT
                        ID                            = 'Z002'
                        LANGUAGE                      = SY-LANGU
                        NAME                          = WA_VBRP-VGBEL
                        OBJECT                        = 'VBBK'
                      ARCHIVE_HANDLE                = 0
                      LOCAL_CAT                     = ' '
                      IMPORTING
                      HEADER                        =
                        TABLES
                        LINES                         = ITAB_LINES
                      EXCEPTIONS
                       ID                            = 1
                       LANGUAGE                      = 2
                       NAME                          = 3
                       NOT_FOUND                     = 4
                       OBJECT                        = 5
                       REFERENCE_CHECK               = 6
                       WRONG_ACCESS_TO_ARCHIVE       = 7
                        OTHERS                        = 8
    And when I am running it I am getting the following dump:
    The function module interface allows you to specify only
    fields of a particular type under "NAME".
    The field "WA_VBRP-VGBEL" specified here is a different
    field type.
    Please let me know how should I pass the data.
    Regards,
    Ashutosh

    Hi,
    Try using sample code below:
    TABLES: PBIM.
    * stxh, stxl, stxb - trans tables for text
    * ttxit - text on text-ids
    * ttxot - Short texts on text objects
    * Transaction MD63
    SELECT-OPTIONS: S_MATNR FOR PBIM-MATNR,
                    S_WERKS FOR PBIM-WERKS.
    DATA: BEGIN OF HTEXT.
            INCLUDE STRUCTURE THEAD.
    DATA: END OF HTEXT.
    DATA: BEGIN OF LTEXT OCCURS 50.
            INCLUDE STRUCTURE TLINE.
    DATA: END OF LTEXT.
    DATA: BEGIN OF DTEXT OCCURS 50.
    DATA:   MATNR LIKE PBIM-MATNR.
            INCLUDE STRUCTURE TLINE.
    DATA: END OF DTEXT.
    DATA: TNAME LIKE THEAD-TDNAME.
    SELECT * FROM PBIM WHERE WERKS IN S_WERKS.
      MOVE PBIM-BDZEI TO TNAME.
      CALL FUNCTION 'READ_TEXT'
           EXPORTING
    *           CLIENT                  = SY-MANDT
              ID                      = 'PB'
              LANGUAGE                = 'E'
              NAME                    = TNAME
              OBJECT                  = 'PBPT'
    *         ARCHIVE_HANDLE          = 0
         IMPORTING
              HEADER                  = HTEXT
         TABLES
              LINES                   = LTEXT
         EXCEPTIONS
              ID                      = 1
              LANGUAGE                = 2
              NAME                    = 3
              NOT_FOUND               = 4
              OBJECT                  = 5
              REFERENCE_CHECK         = 6
              WRONG_ACCESS_TO_ARCHIVE = 7
              OTHERS                  = 8.
      LOOP AT LTEXT.
        IF LTEXT-TDLINE NE ''.
          MOVE LTEXT-TDLINE TO DTEXT-TDLINE.
          MOVE PBIM-MATNR TO DTEXT-MATNR.
          APPEND DTEXT.
        ENDIF.
      ENDLOOP.
    ENDSELECT.
    LOOP AT DTEXT.
      WRITE:/ DTEXT-MATNR, DTEXT-TDLINE.
    ENDLOOP.
    Hope it helps
    Regards
    Mansi

  • READ_TEXT showing problem in smart-forms

    Hi All,
    I am using the FM READ_TEXT in Smartforms.I have a text like M & M.When passed in the FM i get the output as M<(>&<)>M.
    Symbol & is displayed as junk.
    I debugged the FM and i can find it is getting converted at
    if rt_header-tdtexttype is initial. "SAPscript format
    import tline to rt_lines
    from database stxl(tx)
    client rt_client
    id stxl_id
    ACCEPTING TRUNCATION "important for Unicode
    IGNORING CONVERSION ERRORS.
    So please help me how to resolve this issue.I am using Arial font size 8.

    Hi Pravik,
    Check with the font as you said you are using arial font.
    Regards,
    Sravanthi

  • Problem in a Interface

    Hi....
    I have an Interface which actually downloads the "MATERIAL MASTER DATA" from SAP to a flat file.
    The current o/p of the interface looks like:
    MAT NO. MAT DESCRIPTION Subst. Mat no......
    Now they askd me to add 3 more fields to that existing program.
    those are:
    1.OUTSERT No.
    2.MEDICATION PART No.
    3.AWP PRICE.
    So I have written 2 FORMS to retrieve these things.
    1st FORM is for getting OUTSERT and MED. PART No.
    2nd FORM for AWP PRICE.
    (1) OUTSERT: This we get from STPO-IDNRK field. similarly
    (2) MED. PART NO.: This also is from STPO-IDNRK field.
    The method I used for getting these two things is:
    Basically the OUTSERT and MED PART NO. is nothing but the BOM COMPONENTS [STPO-IDNRK].
    There is a simple difference between these two things:
    If the BOM Component contains 'O' or 'OP' in that value then it is taken as OUTSERT.
    For Eg: If STPO-IDNRK value is 73543O or 98723OP then it is OUTSERT.
    and If STPO-IDNRK value is 65489M or 68785MP then it is MED. PART NO.
    and we have two conditions to be satisfied to calculate these two things,
    1.The Material Group[MARA-MATKL] should be 'OST' or 'OSP'.
    means MARA-MATKL = 'OST' or 'OSP'.
    2.The Alternative BOM Text[STKO-STKTX] should be 'UNRESTRICTED'.
    means STKO-STKTX = 'UNRESTRICTED'.
    Coming to AWP PRICE, it should be get from field RATE[KONP-KBETR].
    I have used tables STKO, STPO to get Outsert and Med. Part No and A505, KONP for AWP Price...
    I have highlighted the part of the code which I have included in the existing program....
    But there are some problems with that code...so i'm not getting results....
    Plz look at the code and let me know wher I've gone wrong...
    Thanks much,
    The code is:
    REPORT Z02.
    Table definitions ----------------------------------------------------
    TABLES: AUSP, " Characteristic Values
    CABN, " Characteristic
    CAWN, " Characteristic values
    CAWNT, " Value Texts
    LFA1, " Vendor master (general section)
    MAKT, " Material Descriptions
    MARA, " Material Master: General Data
    MARM, " Units of Measure
    MBEW, " Material Valuation
    MVKE, " Material Master: Sales Data
    TVMST, " Materials: SD Status: Texts
    TVM3T, " Material pricing group 3: Description
    TVM5T, " Material pricing group 5: Description
    KOTD001, " Conditions: Substitution - Sample Structure
    KONDD, " Material Substitution - Data Division
    <b>mast,
    stko,
    stpo,
    a505,
    konp.</b>
    SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TITLE1.
    SELECT-OPTIONS: S_BWKEY FOR MBEW-BWKEY
    MEMORY ID DEFAULT_BWKEY OBLIGATORY
    No-Extension No Intervals.
    SELECTION-SCREEN END OF BLOCK B1.
    PARAMETERS:
    MATLFILE(100) LOWER CASE OBLIGATORY
    DEFAULT '/sapinterface/ebusiness/matlfile'.
    Constants ------------------------------------------------------------
    CONSTANTS:
    ZERO_DEC_3 TYPE P DECIMALS 3 VALUE 0,
    ZEROS(9) TYPE N VALUE 0,
    REC_TYPE(2) VALUE 'MM',
    DELIMETER_QUOTE VALUE '"',
    BEGIN OF DEFAULTS,
    BWTAR LIKE MBEW-BWTAR VALUE SPACE,
    VKORG LIKE MVKE-VKORG VALUE '1000',
    VTWEG LIKE MVKE-VTWEG VALUE '10',
    END OF DEFAULTS.
    constants:
    c_uncpath_material(43)
    value '/sapinterface/unconverted/zvppo102_matlfile',
    c_final_path(44)
    value '/sapinterface/ebusiness/' ,
    c_uncpath(26)
    value '/sapinterface/unconverted/' .
    Data Elements --------------------------------------------------------
    DATA: PROGNAME LIKE SY-REPID,
    PROG_START_DATE LIKE SY-DATUM,
    PROG_START_TIME LIKE SY-UZEIT,
    WRITE_COUNT TYPE I,
    OUTFILE(100),
    WK_STPRS LIKE MBEW-STPRS,
    WK_AUSP LIKE AUSP,
    WK_CABN LIKE CABN,
    WK_MARA LIKE MARA,
    WK_MARM LIKE MARM.
    DATA: BEGIN OF MATERIAL_DATA occurs 0,
    DELIMITER_START,
    REC_TYPE LIKE REC_TYPE,
    MATNR LIKE MARA-MATNR,
    MAKTX LIKE MAKT-MAKTX,
    SMATN LIKE KONDD-SMATN,
    SMATN_START LIKE KOTD001-DATAB,
    SMATN_END LIKE KOTD001-DATBI,
    VMSTA LIKE MVKE-VMSTA,
    VMSTB LIKE TVMST-VMSTB,
    LAEDA LIKE MARA-LAEDA,
    AENAM LIKE MARA-AENAM,
    VENDOR_NUM LIKE MARA-MFRNR,
    VENDOR_NM LIKE LFA1-NAME1,
    PROD_LINE_CD LIKE MVKE-MVGR5,
    PROD_LINE_DSC(20),
    DEA_SCH_ID LIKE MVKE-MVGR3,
    DEA_SCH_DSC(20),
    NORMT LIKE MARA-NORMT,
    STPRS(13),
    LOGO_DESC(30),
    PRESCRIPT_FLAG(1),
    THER_CLASS(5),
    THER_CLASS_DSC(30),
    THER_SUB_CLASS(5),
    THER_SUB_CLASS_DSC(30),
    THER_EQUIV(2),
    ITEM_PACKAGE_SIZE(10),
    ITEM_PACKAGE_TYPE(2),
    DOSAGE_FORM(3),
    DOSAGE_FORM_DSC(30),
    DOSE_ADMIN(3),
    DOSE_ADMIN_DSC(30),
    BOTTLE_SIZE(6),
    BRAND_NAME(25),
    BRAND_DISTR(20),
    BRAND_COLOR(20),
    BRAND_SHAPE(15),
    ANDA_DATE LIKE SY-DATUM,
    ANDA_NUMBER(9),
    BIO_STUDY,
    DESI_INDICATOR,
    DRUG_TERM_DT LIKE SY-DATUM,
    FDA_APPRV_DT LIKE SY-DATUM,
    ITEM_REG_NM(30),
    MARKET_DT LIKE SY-DATUM,
    PRODUCT_COLOR(20),
    PRODUCT_FLAVOR(15),
    PRODUCT_SHAPE(15),
    PRODUCT_STRENGTH(18),
    MEINS LIKE MARA-MEINS,
    BEGIN OF BASE_MEASURES,
    WEIGHT(15), "* like mara-brgew
    WT_UNIT LIKE MARA-GEWEI,
    VOLUM(15), "* like mara-volum,
    VOL_UNIT LIKE MARA-VOLEH,
    PKG_LENGTH(15), "* like mara-laeng
    PKG_WIDTH(15), "* like mara-breit
    PKG_HEIGHT(15), "* like mara-hoehe
    DIM_UNIT LIKE MARA-MEABM,
    END OF BASE_MEASURES,
    INR_CRTN_COUNT(6), "* like marm-umrez
    INR_CRTN_MEASURES LIKE MATERIAL_DATA-BASE_MEASURES,
    CASE_COUNT(6), "* like marm-umrez
    CASE_MEASURES LIKE MATERIAL_DATA-BASE_MEASURES,
    ITEM_NOTE(500),
    DELIMITER_END,
    <b>component like stpo-idnrk,
    mguide    like stpo-idnrk,
    awp       like konp-kbetr,</b>
    END OF MATERIAL_DATA.
    DATA : F_M_uncFILE(100) . " Material file(unconverted)
    DATA: W_BRM(3) Value 'BRM'.
    <b>data: str1(2) type c value 'O',
    str2(2) type c value 'OP',
    str3(2) type c value 'M',
    str4(2) type c value 'MP'.</b>
    <b>data: begin of i_material,
            matnr like mara-matnr,
            rate  like konp-kbetr,
          end of i_material.
    data: begin of i_outsert occurs 0,
            matnr like mara-matnr,
            stktx like stko-stktx,
            component like stpo-idnrk,
          end of i_outsert.</b>
    INITIALIZATION.
    *--- Initialize text fields for selection screen.
    TITLE1 = 'Set Default'.
    SET PARAMETER ID 'DEFAULT_BWKEY' FIELD W_BRM.
    START-OF-SELECTION.
    PERFORM INITIAL_STUFF.
    PERFORM MAIN_SELECT.
    PERFORM WRAPUP.
    Select all material master records for finished products.
    FORM MAIN_SELECT.
    SELECT MATNR
    BISMT
    LAEDA
    AENAM
    MEINS
    BRGEW
    GEWEI
    VOLUM
    VOLEH
    LAENG
    BREIT
    HOEHE
    MEABM
    NORMT
    INTO (MATERIAL_DATA-MATNR,
    MATERIAL_DATA-SMATN,
    MATERIAL_DATA-LAEDA,
    MATERIAL_DATA-AENAM,
    MATERIAL_DATA-MEINS,
    WK_MARA-BRGEW,
    MATERIAL_DATA-BASE_MEASURES-WT_UNIT,
    WK_MARA-VOLUM,
    MATERIAL_DATA-BASE_MEASURES-VOL_UNIT,
    WK_MARA-LAENG,
    WK_MARA-BREIT,
    WK_MARA-HOEHE,
    MATERIAL_DATA-BASE_MEASURES-DIM_UNIT,
    MATERIAL_DATA-NORMT)
    FROM MARA
    WHERE MTART = 'FERT' "* Finished product
    OR MTART = 'HAWA'
    ORDER BY MATNR.
    Assign default values for fields which may not be available.
    PERFORM ASSIGN_DEFAULTS.
    Get related data from other tables.
    PERFORM GET_MATERIAL_DESCRIPTION.
    PERFORM GET_STANDARD_PRICE.
    PERFORM GET_MVKE.
    PERFORM GET_MARM.
    PERFORM GET_AUSP.
    PERFORM GET_SUBSTITUTE_MATNR.
    PERFORM GET_BASIC_DATA_TEXT.
    PERFORM GET_VENDOR_NAME.
    <b>perform get_outsert.
    perform get_awp.</b>
    SEARCH MATERIAL_DATA FOR '"'.
    IF SY-SUBRC = 0.
    REPLACE '"' WITH ' ' INTO MATERIAL_DATA.
    ENDIF.
    MATERIAL_DATA-DELIMITER_START = DELIMETER_QUOTE.
    MATERIAL_DATA-DELIMITER_END = DELIMETER_QUOTE.
    Write output record.
    ADD 1 TO WRITE_COUNT.
    TRANSFER MATERIAL_DATA TO F_M_UNCFILE .
    Reinitialize work variables.
    CLEAR: MATERIAL_DATA,
    WK_STPRS,
    WK_AUSP,
    WK_CABN,
    WK_MARA,
    WK_MARM.
    ENDSELECT.
    ENDFORM. " main_select
    Assign numeric fields to character fields for output.
    FORM ASSIGN_DEFAULTS.
    MATERIAL_DATA-REC_TYPE = REC_TYPE.
    MATERIAL_DATA-BASE_MEASURES-WEIGHT = WK_MARA-BRGEW.
    MATERIAL_DATA-BASE_MEASURES-VOLUM = WK_MARA-VOLUM.
    MATERIAL_DATA-BASE_MEASURES-PKG_LENGTH = WK_MARA-LAENG.
    MATERIAL_DATA-BASE_MEASURES-PKG_WIDTH = WK_MARA-BREIT.
    MATERIAL_DATA-BASE_MEASURES-PKG_HEIGHT = WK_MARA-HOEHE.
    Set character fields to 0 in case not found on DB.
    MATERIAL_DATA-ANDA_NUMBER = ZEROS. "* ???
    MATERIAL_DATA-ITEM_PACKAGE_SIZE = 0.
    MATERIAL_DATA-INR_CRTN_COUNT = 0.
    MATERIAL_DATA-CASE_COUNT = 0.
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH = ZERO_DEC_3.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT = ZERO_DEC_3.
    MOVE-CORRESPONDING MATERIAL_DATA-INR_CRTN_MEASURES
    TO MATERIAL_DATA-CASE_MEASURES.
    ENDFORM. " assign_defaults
    FORM GET_VENDOR_NAME.
    SELECT SINGLE NAME1
    INTO MATERIAL_DATA-VENDOR_NM
    FROM LFA1
    WHERE LIFNR = MATERIAL_DATA-VENDOR_NUM.
    ENDFORM. " get_vendor_name
    FORM GET_OUTSERT *
    <b>form get_outsert.
    select matnr from mara into corresponding fields of table material_data
                 where mtart = 'FERT' or mtart = 'HAWA'.
         select didnrk amatnr
             into (i_outsert-component, i_outsert-matnr)
                from stpo as d
               inner join stko as c
                     on dstlnr = cstlnr
               inner join mast as b
                     on cstlnr = bstlnr
               inner join mara as a
                     on bmatnr = amatnr
              for all entries IN material_data
                   where a~matnr = material_data-matnr.
           append i_outsert.
         endselect.
        check i_outsert-stktx = 'UNRESTRICTED'.
      if ( i_outsert-component cs str1 ) or ( i_outsert-component cs str2 ).
               move i_outsert-component to material_data-component.
               append material_data.
      elseif ( i_outsert-component cs str3 ) or
                             ( i_outsert-component cs str4 ).
               move i_outsert-component to material_data-mguide.
               append material_data.
      endif.
          modify material_data transporting component
                          where matnr = i_outsert-matnr.
    endform.                               "get_outsert</b>
    FORM GET_AWP *
    <b>form get_awp.
    select matnr from mara into corresponding fields of table material_data
                  where mtart = 'FERT' or mtart = 'HAWA'.
        select bmatnr ckbetr into (i_material-matnr, i_material-rate)
               from konp as c
              inner join a505 as b
                    on cknumh = bknumh
              inner join mara as a
                    on bmatnr = amatnr
              for all entries IN material_data
                  where a~matnr = material_data-matnr
                    and b~kappl = 'V'
                    and b~kschl = 'ZR10'
                    and b~vkorg = '1000'
                    and b~pltyp = '01'
                    and b~datbi > sy-datum
                    and b~datab < sy-datum.
             append i_material.
        endselect.
            move i_material-rate to material_data-awp.
            append material_data.
            modify material_data transporting awp
                  where matnr = i_material-matnr.
    endform.                               "get_awp</b>
    FORM GET_MATERIAL_DESCRIPTION.
    SELECT SINGLE MAKTX
    INTO MATERIAL_DATA-MAKTX
    FROM MAKT
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND SPRAS = SY-LANGU.
    ENDFORM. " get_material_description
    FORM GET_STANDARD_PRICE.
    data: l_vprsv like mbew-vprsv,
    l_verpr like mbew-verpr.
    clear: l_Vprsv, l_verpr.
    SELECT SINGLE VPRSV VERPR stprs
    into (l_vprsv, l_verpr, WK_stprs)
    FROM MBEW
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND BWKEY IN S_BWKEY
    AND BWTAR = DEFAULTS-BWTAR.
    the need to change the assumption
    that standard price is housed in MBEW-STPRS. This does not apply to
    plant US18, so need to check to see what the price control field is
    (MBEW-VPRSV) and if it is S, use standard price, if it is V, use the
    moving average price.
    IF L_VPRSV = 'V'.
    WK_STPRS = L_VERPR.
    ENDIF.
    MATERIAL_DATA-STPRS = WK_STPRS.
    ENDFORM. " get_standard_price
    FORM GET_MVKE.
    SELECT SINGLE MVGR3
    VMSTA
    MVGR5
    INTO (MATERIAL_DATA-DEA_SCH_ID,
    MATERIAL_DATA-VMSTA,
    MATERIAL_DATA-PROD_LINE_CD)
    FROM MVKE
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND VKORG = DEFAULTS-VKORG
    AND VTWEG = DEFAULTS-VTWEG.
    IF SY-SUBRC = 0.
    PERFORM GET_DEA_ID_DSC.
    PERFORM GET_PROD_LINE_DSC.
    PERFORM GET_VMSTB.
    ENDIF.
    ENDFORM. " get_mvke
    FORM GET_DEA_ID_DSC.
    SELECT SINGLE BEZEI
    INTO MATERIAL_DATA-DEA_SCH_DSC
    FROM TVM3T
    WHERE SPRAS = SY-LANGU
    AND MVGR3 = MATERIAL_DATA-DEA_SCH_ID.
    ENDFORM. " get_dea_id_dsc
    FORM GET_PROD_LINE_DSC.
    SELECT SINGLE BEZEI
    INTO MATERIAL_DATA-PROD_LINE_DSC
    FROM TVM5T
    WHERE SPRAS = SY-LANGU
    AND MVGR5 = MATERIAL_DATA-PROD_LINE_CD.
    ENDFORM. " form get_prod_line_dsc
    FORM GET_VMSTB.
    SELECT SINGLE VMSTB
    INTO MATERIAL_DATA-VMSTB
    FROM TVMST
    WHERE SPRAS = SY-LANGU
    AND VMSTA = MATERIAL_DATA-VMSTA.
    ENDFORM. " form get_vmstb
    Get measurements, etc. for inner carton and case from the MARM table.
    FORM GET_MARM.
    SELECT MEINH " alternative unit of measure for stockkeeping unit
    UMREZ " numerator for conversion to base units of measure
    LAENG " length
    BREIT " width
    HOEHE " height
    MEABM " unit of dimension for length/width/height
    VOLUM " volume
    VOLEH " volume unit
    BRGEW " gross weight
    GEWEI " unit of weight
    INTO (WK_MARM-MEINH,
    WK_MARM-UMREZ,
    WK_MARM-LAENG,
    WK_MARM-BREIT,
    WK_MARM-HOEHE,
    WK_MARM-MEABM,
    WK_MARM-VOLUM,
    WK_MARM-VOLEH,
    WK_MARM-BRGEW,
    WK_MARM-GEWEI)
    FROM MARM
    WHERE MATNR = MATERIAL_DATA-MATNR
    AND MEINH IN ('CS', 'PAK').
    PERFORM EVALUATE_MEINH.
    CLEAR WK_MARM.
    ENDSELECT.
    ENDFORM. " get_marm
    Populate output record fields based on alternative unit of measure.
    FORM EVALUATE_MEINH.
    CASE WK_MARM-MEINH.
    WHEN 'CS'.
    MATERIAL_DATA-CASE_COUNT = WK_MARM-UMREZ.
    MATERIAL_DATA-CASE_MEASURES-WEIGHT = WK_MARM-BRGEW.
    MATERIAL_DATA-CASE_MEASURES-WT_UNIT = WK_MARM-GEWEI.
    MATERIAL_DATA-CASE_MEASURES-VOLUM = WK_MARM-VOLUM.
    MATERIAL_DATA-CASE_MEASURES-VOL_UNIT = WK_MARM-VOLEH.
    MATERIAL_DATA-CASE_MEASURES-PKG_LENGTH = WK_MARM-LAENG.
    MATERIAL_DATA-CASE_MEASURES-PKG_WIDTH = WK_MARM-BREIT.
    MATERIAL_DATA-CASE_MEASURES-PKG_HEIGHT = WK_MARM-HOEHE.
    MATERIAL_DATA-CASE_MEASURES-DIM_UNIT = WK_MARM-MEABM.
    WHEN 'PAK'.
    MATERIAL_DATA-INR_CRTN_COUNT = WK_MARM-UMREZ.
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT = WK_MARM-BRGEW.
    MATERIAL_DATA-INR_CRTN_MEASURES-WT_UNIT = WK_MARM-GEWEI.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM = WK_MARM-VOLUM.
    MATERIAL_DATA-INR_CRTN_MEASURES-VOL_UNIT = WK_MARM-VOLEH.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH = WK_MARM-LAENG.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH = WK_MARM-BREIT.
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT = WK_MARM-HOEHE.
    MATERIAL_DATA-INR_CRTN_MEASURES-DIM_UNIT = WK_MARM-MEABM.
    ENDCASE.
    ENDFORM. " evaluate_meinh
    Get characterics from the AUSP & CABN tables.
    FORM GET_AUSP.
    *--- Get object number for classification lookup.
    data: l_objek like ausp-objek.
    clear l_objek.
    select cuobj into l_objek from inob up to 1 rows
    where klart = '001'
    and obtab = 'MARA'
    and objek = material_data-matnr.
    endselect.
    SELECT A~ATINN " internal characteristic
    A~ATWRT " characteristic value
    A~ATAWE " unit of measurement
    A~ATAW1 " unit of measurement
    A~ATFLV " internal floating point from (value if date)
    C~ATNAM " characteristic name
    INTO (WK_AUSP-ATINN,
    WK_AUSP-ATWRT,
    WK_AUSP-ATAWE,
    WK_AUSP-ATAW1,
    WK_AUSP-ATFLV,
    WK_CABN-ATNAM)
    FROM AUSP AS A INNER JOIN
    CABN AS C ON AATINN = CATINN
    where a~objek = l_objek
    AND C~ATNAM LIKE 'MM_%'
    AND A~LKENZ = SPACE.
    PERFORM EVALUATE_CHARACTERISTIC.
    ENDSELECT.
    ENDFORM. " get_ausp
    Populate output record fields based on characteristic type.
    FORM EVALUATE_CHARACTERISTIC.
    DATA: SIZE_TEMP TYPE I.
    CASE WK_CABN-ATNAM.
    when 'MM_BOTTLE_SIZE'.
    MATERIAL_DATA-BOTTLE_SIZE = WK_AUSP-ATWRT.
    when 'MM_BRAND_COLOR'.
    MATERIAL_DATA-BRAND_COLOR = WK_AUSP-ATWRT.
    WHEN 'MM_BRAND_DISTRIBUTOR'.
    MATERIAL_DATA-BRAND_DISTR = WK_AUSP-ATWRT.
    when 'MM_BRAND_NAME'.
    MATERIAL_DATA-BRAND_NAME = WK_AUSP-ATWRT.
    when 'MM_BRAND_SHAPE'.
    MATERIAL_DATA-BRAND_SHAPE = WK_AUSP-ATWRT.
    WHEN 'MM_DOSAGE_FORM'.
    MATERIAL_DATA-DOSAGE_FORM = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-DOSAGE_FORM_DSC.
    when 'MM_DOSE_ADMINISTRATION'.
    MATERIAL_DATA-DOSE_ADMIN = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-DOSE_ADMIN_DSC.
    WHEN 'MM_ITEM_PACKAGE_SIZE'.
    SIZE_TEMP = WK_AUSP-ATFLV.
    MATERIAL_DATA-ITEM_PACKAGE_SIZE = SIZE_TEMP.
    WHEN 'MM_ITEM_PACKAGE_TYPE'.
    MATERIAL_DATA-ITEM_PACKAGE_TYPE = WK_AUSP-ATWRT.
    when 'MM_LOGO_DESC'.
    MATERIAL_DATA-LOGO_DESC = WK_AUSP-ATWRT.
    when 'MM_PRESCRIPTION_FLAG'.
    MATERIAL_DATA-PRESCRIPT_FLAG = WK_AUSP-ATWRT.
    when 'MM_THERAPEUTIC_CLASS'.
    MATERIAL_DATA-THER_CLASS = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-THER_CLASS_DSC.
    when 'MM_THERAPEUTIC_SUB_CLASS'.
    MATERIAL_DATA-THER_SUB_CLASS = WK_AUSP-ATWRT.
    PERFORM GET_CHARACTERISTIC_DSC
    USING WK_AUSP-ATINN
    WK_AUSP-ATWRT
    CHANGING MATERIAL_DATA-THER_SUB_CLASS_DSC.
    WHEN 'MM_THERAPEUTIC_RATING'.
    MATERIAL_DATA-THER_EQUIV = WK_AUSP-ATWRT.
    when 'MM_ANDA_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-ANDA_DATE.
    when 'MM_ANDA_NUMBER'.
    MATERIAL_DATA-ANDA_NUMBER = WK_AUSP-ATWRT.
    when 'MM_BIO_STUDY'.
    MATERIAL_DATA-BIO_STUDY = WK_AUSP-ATWRT.
    when 'MM_DESI_INDICATOR'.
    MATERIAL_DATA-DESI_INDICATOR = WK_AUSP-ATWRT.
    when 'MM_DRUG_TERMINATION_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-DRUG_TERM_DT.
    when 'MM_FDA_APPROVAL_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-FDA_APPRV_DT.
    when 'MM_ITEM_REGULATORY_NAME'.
    MATERIAL_DATA-ITEM_REG_NM = WK_AUSP-ATWRT.
    when 'MM_MARKET_DATE'.
    PERFORM CONVERT_TO_DATE USING WK_AUSP-ATFLV
    CHANGING MATERIAL_DATA-MARKET_DT.
    when 'MM_PRODUCT_COLOR'.
    MATERIAL_DATA-PRODUCT_COLOR = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_FLAVOR'.
    MATERIAL_DATA-PRODUCT_FLAVOR = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_SHAPE'.
    MATERIAL_DATA-PRODUCT_SHAPE = WK_AUSP-ATWRT.
    when 'MM_PRODUCT_STRENGTH'.
    MATERIAL_DATA-PRODUCT_STRENGTH = WK_AUSP-ATWRT.
    WHEN 'MM_VENDOR'.
    MATERIAL_DATA-VENDOR_NUM = WK_AUSP-ATWRT.
    ENDCASE.
    CLEAR SIZE_TEMP.
    ENDFORM. " evaluate_characteristic
    Get descriptive text from CAWN & CAWNT for characteristics.
    FORM GET_CHARACTERISTIC_DSC USING PARM_ATINN
    PARM_ATWRT
    CHANGING PARM_DSC_TEXT.
    CLEAR PARM_DSC_TEXT.
    SELECT SINGLE ATWTB
    INTO PARM_DSC_TEXT
    FROM CAWN AS C1 INNER JOIN
    CAWNT AS C2 ON C1ATINN = C2ATINN
    AND C1ATZHL = C2ATZHL
    WHERE C1~ATINN = PARM_ATINN
    AND C1~ATWRT = PARM_ATWRT
    AND C2~SPRAS = SY-LANGU
    AND C2~ADZHL = 0.
    ENDFORM. " get_characteristic_dsc
    Call function CTCV_CONVERT_FLOAT_TO_DATE to convert floating point
    number to a date in yyyymmdd format.
    form convert_to_date using date
    changing conv_date.
    clear conv_date.
    data: wrk_date(30) type c."Format YYYYMMDD changing it to MMDDYYYY
    call function 'CTCV_CONVERT_FLOAT_TO_DATE'
    EXPORTING
    float = date
    IMPORTING
    date = wrk_date
    EXCEPTIONS
    others = 1.
    CONV_DATE = WRK_DATE.
    ENDFORM. " convert_to_date
    Get substitute material number.
    FORM GET_SUBSTITUTE_MATNR.
    SELECT SINGLE SMATN
    DATAB
    DATBI
    INTO (MATERIAL_DATA-SMATN,
    MATERIAL_DATA-SMATN_START,
    MATERIAL_DATA-SMATN_END)
    FROM KOTD001 INNER JOIN
    KONDD ON KOTD001~KNUMH = KONDD~KNUMH
    WHERE KAPPL = 'V' "* Sales/Distribution
    AND KSCHL = 'A001' "* Material Entered
    AND MATWA = MATERIAL_DATA-MATNR
    AND DATBI >= SY-DATUM
    AND DATAB <= SY-DATUM
    AND SUGRD = SPACE.
    ENDFORM. " get_substitute_matnr.
    Get basic data text for material item note.
    If this is longer than 500 bytes, it will be truncated at 500.
    FORM GET_BASIC_DATA_TEXT.
    DATA: BEGIN OF TEXT_HEADER.
    INCLUDE STRUCTURE THEAD. "* SAPscript: Text Header
    DATA: END OF TEXT_HEADER.
    DATA: BEGIN OF TEXT_LINES OCCURS 100.
    INCLUDE STRUCTURE TLINE. "* SAPscript: text lines
    DATA: END OF TEXT_LINES.
    DATA: ITEM_NOTE_LENGTH TYPE I.
    Set up text header for call to READ_TEXT.
    TEXT_HEADER-TDOBJECT = 'MATERIAL'.
    TEXT_HEADER-TDNAME = MATERIAL_DATA-MATNR.
    TEXT_HEADER-TDID = 'GRUN'. "* Basic data text
    TEXT_HEADER-TDSPRAS = SY-LANGU.
    CALL FUNCTION 'READ_TEXT'
    EXPORTING
    CLIENT = SY-MANDT
    ID = TEXT_HEADER-TDID
    LANGUAGE = TEXT_HEADER-TDSPRAS
    NAME = TEXT_HEADER-TDNAME
    OBJECT = TEXT_HEADER-TDOBJECT
    ARCHIVE_HANDLE = 0
    IMPORTING
    HEADER =
    TABLES
    LINES = TEXT_LINES
    EXCEPTIONS
    ID = 1
    LANGUAGE = 2
    NAME = 3
    NOT_FOUND = 4
    OBJECT = 5
    REFERENCE_CHECK = 6
    WRONG_ACCESS_TO_ARCHIVE = 7
    OTHERS = 8.
    CASE SY-SUBRC.
    WHEN 0.
    LOOP AT TEXT_LINES.
    IF SY-TABIX = 1.
    MATERIAL_DATA-ITEM_NOTE = TEXT_LINES-TDLINE.
    ELSE.
    Pass up to 500 bytes to Siebel.
    ITEM_NOTE_LENGTH = STRLEN( MATERIAL_DATA-ITEM_NOTE ).
    IF ITEM_NOTE_LENGTH > 498.
    EXIT.
    ELSE.
    CONCATENATE MATERIAL_DATA-ITEM_NOTE
    TEXT_LINES-TDLINE
    INTO MATERIAL_DATA-ITEM_NOTE
    SEPARATED BY SPACE.
    ENDIF.
    ENDIF.
    ENDLOOP.
    WHEN 4.
    Not found; this is normal if no text was entered.
    WHEN OTHERS.
    MESSAGE E000(38) WITH 'Bad call to function READ_TEXT'.
    ENDCASE.
    ENDFORM. " get_substitute_matnr
    Open files, set initial conditions, etc.
    FORM INITIAL_STUFF.
    data : w_length type i .
    PROGNAME = SY-REPID.
    WRITE: / 'Program: ', PROGNAME.
    WRITE: / 'Execution start date: ', SY-DATUM.
    WRITE: / 'Execution start time: ', SY-UZEIT.
    WRITE: / .
    CALL FUNCTION 'Z_SET_INTERFACE_FILENAME'
    EXPORTING
    INTERFACE_NAME = MATLFILE
    DATE_TIME_SW = 'X'
    EXTENSION_TYPE = 'txt'
    IMPORTING
    PATHNAME = OUTFILE
    EXCEPTIONS
    OTHERS = 1.
    f_m_uncfile = outfile .
    clear w_length.
    w_length = strlen( matlfile ).
    replace matlfile with c_uncpath_material into F_M_UNCFILE length
    w_length .
    open dataset F_m_UNCFILE for output in text mode .
    if sy-subrc <> 0 .
    MESSAGE E000(38) WITH 'Unable to open file ' F_m_UNCFILE.
    endif.
    ENDFORM. " initial_stuff.
    Close files, etc.
    FORM WRAPUP.
    CLOSE DATASET F_M_UNCFILE.
    PERFORM CONVERT_FILE.
    WRITE: / 'Material interface file name: ', OUTFILE,
    / 'Number of records written to material file: ', WRITE_COUNT.
    endform.
    This form is included for testing and is performed if the test_rec
    checkbox is checked.
    FORM WRITE_FORMATTED_TEST_RECORD.
    WRITE: /,
    / 'Beginning of new record :',
    / 'Start Delimiter :|' NO-GAP,
    MATERIAL_DATA-DELIMITER_START NO-GAP, '|',
    / 'Record Type :|' NO-GAP,
    MATERIAL_DATA-REC_TYPE NO-GAP, '|',
    / 'Material Number :|' NO-GAP,
    MATERIAL_DATA-MATNR NO-GAP USING NO EDIT MASK, '|',
    / 'Material Description :|' NO-GAP,
    MATERIAL_DATA-MAKTX NO-GAP, '|',
    / 'Substitute Material Number :|' NO-GAP,
    MATERIAL_DATA-SMATN NO-GAP, '|',
    / 'Substitute Start Date :|' NO-GAP,
    MATERIAL_DATA-SMATN_START NO-GAP, '|',
    / 'Substitute End Date :|' NO-GAP,
    MATERIAL_DATA-SMATN_END NO-GAP, '|',
    / 'Status Code :|' NO-GAP,
    MATERIAL_DATA-VMSTA NO-GAP, '|',
    / 'Status Description :|' NO-GAP,
    MATERIAL_DATA-VMSTB NO-GAP, '|',
    / 'Date of last change :|' NO-GAP,
    MATERIAL_DATA-LAEDA NO-GAP, '|',
    / 'User who changed record :|' NO-GAP,
    MATERIAL_DATA-AENAM NO-GAP, '|',
    / 'Manufacturer Number :|' NO-GAP,
    MATERIAL_DATA-VENDOR_NUM NO-GAP, '|',
    / 'Vendor Name :|' NO-GAP,
    MATERIAL_DATA-VENDOR_NM NO-GAP, '|',
    / 'Product Line Code :|' NO-GAP,
    MATERIAL_DATA-PROD_LINE_CD NO-GAP, '|',
    / 'Product Line Description :|' NO-GAP,
    MATERIAL_DATA-PROD_LINE_DSC NO-GAP, '|',
    / 'DEA Schedule ID :|' NO-GAP,
    MATERIAL_DATA-DEA_SCH_ID NO-GAP, '|',
    / 'DEA Schedule Description :|' NO-GAP,
    MATERIAL_DATA-DEA_SCH_DSC NO-GAP, '|',
    / 'Labeller Code :|' NO-GAP,
    MATERIAL_DATA-NORMT NO-GAP, '|',
    / 'Standard Price :|' NO-GAP,
    MATERIAL_DATA-STPRS NO-GAP, '|',
    / 'Logo Description :|' NO-GAP,
    MATERIAL_DATA-LOGO_DESC NO-GAP, '|',
    / 'Prescription Flag :|' NO-GAP,
    MATERIAL_DATA-PRESCRIPT_FLAG NO-GAP, '|',
    / 'Therapeutic Class :|' NO-GAP,
    MATERIAL_DATA-THER_CLASS NO-GAP, '|',
    / 'Therapeutic Class Description :|' NO-GAP,
    MATERIAL_DATA-THER_CLASS_DSC NO-GAP, '|',
    / 'Therapeutic Subclass :|' NO-GAP,
    MATERIAL_DATA-THER_SUB_CLASS NO-GAP, '|',
    / 'Therapeutic Subclass Description:|' NO-GAP,
    MATERIAL_DATA-THER_SUB_CLASS_DSC NO-GAP, '|',
    / 'Therapeutic Equivalence :|' NO-GAP,
    MATERIAL_DATA-THER_EQUIV NO-GAP, '|',
    / 'Item Package Size :|' NO-GAP,
    MATERIAL_DATA-ITEM_PACKAGE_SIZE NO-GAP, '|',
    / 'Item Package Type :|' NO-GAP,
    MATERIAL_DATA-ITEM_PACKAGE_TYPE NO-GAP, '|',
    / 'Dosage Form :|' NO-GAP,
    MATERIAL_DATA-DOSAGE_FORM NO-GAP, '|',
    / 'Dosage Form Description :|' NO-GAP,
    MATERIAL_DATA-DOSAGE_FORM_DSC NO-GAP, '|',
    / 'Dose Administration :|' NO-GAP,
    MATERIAL_DATA-DOSE_ADMIN NO-GAP, '|',
    / 'Dose Administration Description :|' NO-GAP,
    MATERIAL_DATA-DOSE_ADMIN_DSC NO-GAP, '|',
    / 'Bottle Size :|' NO-GAP,
    MATERIAL_DATA-BOTTLE_SIZE NO-GAP, '|',
    / 'Brand Name :|' NO-GAP,
    MATERIAL_DATA-BRAND_NAME NO-GAP, '|',
    / 'Brand Distributor :|' NO-GAP,
    MATERIAL_DATA-BRAND_DISTR NO-GAP, '|',
    / 'Brand Color :|' NO-GAP,
    MATERIAL_DATA-BRAND_COLOR NO-GAP, '|',
    / 'Brand Shape :|' NO-GAP,
    MATERIAL_DATA-BRAND_SHAPE NO-GAP, '|',
    / 'ANDA Date :|' NO-GAP,
    MATERIAL_DATA-ANDA_DATE NO-GAP, '|',
    / 'ANDA Number :|' NO-GAP,
    MATERIAL_DATA-ANDA_NUMBER NO-GAP, '|',
    / 'Bio Study :|' NO-GAP,
    MATERIAL_DATA-BIO_STUDY NO-GAP, '|',
    / 'DESI Indicator :|' NO-GAP,
    MATERIAL_DATA-DESI_INDICATOR NO-GAP, '|',
    / 'Drug Term Date :|' NO-GAP,
    MATERIAL_DATA-DRUG_TERM_DT NO-GAP, '|',
    / 'FDA Approval Date :|' NO-GAP,
    MATERIAL_DATA-FDA_APPRV_DT NO-GAP, '|',
    / 'Item Regulatory Name :|' NO-GAP,
    MATERIAL_DATA-ITEM_REG_NM NO-GAP, '|',
    / 'Market Date :|' NO-GAP,
    MATERIAL_DATA-MARKET_DT NO-GAP, '|',
    / 'Product Color :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_COLOR NO-GAP, '|',
    / 'Product Flavor :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_FLAVOR NO-GAP, '|',
    / 'Product Shape :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_SHAPE NO-GAP, '|',
    / 'Product Strength :|' NO-GAP,
    MATERIAL_DATA-PRODUCT_STRENGTH NO-GAP, '|',
    / 'Base Unit of Measure :|' NO-GAP,
    MATERIAL_DATA-MEINS NO-GAP, '|',
    / 'Base Weight :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-WEIGHT NO-GAP, '|',
    / 'Base Weight Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Base Volume :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-VOLUM NO-GAP, '|',
    / 'Base Volume Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Base Package Length :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Base Package Width :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Base Package Height :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Base Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-BASE_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Inner Carton Count :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_COUNT NO-GAP, '|',
    / 'Inner Carton Weight :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-WEIGHT NO-GAP, '|',
    / 'Inner Carton Weight Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Inner Carton Volume :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-VOLUM NO-GAP, '|',
    / 'Inner Carton Volume Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Inner Carton Package Length :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Inner Carton Package Width :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Inner Carton Package Height :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Inner Carton Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-INR_CRTN_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Case Count :|' NO-GAP,
    MATERIAL_DATA-CASE_COUNT NO-GAP, '|',
    / 'Case Weight :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-WEIGHT NO-GAP, '|',
    / 'Case Weight Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-WT_UNIT NO-GAP, '|',
    / 'Case Volume :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-VOLUM NO-GAP, '|',
    / 'Case Volume Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-VOL_UNIT NO-GAP, '|',
    / 'Case Length :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_LENGTH NO-GAP, '|',
    / 'Case Width :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_WIDTH NO-GAP, '|',
    / 'Case Height :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-PKG_HEIGHT NO-GAP, '|',
    / 'Case Dimension Unit :|' NO-GAP,
    MATERIAL_DATA-CASE_MEASURES-DIM_UNIT NO-GAP, '|',
    / 'Item Note :|' NO-GAP,
    MATERIAL_DATA-ITEM_NOTE NO-GAP, '|',
    / 'End Delimiter :|' NO-GAP,
    MATERIAL_DATA-DELIMITER_END NO-GAP, '|',
    ENDFORM. " write_formatted_test_record
    Copy the output files to the appropriate archive folder.
    FORM COPY_TO_ARCHIVE USING C_FILE.
    DATA:
    ARCHFILE(100),
    COPYFILES(255),
    ITAB LIKE BTCXPM OCCURS 0 WITH HEADER LINE,
    W_LENGTH TYPE I ,
    W_INFILE(100),
    W_OUTFILE(100).
    PERFORM BUILD_ARCHIVE_NAME USING C_FILE
    CHANGING ARCHFILE.
    CONCATENATE C_FILE C_UNCPATH INTO COPYFILES SEPARATED BY SPACE .
    CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
    EXPORTING
    COMMANDNAME = 'ZUNIXCOPY'
    ADDITIONAL_PARAMETERS = COPYFILES
    OPERATINGSYSTEM = SY-OPSYS
    STDOUT = 'X'
    STDERR = 'X'
    TERMINATIONWAIT = 'X'
    TABLES
    EXEC_PROTOCOL = ITAB
    EXCEPTIONS
    NO_PERMISSION = 1
    COMMAND_NOT_FOUND = 2
    PARAMETERS_TOO_LONG = 3
    SECURITY_RISK = 4
    WRONG_CHECK_CALL_INTERFACE = 5
    PROGRAM_START_ERROR = 6
    PROGRAM_TERMINATION_ERROR = 7
    X_ERROR = 8
    PARAMETER_EXPECTED = 9
    TOO_MANY_PARAMETERS = 10
    ILLEGAL_COMMAND = 11
    WRONG_ASYNCHRONOUS_PARAMETERS = 12
    CANT_ENQ_TBTCO_ENTRY = 13
    JOBCOUNT_GENERATION_ERROR = 14
    OTHERS = 15.
    w_length = strlen( c_final_path ).
    replace c_final_path with ' ' into c_file length w_length.
    shift c_file left deleting leading space .
    concatenate c_uncpath c_file into w_infile .
    concatenate archfile c_file into w_outfile .
    CALL FUNCTION 'Z_CONVERT_UNIX2DOS'
    EXPORTING
    INFILE = w_infile
    OUTFILE = w_outfile
    EXCEPTIONS
    ERROR = 1
    IDENTICAL_FILENAMES = 2
    NO_INPUT_FILE = 3
    OTHERS = 4.
    IF SY-SUBRC = 0.
    SKIP.
    WRITE: / C_FILE, 'copied to', ARCHFILE.
    ELSE.
    MESSAGE E000(38) WITH 'Archive file copy failed.'.
    ENDIF.
    ENDFORM. " copy_to_archive.
    Build Archive file pathnames.
    FORM BUILD_ARCHIVE_NAME USING P_PATH
    CHANGING P_ARCH.
    DATA:
    NODECOUNT TYPE I,
    LASTNODE TYPE I,
    BEGIN OF NODES OCCURS 25,
    NODENAME(100),
    END OF NODES.
    SPLIT P_PATH AT '/' INTO TABLE NODES.
    DESCRIBE TABLE NODES LINES NODECOUNT.
    CLEAR P_ARCH.
    LASTNODE = NODECOUNT - 1.
    LOOP AT NODES.
    CASE SY-TABIX.
    WHEN LASTNODE.
    CONCATENATE P_ARCH NODES-NODENAME '/archive/' INTO P_ARCH.
    WHEN NODECOUNT.
    WHEN OTHERS.
    CONCATENATE P_ARCH NODES-NODENAME '/' INTO P_ARCH.
    ENDCASE.
    ENDLOOP.
    ENDFORM. " build_archive_name
    *& Form CONVERT_FILE
    Move output files from unconverted directory to final destination
    directory and convert from UNIX to DOS format in the process.
    FORM CONVERT_FILE.
    CONCATENATE MATLFILE '.txt' INTO OUTFILE.
    Convert customer file from Unix to DOS
    CALL FUNCTION 'Z_CONVERT_UNIX2DOS'
    EXPORTING
    INFILE = F_M_UNCFILE
    OUTFILE = outFILE
    EXCEPTIONS
    ERROR = 1
    IDENTICAL_FILENAMES = 2
    NO_INPUT_FILE = 3
    OTHERS = 4.
    IF SY-SUBRC <> 0.
    write: /'Error converting file. Input file: ', F_M_UNCFILE.
    write: /' Output file: ', outFILE.
    ENDIF.
    ENDFORM. " CONVERT_FILE

    Hi Vijay,
    thanks very much for the reply with valuable suggestion.
    I have made couple of changes in the program like this:
    i have created another Internal table like this...for selecting the data of MARA...
    <b>data: begin of it_temp occurs 0,
             matnr like mara-matnr,
          end of it_temp.</b>
    then I have changed the FORM like this ....
    Plz have a look on that and let me know if any thing is wrong in that...
    thnx much..
    <b>form get_outsert.
    select matnr from mara into corresponding fields of table
        it_temp where mtart = 'FERT' or mtart = 'HAWA'.
         select didnrk amatnr
             into (i_outsert-component, i_outsert-matnr)
                from stpo as d
               inner join stko as c
                     on dstlnr = cstlnr
               inner join mast as b
                     on cstlnr = bstlnr
               inner join mara as a
                     on bmatnr = amatnr
               for all entries IN it_temp
                   where a~matnr = it_temp-matnr.
           append i_outsert.
         endselect.
         loop at i_outsert where matnr = it_temp-matnr.
      if ( i_outsert-component cs str1 ) or ( i_outsert-component cs str2 ).
               write i_outsert-component to material_data-component.
               append material_data.
      elseif ( i_outsert-component cs str3 ) or
                             ( i_outsert-component cs str4 ).
               write i_outsert-component to material_data-mguide.
               append material_data.
      endif.
          modify material_data transporting component
                          where matnr = i_outsert-matnr.
         endloop.
    endform.                               "get_outsert</b>

  • Popup from ALV for displaying full text = problems!!!

    Dear all,
       I created an ALV to display data. In this ALV, I have a text column, which just show FIRST 30 characters of the original text.
      Now I want to double click on that field, and it will pop up a small window to show full text (the original text, unknown length).
    I made lots of references and I decided to use FM POPUP_WITH_TABLE because of some reasons:
    a)  the original text is retrieved from another FM READ_TEXT. After the call of READ_TEXT, the text will be stored into an internal table. Then, it can be passed to POPUP_WITH_TABLE without more modification.
    b) POPUP_WITH_TABLE can show the text more meaningfully. I mean, if the length of the text is greater than the length of the popup window, it <b>automatically break the line and displays the rest in the next line</b>. ( FM POPUP_TO_INFORM does NOT do that.)
    However, I've faced some <b>PROBLEMS</b> with FM POPUP_WITH_TABLE
    1) The popup window has 2 button OK and Cancel. <b>Is there any way just to display Cancel button?</b>
    2) If I click on Cancel or OK without choose any line on the popup window => It will raise an exception, called BREAK_OFF. In this case
    If the clicked button is CANCEL => it will close the popup
    If  the clicked button is OK => nothing happens. And I must click on CANCEL to close the popup.
    <b>I want to close the popup windown without raising any exceptions. How can I ?</b>
    3) When I enter many complex selection criteria on Selection Screen to limit the result, displaying ALV is good. But when I click on the text field to popup => the report cannot be manipulated. I have to kill the session in SM04.
    <b>What's wrong? </b>(because for single selection criteria, it works well.)
    Every body has any suggestions?
    Thank you in advance

    I solved it. I just use another list for pop-up event.
    Although it worked well now, I thought it was not a good solution.
    Thank you all of you.
    Best regards.

  • Problem in using FM SELECT_TEXT

    Hi friends,
    I have a problem in using fm SELECT_TEXT.
    Here I want to fetch Material PO text in Material master to my report.
    I just dont know in which field of table "it_thead" the actual text is available.\
    I tried debugging the program but was not successful.
    I have also tried using READ_TEXT but it gives an error if no Text exists.
        CALL FUNCTION 'SELECT_TEXT'
          EXPORTING
            client     = sy-mandt
            object     = 'MATERIAL'
            name       = wrk_matnr
            id         = 'BEST'
            language   = sy-langu
          TABLES
            selections = it_thead.
    How do i print the actual MAterial PO text in IT_THEAD ?
    hope u understand the question...please do let me know if any details are required from myside..

    Hi,
    My mistake.
    Check below sample code.
    PARAMETERS: po_matnr TYPE mara-matnr.
    DATA: i_lines TYPE STANDARD TABLE OF tline,
          wa_lines TYPE tline,
          l_matnr TYPE thead-tdname.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         = po_matnr
    IMPORTING
       OUTPUT        = po_matnr
    MOVE po_matnr TO l_matnr.
    CALL FUNCTION 'READ_TEXT'
      EXPORTING
    *   CLIENT                        = SY-MANDT
        ID                            = 'BEST'
        LANGUAGE                      = sy-langu
        NAME                          = l_matnr              "Pass material with leading zeros
        OBJECT                        = 'MATERIAL'
    *   ARCHIVE_HANDLE                = 0
    *   LOCAL_CAT                     = ' '
    * IMPORTING
    *   HEADER                        =
      TABLES
        LINES                         = i_lines
    EXCEPTIONS
       ID                            = 1
       LANGUAGE                      = 2
       NAME                          = 3
       NOT_FOUND                     = 4
       OBJECT                        = 5
       REFERENCE_CHECK               = 6
       WRONG_ACCESS_TO_ARCHIVE       = 7
       OTHERS                        = 8
    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_lines INTO wa_lines.
      WRITE: /1 wa_lines-tdline.
    ENDLOOP.
    Just execute this code by inputting ur material number.
    If the text doesnot exist the error u r getting because of not commenting the MESSAGE statement after FM call. Try in the way i told above.
    Thanks,
    Vinod.
    Edited by: Vinod Reddy Vemuru on Feb 28, 2009 4:36 PM

  • Smartforms o/p 2 PDF conversion problem , plz see my code

    Hi Smartform Guys
    1)I m getting error <b>"CONVT_NO_NUMBER "</b>  in converting my Smartform output to PDF.
    *Printing of Export Invoice, Packing List,Enclosure to Packing List &  *
    *Case Marking in one SMART FORMS Layout                                *
    REPORT ZSD_REP_MULTI_PRINT.
    TABLES :
        vbak,
        vbap,
        vbpa,
        vbfa,
        VBRK,
        VBRP,
        LIKP,
        LIPS,
        KONV,
        objk,
        tvko,
        ser01,
        sadr,
        equi,
        makt,
        mast,
        t005t,
        kna1,
        t001w,
        T001,
        ADRC,
        sscrfields,
        zpp_plcmi,      "Packing list history For Conf: Item data
        zplh,           "PACKING LIST HISTORY : HEADER DATA
        zpli.           "PACKING LIST HISTORY : ITEM DATA
    DATA: FM_NAME  TYPE RS38L_FNAM,
          P_E_DEVTYPE TYPE RSPOPTYPE,
          P_JOB_OUTPUT_INFO TYPE SSFCRESCL OCCURS 2000 WITH HEADER LINE,
          P_OUTPUT_OPTIONS TYPE SSFCOMPOP OCCURS 0 WITH HEADER LINE,
          P_CONTROL_PARAMETERS TYPE SSFCTRLOP OCCURS 0 WITH HEADER LINE ,
          P_DOC  LIKE DOCS OCCURS 2000 WITH HEADER LINE,
          P_LINES LIKE TLINE OCCURS 200,
          P_BIN_FILESIZE TYPE I,
          P_LANGUAGE TYPE SFLANGU,
          P_BIN_FILE TYPE XSTRING.
    DATA: T_ITEM   TYPE  ZSD_TABL_LITEM,
          WA_ITEM  TYPE  ZSD_STRUCT_LITEM,
          T_ADRS   LIKE  ZSD_STRUCT_ADRS  OCCURS 0 WITH HEADER LINE,
          MSLINES  LIKE  TLINE OCCURS 1 WITH HEADER LINE,
          TIDNO    LIKE STXL-TDID,
          TNAME    LIKE STXL-TDNAME,
          TOBJT    LIKE STXL-TDOBJECT,
          SSORD    LIKE VBAK-VBELN,
          TOT      LIKE VBAK-NETWR,
          WORD     LIKE SPELL.
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    PARAMETERS: P_DELNO LIKE  LIKP-VBELN OBLIGATORY,
                P_INVNO LIKE  VBRK-VBELN OBLIGATORY,
                P_DATE  LIKE  SY-DATUM.
    SELECTION-SCREEN END   OF BLOCK blk1.
    AT SELECTION-SCREEN.
      CLEAR T_ADRS.
      REFRESH T_ITEM.
      T_ADRS-INVNO = P_INVNO.
      T_ADRS-INVDAT = P_DATE.
      SELECT SINGLE VBELV INTO  VBFA-VBELV
                             FROM  VBFA
                             WHERE VBELN = P_DELNO
                               AND VBTYP_N = 'J'  .
      SSORD = VBFA-VBELV.
    *Exporter's  Address
      SELECT SINGLE BUKRS_VF INTO  VBAK-BUKRS_VF
                             FROM  VBAK
                             WHERE VBELN = VBFA-VBELV.
      SELECT SINGLE   ADRNR
                      INTO T001-ADRNR
                      FROM T001
                      WHERE BUKRS = VBAK-BUKRS_VF.
      SELECT SINGLE NAME1 STREET CITY1 POST_CODE1 COUNTRY
             INTO (T_ADRS-NAME1,T_ADRS-STREET,T_ADRS-CITY1,
                   T_ADRS-POST_CODE1, ADRC-COUNTRY)
             FROM  ADRC
             WHERE ADDRNUMBER EQ T001-ADRNR.
      SELECT SINGLE LANDX
                    INTO T_ADRS-COUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
    **BUYERS NO & DATE
    SELECT SINGLE BSTNK BSTDK INTO  (T_ADRS-BSTNK,T_ADRS-BSTDK)
                         FROM  VBAK
                         WHERE VBELN = VBFA-VBELV.
    *Consignee Address & Buyer Other Than Consignee
      SELECT SINGLE KUNNR KUNAG INTO (LIKP-KUNNR, LIKP-KUNAG)
                                FROM LIKP WHERE VBELN = P_DELNO.
      IF LIKP-KUNNR = LIKP-KUNAG.
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                  INTO (T_ADRS-CNAME1, T_ADRS-CNAME2, T_ADRS-CSTREET,
                        T_ADRS-CCITY,  T_ADRS-CPCODE, T_ADRS-CREGIO,
                        T_ADRS-CTELF1, KNA1-ADRNR)
                  FROM  KNA1
                  WHERE KUNNR = LIKP-KUNNR.
        SELECT SINGLE COUNTRY INTO  ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-CCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
        T_ADRS-ONAME1   =  T_ADRS-CNAME1 .
        T_ADRS-ONAME2   =  T_ADRS-CNAME2 .
        T_ADRS-OSTREET  =  T_ADRS-CSTREET .
        T_ADRS-OCITY    =  T_ADRS-CCITY.
        T_ADRS-OPCODE   =  T_ADRS-CPCODE .
        T_ADRS-OREGIO   =  T_ADRS-CREGIO.
        T_ADRS-OTELF1   =  T_ADRS-CTELF1 .
        T_ADRS-OCOUNTRY =  T_ADRS-CCOUNTRY.
      ELSE.
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                  INTO (T_ADRS-CNAME1, T_ADRS-CNAME2, T_ADRS-CSTREET,
                        T_ADRS-CCITY,  T_ADRS-CPCODE, T_ADRS-CREGIO,
                        T_ADRS-CTELF1, KNA1-ADRNR)
                  FROM  KNA1
                  WHERE KUNNR = LIKP-KUNNR.
        SELECT SINGLE COUNTRY INTO ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-CCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
    *Buyer Other than Consignee
        SELECT SINGLE NAME1 NAME2 STRAS ORT01 PSTLZ REGIO TELF1 ADRNR
                   INTO (T_ADRS-ONAME1, T_ADRS-ONAME2, T_ADRS-OSTREET,
                         T_ADRS-OCITY,  T_ADRS-OPCODE, T_ADRS-OREGIO,
                         T_ADRS-OTELF1, KNA1-ADRNR)
                   FROM  KNA1
                   WHERE KUNNR = LIKP-KUNAG.
        SELECT SINGLE COUNTRY INTO  ADRC-COUNTRY
                              FROM  ADRC
                              WHERE ADDRNUMBER EQ KNA1-ADRNR.
        SELECT SINGLE LANDX
                    INTO T_ADRS-OCOUNTRY
                    FROM T005T
                    WHERE     SPRAS = 'EN'
                          AND LAND1 = ADRC-COUNTRY.
      ENDIF.
    *Other's Ref
      TIDNO = 'Z071'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-OREF = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Buyer's Order No  Ref
      TIDNO = 'Z023'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-BUYER = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Exporter Ref
      TIDNO = 'Z072'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-XPREF = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Pre-Carraige By
      TIDNO = 'Z074'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PCRG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Place Of reciept by Pre-Carraige
      TIDNO = 'Z073'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PLPCRG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Vessel/Flight No
      TIDNO = 'Z075'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-VFNO = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Port Of Loading
      TIDNO = 'Z077'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PLOAD = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Port Of Discharge
      TIDNO = 'Z076'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-PDISG = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Final Destination
      TIDNO = 'Z070'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-FDEST = mslines-tdline(25).
        EXIT.
      ENDLOOP.
    *Terms Of Delivery & Payment
      TIDNO = 'Z080'.
      TNAME = SSORD.
      TOBJT = 'VBBK'.
      PERFORM FINDTEXT.
      LOOP AT MSLINES.
        T_ADRS-TERMS = mslines-tdline(50).
        EXIT.
      ENDLOOP.
    APPEND T_ADRS.
    *BODY SECTION FOR LINE ITEMS
      SELECT POSNR KWMENG VRKME WAERK
             INTO  (VBAP-POSNR, VBAP-KWMENG, VBAP-VRKME, VBAP-WAERK)
             FROM  VBAP
             WHERE VBELN = SSORD.
    *Mark/Case No
        TIDNO = '0002'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-MARKNO = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Packing Type
        TIDNO = '0003'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-PACKTYP = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Description
        TIDNO = '0001'.
        CONCATENATE SSORD
                    VBAP-POSNR
        INTO        TNAME.
        TOBJT = 'VBBP'.
        PERFORM FINDTEXT.
        LOOP AT MSLINES.
          WA_ITEM-PACKTYP = mslines-tdline(40).
          EXIT.
        ENDLOOP.
    *Goods Quantity
        WA_ITEM-QTY = VBAP-KWMENG.
        WA_ITEM-VRKME = VBAP-VRKME.
    *Goods Rate
        SELECT SINGLE KNUMV INTO VBAK-KNUMV FROM VBAK WHERE VBELN = SSORD.
        SELECT SINGLE KBETR WAERS
                      INTO  (WA_ITEM-RATE, WA_ITEM-WAERS)
                      FROM  KONV
                      WHERE KNUMV = VBAK-KNUMV
                        AND KPOSN = VBAP-POSNR
                        AND KSCHL = 'PR00'.
    *Goods Amount
        WA_ITEM-AMOUNT = WA_ITEM-QTY * WA_ITEM-RATE.
        WA_ITEM-WAERK = VBAP-WAERK.
        TOT = TOT + WA_ITEM-AMOUNT.
        APPEND WA_ITEM TO T_ITEM.
      ENDSELECT.
      T_ADRS-TOT = TOT.
      CALL FUNCTION 'SPELL_AMOUNT'
       EXPORTING
         AMOUNT          = TOT
         CURRENCY        = VBAP-WAERK
      FILLER          = ' '
         LANGUAGE        = SY-LANGU
       IMPORTING
         IN_WORDS        = WORD
       EXCEPTIONS
         NOT_FOUND       = 1
         TOO_LARGE       = 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.
    TEXT = WORD-WORD.
    CONCATENATE TEXT
                 'DECIMAL'
                  WORD-WORD
         INTO     TEXT
         SEPARATED BY ' '.
      T_ADRS-TOT_WORDS = WORD-WORD.
      APPEND T_ADRS.
    START-OF-SELECTION.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          FORMNAME                 = 'Z_SD_REP_MULTI_PRINT'
      VARIANT                  = ' '
      DIRECT_CALL              = ' '
       IMPORTING
          FM_NAME                  = FM_NAME
    EXCEPTIONS
       NO_FORM                  = 1
       NO_FUNCTION_MODULE       = 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.
      P_LANGUAGE = 'EN'.
      CALL   FUNCTION 'SSF_GET_DEVICE_TYPE'
        EXPORTING
          I_LANGUAGE    = P_LANGUAGE
          I_APPLICATION = 'SAPDEFAULT'
        IMPORTING
          E_DEVTYPE     = P_E_DEVTYPE.
      P_OUTPUT_OPTIONS-XSFCMODE = 'X'.
      P_OUTPUT_OPTIONS-XSF = SPACE.
      P_OUTPUT_OPTIONS-XDFCMODE = 'X'.
      P_OUTPUT_OPTIONS-XDF = SPACE.
      P_OUTPUT_OPTIONS-TDPRINTER = P_E_DEVTYPE.
      P_OUTPUT_OPTIONS-TDDEST = 'LOCL'.
      APPEND P_OUTPUT_OPTIONS.
      P_CONTROL_PARAMETERS-NO_DIALOG = 'X'.
      P_CONTROL_PARAMETERS-GETOTF = 'X'.
      P_CONTROL_PARAMETERS-NO_CLOSE = SPACE.
      APPEND  P_CONTROL_PARAMETERS.
      CALL FUNCTION FM_NAME
       EXPORTING
      ARCHIVE_INDEX              =
      ARCHIVE_INDEX_TAB          =
      ARCHIVE_PARAMETERS         =
        CONTROL_PARAMETERS         = P_CONTROL_PARAMETERS
      MAIL_APPL_OBJ              =
      MAIL_RECIPIENT             =
      MAIL_SENDER                =
        OUTPUT_OPTIONS             = P_OUTPUT_OPTIONS
        USER_SETTINGS              = 'X'
      IMPORTING
      DOCUMENT_OUTPUT_INFO       =
        JOB_OUTPUT_INFO            = P_JOB_OUTPUT_INFO
      JOB_OUTPUT_OPTIONS         =
      TABLES
        T_ADRS                     = T_ADRS
        T_ITEM                     = T_ITEM
    EXCEPTIONS
       FORMATTING_ERROR           = 1
       INTERNAL_ERROR             = 2
       SEND_ERROR                 = 3
       USER_CANCELED              = 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.
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA.
    CALL FUNCTION 'CONVERT_OTF_2_PDF'
      EXPORTING
        USE_OTF_MC_CMD               = 'X'
      ARCHIVE_INDEX                =
    IMPORTING
       BIN_FILESIZE                 = P_BIN_FILESIZE
      TABLES
        OTF                          = P_JOB_OUTPUT_INFO-OTFDATA
        DOCTAB_ARCHIVE               = P_DOC
        LINES                        = P_LINES
    EXCEPTIONS
       ERR_CONV_NOT_POSSIBLE        = 1
       ERR_OTF_MC_NOENDMARKER       = 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.
    BREAK-POINT.
    CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
       BIN_FILESIZE                  = P_BIN_FILESIZE
      CODEPAGE                      = ' '
       FILENAME                      = 'C:\TEMP.PDF'
       FILETYPE                      = 'BIN'
       MODE                          = ''
      WK1_N_FORMAT                  = ' '
      WK1_N_SIZE                    = ' '
      WK1_T_FORMAT                  = ' '
      WK1_T_SIZE                    = ' '
      COL_SELECT                    = ' '
      COL_SELECTMASK                = ' '
      NO_AUTH_CHECK                 = ' '
    IMPORTING
        FILELENGTH                    = P_BIN_FILESIZE
      TABLES
        DATA_TAB                      = P_LINES
      FIELDNAMES                    =
    EXCEPTIONS
      FILE_OPEN_ERROR               = 1
      FILE_WRITE_ERROR              = 2
      INVALID_FILESIZE              = 3
      INVALID_TYPE                  = 4
      NO_BATCH                      = 5
      UNKNOWN_ERROR                 = 6
      INVALID_TABLE_WIDTH           = 7
      GUI_REFUSE_FILETRANSFER       = 8
      CUSTOMER_ERROR                = 9
      NO_AUTHORITY                  = 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.
    CALL FUNCTION 'GUI_DOWNLOAD'
       EXPORTING
        BIN_FILESIZE = P_BIN_FILESIZE
        FILENAME = 'C:\Documents and Settings\pvipin\Desktop\sd.pdf'
        FILETYPE = 'BIN'
    APPEND = ' '
    WRITE_FIELD_SEPARATOR = ' '
    HEADER = '00'
    TRUNC_TRAILING_BLANKS = ' '
    WRITE_LF = 'X'
    COL_SELECT = ' '
    COL_SELECT_MASK = ' '
    DAT_MODE = ' '
    CONFIRM_OVERWRITE = ' '
    NO_AUTH_CHECK = ' '
    CODEPAGE = ' '
    IGNORE_CERR = ABAP_TRUE
    REPLACEMENT = '#'
    WRITE_BOM = ' '
    TRUNC_TRAILING_BLANKS_EOL = 'X'
    IMPORTING
    FILELENGTH =
    *TABLES
       DATA_TAB = P_LINES.
    FIELDNAMES =
    **EXCEPTIONS
    FILE_WRITE_ERROR = 1
    NO_BATCH = 2
    GUI_REFUSE_FILETRANSFER = 3
    INVALID_TYPE = 4
    NO_AUTHORITY = 5
    UNKNOWN_ERROR = 6
    HEADER_NOT_ALLOWED = 7
    SEPARATOR_NOT_ALLOWED = 8
    FILESIZE_NOT_ALLOWED = 9
    HEADER_TOO_LONG = 10
    DP_ERROR_CREATE = 11
    DP_ERROR_SEND = 12
    DP_ERROR_WRITE = 13
    UNKNOWN_DP_ERROR = 14
    ACCESS_DENIED = 15
    DP_OUT_OF_MEMORY = 16
    DISK_FULL = 17
    DP_TIMEOUT = 18
    FILE_NOT_FOUND = 19
    DATAPROVIDER_EXCEPTION = 20
    CONTROL_FLUSH_ERROR = 21
    OTHERS = 22 .
    IF SY-SUBRC <> 0.
         MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    *&      Form  FINDTEXT
          text
    FORM FINDTEXT.
      REFRESH mslines.
      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          client                  = sy-mandt
          id                      = tidno
          language                = sy-langu
          name                    = tname
          object                  = tobjt
        TABLES
          lines                   = mslines
        EXCEPTIONS
          id                      = 1
          language                = 2
          name                    = 3
          not_found               = 4
          object                  = 5
          reference_check         = 6
          wrong_access_to_archive = 7
          OTHERS                  = 8.
      DELETE mslines WHERE tdline IS INITIAL.
    ENDFORM.                    "FINDTEXTThnx in Advnce
    Moni
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman
    Message was edited by: md monirujjaman

    Hello,
    I think the following statement is causing problem.
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA.
    either give:
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA[].
    or
    directly pass P_JOB_OUTPUT_INFO-OTFDATA into FM parameter.
    This is because you are filling only header into P_OTF and NOT the Contents of internal table by the statement
    P_OTF[] = P_JOB_OUTPUT_INFO-OTFDATA.
    let me know whether it works.
    Regards, Murugesh AS
    have alook at this thread:
    Re: SX_OBJECT_CONVERT_OTF_PDF
    this may help you
    Message was edited by: Murugesh Arcot
    Message was edited by: Murugesh Arcot

  • Urgent: Problems in Generic Extraction by Function Module

    Hi BW Gurus,
    I am new to SDN and also new to generic extraction using function module. My requirement is to extract long text(142 char) from CRM to BW as the text is not stored in database table I used function module read_text with in another ZXXX function module copy of (RSAX_BIW_GET_DATA_SIMPLE). In my extract structure I used GUID(char,32), Langu, long text(142 char) and 2 placeholders. Text can be extracted by passing STXH table fields(Tdname, Tdid, Tdobject, Tdspars) to read_text as parameters and i also need to use CRMD_ORDERADM_H field GUID(32 char) to compare 1st 32 chars of tdname(70 char) with Guid to select Guids and loop thru this Guids and for each Guid i need to append lines of text to e_t_data but as i donot know ABAP i unable to write the code for this. Through my friends help i wrote code when i check in RSA3 it is displaying the text but when i replicate into BW and load into data target in monitor the status is red with records initially but afterwards it will be red status again with 0 from 0 records for initial load again.when i check on job logs the errors i have are:
    The background job has created a job log file of 2Gb size and it is currently on a infinite loop writing entries into the SAP System Log that it cannot write to the Job log file due to “Error 22 for write/read access to a file” this is because of the datasource i have created. Please find my Function module and if anyone would please correct FM and send me that will be really great.I appreciate it in advance.
    MY Function Module is:
    FUNCTION Z_CRMORDERH_STR_TXT.
    ""Local Interface:
    *"  IMPORTING
    *"     VALUE(I_REQUNR) TYPE  SRSC_S_IF_SIMPLE-REQUNR
    *"     VALUE(I_DSOURCE) TYPE  SRSC_S_IF_SIMPLE-DSOURCE OPTIONAL
    *"     VALUE(I_MAXSIZE) TYPE  SRSC_S_IF_SIMPLE-MAXSIZE OPTIONAL
    *"     VALUE(I_INITFLAG) TYPE  SRSC_S_IF_SIMPLE-INITFLAG OPTIONAL
    *"     VALUE(I_READ_ONLY) TYPE  SRSC_S_IF_SIMPLE-READONLY OPTIONAL
    *"     VALUE(I_REMOTE_CALL) TYPE  SBIWA_FLAG DEFAULT SBIWA_C_FLAG_OFF
    *"  TABLES
    *"      I_T_SELECT TYPE  SRSC_S_IF_SIMPLE-T_SELECT OPTIONAL
    *"      I_T_FIELDS TYPE  SRSC_S_IF_SIMPLE-T_FIELDS OPTIONAL
    *"      E_T_DATA STRUCTURE  YCRM_TEXT_STR OPTIONAL
    *"  EXCEPTIONS
    *"      NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
    ***"  EXCEPTIONS     NO_MORE_DATA
    *"      ERROR_PASSED_TO_MESS_HANDLER
      Tables: CRMD_ORDERADM_H, STXH.
    Auxiliary Selection criteria structure
    data: l_s_select type srsc_s_select.
    Maximum number of lines for DB table
      Statics: s_s_if type srsc_s_if_simple,
    counter
             s_counter_datapakid like sy-tabix,
    Cursor
             s_cursor type cursor.
    data: i_crmtext type standard table of TLINE .
      types: begin of xsreph ,
              GUID type CRMD_ORDERADM_H-guid,
            end of xsreph.
       data: i_guid type standard table of xsreph.
      data: I_TEXT type STXH-TDNAME.
      data: xempl like  YCRM_TEXT_STR occurs 0 with header line.
      data: t_tab like dd03l-tabname.
    Select ranges
      ranges: l_r_guid for CRMD_ORDERADM_H-guid.
             l_r_connid  for sflight-connid.
    Initialization mode (first call by SAPI) or data transfer mode
    (following calls) ?
      if i_initflag = sbiwa_c_flag_on.
    Initialization: check input parameters
                    buffer input parameters
                    prepare data selection
    Check DataSource validity
        case i_dsource.
          when 'yCRM_TEXT'.  " for S_SREPH1
          when others.
            if 1 = 2. message e009(r3). endif.
    this is a typical log call. Please write every error message like this
            log_write 'E'                  "message type
                      'R3'                 "message class
                      '009'                "message number
                    i_dsource   "message variable 1
                      ' '.                 "message variable 2
            raise error_passed_to_mess_handler.
        endcase.
       append lines of i_t_select to s_s_if-t_select.
    Fill parameter buffer for data extraction calls
        s_s_if-requnr    = i_requnr.
        s_s_if-dsource = i_dsource.
        s_s_if-maxsize   = i_maxsize.
    Fill field list table for an optimized select statement
    (in case that there is no 1:1 relation between InfoSource fields
    and database table fields this may be far from beeing trivial)
       append lines of i_t_fields to s_s_if-t_fields.
    we will do our selection based on what is in the p table for the
    infoobject
      else.                 "Initialization mode or data extraction ?
    Data transfer: First Call      OPEN CURSOR + FETCH
                   Following Calls FETCH only
    First data package -> OPEN CURSOR
        if s_counter_datapakid = 0.
    Fill range tables BW will only pass down simple selection criteria
    of the type SIGN = 'I' and OPTION = 'EQ' or OPTION = 'BT'.
        LOOP AT S_S_IF-T_SELECT INTO L_S_SELECT WHERE FIELDNM = 'GUID'.
            MOVE-CORRESPONDING L_S_SELECT TO L_R_GUID.
            APPEND L_R_GUID.
          ENDLOOP.
          case i_dsource.
            when 'YCRM_TEXT'.  " for S_SREPH1
              t_tab = 'CRMD_ORDERADM_H'.
          endcase.
          select GUID
          from (t_tab)
          into table i_guid where   PROCESS_TYPE = 'ZACI'  and ( OBJECT_ID < '0000000042').
         select tdname from stxh into i_text where tdobject = 'TEXT'.
         if sy-subrc ne 0.
           message e009(r3).
    this is a typical log call. Please write every error message like this
           log_write 'E'                  "message type
                     'R3'                 "message class
                     '009'                "message number
                     i_dsource   "message variable 1
                     'No master data found'.           "message variable 2
           raise error_passed_to_mess_handler.
         endif.
    Determine number of database records to be read per FETCH statement
    from input parameter I_MAXSIZE. If there is a one to one relation
    between DataSource table lines and database entries, this is trivial.
    In other cases, it may be impossible and some estimated value has to
    be determined.
         open cursor with hold s_cursor for
         select (s_s_if-t_fields) from CRMD_ORDERADM_H
                                  where GUID in L_R_GUID .
                                   ENDIF.
    Fetch records into interface table.
      named E_T_'Name of extract structure'.
       fetch next cursor s_cursor
                  appending corresponding fields
                  of table e_t_data
                  package size s_s_if-maxsize.
        IF SY-SUBRC <> 0.
         CLOSE CURSOR S_CURSOR.
         RAISE NO_MORE_DATA.
       ENDIF.
    as we are doing this only once can use the select statement.
    ***data: crmtext like tline occurs 0 with header line.
    **data: i_crmtext type standard table of TLINE.
    **data: i_guid type standard table of xsreph.
    data: l_guid type THEAD-TDNAME.
    data: st_guid type xsreph.
    data: st_crmtext type TLINE.
    data: lan type THEAD-TDSPRAS.
    lan = 'E'.
    loop at i_guid into st_guid.
    l_guid = st_guid-guid.
    CALL FUNCTION 'READ_TEXT'
       EXPORTING
       CLIENT                        = SY-MANDT
         ID                            = 'A002'
         LANGUAGE                      = lan
         NAME                          = l_guid
         OBJECT                        = 'CRM_ORDERH'
       ARCHIVE_HANDLE                = 0
       LOCAL_CAT                     = ' '
    IMPORTING
       HEADER                        =
       TABLES
         LINES                         = i_crmtext.
    EXCEPTIONS
       ID                            = 1
       LANGUAGE                      = 2
       NAME                          = 3
       NOT_FOUND                     = 4
       OBJECT                        = 5
       REFERENCE_CHECK               = 6
       WRONG_ACCESS_TO_ARCHIVE       = 7
       OTHERS                        = 8
    e_t_data-guid = l_guid.
    loop at i_crmtext into st_crmtext.
    move lan to e_t_data-langu.
    move st_crmtext-tdline to e_t_data-description.
    append e_t_data.
    endif.
    endloop.
    clear: st_guid,l_guid.
    refresh: i_crmtext.
    endloop.
    S_COUNTER_DATAPAKID = S_COUNTER_DATAPAKID + 1.
    endif.
    ENDFUNCTION.
    please Gurus as I donot know ABAP i appreciate if anyone would write a FM based on requirement and send me that will be really great this is my request. I gurantee of award points for good answers.
    Regards
    Kishore

    Hi,
    The statement <b>RAISE NO_MORE_DATA</b> should be active (uncommented) in your code. Otherwise, the infinte loop occurs.
    See also, the Siggi's blog:
    /people/siegfried.szameitat/blog/2005/09/29/generic-extraction-via-function-module
    BTW, was it your thread here:
    Re: Urgent: problems in extracting Long Text
    Best regards,
    Eugene

  • Problem to upload the data into internal table record length more than 6000

    Hi all
            I stuck with this problem from past 3 days. I have to upload the data from excel sheet. iam making it tab delimited and trying to upload from gui_upload. but in the structure of file, we have, one field of 4000 characters, and other fields of 255 characters.
    how can i upload this into internal table . From excel sheet or from tab delimeted or any other format? or any special function module is there?  while iam doing this its truncating the datat 255 characters and not uploading the other fields also...
    can any one of you help me out. ASAP
    thnks in advance

    from one of the forum iam just pasting code which it is used in lsmw, try the same logic in ur code hope it can work.
    you have to create multiple lines with do...enddo loop., like this:
    (assuming excel_long_text-text is 924 characters long, 7 lines X 132 char)
    __GLOBAL_DATA__
    data: offset type i,
    text_132(132) type c.
    __BEGIN_OF_RECORD__ Before Using Conversion Rules
    Rule : Default Settings Modified
    Code: /sapdmc/ltxtl = init_/sapdmc/ltxtl.
    CLEAR offset.
    DO 7 TIMES.
    text_132 = excel_long_text-text+offset(132).
    offset = offset + 132.
    __END_OF_RECORD__ After Using Conversion Rules
    Rule : Default Settings Modified
    Code: transfer_record.
    ENDDO.
    also check this
    COMMIT_TEXT
    To load long text into SAP
    READ_TEXT
    To load long text into SAP

Maybe you are looking for

  • Arithmatic operations on fields in tables

    Hello Members, My query might seem pretty basic, but seems uphill to me, as i have no idea how to perform arithmatic operations between fields in tables. I have two tables temp1 and temp2. each of these tables have 2 fields : account no. and balance

  • Error in Installing- System dosen't have fully qualified domain name.

    When I try to install Java Enterprise System in my PC, I get the following error message and cannot proceed further: System dosen't have fully qualified domain name. Setup fully qualified domain name and then continue instalation. Please help me to s

  • Word for mac 2011 - jpeg images vanish when saved as pdf

    The subject box pretty much explains the problem! I've tried ticking the 'drawing objects' box in preferences, and unchecking the 'image placeholders', but I still get pdfs with just a blank space where my word .docx has an image. help!

  • Fetch first and last record together

    Hi All, I want to fetch first and last records. I have done through ROWNUM, but I need some alternative ways, may be through RANK function. Please help on this. here sample data: WITH t AS (SELECT 100 sid, 'ABC' SNAME,  4 status_id, SYSDATE + 1/24 st

  • Push service

    Hola mi nombre es Damian y soy de argentina,tengo un BlackBerry Pearl 8100 y descarge hace tiempo la aplicación WeatherEye la cual me dice el estado del tiempo y mediante un icono que cambia en la pantalla me informa la temperatura,pero en estos últi