MAPPING CHALLANGE.....POINTS WILL BE GIVEN!!

Hi i am doing a File2Idoc scenario, i am stuck in the mapping ...
the file is something like this...its only a part of payload
C1TN4028260000PP345700210 2620582 005 0000000000000072020061802 000000000000000000
C2TN402826000000001037331742557076 0000071641086338975600000110230000394007
C3TN4028260000000010000071641086338975600097BP 0005 00000000030000000000
here the C1, C2, C3 are unbounded it is explained below
This is only a part of the Payload............
my Datatype format is
OCCURANCES
<Data_DT>
<Record> 1
<Header> 0..1
There are many fields....
</Header>
<Control_1> 0...unbounded, this is the C1 record
There are many fields....
</Control_1>
<Control_2> 0...unbounded, this is the C2 record
There are many fields....
</Control_2>
<Control_3> 0...unbounded, this is the C3 record
There are many fields....
</Control_3>
<Line> 0..1
There are many fields....
</Line>
</Record>
Only write E1EDL37 segment if subsequent "C3" record contains C3_Data(This is one of the fields in Segment Control_3) > 0. If C2_Num = C3_Num, then only one E1EDL37 segment needs to be written for this "C2" record. If C2_NUM <> C3_NUM, then one E1EDL37 segment has to be written for the C2 record and one has to be written for the C3_NUM for the C3 record. In this case one E1EDL44 segment must be written with each unique C2_NUM.
This is a standard Idoc,
Part of the structure,
E1EDL37 unbounded
E1EDL44 unbounded, its in item level of E1EDL37

Hai,
  <b>Only write E1EDL37 segment if subsequent "C3" record contains C3_Data(This is one of the fields in Segment Control_3) > 0.</b>
  In message mapping  choose <u><b>arithematic options</b></u> like if-else and compare ur data record with the condition and do mapping accordingly.
<b>If C2_Num = C3_Num, then only one E1EDL37 segment needs to be written for this "C2" record.</b>
  Take if-else operator in  Graphical mapping and compare both C2_NUM and C3_NUM and if true map C2_Num to E1EDL37.
<b> If C2_NUM <> C3_NUM, then one E1EDL37 segment has to be written for the C2 record and one has to be written for the C3_NUM for the C3 record. In this case one E1EDL44 segment must be written with each unique C2_NUM.</b>
  check for condition C2_NUM <> C3_NUM using if-else operator and if true map corresponding C2 record to E1EDL37  and if false map corresponding C3_NUM to required segment.
  To write E1EDL44 segment for unique C2_NUM....check the flds of C2 record with each other for uniqueness and map the corresponding unique C2_NUM to each E1EDL44.
I hope this will help u to get through ur mapping.
Cheers,
Prasanthi.

