Skip to Content
0
Former Member
Sep 10, 2009 at 08:24 AM

Problem when using LDB_PROCESS

128 Views

TABLES: LFB1,BSIK.
SELECT-OPTIONS: S_BUKRS FOR BSIK-BUKRS,S_LIFNR FOR LFB1-LIFNR.

TYPE-POOLS: RSDS, RSFS.

DATA: CALLBACK TYPE TABLE OF LDBCB,
      CALLBACK_WA LIKE LINE OF CALLBACK.

DATA: SELTAB TYPE TABLE OF RSPARAMS,
      SELTAB_WA LIKE LINE OF SELTAB.

DATA: TEXPR TYPE RSDS_TEXPR,
      FSEL  TYPE RSFS_FIELDS.

CALLBACK_WA-LDBNODE     = 'LFB1'.
CALLBACK_WA-GET         = 'X'.
CALLBACK_WA-GET_LATE    = 'X'.
CALLBACK_WA-CB_PROG     = SY-REPID.
CALLBACK_WA-CB_FORM     = 'CALLBACK_LFB1'.
APPEND CALLBACK_WA TO CALLBACK.

CLEAR CALLBACK_WA.
CALLBACK_WA-LDBNODE     = 'BSIK'.
CALLBACK_WA-GET         = 'X'.
CALLBACK_WA-CB_PROG     = SY-REPID.
CALLBACK_WA-CB_FORM     = 'CALLBACK_BSIK'.
APPEND CALLBACK_WA TO CALLBACK.

SELTAB_WA-KIND = 'S'.
SELTAB_WA-SELNAME = 'KD_BUKRS'.

LOOP AT S_BUKRS.
  MOVE-CORRESPONDING S_BUKRS TO SELTAB_WA.
  APPEND SELTAB_WA TO SELTAB.
ENDLOOP.

SELTAB_WA-KIND = 'S'.
SELTAB_WA-SELNAME = 'KD_LIFNR'.

LOOP AT S_LIFNR.
  MOVE-CORRESPONDING S_LIFNR TO SELTAB_WA.
  APPEND SELTAB_WA TO SELTAB.
ENDLOOP.

CALL FUNCTION 'LDB_PROCESS'
     EXPORTING
          LDBNAME                     = 'KDF'
          VARIANT                     = ' '
          EXPRESSIONS                 = TEXPR
          FIELD_SELECTION             = FSEL
     TABLES
          CALLBACK                    = CALLBACK
          SELECTIONS                  = SELTAB
     EXCEPTIONS
          LDB_NOT_REENTRANT           = 1
          LDB_INCORRECT               = 2
          LDB_ALREADY_RUNNING         = 3
          LDB_ERROR                   = 4
          LDB_SELECTIONS_ERROR        = 5
          LDB_SELECTIONS_NOT_ACCEPTED = 6
          VARIANT_NOT_EXISTENT        = 7
          VARIANT_OBSOLETE            = 8
          VARIANT_ERROR               = 9
          FREE_SELECTIONS_ERROR       = 10
          CALLBACK_NO_EVENT           = 11
          CALLBACK_NODE_DUPLICATE     = 12
          OTHERS                      = 13.

IF SY-SUBRC <> 0.
  WRITE: 'Exception with SY-SUBRC', SY-SUBRC.
ENDIF.

FORM CALLBACK_LFB1 USING NAME  TYPE LDBN-LDBNODE
                          WA    TYPE LFB1
                          EVT   TYPE C
                          CHECK TYPE C.
  CASE EVT.
   WHEN 'G'.
      WRITE: / WA-BUKRS, WA-LIFNR.
      ULINE.
    WHEN 'L'.
      ULINE.
  ENDCASE.
ENDFORM.

FORM CALLBACK_BSIK USING NAME  TYPE LDBN-LDBNODE
                            WA    TYPE BSIK
                            EVT   TYPE C
                            CHECK TYPE C.
  WRITE: / WA-BELNR.
ENDFORM.

result:

ZFI_IF0005_NEW

2001 300000638

1900000006

But when I run the following code:

REPORT ZFI_IF0005_NEW.

NODES: LFB1,BSIK.

GET LFB1.
WRITE: / LFB1-BUKRS,LFB1-LIFNR.

GET BSIK.
WRITE: / BSIK-BELNR.

result:

ZFI_IF0005_NEW

2001 300000638
1900000006
1500000209
5100000072
1500000012
1900000005

why the results are not same?