Similar Messages

  • Good points will be given if question sloved

    hello Gurus!
                       required Purchase requisation outstanding aging report code.
    plz help me in this.thnx in advance.Good points will be given if question sloved.
    regards
    Rakhi.

    hello Gurus!
                       required Purchase requisation outstanding aging report code.
    plz help me in this.thnx in advance.Good points will be given if question sloved.
    regards
    Rakhi.

  • Help REQ receiver FILE CC CONFIG ...POINTS WILL BE GIVEN!!!!

    Hi I am having problem configuring File receiver CC. This is a IDOC to File scenario... My payload is
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Test_MT xmlns:ns0="urn:test.com">
    <Record>
    <Target>
    <ProdNum>111</ProdNum>
    <Weight>10</Weight>
    </Target>
    <Chacteristics>
    <Value>10</Value>
    <Value>11</Value>
    </Chacteristics>
    <Line>
    <Line1>553</Line1>
    <Line2>344</Line2>
    <Line3>222</Line3>
    <Line1>454</Line1>
    <Line3>324</Line3>
    </Line>
    </Record></ns0:Test_MT>
    My Receiver file adapter configuration is
    RecordsetStructure: Target,Chacteristics,Line
    Target.addHeaderLine     0
    Target.fieldSeparator     ,
    Target.fieldFixedLengths 5,4
    Chacteristics.addHeaderLine     0
    Chacteristics.fieldSeparator     ,
    Chacteristics.fieldFixedLengths     5
    Line.addHeaderLine     0
    Line.fieldSeparator     ,
    Line.fieldFixedLengths 3,3
    Record.endSeparator     'nl'
    The output .txt file I get is
    111,10
    10
    11
    553,344,222
    454,324
    In the last line we see that <Line2> field has no value..What I wanted is in the last Line it should have been
    453, , 324
    So what shlould i do ???? shld i configure the File CC or the make some changes in the mapping ????????? and I wanted all the values to be in one line............  POINTS WILL BE GIVEN

    Hi,
    If you are using fixed field lengths in the receiver file adapter then , it expects all the record structure should fill with full length or full length of spaces.
    So if you don't get any value from Idoc for any of the fields, then make sure that you are passing atleast spaces for that field. So exact length of the field.
    For this you can make use of <b> if exists and else if</b> built in function in the mapping.
    Regards,
    Moorthy

  • Help Required COMPLEX  MAPPING !!!!! POINTS WILL BE GIVEN !!

    Hii I am doing a file sender config and my message is something like this
    C1TN4028260000PP345700210 2620582 005 0000000000000072020061802 000000000000000000
    C2TN402826000000001037331742557076 0000071641086338975600000110230000394007
    C3TN4028260000000010000071641086338975600097BP 0005 00000000030000000000
    here the C1, C2, C3 are unbounded it is explained below
    This is only a part of the Payload............
    my Datatype format is
    OCCURANCES
    <Data_DT>
    <Record> 1
    <Header> 0..1
    There are many fields....
    </Header>
    <Control_1> 0...unbounded, this is the C1 record
    There are many fields....
    </Control_1>
    <Control_2> 0...unbounded, this is the C2 record
    There are many fields....
    </Control_2>
    <Control_3> 0...unbounded, this is the C3 record
    There are many fields....
    </Control_3>
    <Line> 0..1
    There are many fields....
    </Line>
    </Record>
    Only write E1EDL37 segment if subsequent "C3" record contains C3_Data(This is one of the fields in Segment Control_3) > 0.  If C2_Num = C3_Num, then only one E1EDL37 segment needs to be written for this "C2" record.  If C2_NUM <> C3_NUM, then one E1EDL37 segment has to be written for the C2 record and one has to be written for the C3_NUM for the C3 record.  In this case one E1EDL44 segment must be written with each unique C2_NUM.
    This is a standard Idoc,
    Part of the structure,
    E1EDL37   unbounded
           E1EDL44   unbounded, its in item level of E1EDL37

    Hai,
      <b>Only write E1EDL37 segment if subsequent "C3" record contains C3_Data(This is one of the fields in Segment Control_3) > 0.</b>
      In message mapping  choose <u><b>arithematic options</b></u> like if-else and compare ur data record with the condition and do mapping accordingly.
    <b>If C2_Num = C3_Num, then only one E1EDL37 segment needs to be written for this "C2" record.</b>
      Take if-else operator in  Graphical mapping and compare both C2_NUM and C3_NUM and if true map C2_Num to E1EDL37.
    <b> If C2_NUM <> C3_NUM, then one E1EDL37 segment has to be written for the C2 record and one has to be written for the C3_NUM for the C3 record. In this case one E1EDL44 segment must be written with each unique C2_NUM.</b>
      check for condition C2_NUM <> C3_NUM using if-else operator and if true map corresponding C2 record to E1EDL37  and if false map corresponding C3_NUM to required segment.
      To write E1EDL44 segment for unique C2_NUM....check the flds of C2 record with each other for uniqueness and map the corresponding unique C2_NUM to each E1EDL44.
    I hope this will help u to get through ur mapping.
    Cheers,
    Prasanthi.

  • Events not triggering in alv list, point will be given

    Hi friends,
          I am using reuse_alv_list_display fm to display data.
    and i am using reuse_alv_events_get fm to trigger events.
    but, top_of_page, event is not triggering,
    more precisely , the subroutine is not getting recognized by system.  how to rectify this.
    Check my code.
    *& Report  ZSEN_SERVICETAX_GTA
    REPORT  zsen_servicetax_gta NO STANDARD PAGE HEADING LINE-COUNT 100.
    *****************************************TABLES USED**********************************************************************
    *TABLES: BSIS,  "Accounting: Secondary Index for G/L Accounts
           BSAS,  "Accounting: Secondary Index for G/L Accounts (Cleared Items)
           LFA1.  "Vendor Master (General Section).
    *****************************************WORK AREA / INTERNAL TABLE DECLARATION******************************************
    TYPE-POOLS: slis.
    TYPES: BEGIN OF ty_main,
           hkont    TYPE bsis-hkont,
           belnr    TYPE bsis-belnr,
           budat    TYPE bsis-budat,
           blart    TYPE bsis-blart,
           dmbtr    TYPE bsis-dmbtr,
           xblnr    TYPE bsis-xblnr,
           shkzg    TYPE bsis-shkzg,
           augbl TYPE bsis-augbl,
           kz_dmbtr TYPE bsis-dmbtr,
           kz_xblnr TYPE bsis-xblnr,
           kz_blart TYPE bsis-blart,
           kz_belnr TYPE bsis-belnr,
           kz_budat TYPE bsis-budat,
           kz_zuonr TYPE bsis-zuonr,
           name1    TYPE lfa1-name1,
           slno     TYPE i,
           END OF ty_main,
           BEGIN OF ty_bsas,
           belnr TYPE bsas-hkont,
           budat TYPE bsas-budat,
           xblnr TYPE bsas-xblnr,
           augbl TYPE bsas-augbl,
           dmbtr TYPE bsas-dmbtr,
           blart TYPE bsas-blart,
           zuonr TYPE bsas-zuonr,
           END OF ty_bsas.
    DATA: it_main TYPE TABLE OF ty_main,
          wa_main LIKE LINE OF it_main,
          it_bsas TYPE TABLE OF ty_bsas,
          wa_bsas LIKE LINE OF it_bsas.
    DATA: it_sort       TYPE slis_t_sortinfo_alv,
          fieldcatalog  TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          gd_layout     TYPE slis_layout_alv,
          gt_events     TYPE slis_t_event,
          int_fcat      TYPE slis_fieldcat_alv,
          it_header     TYPE slis_t_listheader,
          wa_header     TYPE slis_listheader.
    ************************************************work variables***********************************************************************
    DATA: ven_name   TYPE lfa1-name1,
          post_date  TYPE bsis-budat,
          t_tabix    TYPE sy-tabix,
          i_prg      LIKE sy-repid.
    ***********************************************selection screen***********************************************************************
    SELECTION-SCREEN: BEGIN OF BLOCK gtn WITH FRAME TITLE text-001 .
    SELECT-OPTIONS: date FOR post_date OBLIGATORY.
    SELECTION-SCREEN: END OF BLOCK gtn.
    ************************************************data selection**************************************************************************
    START-OF-SELECTION.
      PERFORM data_retreval.
      PERFORM build_catalog.
      PERFORM layout.
      PERFORM build_events.
      PERFORM sortinfo.
      IF it_main[] IS NOT INITIAL.
        PERFORM display_alv.
      ELSE.
        MESSAGE 'No Records Matching For This Selection' TYPE 'E'.
      ENDIF.
    ******************************data display*********************************************************************************************
    *&      Form  data_retreval
          text
    -->  p1        text
    <--  p2        text
    FORM data_retreval .
      CLEAR:it_main[], wa_main, fieldcatalog[].
    ***********************************************selecting data from bsis table for the given date range**********************************
      SELECT ahkont abelnr abudat ablart admbtr axblnr a~shkzg
             b~augbl
             INTO CORRESPONDING FIELDS OF TABLE it_main
             FROM bsis AS a LEFT OUTER JOIN bsas AS b
             ON abelnr = bbelnr
             WHERE a~budat IN date
             AND   a~blart = 'KR'
             AND   a~shkzg = 'S'
             AND   a~hkont = '0002200530'.
    ***********************************************selecting data from bsas table using bsis-belnr*******************************************
      LOOP AT it_main INTO wa_main.
        SELECT belnr budat dmbtr xblnr zuonr  augbl blart
               INTO CORRESPONDING FIELDS OF wa_bsas
               FROM bsas
               WHERE belnr = wa_main-augbl
               AND   blart = 'KZ'.
        ENDSELECT.
        APPEND wa_bsas TO it_bsas.
      ENDLOOP.
    ********************************************combining two tables data******************************************************************
      LOOP AT it_main INTO wa_main.
        t_tabix = sy-tabix.
           wa_main-slno     = t_tabix.
        READ TABLE it_bsas INTO wa_bsas WITH KEY augbl = wa_main-augbl.
        IF sy-subrc = 0.
          SELECT SINGLE name1
                 FROM lfa1
                 INTO ven_name
                 WHERE lifnr = wa_bsas-zuonr.
          wa_main-kz_dmbtr = wa_bsas-dmbtr.
          wa_main-kz_belnr = wa_bsas-belnr.
          wa_main-kz_blart = wa_bsas-blart.
          wa_main-kz_budat = wa_bsas-budat.
          wa_main-kz_xblnr = wa_bsas-xblnr.
          wa_main-kz_zuonr = wa_bsas-zuonr.
          wa_main-name1    = ven_name.
        ENDIF.
        MODIFY it_main FROM wa_main INDEX t_tabix TRANSPORTING kz_dmbtr kz_belnr kz_budat kz_blart kz_xblnr kz_zuonr name1 .
      ENDLOOP.
      SORT it_main BY kz_blart kz_zuonr.
      LOOP AT it_main INTO wa_main.
        wa_main-slno = sy-tabix.
        MODIFY it_main FROM wa_main INDEX sy-tabix TRANSPORTING slno.
      ENDLOOP.
    ENDFORM.                    " data_retreval
    *&      Form  build_catalog
          text
    -->  p1        text
    <--  p2        text
    FORM build_catalog .
      DATA: col_pos TYPE i.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'SLNO'.
      fieldcatalog-seltext_m = 'Serial No'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'KZ_ZUONR'.
      fieldcatalog-seltext_m = 'Vendor Num'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'NAME1'.
      fieldcatalog-seltext_m = 'Vendor Name'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'BLART'.
      fieldcatalog-seltext_m = 'BillDoc.Type'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'BELNR'.
      fieldcatalog-seltext_m = 'BillDoc.Num.'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'BUDAT'.
      fieldcatalog-seltext_m = 'BillPosting Date'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'XBLNR'.
      fieldcatalog-seltext_m = 'BillReference Num'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'DMBTR'.
      fieldcatalog-seltext_m = 'Bill Amount'.
      fieldcatalog-col_pos   = col_pos.
      fieldcatalog-do_sum    = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'KZ_BLART'.
      fieldcatalog-seltext_m = 'Pay_Doc.type'.
      fieldcatalog-col_pos   = col_pos.
       fieldcatalog-do_sum    = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'KZ_BELNR'.
      fieldcatalog-seltext_m = 'Pay_Document No'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'KZ_DMBTR'.
      fieldcatalog-seltext_m = 'Payment Amount'.
      fieldcatalog-col_pos   = col_pos.
      fieldcatalog-do_sum    = 'X'.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'KZ_XBLNR'.
      fieldcatalog-seltext_m = 'Pay_Reference Num'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'KZ_BUDAT'.
      fieldcatalog-seltext_m = 'Pay_Posting Date'.
      fieldcatalog-col_pos   = col_pos.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
      col_pos = col_pos + 1.
      fieldcatalog-fieldname = 'AUGBL'.
      fieldcatalog-seltext_m = 'Clr.Doc.Num'.
      fieldcatalog-col_pos   = col_pos.
       fieldcatalog-row_pos   = 2.
      APPEND fieldcatalog TO fieldcatalog.
      CLEAR: fieldcatalog.
    ENDFORM.                    " build_catalog
    *&      Form  sortinfo
          text
    -->  p1        text
    <--  p2        text
    FORM sortinfo .
      DATA: is_sort TYPE slis_sortinfo_alv.
      CLEAR:is_sort.
      is_sort-spos       = 2.
      is_sort-fieldname  = 'KZ_ZUONR'.
      is_sort-up         = 'X'.
      APPEND is_sort TO it_sort.
      CLEAR: is_sort.
      is_sort-spos       = 1.
      is_sort-fieldname  = 'KZ_BLART'.
      is_sort-up         = 'X'.
      is_sort-subtot     = 'X'.
      APPEND is_sort TO it_sort.
    ENDFORM.                    " sortinfo
    *&      Form  layout
          text
    -->  p1        text
    <--  p2        text
    FORM layout .
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-zebra             = 'X'.
    *gd_layout-totals_text       = 'Grand Total'.
    *gd_layout-subtotals_text    = 'BillBooked Not Paid'.
    ENDFORM.                    " layout
    *&      Form  display_alv
          text
    -->  p1        text
    <--  p2        text
    FORM display_alv .
      i_prg = sy-repid.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         i_callback_program                = 'I_PRG'
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
      I_CALLBACK_TOP_OF_PAGE            = 'TOP-OF-PAGE'
      I_CALLBACK_HTML_TOP_OF_PAGE       = 'TOP-OF-PAGE'
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
         is_layout                         = gd_layout
         it_fieldcat                       = fieldcatalog[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
         it_sort                           = it_sort
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
         it_events                         = gt_events
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_main
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " display_alv
    *&      Form  build_events
          text
    -->  p1        text
    <--  p2        text
    FORM build_events .
      DATA: is_event TYPE slis_alv_event.
    break-point.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         i_list_type           = 0
       IMPORTING
         et_events             = gt_events[]
      EXCEPTIONS
        LIST_TYPE_WRONG       = 1
        OTHERS                = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      READ TABLE gt_events WITH KEY name = slis_ev_top_of_page INTO is_event.
      IF sy-subrc = 0.
        MOVE 'TOP_OF_PAGE' TO is_event-form.
       MODIFY gt_events from is_event TRANSPORTING form WHERE name = slis_ev_top_of_page.
      ENDIF.
    ENDFORM.                    " build_events
    *&      Form  top_of_page
          text
    -->  p1        text
    <--  p2        text
    form top_of_page .
        BREAK-POINT.
        SKIP 3.
        WRITE:/20 'BILLING DETAILS', 40 'PAYMENT DETAILS'.
    endform.                    " top_of_page
    Regards.
    s.senthil kumar

    hi i modified ur program , check this and let me know
    REPORT zsen_servicetax_gta NO STANDARD PAGE HEADING LINE-COUNT 100.
    *****************************************TABLES USED**********************************************************************
    TABLES: BSIS, "Accounting: Secondary Index for G/L Accounts
    BSAS, "Accounting: Secondary Index for G/L Accounts (Cleared Items)
    LFA1. "Vendor Master (General Section).
    *****************************************WORK AREA / INTERNAL TABLE DECLARATION******************************************
    TYPE-POOLS: slis.
    TYPES: BEGIN OF ty_main,
    hkont TYPE bsis-hkont,
    belnr TYPE bsis-belnr,
    budat TYPE bsis-budat,
    blart TYPE bsis-blart,
    dmbtr TYPE bsis-dmbtr,
    xblnr TYPE bsis-xblnr,
    shkzg TYPE bsis-shkzg,
    augbl TYPE bsis-augbl,
    kz_dmbtr TYPE bsis-dmbtr,
    kz_xblnr TYPE bsis-xblnr,
    kz_blart TYPE bsis-blart,
    kz_belnr TYPE bsis-belnr,
    kz_budat TYPE bsis-budat,
    kz_zuonr TYPE bsis-zuonr,
    name1 TYPE lfa1-name1,
    slno TYPE i,
    END OF ty_main,
    BEGIN OF ty_bsas,
    belnr TYPE bsas-hkont,
    budat TYPE bsas-budat,
    xblnr TYPE bsas-xblnr,
    augbl TYPE bsas-augbl,
    dmbtr TYPE bsas-dmbtr,
    blart TYPE bsas-blart,
    zuonr TYPE bsas-zuonr,
    END OF ty_bsas.
    DATA: it_main TYPE TABLE OF ty_main,
    wa_main LIKE LINE OF it_main,
    it_bsas TYPE TABLE OF ty_bsas,
    wa_bsas LIKE LINE OF it_bsas.
    DATA: it_sort TYPE slis_t_sortinfo_alv,
    IT_fieldcatalog TYPE slis_t_fieldcat_alv ,
    WA_fieldcatalog TYPE slis_fieldcat_alv,
    gd_layout TYPE slis_layout_alv,
    gt_events TYPE slis_t_event,
    WA_EVENTS TYPE SLIS_T_EVENT,
    int_fcat TYPE slis_fieldcat_alv,
    it_header TYPE slis_t_listheader,
    wa_header TYPE slis_listheader.
    ************************************************work variables***********************************************************************
    DATA: ven_name TYPE lfa1-name1,
    post_date TYPE bsis-budat,
    t_tabix TYPE sy-tabix,
    i_prg LIKE sy-repid.
    ***********************************************selection screen***********************************************************************
    SELECTION-SCREEN: BEGIN OF BLOCK gtn WITH FRAME TITLE text-001 .
    SELECT-OPTIONS: date FOR BSIS-BUDAT .
    SELECTION-SCREEN: END OF BLOCK gtn.
    ************************************************data selection**************************************************************************
    START-OF-SELECTION.
    PERFORM data_retreval.
    PERFORM build_catalog.
    PERFORM layout.
    PERFORM build_events.
    PERFORM sortinfo.
    IF it_main[] IS NOT INITIAL.
    PERFORM display_alv.
    ELSE.
    MESSAGE 'No Records Matching For This Selection' TYPE 'E'.
    ENDIF.
    ******************************data display*********************************************************************************************
    **& Form data_retreval
    *text
    *--> p1 text
    *<-- p2 text
    FORM data_retreval .
    CLEAR:it_main[], wa_main.
    ***********************************************selecting data from bsis table for the given date range**********************************
    SELECT ahkont abelnr abudat ablart admbtr axblnr a~shkzg
    b~augbl
    INTO CORRESPONDING FIELDS OF TABLE it_main
    FROM bsis AS a LEFT OUTER JOIN bsas AS b
    ON abelnr = bbelnr
    WHERE a~budat IN date.
    *AND a~blart = 'KR'
    *AND a~shkzg = 'S'
    *AND a~hkont = '0002200530'.
    ***********************************************selecting data from bsas table using bsis-belnr*******************************************
    LOOP AT it_main INTO wa_main.
    SELECT belnr budat dmbtr xblnr zuonr augbl blart
    INTO CORRESPONDING FIELDS OF wa_bsas
    FROM bsas
    WHERE belnr = wa_main-augbl
    AND blart = 'KZ'.
    ENDSELECT.
    APPEND wa_bsas TO it_bsas.
    ENDLOOP.
    ********************************************combining two tables data******************************************************************
    LOOP AT it_main INTO wa_main.
    t_tabix = sy-tabix.
    wa_main-slno = t_tabix.
    READ TABLE it_bsas INTO wa_bsas WITH KEY augbl = wa_main-augbl.
    IF sy-subrc = 0.
    SELECT SINGLE name1
    FROM lfa1
    INTO ven_name
    WHERE lifnr = wa_bsas-zuonr.
    wa_main-kz_dmbtr = wa_bsas-dmbtr.
    wa_main-kz_belnr = wa_bsas-belnr.
    wa_main-kz_blart = wa_bsas-blart.
    wa_main-kz_budat = wa_bsas-budat.
    wa_main-kz_xblnr = wa_bsas-xblnr.
    wa_main-kz_zuonr = wa_bsas-zuonr.
    wa_main-name1 = ven_name.
    ENDIF.
    MODIFY it_main FROM wa_main INDEX t_tabix TRANSPORTING kz_dmbtr kz_belnr kz_budat kz_blart kz_xblnr kz_zuonr name1 .
    ENDLOOP.
    SORT it_main BY kz_blart kz_zuonr.
    LOOP AT it_main INTO wa_main.
    wa_main-slno = sy-tabix.
    MODIFY it_main FROM wa_main INDEX sy-tabix TRANSPORTING slno.
    ENDLOOP.
    ENDFORM. " data_retreval
    **& Form build_catalog
    *text
    *--> p1 text
    *<-- p2 text
    FORM build_catalog .
    DATA: col_pos TYPE i.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'SLNO'.
    WA_fieldcatalog-seltext_m = 'Serial No'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'KZ_ZUONR'.
    WA_fieldcatalog-seltext_m = 'Vendor Num'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'NAME1'.
    WA_fieldcatalog-seltext_m = 'Vendor Name'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'BLART'.
    WA_fieldcatalog-seltext_m = 'BillDoc.Type'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'BELNR'.
    WA_fieldcatalog-seltext_m = 'BillDoc.Num.'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'BUDAT'.
    WA_fieldcatalog-seltext_m = 'BillPosting Date'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'XBLNR'.
    WA_fieldcatalog-seltext_m = 'BillReference Num'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'DMBTR'.
    WA_fieldcatalog-seltext_m = 'Bill Amount'.
    WA_fieldcatalog-col_pos = col_pos.
    WA_fieldcatalog-do_sum = 'X'.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'KZ_BLART'.
    WA_fieldcatalog-seltext_m = 'Pay_Doc.type'.
    WA_fieldcatalog-col_pos = col_pos.
    WA_fieldcatalog-do_sum = 'X'.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'KZ_BELNR'.
    WA_fieldcatalog-seltext_m = 'Pay_Document No'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'KZ_DMBTR'.
    WA_fieldcatalog-seltext_m = 'Payment Amount'.
    WA_fieldcatalog-col_pos = col_pos.
    WA_fieldcatalog-do_sum = 'X'.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'KZ_XBLNR'.
    WA_fieldcatalog-seltext_m = 'Pay_Reference Num'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'KZ_BUDAT'.
    WA_fieldcatalog-seltext_m = 'Pay_Posting Date'.
    WA_fieldcatalog-col_pos = col_pos.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    col_pos = col_pos + 1.
    WA_fieldcatalog-fieldname = 'AUGBL'.
    WA_fieldcatalog-seltext_m = 'Clr.Doc.Num'.
    WA_fieldcatalog-col_pos = col_pos.
    WA_fieldcatalog-row_pos = 2.
    APPEND WA_fieldcatalog TO IT_fieldcatalog.
    CLEAR: WA_fieldcatalog.
    ENDFORM. " build_catalog
    **& Form sortinfo
    *text
    *--> p1 text
    *<-- p2 text
    FORM sortinfo .
    DATA: is_sort TYPE slis_sortinfo_alv.
    CLEAR:is_sort.
    is_sort-spos = 2.
    is_sort-fieldname = 'KZ_ZUONR'.
    is_sort-up = 'X'.
    APPEND is_sort TO it_sort.
    CLEAR: is_sort.
    is_sort-spos = 1.
    is_sort-fieldname = 'KZ_BLART'.
    is_sort-up = 'X'.
    is_sort-subtot = 'X'.
    APPEND is_sort TO it_sort.
    ENDFORM. " sortinfo
    **& Form layout
    *text
    *--> p1 text
    *<-- p2 text
    FORM layout .
    gd_layout-no_input = 'X'.
    gd_layout-colwidth_optimize = 'X'.
    gd_layout-zebra = 'X'.
    *gd_layout-totals_text = 'Grand Total'.
    *gd_layout-subtotals_text = 'BillBooked Not Paid'.
    ENDFORM. " layout
    **& Form display_alv
    *text
    *--> p1 text
    *<-- p2 text
    FORM display_alv .
    i_prg = sy-repid.
    DATA:it_events TYPE slis_t_event,
           wa_events TYPE slis_alv_event.
    WA_events-name = 'TOP_OF_PAGE'.
      WA_events-form = 'TOP_OF_PAGE'.
      APPEND  wa_events TO it_events.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    *I_INTERFACE_CHECK = ' '
    *I_BYPASSING_BUFFER = ' '
    *I_BUFFER_ACTIVE = ' '
    i_callback_program = 'I_PRG'
    *I_CALLBACK_PF_STATUS_SET = ' '
    *I_CALLBACK_USER_COMMAND = ' '
    I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE'
    *I_CALLBACK_HTML_TOP_OF_PAGE = 'TOP-OF-PAGE'
    *I_CALLBACK_HTML_END_OF_LIST = ' '
    *I_STRUCTURE_NAME =
    *I_BACKGROUND_ID = ' '
    *I_GRID_TITLE =
    *I_GRID_SETTINGS =
    is_layout = gd_layout
    it_fieldcat = IT_fieldcatalog[]
    *IT_EXCLUDING =
    *IT_SPECIAL_GROUPS =
    *it_sort = it_sort
    *IT_FILTER =
    *IS_SEL_HIDE =
    *I_DEFAULT = 'X'
    *I_SAVE = ' '
    *IS_VARIANT =
    it_events = It_events.
    *IT_EVENT_EXIT =
    *IS_PRINT =
    *IS_REPREP_ID =
    *I_SCREEN_START_COLUMN = 0
    *I_SCREEN_START_LINE = 0
    *I_SCREEN_END_COLUMN = 0
    *I_SCREEN_END_LINE = 0
    *I_HTML_HEIGHT_TOP = 0
    *I_HTML_HEIGHT_END = 0
    *IT_ALV_GRAPHICS =
    *IT_HYPERLINK =
    *IT_ADD_FIELDCAT =
    *IT_EXCEPT_QINFO =
    *IR_SALV_FULLSCREEN_ADAPTER =
    *IMPORTING
    *E_EXIT_CAUSED_BY_CALLER =
    *ES_EXIT_CAUSED_BY_USER =
    *TABLES
    *t_outtab = it_main
    *EXCEPTIONS
    *PROGRAM_ERROR = 1
    *OTHERS = 2
    *IF sy-subrc <> 0.
    *MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    *ENDIF.
    ENDFORM. " display_alv
    **& Form build_events
    *text
    *--> p1 text
    *<-- p2 text
    FORM build_events .
    DATA: is_event TYPE slis_alv_event.
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
    i_list_type = 0
    IMPORTING
    et_events = gt_events[]
    EXCEPTIONS
    LIST_TYPE_WRONG = 1
    OTHERS = 2
    IF sy-subrc NE 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    READ TABLE gt_events WITH KEY name = slis_ev_top_of_page INTO is_event.
    IF sy-subrc = 0.
    MOVE 'TOP_OF_PAGE' TO is_event-form.
    MODIFY gt_events from is_event TRANSPORTING form WHERE name = slis_ev_top_of_page.
    ENDIF.
    ENDFORM. " build_events
    **& Form top_of_page
    *text
    *--> p1 text
    *<-- p2 text
    form top_of_page .
    SKIP 3.
    WRITE:/20 'BILLING DETAILS', 40 'PAYMENT DETAILS'.
    ENDFORM.
    reward points if useful,
    venkat.

  • Custom Table --Points will be given to your suggestion

    Hi Folks,
    This is a requirment that I have. Any suggestion on where to begin and where to head?
    Create an application that will be used to maintain the custom table.  Read only access of this table to certain user. 
    The custom table maintenance application should allow a user to copy an existing record on the custom table and use this as the basis to create a new record.
    Maintenance application should not allow any records to be deleted.  Instead, use a flag to indicate whether that record is active or inactive.  When adding an asset, the system needs to check the flag on the corresponding record on the custom table to verify it is an active record.
    Maintenance application must verify that any information entered in the new custom table is valid.  The following fields must be validated:
    Company Code
    Asset Class
    evaluation group
    All Depreciation Keys & Lives
    When creating an asset, the input screen requires asset class and company code be entered.   The user should not be allowed to go to the next screen until the combination of asset class and company code has been validated against the custom cross-reference table. 
    When entering the asset class, the lookup should show only the valid asset classes for the entered company code, assuming the company code has been provided by the user.When adding a new record to the custom cross-reference table, the status flag should be defaulted to active. 
    My thinking is I will create a Z table and have the ABAP team create a custom
    T-code that will maintain this table and give the access to the user specified by the business. What user exit, if any would you think that needs to be maintained in the table for populating certain asset class/evaluation group relevant to the company code or vise versa ? My main question is about how do I maintain the table.
    Thanks in Advance for any info you provide and everyone will get points for the relevant info that they provide.
    Rob

    Thanks both of you. As a functional guy, I guess I should only mention what tables and fields will be affected for the creation of the new custom table. And do I need to mention anything about the maintenance application or ABAPers will be well aware what they have to do to create the maintenance application?
    My thinking is I will tell the ABAPers to create the maintenance application (isn't this a custom T-Code ? ) And once they create this custom T-code, I will tell them that it will be used against the custom table to verify the validity of the data in that custom table. Also, 2 sets of role are to be defined and these are to be linked to this custom T-code (probably the role of security). one of the roles maintains the data in the custom table through copying and creating the asset master record from the custom table and the other role has the read only access.
    Also, for example if asset class = 0001 and company code = 0001, my requirement is to make sure that only evaluation group 2 that is valid for the combination of asset class 0001 and company code = 0001 be populated, when a user presses F4 and tries to choose one set of evaluation group 2. Does this make sense? Well, do we need user exit for this? My thinking is because evaluation group is not the function of asset class and company code. so, if someone has to select the evaluation group, they will be shown the list of evaluation group that have been defined in config (as I understand, evaluation groups are not assigned to company code/asset class directly in the config, just like business area is not assigned to company code directly). Any suggestions? let me give you the requirement once again and may be you can figure out a little bit better.
    <b><b>Provide a method to maintain a cross-reference table of valid codes as provided by the business.  Depreciation keys and lives will be determined based on a combination of company code, asset class, and equipment type.  
    Create an application that will be used to maintain the custom table.  The table will be updated by the Centralized Fixed Assets role that will reside in Corporate Accounting.  The Fixed Assets Business role will need read-only access to the table. 
    The custom table maintenance application should allow a user with the Centralized Fixed Assets role to copy an existing record on the custom table and use this as the basis to create a new record.
    Maintenance application should not allow any records to be deleted.  Instead, use a flag to indicate whether that record is active or inactive.  When adding an asset, the system needs to check the flag on the corresponding record on the custom table to verify it is an active record.
    Maintenance application must verify that any information entered in the new custom table is valid.  The following fields must be validated:
    Company Code
    Asset Class
    Equipment Type
    All Depreciation Keys & Lives
    GL Account (If it is determined that this will reside on the custom table)
    If any of the fields are not valid, as determined by the validation above, return a message stating information is not valid.
    When creating an asset, the input screen requires asset class and company code be entered.   The user should not be allowed to go to the next screen until the combination of asset class and company code has been validated against the custom cross-reference table. 
    When entering the asset class, the lookup should show only the valid asset classes for the entered company code, assuming the company code has been provided by the user.
    When selecting the equipment type, only display valid equipment types for the company code and asset class that were previously selected.
    When a depreciation key is assigned to an asset, verify that it is a current valid depreciation key by checking the effective dates of that depreciation key prior to assigning to an asset.
    Exception to standard field value assignments: 
    In addition to company code, asset class, and equipment type, when Asset_Class = RT_CC and Equip_Type = 0201, then the salvage value will be $2500.
    Exception to standard field value assignments: 
    In addition to company code, asset class, and equipment type, when Asset_Class = RT_CC and Equip_Type = 0205, then the depreciation keys for area 10 is ZDYC and area 11 is ZNYC.</b>
    Thanks again for your time to look at my issue, and I really appreciate your suggestions.
    Rob

  • Connecting to a Dell Display (NOTE: POINTS WILL BE GIVEN!)

    Hi all-
    I have a couple of questions about connecting my Macbook Aluminum to a Dell monitor. I was considering [this one|http://accessories.us.dell.com/sna/products/Displays/productdetail.aspx?c=u s&l=en&s=dhs&cs=19&sku=320-8103]. So, I had several questions. Answers to any or all of them will be much appreciated and of course awarded with the appropriate helpful and answered stars.
    *Question #1:* +Will this monitor be compatible with my Macbook if I get the appropriate Mini DisplayPort to VGA/DVI cable?+
    *Question #2:* I see that this monitor comes with both a VGA and a DVI cable and ports to attach them. The VGA cable comes pre-attached to the monitor, so if there isn't a difference I would like to use that one. +Is there any difference between using a VGA cable or a DVI cable to attach to a monitor? Will they give you different capabilities?+
    *Question #3:* +Will using a Mini DisplayPort to VGA/DVI adapter also transfer the sound to the monitor?+ I am considering getting a "soundbar" to accompany it to play the audio off of my Mac, but I was wondering +how the audio is going to get from my Macbook to the monitor in the first place?+
    *Question #4:* The monitor also has 4 USB 2.0 connectors, and comes with a USB "upstream" connector, as well as a USB "upstream" port on the monitor. +Will this allow me to connect my Mac to the monitor in such a way that the USB ports will be usable?+
    Any and all comments will be much appreciated.
    Thank you,
    Sasha

    "Will this monitor be compatible with my Macbook if I get the appropriate Mini DisplayPort to VGA/DVI cable?"
    Yes, but why would you do that? Why not use a mini DP-to-DP cable?
    "I see that this monitor comes with both a VGA and a DVI cable and ports to attach them. The VGA cable comes pre-attached to the monitor, so if there isn't a difference I would like to use that one. Is there any difference between using a VGA cable or a DVI cable to attach to a monitor? Will they give you different capabilities?"
    Yes.
    "Will using a Mini DisplayPort to VGA/DVI adapter also transfer the sound to the monitor? I am considering getting a "soundbar" to accompany it to play the audio off of my Mac, but I was wondering how the audio is going to get from my Macbook to the monitor in the first place?"
    What is a "soundbar"?
    "The monitor also has 4 USB 2.0 connectors, and comes with a USB "upstream" connector, as well as a USB "upstream" port on the monitor. Will this allow me to connect my Mac to the monitor in such a way that the USB ports will be usable?"
    Yes.

  • EXIT NAME OR BADI FOR FIELD IN MIGO TRANSACTION (full poins will be given)

    Hai all,
    VERY URGENT REQ.
    In MIGO transaction, I want to know the BADI or EXIT NAME in which the following fields are avilable .
    Fields name: exgrp, EXCISE_ACTION
    exact screen field name is : J_1IEXHEAD-EXGRP
    J_1IEXHEAD-EXCISE_ACTION
    Full Points will be given for correct answer.
    Thanks in advance.
    s.senthil kumar

    Hi,
    Try this code .We can get the User exits and Badis for the Tcode.
    Code:
    & Report ZPJA_PM002 (Ver4) &
    & PJA Consultancy Services (www.pjas.com) &
    & This report attmpts to find Enhancements, Program-Exits, BADIs &
    & and Business Transaction Events in a particular program/tcode. &
    & Other search options: &
    & Program: RPR_ABAP_SOURCE_SCAN &
    & FModule: &
    & Text Elements: &
    & P_DEVC Show user-exits from development class &
    & P_LIMIT Limit submit program selection &
    & P_FUNC Show function modules &
    & P_SUBM Show submit programs &
    & S01 Selection data (TCode takes precedence over program name) &
    report zpja_pm002
    no standard page heading
    line-size 221.
    data: tabix like sy-tabix,
    w_linnum type i,
    w_off type i,
    w_index like sy-tabix,
    w_include like trdir-name,
    w_prog like trdir-name,
    w_incl like trdir-name,
    w_area like rs38l-area,
    w_level,
    w_fsel like sy-ucomm, " Determination of screen field
    w_str(50) type c,
    w_funcname like tfdir-funcname.
    constants: c_fmod(40) type c value 'Function modules selected: ',
    c_subm(40) type c value 'Submit programs selected: ',
    c_col1(12) type c value 'Enhanmt Type',
    c_col2(40) type c value 'Enhancement',
    c_col3(30) type c value 'Program/Include',
    c_col4(20) type c value 'Enhancement Name',
    c_col5(40) type c value 'Enhancement Description',
    c_col6(8) type c value 'Project',
    c_col7(1) type c value 'S',
    c_col8(12) type c value 'ChangeName',
    c_col9(10) type c value 'ChangeDate'.
    Work Areas: ABAP Workbench
    data: begin of wa_d010inc.
    data: master type d010inc-master.
    data: end of wa_d010inc.
    data: begin of wa_tfdir.
    data: funcname type tfdir-funcname,
    pname type tfdir-pname,
    include type tfdir-include.
    data: end of wa_tfdir.
    data: begin of wa_tadir.
    data: devclass type tadir-devclass.
    data: end of wa_tadir.
    data: begin of wa_tstc.
    data: pgmna type tstc-pgmna.
    data: end of wa_tstc.
    data: begin of wa_tstcp.
    data: param type tstcp-param.
    data: end of wa_tstcp.
    data: begin of wa_enlfdir.
    data: area type enlfdir-area.
    data: end of wa_enlfdir.
    Work Areas: BADIs
    data: begin of wa_sxs_attr.
    data: exit_name type sxs_attr-exit_name.
    data: end of wa_sxs_attr.
    data: begin of wa_sxs_attrt.
    data: text type sxs_attrt-text.
    data: end of wa_sxs_attrt.
    Work Areas: Enhancements
    data: begin of wa_modsap.
    data: member type modsap-member.
    data: end of wa_modsap.
    data: begin of wa_modsapa.
    data: name type modsapa-name.
    data: end of wa_modsapa.
    data: begin of wa_modsapt.
    data: modtext type modsapt-modtext.
    data: end of wa_modsapt.
    Work Areas: Business Transaction Events
    data: begin of wa_tbe01t.
    data: text1 type tbe01t-text1.
    data: end of wa_tbe01t.
    data: begin of wa_tps01t.
    data: text1 type tps01t-text1.
    data: end of wa_tps01t.
    user-exits
    types: begin of ty_mod,
    member like modact-member,
    name like modact-name,
    status like modattr-status,
    anam like modattr-anam,
    adat like modattr-adat,
    end of ty_mod.
    data: w_mod type ty_mod.
    types: begin of t_userexit,
    type(12) type c,
    pname like trdir-name,
    txt(300),
    level type c,
    modname(30) type c,
    modtext(60) type c,
    modattr type ty_mod,
    end of t_userexit.
    data: i_userexit type standard table of t_userexit with header line.
    Function module developmnet classes
    types: begin of t_devclass,
    clas like trdir-clas,
    end of t_devclass.
    data: i_devclass type standard table of t_devclass with header line.
    types: begin of t_enlfdir,
    area type enlfdir-area,
    end of t_enlfdir.
    data: i_enlfdir type standard table of t_enlfdir with header line.
    Submit programs
    types: begin of t_submit,
    pname like trdir-name,
    level,
    done,
    end of t_submit.
    data: i_submit type standard table of t_submit with header line.
    Source code
    types: begin of t_sourcetab, "#EC * (SLIN lügt!)
    line(200), "#EC * (SLIN lügt!)
    end of t_sourcetab. "#EC * (SLIN lügt!)
    data: sourcetab type standard table of t_sourcetab with header line.
    data c_overflow(30000) type c.
    Description of an ABAP/4 source analysis token
    data: i_stoken type standard table of stokex with header line.
    data wa_stoken like i_stoken.
    Description of an ABAP/4 source analysis statement
    data: i_sstmnt type standard table of sstmnt with header line."#EC NEEDED
    keywords for searching ABAP code
    types: begin of t_keywords,
    word(30),
    end of t_keywords.
    data: keywords type standard table of t_keywords with header line.
    function modules within program
    types: begin of t_fmodule,
    name like rs38l-name,
    pname like trdir-name,
    pname2 like trdir-name,
    level,
    bapi,
    done,
    end of t_fmodule.
    data: i_fmodule type standard table of t_fmodule with header line.
    & Selection Options &
    selection-screen begin of block selscr1 with frame title text-s01.
    parameter: p_pname like trdir-name memory id rid,
    p_tcode like syst-tcode,
    p_limit(4) type n default 100,
    p_devc like rihea-dy_ofn default ' ',
    p_func like rihea-dy_ofn default ' ',
    p_subm like rihea-dy_ofn default ' '.
    selection-screen end of block selscr1.
    & START-OF-SELECTION &
    start-of-selection.
    if p_pname is initial and p_tcode is initial.
    message e008(hrfpm). "Make entry on the selection screen
    stop.
    endif.
    ensure P_LIMIT is not zero.
    if p_limit = 0.
    p_limit = 1.
    endif.
    perform data_select.
    perform get_submit_data.
    perform get_fm_data.
    perform get_additional_data.
    perform data_display.
    & Form DATA_SELECT &
    form data_select.
    data selection message to sap gui
    call function 'SAPGUI_PROGRESS_INDICATOR'
    destination 'SAPGUI'
    keeping logical unit of work
    exporting
    text = 'Get programs/includes' "#EC NOTEXT
    exceptions
    system_failure
    communication_failure
    . "#EC *
    determine search words
    keywords-word = 'CALL'.
    append keywords.
    keywords-word = 'FORM'.
    append keywords.
    keywords-word = 'PERFORM'.
    append keywords.
    keywords-word = 'SUBMIT'.
    append keywords.
    keywords-word = 'INCLUDE'.
    append keywords.
    if not p_tcode is initial.
    get program name from TCode
    select single pgmna from tstc into wa_tstc-pgmna
    where tcode eq p_tcode.
    if not wa_tstc-pgmna is initial.
    p_pname = wa_tstc-pgmna.
    TCode does not include program name, but does have refereve TCode
    else.
    select single param from tstcp into wa_tstcp-param
    where tcode eq p_tcode.
    if sy-subrc = 0.
    check wa_tstcp-param(1) = '/'.
    check wa_tstcp-param+1(1) = '*'.
    if wa_tstcp-param ca ' '.
    endif.
    w_off = sy-fdpos + 1.
    subtract 2 from sy-fdpos.
    if sy-fdpos gt 0.
    p_tcode = wa_tstcp-param+2(sy-fdpos).
    endif.
    select single pgmna from tstc into wa_tstc-pgmna
    where tcode eq p_tcode.
    p_pname = wa_tstc-pgmna.
    if sy-subrc 0.
    message e110(/saptrx/asc) with 'No program found for: ' p_tcode."#EC NOTEXT
    endif.
    else.
    message e110(/saptrx/asc) with 'No program found for: ' p_tcode."#EC NOTEXT
    endif.
    endif.
    endif.
    Call customer-function aus Program coding
    read report p_pname into sourcetab.
    if sy-subrc > 0.
    message e017(enhancement) with p_pname raising no_program."#EC *
    endif.
    scan abap-source sourcetab tokens into i_stoken
    statements into i_sstmnt
    keywords from keywords
    overflow into c_overflow
    with includes.
    if sy-subrc > 0. "keine/syntakt. falsche Ablauflog./Fehler im Skanner
    message e130(enhancement) raising syntax_error. "#EC *
    endif.
    check I_STOKEN for entries
    clear w_linnum.
    describe table i_stoken lines w_linnum.
    if w_linnum gt 0.
    w_level = '0'.
    w_prog = ''.
    w_incl = ''.
    perform data_search tables i_stoken using w_level w_prog w_incl.
    endif.
    endform. "DATA_SELECT
    & Form GET_FM_DATA &
    form get_fm_data.
    data selection message to sap gui
    call function 'SAPGUI_PROGRESS_INDICATOR'
    destination 'SAPGUI'
    keeping logical unit of work
    exporting
    text = 'Get function module data' "#EC NOTEXT
    exceptions
    system_failure
    communication_failure. "#EC *
    Function module data
    sort i_fmodule by name.
    delete adjacent duplicates from i_fmodule comparing name.
    loop at i_fmodule where done ne 'X'.
    clear: i_stoken, i_sstmnt, sourcetab, wa_tfdir, w_include .
    refresh: i_stoken, i_sstmnt, sourcetab.
    store function groups
    select single area from enlfdir into wa_enlfdir-area
    where funcname = i_fmodule-name.
    i_enlfdir-area = wa_enlfdir-area.
    append i_enlfdir.
    Store development classes
    if not wa_enlfdir-area is initial.
    select single devclass into wa_tadir-devclass
    from tadir where pgmid = 'R3TR'
    and object = 'FUGR'
    and obj_name = wa_enlfdir-area.
    check not wa_tadir-devclass is initial.
    move wa_tadir-devclass to i_devclass-clas.
    append i_devclass.
    endif.
    clear wa_tfdir.
    select single funcname pname include from tfdir into wa_tfdir
    where funcname = i_fmodule-name.
    check sy-subrc = 0.
    call function 'FUNCTION_INCLUDE_SPLIT'
    exporting
    program = wa_tfdir-pname
    importing
    group = w_area.
    concatenate 'L' w_area 'U' wa_tfdir-include into w_include.
    i_fmodule-pname = w_include.
    i_fmodule-pname2 = wa_tfdir-pname.
    modify i_fmodule.
    read report i_fmodule-pname into sourcetab.
    if sy-subrc = 0.
    scan abap-source sourcetab tokens into i_stoken
    statements into i_sstmnt
    keywords from keywords
    with includes.
    if sy-subrc > 0.
    message e130(enhancement) raising syntax_error.
    endif.
    check i_stoken for entries
    clear w_linnum.
    describe table i_stoken lines w_linnum.
    if w_linnum gt 0.
    w_level = '1'.
    w_prog = i_fmodule-pname2.
    w_incl = i_fmodule-pname.
    perform data_search tables i_stoken using w_level w_prog w_incl.
    endif.
    endif.
    endloop.
    sort funtion groups
    sort i_devclass.
    delete adjacent duplicates from i_devclass.
    sort i_enlfdir.
    delete adjacent duplicates from i_enlfdir.
    endform. "GET_FM_DATA
    & Form GET_SUBMIT_DATA &
    form get_submit_data.
    data selection message to sap gui
    call function 'SAPGUI_PROGRESS_INDICATOR'
    destination 'SAPGUI'
    keeping logical unit of work
    exporting
    text = 'Get submit data' "#EC NOTEXT
    exceptions
    system_failure
    communication_failure
    . "#EC *
    sort i_submit.
    delete adjacent duplicates from i_submit comparing pname.
    w_level = '0'.
    loop at i_submit where done ne 'X'.
    check i_submit-pname ne p_pname. " ensure not the same as origianl program
    clear: i_stoken, i_sstmnt, sourcetab.
    refresh: i_stoken, i_sstmnt, sourcetab.
    read report i_submit-pname into sourcetab.
    if sy-subrc 0.
    delete i_submit.
    continue.
    else.
    scan abap-source sourcetab tokens into i_stoken
    statements into i_sstmnt
    keywords from keywords
    with includes.
    if sy-subrc > 0.
    continue.
    endif.
    check i_stoken for entries
    clear w_linnum.
    describe table i_stoken lines w_linnum.
    if w_linnum gt 0.
    w_prog = i_submit-pname.
    w_incl = ''.
    perform data_search tables i_stoken using w_level w_prog w_incl.
    endif.
    endif.
    restrict number of submit program selected for processing
    describe table i_submit lines w_linnum.
    if w_linnum ge p_limit.
    w_level = '1'.
    endif.
    i_submit-done = 'X'.
    modify i_submit.
    endloop.
    sort i_submit.
    delete adjacent duplicates from i_submit comparing pname.
    endform. "GET_SUBMIT_DATA
    & Form DATA_SEARCH &
    form data_search tables p_stoken structure stoken
    using p_level p_prog p_incl.
    loop at p_stoken.
    clear i_userexit.
    tabix = sy-tabix + 1.
    i_userexit-level = p_level.
    if i_userexit-level = '0'.
    if p_incl is initial.
    i_userexit-pname = p_pname.
    else.
    concatenate p_pname '/' p_incl into i_userexit-pname.
    endif.
    else.
    if p_incl is initial.
    i_userexit-pname = p_prog.
    else.
    concatenate p_prog '/' p_incl into i_userexit-pname.
    endif.
    endif.
    Include
    if p_stoken-str eq 'INCLUDE'.
    check p_level eq '0'. " do not perform for function modules (2nd pass)
    w_index = sy-tabix + 1.
    read table p_stoken index w_index into wa_stoken.
    check not wa_stoken-str cs 'STRUCTURE'.
    check not wa_stoken-str cs 'SYMBOL'.
    read table i_submit with key pname = wa_stoken-str.
    if sy-subrc 0.
    i_submit-pname = wa_stoken-str.
    i_submit-level = p_level.
    append i_submit.
    endif.
    endif.
    Enhancements
    if p_stoken-str eq 'CUSTOMER-FUNCTION'.
    clear w_funcname.
    read table p_stoken index tabix.
    translate p_stoken-str using ''' '.
    condense p_stoken-str.
    if p_prog is initial.
    concatenate 'EXIT' p_pname p_stoken-str into w_funcname
    separated by '_'.
    else.
    concatenate 'EXIT' p_prog p_stoken-str into w_funcname
    separated by '_'.
    endif.
    select single member from modsap into wa_modsap-member
    where member = w_funcname.
    if sy-subrc = 0. " check for valid enhancement
    i_userexit-type = 'Enhancement'.
    i_userexit-txt = w_funcname.
    append i_userexit.
    else.
    clear wa_d010inc.
    select single master into wa_d010inc-master
    from d010inc
    where include = p_prog.
    concatenate 'EXIT' wa_d010inc-master p_stoken-str into w_funcname
    separated by '_'.
    i_userexit-type = 'Enhancement'.
    i_userexit-txt = w_funcname.
    endif.
    endif.
    BADIs
    if p_stoken-str cs 'cl_exithandler='.
    w_index = sy-tabix + 4.
    read table p_stoken index w_index into wa_stoken.
    i_userexit-txt = wa_stoken-str.
    replace all occurrences of '''' in i_userexit-txt with space.
    i_userexit-type = 'BADI'.
    append i_userexit.
    endif.
    Business transaction events
    if p_stoken-str cs 'OPEN_FI_PERFORM'.
    i_userexit-type = 'BusTrEvent'.
    i_userexit-txt = p_stoken-str.
    replace all occurrences of '''' in i_userexit-txt with space.
    i_userexit-modname = i_userexit-txt+16(8).
    case i_userexit-txt+25(1).
    when 'E'.
    clear wa_tbe01t.
    select single text1 into wa_tbe01t-text1 from tbe01t
    where event = i_userexit-txt+16(8)
    and spras = sy-langu.
    if wa_tbe01t-text1 is initial.
    i_userexit-modtext = ''. "#EC NOTEXT
    else.
    i_userexit-modtext = wa_tbe01t-text1.
    endif.
    i_userexit-modname+8 = '/P&S'. "#EC NOTEXT
    when 'P'.
    clear wa_tps01t.
    select single text1 into wa_tps01t-text1 from tps01t
    where procs = i_userexit-txt+16(8)
    and spras = sy-langu.
    i_userexit-modtext = wa_tps01t-text1.
    i_userexit-modname+8 = '/Process'.
    endcase.
    append i_userexit.
    endif.
    Program exits
    if p_stoken-str cs 'USEREXIT_'.
    i_userexit-type = 'Program Exit'.
    i_userexit-txt = p_stoken-str.
    replace all occurrences of '''' in i_userexit-txt with space.
    append i_userexit.
    endif.
    Submit programs
    if p_stoken-str cs 'SUBMIT'.
    check p_level eq '0'. " do not perform for function modules (2nd pass)
    check not p_stoken-str cs '_'. " ensure not SUBMIT_XXX
    w_index = sy-tabix + 1.
    read table p_stoken index w_index into wa_stoken.
    check not wa_stoken-str cs '_'. " ensure not SUBMIT_XXX
    replace all occurrences of '''' in wa_stoken-str with space.
    read table i_submit with key pname = wa_stoken-str.
    if sy-subrc 0.
    i_submit-pname = wa_stoken-str.
    i_submit-level = p_level.
    append i_submit.
    endif.
    endif.
    Perform routines (which reference external programs)
    if p_stoken-str cs 'PERFORM'.
    check p_level eq '0'. " do not perform for function modules (2nd pass)
    w_index = sy-tabix + 1.
    read table p_stoken index w_index into wa_stoken.
    if not wa_stoken-ovfl is initial.
    w_off = wa_stoken-off1 + 10.
    w_str = c_overflow+w_off(30).
    find ')' in w_str match offset w_off.
    w_off = w_off + 1.
    wa_stoken-str = w_str(w_off).
    endif.
    check wa_stoken-str cs '('.
    w_off = 0.
    while sy-subrc = 0.
    if wa_stoken-str+w_off(1) eq '('.
    replace section offset w_off length 1 of wa_stoken-str with ''.
    replace all occurrences of ')' in wa_stoken-str with space.
    read table i_submit with key pname = wa_stoken-str.
    if sy-subrc 0.
    i_submit-pname = wa_stoken-str.
    append i_submit.
    endif.
    exit.
    else.
    replace section offset w_off length 1 of wa_stoken-str with ''.
    shift wa_stoken-str left deleting leading space.
    endif.
    endwhile.
    endif.
    Function modules
    if p_stoken-str cs 'FUNCTION'.
    clear i_fmodule.
    check p_level eq '0'. " do not perform for function modules (2nd pass)
    w_index = sy-tabix + 1.
    read table p_stoken index w_index into wa_stoken.
    if wa_stoken-str cs 'WF_'.
    if wa_stoken-str cs 'IDOC'.
    break-point.
    endif.
    if wa_stoken-str cs 'BAPI'.
    i_fmodule-bapi = 'X'.
    endif.
    replace first occurrence of '''' in wa_stoken-str with space.
    replace first occurrence of '''' in wa_stoken-str with space.
    if sy-subrc = 4. " didn't find 2nd quote (ie name truncated)
    clear wa_tfdir.
    concatenate wa_stoken-str '%' into wa_stoken-str.
    select single funcname into wa_tfdir-funcname from tfdir
    where funcname like wa_stoken-str.
    if sy-subrc = 0.
    i_fmodule-name = wa_tfdir-funcname.
    else.
    continue.
    endif.
    else.
    i_fmodule-name = wa_stoken-str.
    endif.
    read table i_fmodule with key name = i_fmodule-name.
    if sy-subrc 0.
    i_fmodule-level = p_level.
    append i_fmodule.
    endif.
    endif.
    endloop.
    endform. "DATA_SEARCH
    & Form GET_ADDITIONAL_DATA &
    form get_additional_data.
    data selection message to sap gui
    call function 'SAPGUI_PROGRESS_INDICATOR'
    destination 'SAPGUI'
    keeping logical unit of work
    exporting
    text = 'Get additional data' "#EC NOTEXT
    exceptions
    system_failure
    communication_failure
    . "#EC *
    loop at i_userexit.
    Enhancement data
    if i_userexit-type cs 'Enh'.
    clear: wa_modsapa.
    select single name into wa_modsapa-name from modsap
    where member = i_userexit-txt.
    check sy-subrc = 0.
    i_userexit-modname = wa_modsapa-name.
    clear wa_modsapt.
    select single modtext into wa_modsapt-modtext from modsapt
    where name = wa_modsapa-name
    and sprsl = sy-langu.
    i_userexit-modtext = wa_modsapt-modtext.
    MOH - enhancement to get the project name
    clear w_mod.
    select single modactmember modactname modattr~status
    modattranam modattradat
    into w_mod
    from modact
    inner join modattr
    on modattrname = modactname
    where modact~member = wa_modsapa-name
    and modact~typ = space.
    i_userexit-modattr = w_mod.
    MOH - eoe
    endif.
    BADI data
    if i_userexit-type eq 'BADI'.
    clear wa_sxs_attr.
    select single exit_name into wa_sxs_attr-exit_name from sxs_attr
    where exit_name = i_userexit-txt.
    if sy-subrc = 0.
    i_userexit-modname = i_userexit-txt.
    else.
    i_userexit-modname = 'Dynamic call'. "#EC NOTEXT
    endif.
    clear wa_sxs_attrt.
    select single text into wa_sxs_attrt-text from sxs_attrt
    where exit_name = wa_sxs_attr-exit_name
    and sprsl = sy-langu.
    i_userexit-modtext = wa_sxs_attrt-text.
    endif.
    modify i_userexit.
    endloop.
    get enhancements via program package
    clear wa_tadir.
    select single devclass into wa_tadir-devclass from tadir
    where pgmid = 'R3TR'
    and object = 'PROG'
    and obj_name = p_pname.
    if sy-subrc = 0.
    clear: wa_modsapa, wa_modsapt.
    select name from modsapa into wa_modsapa-name
    where devclass = wa_tadir-devclass.
    select single modtext from modsapt into wa_modsapt-modtext
    where name = wa_modsapa-name
    and sprsl = sy-langu.
    read table i_userexit with key modname = wa_modsapa-name.
    if sy-subrc 0.
    i_userexit-modtext = wa_modsapt-modtext.
    i_userexit-type = 'Enhancement'. "#EC NOTEXT
    i_userexit-modname = wa_modsapa-name.
    i_userexit-txt = 'Determined from program DevClass'."#EC NOTEXT
    i_userexit-pname = 'Unknown'. "#EC NOTEXT
    append i_userexit.
    endif.
    endselect.
    endif.
    Get IDOCs
    loop at i_devclass.
    endloop.
    endform. "GET_ADDITIONAL_DATA
    & Form DATA_DISPLAY &
    form data_display.
    data selection message to sap gui
    call function 'SAPGUI_PROGRESS_INDICATOR'
    destination 'SAPGUI'
    keeping logical unit of work
    exporting
    text = 'Prepare screen for display' "#EC NOTEXT
    exceptions
    system_failure
    communication_failure
    . "#EC *
    sort i_userexit by type txt modname.
    delete adjacent duplicates from i_userexit comparing txt modname.
    format headings
    write: 'Enhancements from main program'. "#EC NOTEXT
    write: /.
    uline.
    format color col_heading.
    write: / sy-vline,
    (12) c_col1, "Enhanmt Type
    sy-vline,
    (40) c_col2, "Enhancement
    sy-vline,
    (30) c_col3, "Program/Include
    sy-vline,
    (20) c_col4, "Enhancement name
    sy-vline,
    (60) c_col5, "Enhancement description
    sy-vline,
    (8) c_col6, "Project
    sy-vline,
    (1) c_col7, "S
    sy-vline,
    (12) c_col8, "ChangeName
    sy-vline,
    (10) c_col9, "ChangeDate
    sy-vline.
    format reset.
    uline.
    format lines
    loop at i_userexit.
    set line colour
    case i_userexit-type.
    when 'Enhancement'.
    format color 3 intensified off.
    when 'BADI'.
    format color 4 intensified off.
    when 'BusTrEvent'.
    format color 5 intensified off.
    when 'Program Exit'.
    format color 6 intensified off.
    when others.
    format reset.
    endcase.
    write: / sy-vline,
    i_userexit-type,
    sy-vline,
    i_userexit-txt(40),
    sy-vline,
    i_userexit-pname(30),
    sy-vline,
    i_userexit-modname(20),
    sy-vline,
    i_userexit-modtext(60),
    sy-vline,
    i_userexit-modattr-name,
    sy-vline,
    i_userexit-modattr-status,
    sy-vline,
    i_userexit-modattr-anam,
    sy-vline,
    i_userexit-modattr-adat no-zero,
    sy-vline.
    hide: i_userexit-type,
    i_userexit-txt,
    i_userexit-pname,
    i_userexit-modname,
    i_userexit-modtext.
    endloop.
    format reset.
    uline.
    user-exits from development class of function modules
    if p_devc = 'X'.
    write: /.
    write: / 'User-exits from function module development class'."#EC NOTEXT
    write: 157''.
    uline (90).
    write: 157''.
    loop at i_devclass.
    clear wa_modsapa.
    select name from modsapa into wa_modsapa
    where devclass = i_devclass-clas.
    select single name modtext into corresponding fields of wa_modsapt
    from modsapt
    where name = wa_modsapa-name
    and sprsl = sy-langu.
    format color 3 intensified off.
    write: / sy-vline,
    (12) 'Enhancement',
    sy-vline,
    wa_modsapa-name,
    sy-vline,
    wa_modsapt-modtext,
    sy-vline.
    endselect.
    endloop.
    uline (90).
    format reset.
    endif.
    describe table i_fmodule lines w_linnum.
    write: / c_fmod , at 35 w_linnum. "#EC NOTEXT
    write: 157''.
    if p_func = 'X'.
    display fuction modules used in program
    uline (38).
    write: 157''.
    loop at i_fmodule.
    write: sy-vline,
    i_fmodule-name,
    sy-vline,
    i_fmodule-bapi,
    sy-vline.
    write: 157''.
    endloop.
    uline (38).
    write: 157''.
    endif.
    describe table i_submit lines w_linnum.
    write: / c_subm , at 35 w_linnum. "#EC NOTEXT
    write: 157''.
    if p_subm = 'X'.
    display submit programs used in program
    uline (44).
    write: 157''.
    loop at i_submit.
    write: sy-vline,
    i_submit-pname,
    sy-vline.
    write: 157''.
    endloop.
    uline (44).
    endif.
    issue message with number of user-exits displayed
    describe table i_userexit lines w_linnum.
    message s697(56) with w_linnum.
    endform. "DATA_DISPLAY
    & User Selection Processing &
    at line-selection.
    get cursor field w_fsel.
    case w_fsel.
    when 'I_USEREXIT-MODNAME'.
    case i_userexit-type.
    when 'Enhancement'.
    set parameter id 'MON' field i_userexit-modname.
    call transaction 'SMOD' and skip first screen.
    when 'BADI'.
    check i_userexit-modname ne 'Dynamic call'.
    set parameter id 'EXN' field i_userexit-modname.
    call transaction 'SE18' and skip first screen.
    when 'BusTrEvent'.
    submit rfopfi00 with attr_typey_selm = 'A'
    with event = i_userexit-modname(8)
    via selection-screen
    and return.
    when others.
    endcase.
    when 'I_USEREXIT-PNAME'.
    check i_userexit-modname ne 'Unknown'.
    w_off = 0.
    find '/' in i_userexit-pname match offset w_off.
    if w_off = 0.
    set parameter id 'RID' field i_userexit-pname.
    call transaction 'SE38' and skip first screen.
    else.
    w_off = w_off + 1.
    w_prog = i_userexit-pname+w_off.
    set parameter id 'RID' field w_prog.
    call transaction 'SE38' and skip first screen.
    endif.
    when others.
    endcase.
    Thank You,
    Saritha

  • SELECT STATEMENT (Correct answers will be given full points.)

    HI Gurus
                  I am new abap help me with the select statement for these please
      Get BKPF-AWKEY where BKPF-BELNR = VBRK-VBELN + prefix “00”.
    this is the reference number for printing in script(SD)
    i need to write in the text elements
    Get KNA1- STCEG where VBRK-KUNRG =  KNA1-KUNNR  This is the GST REG
    how to write in the text elements.
    Correct answers will be given full points.
    thanks & regards
    sirish.

    Hi sirish,
       First of all to add the prefix to vbrk-vbeln u can write the syntax like this-
      CONCATENATE '00' VBRK-VBELN INTO VBRK-VBELN.
    if  00 is suffix then write like this--
      CONCATENATE  VBRK-VBELN '00' INTO VBRK-VBELN.
    Now u can write ur first select query like this-
    SELECT awkey FROM    bkpf
                            WHERE belnr = vbrk-vbeln.
    Syntax for second select query-
    SELECT stceg FROM    kna1
                           WHERE kunnr = vbrk-kunrg.
    Reward if useful.
    Regards,
    Rajesh Akarte

  • 'FTP_R3_TO_SERVER' giving sy-subrc = 3 plz help me points must be given

    Dear   ,
    when i am trying to send data in internal table of type charterter declared below(i.e iresult) to FTP SERVER program giving the DATA ERROR = 3 when 'FTP_R3_TO_SERVER'  fuction module is exected and file it not creating in ftp server . plz help me pointS must be given .
    the FTP_CONNECT ,FTP_COMMAND function modules are executing properly giving handle 1 and its sy-subrc = 0 .
    when 'FTP_R3_TO_SERVER'  is executed it is giving SY-SUBRC = 3 ( DATA ERROR ) i.e it is failing to out internal table data in FTP SERVER . PLZ HIDE ME ITS URGENT .
    THIS IS CODE I USED .
      DATA :     BEGIN OF iresult OCCURS 5,
            rec(450),
           END OF iresult,
      DATA  :
              dest LIKE rfcdes-rfcdest VALUE 'SAPFTP',
              compress TYPE c VALUE 'N',
              host(64) TYPE c.
      DATA: hdl TYPE i.
      DATA: BEGIN OF result OCCURS 0,
            line(100) TYPE c,
            END OF result.
      DATA : key TYPE i VALUE 26101957 ,
             dstlen TYPE i,
             blob_length TYPE i.
      host = p_host .
      DESCRIBE FIELD p_password LENGTH dstlen IN CHARACTER MODE.
      CALL 'AB_RFC_X_SCRAMBLE_STRING'
        ID 'SOURCE'      FIELD p_password    ID 'KEY'         FIELD key
        ID 'SCR'         FIELD 'X'    ID 'DESTINATION' FIELD p_password
        ID 'DSTLEN'      FIELD dstlen.
      CALL FUNCTION 'FTP_CONNECT'
        EXPORTING
          user            = p_user
          password        = p_password
          host            = host
          rfc_destination = dest
        IMPORTING
          handle          = hdl
        EXCEPTIONS
          not_connected   = 1
          OTHERS          = 2.
      IF sy-subrc = 0.
        CONCATENATE 'cd' ftppath INTO ftppath SEPARATED BY space .
        CALL FUNCTION 'FTP_COMMAND'
          EXPORTING
            handle        = hdl
            command       = ftppath
          TABLES
            data          = result
          EXCEPTIONS
            command_error = 1
            tcpip_error   = 2.
        IF sy-subrc = 0 .
          CLEAR result .
          REFRESH result .
          CALL FUNCTION 'FTP_COMMAND'
            EXPORTING
              handle        = hdl
              command       = 'ascii'
            TABLES
              data          = result
            EXCEPTIONS
              command_error = 1
              tcpip_error   = 2.
          IF sy-subrc = 0 .
            DESCRIBE TABLE iresult LINES lines.
            blob_length =  lines * width .
            clear : lines.
    Delete the existing file
         CONCATENATE 'del' ftpfile INTO delfile SEPARATED BY SPACE.
          CALL FUNCTION 'FTP_COMMAND'
            EXPORTING
              handle        = hdl
              command       = delfile
            TABLES
              data          = result
            EXCEPTIONS
              command_error = 1
              tcpip_error   = 2.
    *End of deleting the existing file
            CALL FUNCTION 'FTP_R3_TO_SERVER'
              EXPORTING
                handle        = hdl
                fname         = ftpfile
                blob_length   = blob_length
              TABLES
                blob          = iresult
              EXCEPTIONS
                TCPIP_ERROR   = 1
                COMMAND_ERROR = 2
                DATA_ERROR    = 3
                OTHERS        = 4.
            IF sy-subrc <> 0 .
              WRITE 'Error in writing file to ftp' .
            ELSE.
              WRITE 'File downloaded on the ftp server successfully'.
            ENDIF.
          ENDIF.
        ELSE.
          WRITE : 'Path on ftp not found : ' , ftppath .
        ENDIF.
        CALL FUNCTION 'FTP_DISCONNECT'
          EXPORTING
            handle = hdl.
        CALL FUNCTION 'RFC_CONNECTION_CLOSE'
          EXPORTING
            destination = 'SAPFTP'
          EXCEPTIONS
            OTHERS      = 1.
      ELSE.
        WRITE 'Could not connect to ftp' .
      ENDIF.
    ENDFORM.                    " FTPFINANCEACCESS_DOWNLOAD
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF screen-name = 'PASSWORD'.
          screen-invisible = '1'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    Edited by: manoj kv on Feb 21, 2008 7:51 AM
    Edited by: manoj kv on Feb 21, 2008 10:31 AM
    Edited by: manoj kv on Feb 23, 2008 5:22 AM
    Edited by: manoj kv on Feb 23, 2008 2:59 PM

    Dear ,
    i exected RSFTP005 program and i got this below output .
    SAPFTP check
    Check RFC destination SAPFTP...
    ... OK.
    Ping RFC destination SAPFTP...
    ... OK.
    Check RFC destination SAPFTPA...
    ... OK.
    Ping RFC destination SAPFTPA...
    ... OK.
    in our previous discussion u told me that "You will get that file is not in proper format or it might be empty i.e. structure dose not support "
    plz tell me how u r telling that file will not get in proper order and which structure does not support .
    my client given issue that whole data storing in single line .
    plz do the needful help. points must be rewarded  .
    thanking u .
    Edited by: manoj kv on Feb 25, 2008 5:56 AM
    Edited by: manoj kv on Feb 26, 2008 9:38 AM
    Edited by: manoj kv on Feb 28, 2008 8:04 AM

  • I am looking for a map app that will allow me to place pins where my clients offices are on a map and keep them save every time I open the app. Does anyone out there know of an app that will do this?

    I am looking for a map app that will allow me to place pins where my clients offices are on a map and keep them save every time I open the app. Does anyone out there know of an app that will do this?

    "Motion 5" is your friend.
    Michael Wohl has a nice 15 video series (free) about Motion 5 at http://www.macprovideo.com/tutorial/motion5101-overview-and-workflow-guide (right side)
    This is a "teaser" series to sell his tutorials but it is really good. Just saw it yesterday for the first time.
    While all you want is just to place pins, realize that Motion has so much more. All kinds of effects and they can be really customized. Maybe put their street address, contact name, and phone number by the pin?
    Motion 5: cheap at $49.99 (just got my download two days ago)
    Motion 5: Support Community athttps://discussions.apple.com/community/professional_applications/motion_5
    If you're using the map for, say, deliveries, and use an iPad, what you could do is have a general map of the area imported into Motion, create the pins and whatever, then save (share?) it to the iPad.
    Disclaimer: I have virtually no relationship with anything connected with this tutorial product, developer, or anything.

  • Calling FBL1N with filter criteria - POINTS WILL BE REWARDED

    <b>POINTS WILL BE REWARDED</b>
    hi abap gurus.....
    i have a very unique requirement...i have a alv report which displays vendors and the amount to be paid based on the credit limit...
    VENDOR ,  TOTAL AMT,   AMT FOR 0-30 DAYS, AMT FOR 31-60 DAYS AND SO ON....
    when we db click the vendor it calls transaction FBL1N and displays all the open items for that vendor.....
    now the requirement is ... if we double click on field AMT FOR CREDIT 0-30 DAYS..it should call tcode FBL1N  but filtering the data for that vendor's open items based on the ''Arrears after net due date'' field with paramenters 0 to 30.....similary for the other columns...
    i wounder if it is possible .....

    hi prabhu...thnx a million for ur reply.....
    the program name for std tcode FBL1n is ... RFITEMAP
    the field name for "Arrears after net due date"  is ....... VERZN
    i m using a simple ALV...
    so should my code be as below..
    IF ls_selfield-fieldname = 'LIFNR'.
    SUBMIT RFITEMAP
    WITH VERZN IN r_VERZN    (can i set this between two variables )
    EXPORTING LIST TO MEMORY AND RETURN.
    ENDIF.
    will this code give the same output as.....it gives when i would call FBL1N for particular vendor...and then filter the data based on VERZN.....
    i m a bit confused about this statement "EXPORTING LIST TO MEMORY AND RETURN."  ... i m not too sure how it works.....
    can u plz clarify things a bit more....
    thnx again...

  • How to Hide BP Functions - Points will be awarded

    Dear Guru's,
    I would need to Block CRM Business Partner Functions which are not required to list out. I through with the following steps to block:
    (CRM 4.0)
    IMG --> CRM --> B.Functions --> Partner Processing --> Define Partner Functions.
    Here I Checked the Check box to Block the Functions. but i was wondering that the Functions are still visible in the Functions Field of Activity. How can i hide those.
    Kindly suggest me.. Points will be awarded for atleast help ful answer..
    Srujan

    Hi Srujan,
    The Block Check Box in the partner function definition is not meant to hide a partner function. If only changes the way of determination of partners. (as wriiten in the helps - Defines whether the source partner is added during partner determination for the resulting Quantity).
    What I understand is you do not want few partner function to be visble in the partner tab of the activity. For this in your partner determination procedure (which is assigned to the transaction type of activity) just add the partner function you want to be visible and put permitted functions as A Only Functions Assigned to the Procedure.
    Steps:
    1. Check the Partner determination procedure assigned to the Transaction Type of activity
    TCode: SPRO
    Customer Relationship Management --> Transactions --> Basic Settings --> Define Transaction Types
    2. OPen the Patner Determiantion Procedure
    Customer Relationship Management --> Basic Functions -> Partner Processing -> Define Partner Determination Procedure
    Here check the Partner Procedure and change the Permitted Function as A.
    Wish this helps.
    Regards,
    Shalini Chauhan

  • Trackpad pointer will not show content while hovering, sometimes it's a hand, somethimes its an arrow, and other times it's a line. Also cant highlight anymore.

    Trackpad pointer will not show content while hovering over the item. Sometimes the pointer is a hand, sometimes it's an arrow, and other times it's a line. Also can no longer highlight, or drag.

    Most commonly used backup methods
    then
    Step by Step to fix your Mac

  • Transfering Developments to Another Server - Points will be reward.

    Dear Guys
    I want to transfer only developments done by Inhouse ABAPers and SAP itself to another newly developed server.
    We have an another server which have same configuration as of QA system but some programs developed by Inhouse developers and SAP itself (like during writing user exists or implementing notes in QA) is missing in new system.
    We have transported all in house development in new system by transporting our develoment classes.
    Bbut how can we transports changes made in SAP by SAP itself like with SAP Notes or if an another program is created in SAP by running an another SAP  program like user exits.
    Please note I just want to transport ABAP work not the configuration, we already have transported the configuration.
    Thnx points will be reward.

    Hi
    You create a Request  first in Se09/se10
    then double click that request and change
    You can add your different types of objects along with Object type  into this request
    whether it is Z or SAP changes
    R3TR-TABL -<table name>
    R3TR-PROG -<prog name>
    See the table TADIR for different types of Objects.
    So after adding all the objects into request release it and transport to new system.
    Reward points if useful
    Regards
    Anji

Maybe you are looking for